Настройка почтового сервера на базе Postfix + abills + mysql: различия между версиями

Материал из Wiki МИАЦ ВО
Перейти к навигации Перейти к поиску
м (Правки LaracChier (обсуждение) откачены к версии Misha)
Строка 1: Строка 1:
[http://ontargetwebdesign.net/j156/images/icons/text1099.htm ocean city maryland homes for rent] [http://galwaybaygallery.com/hp_wordpress/wp-admin/css/styles/topic-821.htm sedu hairstyle pictures] [http://artlinks.ie/course_comments/docs/article152.html nhl 2005 no cd patch] [http://artlinks.ie/course_comments/docs/article941.html mortage refinance] [http://offalyhistory.com/authorpics/icons/topic-2035.htm fruit trees] 
+
'''Эта статья находится в стадии разрабоки.'''
'''Эта статья находится в стадии разрабоки.'''
+
Оригинал статьи находится [http://abills.net.ua/wiki/doku.php?id=abills:docs:mail:ru тут]. Я просто пишу, что у меня из этого получилось на основе Mandriva 2008.
Оригинал статьи находится [http://abills.net.ua/wiki/doku.php?id=abills:docs:mail:ru тут]. Я просто пишу, что у меня из этого получилось на основе Mandriva 2008.
 
 
==MYSQL==
 
==MYSQL==
Так как postfix работает в chroot, то достучаться из него до mysql сервера через сокет невозможно.
+
Так как postfix работает в chroot, то достучаться из него до mysql сервера через сокет невозможно.
Для работы postfix c mysql нужно закоментировать строку в '''skip-networking''' в файле '''/etc/my.cnf''', перезапустить mysql и дать доступ к порту 3306 для самого сервера.
+
Для работы postfix c mysql нужно закоментировать строку в '''skip-networking''' в файле '''/etc/my.cnf''', перезапустить mysql и дать доступ к порту 3306 для самого сервера.
 
<pre>iptables -A INPUT -p TCP -s 127.0.0.1 --dport 3306 -j ACCEPT</pre>
 
<pre>iptables -A INPUT -p TCP -s 127.0.0.1 --dport 3306 -j ACCEPT</pre>
  
==Установка пакетов==
+
==Установка пакетов==
Итак устанавливаем следующие пакеты postfix-2.3.3-4mdv2007.0.i586.rpm, courier-imap-4.1.1-8mdv2007.0.i586.rpm со всеми зависимостями, courier-authlib-mysql-0.58-9mdv2007.0.i586.rpm,courier-pop-4.1.1-6mdv2007.0.i586.rpm, maildrop-1.7.0-10mdv2007.0.i586.rpm, maildrop-mysql-1.7.0-10mdv2007.0.i586.rpm, libsasl2-plug-sql-2.1.22-20mdv2007.0.i586.rpm.
+
Итак устанавливаем следующие пакеты postfix-2.3.3-4mdv2007.0.i586.rpm, courier-imap-4.1.1-8mdv2007.0.i586.rpm со всеми зависимостями, courier-authlib-mysql-0.58-9mdv2007.0.i586.rpm,courier-pop-4.1.1-6mdv2007.0.i586.rpm, maildrop-1.7.0-10mdv2007.0.i586.rpm, maildrop-mysql-1.7.0-10mdv2007.0.i586.rpm, libsasl2-plug-sql-2.1.22-20mdv2007.0.i586.rpm.
  
Если пакет '''maildrop-1.7.0-10mdv2007.0.i586.rpm''' будет ругаться на конфликт установите его так
+
Если пакет '''maildrop-1.7.0-10mdv2007.0.i586.rpm''' будет ругаться на конфликт установите его так
 
<pre> rpm -i --nodeps --excludedocs maildrop-1.7.0-10mdv2007.0.i586.rpm</pre>
 
<pre> rpm -i --nodeps --excludedocs maildrop-1.7.0-10mdv2007.0.i586.rpm</pre>
  
 
==Mail==
 
==Mail==
Модуль предназначен для упрощения процесса создания и управления почтовыми ящиками пользователей из интерфейса биллинга.
+
Модуль предназначен для упрощения процесса создания и управления почтовыми ящиками пользователей из интерфейса биллинга.
  
===Установка===
+
===Установка===
 
'''abills/libexec/config.pl'''
 
'''abills/libexec/config.pl'''
 
<pre>@MODULES = (
 
<pre>@MODULES = (
 
             'Mail'
 
             'Mail'
 
             );</pre>
 
             );</pre>
Если используете SpamAssasin
+
Если используете SpamAssasin
 
<pre># mysql -D abills < db/Mail.sql</pre>
 
<pre># mysql -D abills < db/Mail.sql</pre>
 
{| border=1
 
{| border=1
 
|$conf{MAIL_CHG_PASSWD}=1;     
 
|$conf{MAIL_CHG_PASSWD}=1;     
|Разрешить пользователям изменять пароли для своих почтовых ящиков
+
|Разрешить пользователям изменять пароли для своих почтовых ящиков
 
|-  
 
|-  
 
|$conf{MAIL_USER_FULL_CONTROL}=1;
 
|$conf{MAIL_USER_FULL_CONTROL}=1;
| Разрешить пользователям удалять и добавлять себе почтовые ящики. С возможностью взымания платы за услугу.  
+
| Разрешить пользователям удалять и добавлять себе почтовые ящики. С возможностью взымания платы за услугу.  
 
|-
 
|-
 
|$conf{MAIL_USER_DOMAIN_MNG}=1;  
 
|$conf{MAIL_USER_DOMAIN_MNG}=1;  
| Разрешить пользователю управлять своим доменом.  
+
| Разрешить пользователю управлять своим доменом.  
 
|-
 
|-
 
|$conf{MAIL_SPAMD}='spamassasin';
 
|$conf{MAIL_SPAMD}='spamassasin';
|Включить поддержку SpamAssasin
+
|Включить поддержку SpamAssasin
 
|}
 
|}
  
===Настройка===
+
===Настройка===
 
  '''System configuration --> E-MAIL'''
 
  '''System configuration --> E-MAIL'''
  
 
====Domains====
 
====Domains====
Список виртуальных доменов системы.  
+
Список виртуальных доменов системы.  
 
{| border=1
 
{| border=1
 
| '''Domain'''  
 
| '''Domain'''  
| Название домена
+
| Название домена
 
|-  
 
|-  
 
| '''Transport'''  
 
| '''Transport'''  
| Транспорт для даного домена. Возможные варианты:<br />virtual:<br />maildrop: Почтовый агент maildrop<br />local:<br />relay:<br />  
+
| Транспорт для даного домена. Возможные варианты:<br />virtual:<br />maildrop: Почтовый агент maildrop<br />local:<br />relay:<br />  
 
|-
 
|-
 
| '''Backup MX'''  
 
| '''Backup MX'''  
| Сервер является промежуточный MX для даного домена
+
| Сервер является промежуточный MX для даного домена
 
|-
 
|-
 
| '''Disable'''
 
| '''Disable'''
| Блокировать
+
| Блокировать
 
|-
 
|-
 
|'''Comments'''  
 
|'''Comments'''  
| Коментарии
+
| Коментарии
 
|}  
 
|}  
  
 
====Aliases====
 
====Aliases====
Список виртуальных псевдонимов
+
Список виртуальных псевдонимов
 
{| border=1
 
{| border=1
 
| '''Address'''  
 
| '''Address'''  
| Адрес
+
| Адрес
 
|-
 
|-
 
| '''GOTO'''  
 
| '''GOTO'''  
| Перенаправить на домен
+
| Перенаправить на домен
 
|-
 
|-
 
| '''Disable'''  
 
| '''Disable'''  
| Блокировать правило
+
| Блокировать правило
 
|}
 
|}
  
 
====Access====
 
====Access====
Контроль доступа к почтовой службе
+
Контроль доступа к почтовой службе
  
 
'''/ Customers/ Logins/ E-MAIL List/'''<br />
 
'''/ Customers/ Logins/ E-MAIL List/'''<br />
Список почтовых ящиков системы.
+
Список почтовых ящиков системы.
  
 
'''/ Customers/ Logins/ Information/ Services/ E-MAIL/'''<br />
 
'''/ Customers/ Logins/ Information/ Services/ E-MAIL/'''<br />
Управление почтовым ящиком пользователяю.
+
Управление почтовым ящиком пользователяю.
  
 
==Postfix==
 
==Postfix==
 
[http://www.postfix.org/ Postfix]<br />
 
[http://www.postfix.org/ Postfix]<br />
Так как я все настраивал с транспортом virtual (с maildrop у меня не получилось), а в Mandriva идет пакет POstfix без поддержки VDA, то вначале надо пере собрать [[Подключение VDA патча (ограничения размеров виртуальных ящиков) к Postfix | пакет]] с ее поддержкой.  
+
Так как я все настраивал с транспортом virtual (с maildrop у меня не получилось), а в Mandriva идет пакет POstfix без поддержки VDA, то вначале надо пере собрать [[Подключение VDA патча (ограничения размеров виртуальных ящиков) к Postfix | пакет]] с ее поддержкой.  
  
После установки
+
После установки
 
<pre># newaliases
 
<pre># newaliases
 
# cp /etc/postfix/main.cf.dist /etc/postfix/main.cf</pre>
 
# cp /etc/postfix/main.cf.dist /etc/postfix/main.cf</pre>
  
Создать каталог для виртуальных доменов:
+
Создать каталог для виртуальных доменов:
 
   
 
   
Открываем '''main.cf''' и вносим туда следущие значения:  
+
Открываем '''main.cf''' и вносим туда следущие значения:  
  
 
<pre>myorigin = proba.ru
 
<pre>myorigin = proba.ru
Строка 98: Строка 97:
 
mydestination = $myhostname, localhost.$mydomain
 
mydestination = $myhostname, localhost.$mydomain
  
#Максимально допустимый размер вложения 20Мб
+
#Максимально допустимый размер вложения 20Мб
 
message_size_limit = 20971520
 
message_size_limit = 20971520
  
# список подсетей, которым разрешена отправка писем, и на
+
# список подсетей, которым разрешена отправка писем, и на
# письма с которых многие проверки не распространяются.
+
# письма с которых многие проверки не распространяются.
# здесь не должно быть подсетей, которые не являются “внешними”
+
# здесь не должно быть подсетей, которые не являются “внешними”
 
mynetworks = 127.0.0.0/8, 172.16.130.0/24, 172.16.131.0/24, 172.16.137.0/24, 172.16.132.0/24
 
mynetworks = 127.0.0.0/8, 172.16.130.0/24, 172.16.131.0/24, 172.16.137.0/24, 172.16.132.0/24
  
 
relay_domains = proba.ru, miac35.ru
 
relay_domains = proba.ru, miac35.ru
  
#Указываем через какой сервер почта будет посылаться наружу
+
#Указываем через какой сервер почта будет посылаться наружу
 
relayhost = [192.168.1.54]
 
relayhost = [192.168.1.54]
  
Строка 123: Строка 122:
 
virtual_mailbox_domains = mysql:/etc/postfix/sql/virtual_domains.cf
 
virtual_mailbox_domains = mysql:/etc/postfix/sql/virtual_domains.cf
 
virtual_mailbox_maps = mysql:/etc/postfix/sql/virtual_mailbox.cf
 
virtual_mailbox_maps = mysql:/etc/postfix/sql/virtual_mailbox.cf
# Ограничение размера под почту 500 Мб
+
# Ограничение размера под почту 500 Мб
 
virtual_mailbox_limit = 524288000
 
virtual_mailbox_limit = 524288000
 
virtual_minimum_uid = 1001
 
virtual_minimum_uid = 1001
Строка 141: Строка 140:
 
queue_directory = /var/spool/postfix
 
queue_directory = /var/spool/postfix
 
mail_owner = postfix</pre>
 
mail_owner = postfix</pre>
Дополнительный настройки Postfix можно посмотреть в статье [[Борьба со спамом, средствами самого Postfix]]
+
Дополнительный настройки Postfix можно посмотреть в статье [[Борьба со спамом, средствами самого Postfix]]
  
Для TLS авторизации создаём сертификат x509:
+
Для TLS авторизации создаём сертификат x509:
 
<pre>mkdir /usr/abills/Certs
 
<pre>mkdir /usr/abills/Certs
 
cd /usr/abills/Certs
 
cd /usr/abills/Certs
 
openssl req -x509 -newkey rsa:1024 -keyout smtpd.pem -out smtpd.pem -nodes -days 3650</pre>
 
openssl req -x509 -newkey rsa:1024 -keyout smtpd.pem -out smtpd.pem -nodes -days 3650</pre>
Главное в поле '''Common Name (eg, YOUR name) [mail.domain.ru]''':
+
Главное в поле '''Common Name (eg, YOUR name) [mail.domain.ru]''':
указать FQDN вашего почтового сервера, в данном примере: '''mail.domain.ru'''. Если имя сервера для отправки/приема почты в настройках почтовой программы не совпадает с указанным в сертификате – почтовая программа будет «ругаться».
+
указать FQDN вашего почтового сервера, в данном примере: '''mail.domain.ru'''. Если имя сервера для отправки/приема почты в настройках почтовой программы не совпадает с указанным в сертификате – почтовая программа будет «ругаться».
  
И добавляем в конфиг '''main.cf''':
+
И добавляем в конфиг '''main.cf''':
 
<pre># tls config
 
<pre># tls config
 
smtp_use_tls = yes
 
smtp_use_tls = yes
Строка 163: Строка 162:
 
tls_random_source = dev:/dev/urandom
 
tls_random_source = dev:/dev/urandom
 
smtpd_tls_auth_only = yes</pre>
 
smtpd_tls_auth_only = yes</pre>
Опция '''smtpd_tls_auth_only = yes''' позволяет производить SMTP авторизацию только в режиме TLS.
+
Опция '''smtpd_tls_auth_only = yes''' позволяет производить SMTP авторизацию только в режиме TLS.
  
Обратите внимание что virtual uid и gid имеют статическую привязку и эти значения следует изменить на uid и gid юзера от которого будеть работать maildrop.
+
Обратите внимание что virtual uid и gid имеют статическую привязку и эти значения следует изменить на uid и gid юзера от которого будеть работать maildrop.
В моем случае это юзер vmail с uid и gid 1001.
+
В моем случае это юзер vmail с uid и gid 1001.
Транспорт virtual не поддерживает квоты, в отличии от maildrop, поэтому если вы хотите включить поддержку квот для virtual, установите патч [http://www.oav.net/vda/ VDA]
+
Транспорт virtual не поддерживает квоты, в отличии от maildrop, поэтому если вы хотите включить поддержку квот для virtual, установите патч [http://www.oav.net/vda/ VDA]
  
Теперь создадим пользователя, от которого будет работать вся наша виртуальная почта '''vmail''' с UID 1001 и GID 1001:
+
Теперь создадим пользователя, от которого будет работать вся наша виртуальная почта '''vmail''' с UID 1001 и GID 1001:
 
<pre># groupadd vmail -g 1001
 
<pre># groupadd vmail -g 1001
 
# useradd vmail -u 1001 -g 1001 -d /var/mail/virtuals -s /dev/null \
 
# useradd vmail -u 1001 -g 1001 -d /var/mail/virtuals -s /dev/null \
 
-c 'Virtual Mail User' -M </pre>
 
-c 'Virtual Mail User' -M </pre>
Каталог для виртуальных хостов
+
Каталог для виртуальных хостов
 
<pre># mkdir /var/spool/virtual
 
<pre># mkdir /var/spool/virtual
 
# chown -R vmail:vmail /var/spool/virtual
 
# chown -R vmail:vmail /var/spool/virtual
Строка 179: Строка 178:
 
</pre>
 
</pre>
  
abills  - имя пользователя в MySQL<br />
+
abills  - имя пользователя в MySQL<br />
dbpassword - пароль в MySQL<br />
+
dbpassword - пароль в MySQL<br />
abills - база MySQL<br />
+
abills - база MySQL<br />
127.0.0.1 - хост MySQL<br />
+
127.0.0.1 - хост MySQL<br />
  
Создаем файлы в директории /etc/postfix/sql
+
Создаем файлы в директории /etc/postfix/sql
  
 
'''transport.cf'''
 
'''transport.cf'''
Строка 222: Строка 221:
 
hosts = 127.0.0.1
 
hosts = 127.0.0.1
 
query = SELECT box_size * 1048576 FROM mail_boxes mb, mail_domains md WHERE CONCAT(mb.username, '@', md.domain)='%s' and mb.domain_id=md.id and mb.status = '0'</pre>
 
query = SELECT box_size * 1048576 FROM mail_boxes mb, mail_domains md WHERE CONCAT(mb.username, '@', md.domain)='%s' and mb.domain_id=md.id and mb.status = '0'</pre>
Также следим за правами доступа:
+
Также следим за правами доступа:
 
<pre># chown -R root:postfix /etc/postfix/sql
 
<pre># chown -R root:postfix /etc/postfix/sql
 
# chmod -R 640 /etc/postfix/sql
 
# chmod -R 640 /etc/postfix/sql
 
# chmod 750 /etc/postfix/sql
 
# chmod 750 /etc/postfix/sql
 
</pre>
 
</pre>
===Настройка SASL===
+
===Настройка SASL===
Создаем файл '''/etc/sasl2/smtpd.conf'''
+
Создаем файл '''/etc/sasl2/smtpd.conf'''
 
<pre>pwcheck_method: saslauthd auxprop
 
<pre>pwcheck_method: saslauthd auxprop
 
mech_list: login plain
 
mech_list: login plain
Строка 238: Строка 237:
 
mysql_hostnames: 127.0.0.1
 
mysql_hostnames: 127.0.0.1
 
mysql_statement: SELECT DECODE(mb.password, 'test12345678901234567890') FROM mail_boxes mb, mail_domains md WHERE CONCAT(mb.username, '@', md.domain)='%u@%r' and mb.domain_id=md.id and mb.status = '0' and (mb.expire = '0000-00-00' or mb.expire > curdate())</pre>
 
mysql_statement: SELECT DECODE(mb.password, 'test12345678901234567890') FROM mail_boxes mb, mail_domains md WHERE CONCAT(mb.username, '@', md.domain)='%u@%r' and mb.domain_id=md.id and mb.status = '0' and (mb.expire = '0000-00-00' or mb.expire > curdate())</pre>
Также следим за правами доступа:
+
Также следим за правами доступа:
 
<pre>chown root:postfix /etc/sasl2/smtpd.conf
 
<pre>chown root:postfix /etc/sasl2/smtpd.conf
 
chmod 640 /etc/sasl2/smtpd.conf
 
chmod 640 /etc/sasl2/smtpd.conf
Строка 244: Строка 243:
  
 
===courier-authlib===
 
===courier-authlib===
Демон авторизации для dropmail, courier-imap, courier-pop3d<br />
+
Демон авторизации для dropmail, courier-imap, courier-pop3d<br />
Для доступа к спулу почты /var/spool/virtual courier работает от юзера vmail (uid 1001,gid 1001)<br />
+
Для доступа к спулу почты /var/spool/virtual courier работает от юзера vmail (uid 1001,gid 1001)<br />
Правим конфигурационный файл для courier-authlib '''/etc/courier/authmysqlrc'''  
+
Правим конфигурационный файл для courier-authlib '''/etc/courier/authmysqlrc'''  
 
<pre>MYSQL_CLEAR_PWFIELD    DECODE(mb.password, '%secretkey%')
 
<pre>MYSQL_CLEAR_PWFIELD    DECODE(mb.password, '%secretkey%')
 
MYSQL_DATABASE          abills
 
MYSQL_DATABASE          abills
Строка 263: Строка 262:
 
MYSQL_USER_TABLE        mail_boxes mb, mail_domains md
 
MYSQL_USER_TABLE        mail_boxes mb, mail_domains md
 
MYSQL_WHERE_CLAUSE      mb.status='0'</pre>
 
MYSQL_WHERE_CLAUSE      mb.status='0'</pre>
Убедитесь что использована табуляция а не пробелы, иначе конфиг не будет работать.<br />
+
Убедитесь что использована табуляция а не пробелы, иначе конфиг не будет работать.<br />
'''%secretkey%''' - это код из файла '''/usr/abills/libexec/config.pl''', по умолчанию '''test12345678901234567890'''
+
'''%secretkey%''' - это код из файла '''/usr/abills/libexec/config.pl''', по умолчанию '''test12345678901234567890'''
  
Правим файл /etc/courier/autodaemonrc<br />
+
Правим файл /etc/courier/autodaemonrc<br />
 
<pre>#authmodulelist="authpam authpwd authshadow"
 
<pre>#authmodulelist="authpam authpwd authshadow"
 
authmodulelist="authmysql"</pre>
 
authmodulelist="authmysql"</pre>
Редактируем файлы pop3d, imapd, pop3d-ssl, imapd-ssl в /etc/courier-imap. Везде вписываем нужный нам ADDRESS и меняем строчки вида POP3DSTART=no на POP3DSTART=yes
+
Редактируем файлы pop3d, imapd, pop3d-ssl, imapd-ssl в /etc/courier-imap. Везде вписываем нужный нам ADDRESS и меняем строчки вида POP3DSTART=no на POP3DSTART=yes
  
запускаем authdaemon и другие:
+
запускаем authdaemon и другие:
 
<pre>service courier-authdaemon start
 
<pre>service courier-authdaemon start
 
service courier-pop3d start
 
service courier-pop3d start
Строка 277: Строка 276:
 
service courier-imapd start
 
service courier-imapd start
 
service courier-imapd-ssl start</pre>
 
service courier-imapd-ssl start</pre>
====Проверка:====
+
====Проверка:====
 
  # '''telnet 127.0.0.1 110'''
 
  # '''telnet 127.0.0.1 110'''
 
  Trying 127.0.0.1...
 
  Trying 127.0.0.1...
Строка 290: Строка 289:
 
  +OK Bye-bye.
 
  +OK Bye-bye.
 
  Connection closed by foreign host.
 
  Connection closed by foreign host.
Выделенное жирным шрифтом набирать с консоли
+
Выделенное жирным шрифтом набирать с консоли
  
Предварительно нужно создать почтовый ящик и пароль пользователя в http://host/abills/admin , а там Клиенты --> Логины --> Dialup / VPN --> Пользователи
+
Предварительно нужно создать почтовый ящик и пароль пользователя в http://host/abills/admin , а там Клиенты --> Логины --> Dialup / VPN --> Пользователи
  
===Установка Courier-imap===
+
===Установка Courier-imap===
 
[http://www.courier-mta.org/imap/ courier-imap]
 
[http://www.courier-mta.org/imap/ courier-imap]
 
[http://www.courier-mta.org/authlib/ Courier Authentication Library]
 
[http://www.courier-mta.org/authlib/ Courier Authentication Library]
  
Создаем SSL сертификат
+
Создаем SSL сертификат
 
<pre># cp /etc/pki/tls/courier-imapd.cnf /etc/courier/imapd.cnf
 
<pre># cp /etc/pki/tls/courier-imapd.cnf /etc/courier/imapd.cnf
 
# mkimapdcert</pre>
 
# mkimapdcert</pre>
  
===Тестирование TLS===
+
===Тестирование TLS===
Для тестирования воспользуемся telnet-ом на 25 порт локальной машины. Жирным шрифтом выделен ввод с клавиатуры.
+
Для тестирования воспользуемся telnet-ом на 25 порт локальной машины. Жирным шрифтом выделен ввод с клавиатуры.
 
  # telnet localhost 25
 
  # telnet localhost 25
 
  Trying ::1...
 
  Trying ::1...
Строка 323: Строка 322:
 
  Connection closed by foreign host.
 
  Connection closed by foreign host.
  
Обращаем внимание на появившуюся строку '''250-STARTTLS''', это обозначает, что сервер готов работать с использованием протокола TLS. Это так называемое '''«безопасное соединение на стандартном порту»'''.
+
Обращаем внимание на появившуюся строку '''250-STARTTLS''', это обозначает, что сервер готов работать с использованием протокола TLS. Это так называемое '''«безопасное соединение на стандартном порту»'''.
  
 
===maildrop===
 
===maildrop===
 
[http://www.courier-mta.org/maildrop/maildrop maildrop]<br />
 
[http://www.courier-mta.org/maildrop/maildrop maildrop]<br />
У меня так и не получилось настроить maildrop. Но тк транспорт virtual, после установки патча VDA, нормально работает с квотами на размер ящиков, то я так его и оставил.
+
У меня так и не получилось настроить maildrop. Но тк транспорт virtual, после установки патча VDA, нормально работает с квотами на размер ящиков, то я так его и оставил.
  
maildrop является альтернативой широко используемому procmail и имеет гораздо большие возможности - поддержка mysql и ldap, поддержка квот, более мощный язык фильтрации, повышенная безопасность, поддержка формата Maildir++.
+
maildrop является альтернативой широко используемому procmail и имеет гораздо большие возможности - поддержка mysql и ldap, поддержка квот, более мощный язык фильтрации, повышенная безопасность, поддержка формата Maildir++.
Более подробная документации в директории /usr/share/doc/maildrop  
+
Более подробная документации в директории /usr/share/doc/maildrop  
  
После установки запустите maildrop -v. Должны быть следующие строки
+
После установки запустите maildrop -v. Должны быть следующие строки
 
<pre>Courier Authentication Library extension enabled.
 
<pre>Courier Authentication Library extension enabled.
 
Maildir quota extension enabled.</pre>
 
Maildir quota extension enabled.</pre>
  
В '''/etc/postfix/master.cf''' измените конфиг maildrop на
+
В '''/etc/postfix/master.cf''' измените конфиг maildrop на
 
<pre>maildrop  unix  -      n      n      -      -      pipe
 
<pre>maildrop  unix  -      n      n      -      -      pipe
 
flags=Rhu user=vmail argv=/usr/bin/maildrop -w 90 -d ${recipient}</pre>
 
flags=Rhu user=vmail argv=/usr/bin/maildrop -w 90 -d ${recipient}</pre>
  
Создаем файл '''/var/spool/virtual/.mailfilter''' со следующим содержанием
+
Создаем файл '''/var/spool/virtual/.mailfilter''' со следующим содержанием
  
 
<pre>SHELL=/bin/sh
 
<pre>SHELL=/bin/sh
Строка 365: Строка 364:
 
    
 
    
 
to "$MAILDIR"</pre>
 
to "$MAILDIR"</pre>
Ставим права на запись и чтение только пользователю иначе maildrop откажется работать.  
+
Ставим права на запись и чтение только пользователю иначе maildrop откажется работать.  
 
<pre># chmod 600 /var/spool/virtual/.mailfilter
 
<pre># chmod 600 /var/spool/virtual/.mailfilter
 
# chown vmail:vmail /var/spool/virtual/.mailfilter</pre>
 
# chown vmail:vmail /var/spool/virtual/.mailfilter</pre>
Создаем директорию /var/spool/virtual.mailfilters  
+
Создаем директорию /var/spool/virtual.mailfilters  
 
<pre># mkdir -m 700 /var/spool/virtual/.mailfilters
 
<pre># mkdir -m 700 /var/spool/virtual/.mailfilters
 
# chown vmail:vmail /var/spool/virtual/.mailfilters</pre>
 
# chown vmail:vmail /var/spool/virtual/.mailfilters</pre>
Создаем include файл в формате user@domain соотвествующему переменной $LOGNAME /var/spool/virtual/.mailfilters/user@test.local.net со следующим содержанием
+
Создаем include файл в формате user@domain соотвествующему переменной $LOGNAME /var/spool/virtual/.mailfilters/user@test.local.net со следующим содержанием
 
<pre>if ( /^X-Spam-Status: Yes/:h )
 
<pre>if ( /^X-Spam-Status: Yes/:h )
 
   {
 
   {
 
to "$HOME/$LOGNAME/.Spam"
 
to "$HOME/$LOGNAME/.Spam"
# или отправляем в /dev/null  
+
# или отправляем в /dev/null  
 
# to "| cat - >/dev/null"
 
# to "| cat - >/dev/null"
 
}
 
}
 
to "$HOME/$LOGNAME"</pre>
 
to "$HOME/$LOGNAME"</pre>
NB! В отличии от virtual maildrop сам не создает maildir, поэтому следует создать нужный вам maildir и subfolders используя утилиту maildirmake  
+
NB! В отличии от virtual maildrop сам не создает maildir, поэтому следует создать нужный вам maildir и subfolders используя утилиту maildirmake  
 
<pre># su -fm vmail -c 'maildirmake /var/spool/virtual/test.local.net/user'  
 
<pre># su -fm vmail -c 'maildirmake /var/spool/virtual/test.local.net/user'  
 
# su -fm vmail -c 'maildirmake -f Spam /var/spool/virtual/test.local.net/user'</pre>
 
# su -fm vmail -c 'maildirmake -f Spam /var/spool/virtual/test.local.net/user'</pre>
Файл .mailfilter - это файл дает возможность maildrop выбрать нужный конфиг для пользователя, используя его логин, который берется из переменной $LOGNAME (user@domain).
+
Файл .mailfilter - это файл дает возможность maildrop выбрать нужный конфиг для пользователя, используя его логин, который берется из переменной $LOGNAME (user@domain).
  
В директории .mailfilters хранятся конфиги для каждого виртуального юзера.
+
В директории .mailfilters хранятся конфиги для каждого виртуального юзера.
  
Maildrop будет искать конфиг в формате user@domain и использовать его.
+
Maildrop будет искать конфиг в формате user@domain и использовать его.
  
Можно написать скрипт, который при создании maildir, автоматически создает нужный конфиг с дефолтными опциями mailfilters.
+
Можно написать скрипт, который при создании maildir, автоматически создает нужный конфиг с дефолтными опциями mailfilters.
  
В данном примере maildrop отбирает почту с заголовком X-Spam-Status: Yes, который генерирует spamassassin, установка которого будет рассмотрена ниже, и кладет ее в папку Spam. Остальная почта направляется в INBOX.  
+
В данном примере maildrop отбирает почту с заголовком X-Spam-Status: Yes, который генерирует spamassassin, установка которого будет рассмотрена ниже, и кладет ее в папку Spam. Остальная почта направляется в INBOX.  
  
Примеры фильтров для maildrop можно найти на
+
Примеры фильтров для maildrop можно найти на
 
http://sourceforge.net/projects/mdropspammailfilter  
 
http://sourceforge.net/projects/mdropspammailfilter  
  
Создаем файл '''/usr/local/etc/quotawarnmsg'''
+
Создаем файл '''/usr/local/etc/quotawarnmsg'''
  
 
==DB-Mail==
 
==DB-Mail==
  
==Компиляция Postfix с поддержкой MYSQL SASL2 и TLS и VDA==
+
==Компиляция Postfix с поддержкой MYSQL SASL2 и TLS и VDA==
Сначала надо установить пакеты db*-devel*.i586.rpm, libdb*-devel*.i586.rpm, libmysql*-devel*.i586.rpm.
+
Сначала надо установить пакеты db*-devel*.i586.rpm, libdb*-devel*.i586.rpm, libmysql*-devel*.i586.rpm.
  
Потом качаем patch [http://vda.sourceforge.net/ VDA]
+
Потом качаем patch [http://vda.sourceforge.net/ VDA]
  
Оба файла кладем в '''/usr/local/src''' и далее:
+
Оба файла кладем в '''/usr/local/src''' и далее:
 
<pre># tar zxvf postfix-2.3.7.tar.gz
 
<pre># tar zxvf postfix-2.3.7.tar.gz
 
# cp  postfix-2.3.7-vda.patch.gz postfix-2.3.7
 
# cp  postfix-2.3.7-vda.patch.gz postfix-2.3.7
 
# cd postfix-2.3.7
 
# cd postfix-2.3.7
 
# patch -p1 < postfix-2.3.7-vda.patch.gz </pre>
 
# patch -p1 < postfix-2.3.7-vda.patch.gz </pre>
Создаем файл make_config.sh
+
Создаем файл make_config.sh
 
<pre>make -f Makefile.init makefiles 'CCARGS=-DDEF_SAMPLE_DIR=\"/etc/mail/sample\" -DHAS_MYSQL \
 
<pre>make -f Makefile.init makefiles 'CCARGS=-DDEF_SAMPLE_DIR=\"/etc/mail/sample\" -DHAS_MYSQL \
 
-I/usr/include/mysql -DUSE_SASL_AUTH -I/usr/include/sasl -DUSE_SSL \
 
-I/usr/include/mysql -DUSE_SASL_AUTH -I/usr/include/sasl -DUSE_SSL \
 
-I/usr/include/ssl' 'AUXLIBS=-L/usr/lib/mysql -lmysqlclient \
 
-I/usr/include/ssl' 'AUXLIBS=-L/usr/lib/mysql -lmysqlclient \
 
-L/usr/lib -lsasl2 -lz -lm -L/usr/lib/ssl -lssl -lcrypto'</pre>
 
-L/usr/lib -lsasl2 -lz -lm -L/usr/lib/ssl -lssl -lcrypto'</pre>
Далее
+
Далее
 
<pre># sh make_config.sh
 
<pre># sh make_config.sh
 
# make  
 
# make  
 
# make install</pre>
 
# make install</pre>

Версия 18:00, 19 ноября 2009

Эта статья находится в стадии разрабоки. Оригинал статьи находится тут. Я просто пишу, что у меня из этого получилось на основе Mandriva 2008.

MYSQL

Так как postfix работает в chroot, то достучаться из него до mysql сервера через сокет невозможно. Для работы postfix c mysql нужно закоментировать строку в skip-networking в файле /etc/my.cnf, перезапустить mysql и дать доступ к порту 3306 для самого сервера.

iptables -A INPUT -p TCP -s 127.0.0.1 --dport 3306 -j ACCEPT

Установка пакетов

Итак устанавливаем следующие пакеты postfix-2.3.3-4mdv2007.0.i586.rpm, courier-imap-4.1.1-8mdv2007.0.i586.rpm со всеми зависимостями, courier-authlib-mysql-0.58-9mdv2007.0.i586.rpm,courier-pop-4.1.1-6mdv2007.0.i586.rpm, maildrop-1.7.0-10mdv2007.0.i586.rpm, maildrop-mysql-1.7.0-10mdv2007.0.i586.rpm, libsasl2-plug-sql-2.1.22-20mdv2007.0.i586.rpm.

Если пакет maildrop-1.7.0-10mdv2007.0.i586.rpm будет ругаться на конфликт установите его так

 rpm -i --nodeps --excludedocs maildrop-1.7.0-10mdv2007.0.i586.rpm

Mail

Модуль предназначен для упрощения процесса создания и управления почтовыми ящиками пользователей из интерфейса биллинга.

Установка

abills/libexec/config.pl

@MODULES = (
            'Mail'
            );

Если используете SpamAssasin

# mysql -D abills < db/Mail.sql
$conf{MAIL_CHG_PASSWD}=1; Разрешить пользователям изменять пароли для своих почтовых ящиков
$conf{MAIL_USER_FULL_CONTROL}=1; Разрешить пользователям удалять и добавлять себе почтовые ящики. С возможностью взымания платы за услугу.
$conf{MAIL_USER_DOMAIN_MNG}=1; Разрешить пользователю управлять своим доменом.
$conf{MAIL_SPAMD}='spamassasin'; Включить поддержку SpamAssasin

Настройка

System configuration --> E-MAIL

Domains

Список виртуальных доменов системы.

Domain Название домена
Transport Транспорт для даного домена. Возможные варианты:
virtual:
maildrop: Почтовый агент maildrop
local:
relay:
Backup MX Сервер является промежуточный MX для даного домена
Disable Блокировать
Comments Коментарии

Aliases

Список виртуальных псевдонимов

Address Адрес
GOTO Перенаправить на домен
Disable Блокировать правило

Access

Контроль доступа к почтовой службе

/ Customers/ Logins/ E-MAIL List/
Список почтовых ящиков системы.

/ Customers/ Logins/ Information/ Services/ E-MAIL/
Управление почтовым ящиком пользователяю.

Postfix

Postfix
Так как я все настраивал с транспортом virtual (с maildrop у меня не получилось), а в Mandriva идет пакет POstfix без поддержки VDA, то вначале надо пере собрать пакет с ее поддержкой.

После установки

# newaliases
# cp /etc/postfix/main.cf.dist /etc/postfix/main.cf

Создать каталог для виртуальных доменов:

Открываем main.cf и вносим туда следущие значения:

myorigin = proba.ru
#mydomain = proba.ru
debug_peer_level = 2
mydestination = $myhostname, localhost.$mydomain

#Максимально допустимый размер вложения 20Мб
message_size_limit = 20971520

# список подсетей, которым разрешена отправка писем, и на
# письма с которых многие проверки не распространяются.
# здесь не должно быть подсетей, которые не являются “внешними”
mynetworks = 127.0.0.0/8, 172.16.130.0/24, 172.16.131.0/24, 172.16.137.0/24, 172.16.132.0/24

relay_domains = proba.ru, miac35.ru

#Указываем через какой сервер почта будет посылаться наружу
relayhost = [192.168.1.54]

disable_vrfy_command = yes
smtpd_helo_required = yes
  
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
  
transport_maps = mysql:/etc/postfix/sql/transport.cf
virtual_alias_maps = mysql:/etc/postfix/sql/aliases.cf
virtual_gid_maps = static:1001
virtual_mailbox_base = /var/spool/virtual
virtual_mailbox_domains = mysql:/etc/postfix/sql/virtual_domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/sql/virtual_mailbox.cf
# Ограничение размера под почту 500 Мб
virtual_mailbox_limit = 524288000
virtual_minimum_uid = 1001
virtual_uid_maps = static:1001

local_recipient_maps = unix:passwd.byname $alias_maps
  
# Additional for quota support for virtual transport
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/sql/virtual_mailbox_limits.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please try again later.
virtual_overquota_bounce = yes
  
setgid_group = postdrop
queue_directory = /var/spool/postfix
mail_owner = postfix

Дополнительный настройки Postfix можно посмотреть в статье Борьба со спамом, средствами самого Postfix

Для TLS авторизации создаём сертификат x509:

mkdir /usr/abills/Certs
cd /usr/abills/Certs
openssl req -x509 -newkey rsa:1024 -keyout smtpd.pem -out smtpd.pem -nodes -days 3650

Главное в поле Common Name (eg, YOUR name) [mail.domain.ru]: указать FQDN вашего почтового сервера, в данном примере: mail.domain.ru. Если имя сервера для отправки/приема почты в настройках почтовой программы не совпадает с указанным в сертификате – почтовая программа будет «ругаться».

И добавляем в конфиг main.cf:

# tls config
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /usr/abills/Certs/smtpd.pem
smtpd_tls_cert_file = /usr/abills/Certs/smtpd.pem
smtpd_tls_CAfile = /usr/abills/Certs/smtpd.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
smtpd_tls_auth_only = yes

Опция smtpd_tls_auth_only = yes позволяет производить SMTP авторизацию только в режиме TLS.

Обратите внимание что virtual uid и gid имеют статическую привязку и эти значения следует изменить на uid и gid юзера от которого будеть работать maildrop. В моем случае это юзер vmail с uid и gid 1001. Транспорт virtual не поддерживает квоты, в отличии от maildrop, поэтому если вы хотите включить поддержку квот для virtual, установите патч VDA

Теперь создадим пользователя, от которого будет работать вся наша виртуальная почта vmail с UID 1001 и GID 1001:

# groupadd vmail -g 1001
# useradd vmail -u 1001 -g 1001 -d /var/mail/virtuals -s /dev/null \
-c 'Virtual Mail User' -M 

Каталог для виртуальных хостов

# mkdir /var/spool/virtual
# chown -R vmail:vmail /var/spool/virtual
# chmod -R 771 /var/spool/virtual

abills - имя пользователя в MySQL
dbpassword - пароль в MySQL
abills - база MySQL
127.0.0.1 - хост MySQL

Создаем файлы в директории /etc/postfix/sql

transport.cf

user = abills
password = dbpassword
dbname = abills
hosts = 127.0.0.1
query = SELECT transport FROM mail_domains WHERE domain='%d'

access.cf

user = abills
password = dbpassword
dbname = abills
hosts = 127.0.0.1
query = SELECT action FROM mail_access WHERE pattern='%s'

aliases.cf

user = abills
password = dbpassword
dbname = abills
hosts = 127.0.0.1
query = SELECT goto FROM mail_aliases WHERE address='%s'

virtual_domains.cf

user = abills
password = dbpassword
dbname = abills
hosts = 127.0.0.1
query = SELECT domain FROM mail_domains WHERE domain='%d' AND backup_mx='0' AND status='0'

virtual_mailbox.cf

user = abills
password = dbpassword
dbname = abills
hosts = 127.0.0.1
query = SELECT CONCAT(md.domain,'/',mb.username,'/') FROM mail_boxes mb, mail_domains md WHERE CONCAT(mb.username, '@', md.domain)='%s' and mb.domain_id=md.id and mb.status = '0' and (mb.expire = '0000-00-00' or mb.expire > curdate())

virtual_mailbox_limits.cf

user = abills
password = dbpassword
dbname = abills
hosts = 127.0.0.1
query = SELECT box_size * 1048576 FROM mail_boxes mb, mail_domains md WHERE CONCAT(mb.username, '@', md.domain)='%s' and mb.domain_id=md.id and mb.status = '0'

Также следим за правами доступа:

# chown -R root:postfix /etc/postfix/sql
# chmod -R 640 /etc/postfix/sql
# chmod 750 /etc/postfix/sql

Настройка SASL

Создаем файл /etc/sasl2/smtpd.conf

pwcheck_method: saslauthd auxprop
mech_list: login plain
auxprop_plugin: sql
sql_engine: mysql  
mysql_user: abills
mysql_passwd: dbpassword
mysql_database: abills
mysql_hostnames: 127.0.0.1
mysql_statement: SELECT DECODE(mb.password, 'test12345678901234567890') FROM mail_boxes mb, mail_domains md WHERE CONCAT(mb.username, '@', md.domain)='%u@%r' and mb.domain_id=md.id and mb.status = '0' and (mb.expire = '0000-00-00' or mb.expire > curdate())

Также следим за правами доступа:

chown root:postfix /etc/sasl2/smtpd.conf
chmod 640 /etc/sasl2/smtpd.conf

courier-authlib

Демон авторизации для dropmail, courier-imap, courier-pop3d
Для доступа к спулу почты /var/spool/virtual courier работает от юзера vmail (uid 1001,gid 1001)
Правим конфигурационный файл для courier-authlib /etc/courier/authmysqlrc

MYSQL_CLEAR_PWFIELD     DECODE(mb.password, '%secretkey%')
MYSQL_DATABASE          abills
MYSQL_PASSWORD          dbpassword
MYSQL_USERNAME          abills
MYSQL_SERVER            127.0.0.1
MYSQL_GID_FIELD         '1001'
MYSQL_HOME_FIELD        CONCAT('/var/spool/virtual/')
MYSQL_LOGIN_FIELD       CONCAT(mb.username, '@', md.domain)
MYSQL_MAILDIR_FIELD     CONCAT('/var/spool/virtual/', md.domain,'/',mb.username,'/')
MYSQL_NAME_FIELD        CONCAT(mb.username, '@', md.domain)
MYSQL_OPT               0
MYSQL_PORT              3306
MYSQL_QUOTA_FIELD       CONCAT(mb.box_size * 1048576,'S')
MYSQL_UID_FIELD         '1001'
MYSQL_USER_TABLE        mail_boxes mb, mail_domains md
MYSQL_WHERE_CLAUSE      mb.status='0'

Убедитесь что использована табуляция а не пробелы, иначе конфиг не будет работать.
%secretkey% - это код из файла /usr/abills/libexec/config.pl, по умолчанию test12345678901234567890

Правим файл /etc/courier/autodaemonrc

#authmodulelist="authpam authpwd authshadow"
authmodulelist="authmysql"

Редактируем файлы pop3d, imapd, pop3d-ssl, imapd-ssl в /etc/courier-imap. Везде вписываем нужный нам ADDRESS и меняем строчки вида POP3DSTART=no на POP3DSTART=yes

запускаем authdaemon и другие:

service courier-authdaemon start
service courier-pop3d start
service courier-pop3d-ssl start
service courier-imapd start
service courier-imapd-ssl start

Проверка:

# telnet 127.0.0.1 110
Trying 127.0.0.1...
Connected to proba (127.0.0.1).
Escape character is '^]'.
+OK Hello there.
user misha@proba.ru
+OK Password required.
pass password
+OK logged in.
quit
+OK Bye-bye.
Connection closed by foreign host.

Выделенное жирным шрифтом набирать с консоли

Предварительно нужно создать почтовый ящик и пароль пользователя в http://host/abills/admin , а там Клиенты --> Логины --> Dialup / VPN --> Пользователи

Установка Courier-imap

courier-imap Courier Authentication Library

Создаем SSL сертификат

# cp /etc/pki/tls/courier-imapd.cnf /etc/courier/imapd.cnf
# mkimapdcert

Тестирование TLS

Для тестирования воспользуемся telnet-ом на 25 порт локальной машины. Жирным шрифтом выделен ввод с клавиатуры.

# telnet localhost 25
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.domain.ru.
Escape character is '^]'.
220 new.domain.ru Mail Server
ehlo domain.ru
250-onix.domain.ru
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-STARTTLS
250 8BITMIME
starttls
220 Ready to start TLS
quit
quit
Connection closed by foreign host.

Обращаем внимание на появившуюся строку 250-STARTTLS, это обозначает, что сервер готов работать с использованием протокола TLS. Это так называемое «безопасное соединение на стандартном порту».

maildrop

maildrop
У меня так и не получилось настроить maildrop. Но тк транспорт virtual, после установки патча VDA, нормально работает с квотами на размер ящиков, то я так его и оставил.

maildrop является альтернативой широко используемому procmail и имеет гораздо большие возможности - поддержка mysql и ldap, поддержка квот, более мощный язык фильтрации, повышенная безопасность, поддержка формата Maildir++. Более подробная документации в директории /usr/share/doc/maildrop

После установки запустите maildrop -v. Должны быть следующие строки

Courier Authentication Library extension enabled.
Maildir quota extension enabled.

В /etc/postfix/master.cf измените конфиг maildrop на

maildrop  unix  -       n       n       -       -       pipe
flags=Rhu user=vmail argv=/usr/bin/maildrop -w 90 -d ${recipient}

Создаем файл /var/spool/virtual/.mailfilter со следующим содержанием

SHELL=/bin/sh
UMASK=077
mail=tolower($mail)
LOGNAME=tolower($LOGNAME)
VERBOSE=7
user=`echo $LOGNAME|sed s/\@/\ /| awk '{print $1}'`
domain=`echo $LOGNAME|sed s/\@/\ /| awk '{print $2}'`
MAILDIR="$HOME/$domain/$user/"

#Make maildir if not exists
`test -d $MAILDIR`
if ($RETURNCODE!=0)
  {
  `test -d $HOME/$domain/`
   if ($RETURNCODE!=0)
    {
     `mkdir "$HOME/$domain/"`
    }

  `/usr/local/bin/maildirmake $MAILDIR`
  }
  
to "$MAILDIR"

Ставим права на запись и чтение только пользователю иначе maildrop откажется работать.

# chmod 600 /var/spool/virtual/.mailfilter
# chown vmail:vmail /var/spool/virtual/.mailfilter

Создаем директорию /var/spool/virtual.mailfilters

# mkdir -m 700 /var/spool/virtual/.mailfilters
# chown vmail:vmail /var/spool/virtual/.mailfilters

Создаем include файл в формате user@domain соотвествующему переменной $LOGNAME /var/spool/virtual/.mailfilters/user@test.local.net со следующим содержанием

if ( /^X-Spam-Status: Yes/:h )
  {
to "$HOME/$LOGNAME/.Spam"
# или отправляем в /dev/null 
# to "| cat - >/dev/null"
}
to "$HOME/$LOGNAME"

NB! В отличии от virtual maildrop сам не создает maildir, поэтому следует создать нужный вам maildir и subfolders используя утилиту maildirmake

# su -fm vmail -c 'maildirmake /var/spool/virtual/test.local.net/user' 
# su -fm vmail -c 'maildirmake -f Spam /var/spool/virtual/test.local.net/user'

Файл .mailfilter - это файл дает возможность maildrop выбрать нужный конфиг для пользователя, используя его логин, который берется из переменной $LOGNAME (user@domain).

В директории .mailfilters хранятся конфиги для каждого виртуального юзера.

Maildrop будет искать конфиг в формате user@domain и использовать его.

Можно написать скрипт, который при создании maildir, автоматически создает нужный конфиг с дефолтными опциями mailfilters.

В данном примере maildrop отбирает почту с заголовком X-Spam-Status: Yes, который генерирует spamassassin, установка которого будет рассмотрена ниже, и кладет ее в папку Spam. Остальная почта направляется в INBOX.

Примеры фильтров для maildrop можно найти на http://sourceforge.net/projects/mdropspammailfilter

Создаем файл /usr/local/etc/quotawarnmsg

DB-Mail

Компиляция Postfix с поддержкой MYSQL SASL2 и TLS и VDA

Сначала надо установить пакеты db*-devel*.i586.rpm, libdb*-devel*.i586.rpm, libmysql*-devel*.i586.rpm.

Потом качаем patch VDA

Оба файла кладем в /usr/local/src и далее:

# tar zxvf postfix-2.3.7.tar.gz
# cp  postfix-2.3.7-vda.patch.gz postfix-2.3.7
# cd postfix-2.3.7
# patch -p1 < postfix-2.3.7-vda.patch.gz 

Создаем файл make_config.sh

make -f Makefile.init makefiles 'CCARGS=-DDEF_SAMPLE_DIR=\"/etc/mail/sample\" -DHAS_MYSQL \
-I/usr/include/mysql -DUSE_SASL_AUTH -I/usr/include/sasl -DUSE_SSL \
-I/usr/include/ssl' 'AUXLIBS=-L/usr/lib/mysql -lmysqlclient \
-L/usr/lib -lsasl2 -lz -lm -L/usr/lib/ssl -lssl -lcrypto'

Далее

# sh make_config.sh
# make 
# make install