| Используется postfix + cyrus-imap, авторизация пользователей через cyrus-sasl без прикручивания какой-либо БД (подходит для контор с несколькими десятками почтовых ящиков - хранить что-либо в mysql или postgress в данном случае нет смысла). Пользователи хранятся в базе sasldb, поэтому нет нужды заводить в системе реальных пользователей. Возможно при установке указанных пакетов понадобится установить все зависимости, которые они за собой тянут. Предоставим системе самой разобраться, что же ей не хватает - она с этим вполне успешно справляется. Предпочитаю использовать для /var reiserfs, но это сугубо личные предпочтения. emerge -pv cyrus-sasl [ebuild N ] dev-libs/cyrus-sasl-2.1.20 -authdaemond +berkdb -debug +gdbm +java -kerberos -ldap +mysql +pam -postgres +ssl -static 0 kB На всякий случай проверяем флаги - все ОК emerge cyrus-sasl Этот пакет поставили, едем дальше emerge -pv postfix These are the packages that I would merge, in order: Calculating dependencies ...done! [ebuild N ] mail-mta/postfix-2.1.5-r1 +ipv6 -ldap -mailwrapper -mbox +mysql +pam -postgres -sasl*(-selinux) +ssl -vda 0 kB Здесь нам может пригодиться флаг sasl, хотя в моем случае пока нет нужды авторизоваться на smtp, возможно в дальнейшем здесь будет описана авторизация через cyrus-sasl на smtp - вообщем выставляйте флаги по вкусу кому что надо USE="sasl" emerge postfix Постфикс собрался emerge -pv cyrus-imapd These are the packages that I would merge, in order: Calculating dependencies ...done! [ebuild N ] net-mail/cyrus-imapd-2.2.10 -afs -drac -idled -kerberos +pam -snmp +ssl +tcpd 0 kB После проверки и установки нужных нам флагов пересобираем openssl и imap-сервер emerge cyrus-imapd Программа для администрирования имаповских ящиков emerge cyrus-imap-admin После того как все нужные нам пакеты поставлены, можно приступать к настройке сначала cyrus-sasl passwd cyrus pwconv chown -R cyrus:mail /etc/sasl2 - доступ cyrus к базе /etc/sasl2/sasldb2 saslpasswd2 cyrus - заводим в sasldb2 sasldblistusers2 - для проверки Разбираемся с postfix Cодержимое /etc/postfix/main.cf, ниже приведена примерная конфигурация почтового сервера подключенного напрямую к инету (не через relayhost), естественно для этого случая должна быть MX-запись в ДНС. Подчеркиваю, что умышленно опускаю многие параметры в main.cf, чтобы не раздувать описание. Добавьте все остальное руководствуясь документацией postfix. queue_directory = /var/spool/postfix command_directory = /usr/sbin daemon_directory = /usr/lib/postfix mail_owner = postfix myhostname = mail.domain.tld mydomain = mail.domain.tld myorigin = $mydomain inet_interfaces = all mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain local_recipient_maps = unknown_local_recipient_reject_code = 550 mynetworks_style = subnet mynetworks = 192.168.1.0/24, 127.0.0.0/8 relay_domains = $mydestination НА ЭТУ СТРОЧКУ ОБРАТИТЕ ВНИМАНИЕ!!! mailbox_transport = lmtp:unix:/var/imap/socket/lmtp Если надо подключить procmail то вместо нее пишем mailbox_transport = procmail Когда добавили все, что нужно в main.cf, идем в /etc/postfix/master.cf Ищем такую строку # Also specify in main.cf: cyrus_destination_recipient_limit=1 cyrus unix - n n - - pipe user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user} И заменяем путь на # Also specify in main.cf: cyrus_destination_recipient_limit=1 cyrus unix - n n - - pipe user=cyrus argv=/cyrus/deliver -e -r ${sender} -m ${extension} ${user} При использовании procmail, добавляем procmail unix - n n - - pipe flags=R user=cyrus argv=/usr/bin/procmail -p /etc/procmailrc USER=${user} Где файл /etc/procmailrc : DELIVERMAIL=/usr/lib/cyrus/deliver LOGFILE=/var/log/procmaillog IMAP="$DELIVERMAIL -e -a $USER -m user.$USER" (если надо подключить spamassassin) :0fw : spamassassin.lock * < 90000 | /usr/bin/spamassassin и далее обязательно :0 | $IMAP :0w { EXITCODE=$? HOST } Все, с постфиксом разобрались, теперь cyrus-imapd Редактируем /etc/cyrus.conf # $Header: /var/cvsroot/gentoo-x86/net-mail/cyrus-imapd/files/cyrus.conf,v 1.4 2004/07/18 04:02:23 dragonheart Exp $ # Standard standalone server configuration. START { # Do not delete this entry! recover cmd="ctl_cyrusdb -r" # This is only necessary if using idled for IMAP IDLE. #idled cmd="idled" } # UNIX sockets start with a slash and are put into /var/imap/socket. SERVICES { # Add or remove based on preferences. imap cmd="imapd" listen="imap2" prefork=0 pop3 cmd="pop3d" listen="pop-3" prefork=0 # Don't forget to generate the needed keys for SSL or TLS # (see doc/html/install-configure.html). imaps cmd="imapd -s" listen="imaps" prefork=0 pop3s cmd="pop3d -s" listen="pop3s" prefork=0 sieve cmd="timsieved" listen="sieve" prefork=0 # at least one LMTP is required for delivery #lmtp cmd="lmtpd" listen="lmtp" prefork=0 ##ОБРАТИТЕ ВНИМАНИЕ НА ЭТУ СТРОКУ lmtpunix cmd="lmtpd" listen="/var/imap/socket/lmtp" prefork=0 # this is only necessary if using notifications #notify cmd="notifyd" listen="/var/imap/socket/notify" proto="udp" prefork=1 } EVENTS { # This is required. checkpoint cmd="ctl_cyrusdb -c" period=30 # This is only necessary if using duplicate delivery suppression. delprune cmd="ctl_deliver -E 3" period=1440 # This is only necessary if caching TLS sessions. tlsprune cmd="tls_prune" period=1440 } Вот так делаем сертификаты openssl req -new -nodes -out req.pem -keyout key.pem openssl rsa -in key.pem -out new.key.pem openssl x509 -in req.pem -out ca-cert -req \ -signkey new.key.pem -days 999 cp new.key.pem /etc/ssl/cyrus/server.pem rm new.key.pem cat ca-cert >> /etc/ssl/cyrus/server.pem chown cyrus:mail /etc/ssl/cyrus/server.pem chmod 600 /etc/ssl/cyrus/server.pem # Your key should be protected Проверяем все-ли директории созданы /var/imap cd /var mkdir imap chown cyrus:mail imap chmod 750 imap /var/spool/imap cd /var/spool mkdir imap chown cyrus:mail imap chmod 750 imap /usr/sieve cd /usr mkdir sieve chown cyrus:mail sieve chmod 750 sieve Далее редактируем /etc/imapd.conf configdirectory: /var/imap partition-default: /var/spool/imap auto_transition: yes tls_ca_path: /etc/ssl/cyrus tls_cert_file: /etc/ssl/cyrus/server.pem tls_key_file: /etc/ssl/cyrus/server.pem admins: cyrus hashimapspool: yes allowanonymouslogin: no allowplaintext: yes sasl_pwcheck_method: auxprop sasl_auxprop_plugin: sasldb sasldb_path: /etc/sasl2/sasldb2 sasl_mech_list: LOGIN PLAIN Авторизация через базу sasldb, механизмы авторизации LOGIN,PLAIN Если мы будем использовать обычные открытые пароли, без шифрования (например внутри организации) то изменим в /etc/imapd.conf allowanonymouslogin: yes вроде бы с настройкой cyrus покончено Теперь займемся почтовыми ящиками юзеров, для этого используем программу cyradm /etc/init.d/cyrus start cyradm -user cyrus -server localhost localhost> cm user.testuser localhost> help - выводит все команды для руления юзерскими ящиками localhost> exit Не забудьте забить в sasldb2 нового юзера: saslpasswd2 testuser Поднимаем сервисы /etc/init.d/postfix start /etc/init.d/cyrus start Настраиваем почтового клиента (проверено с thunderbird 1.0 и с KMail 1.7.1, с Outlook Express тоже не должно быть проблем). Пробуем отправить письмо, если что-то не работает - смотрим логи, прежде всего проверьте права на доступ в /var/imap/socket/lmtp для пользователей postfix и cyrus, чаще всего проблемы связаны именно с этим. Также проверьте права на доступ к /etc/sasl2/sasldb2 для пользователя cyrus, который должен быть в группе mail. Желательно поставить антивирус например clamav используем для этого связку clamav + clamsmtp хотя возможны и другие варианты например amavisd-new. Установка прекрасно описана здесь http://www.nixp.ru/articles/clamav_postfix, необходимо руководствоваться ей,естественно с адаптацией под реалии Gentoo emerge clamav ACCEPT_KEYWORDS="~x86" emerge clamsmtp (пока замаскирован в портаджах) Затем в файле /etc/conf.d/clamd START_CLAMD = yes (для версии старше 0.85 уже не актуально - все настройки только в clamd.conf и clamsmtpd.conf) Редактируем файлы /etc/clamd.conf и /etc/clamsmtpd.conf в соответствии с рекомендациями приведенными выше по ссылке Обратите внимание на параметры LocalSocket: /var/run/clamav/clamd.sock в /etc/clamav.conf и ClamAddress: /var/run/clamav/clamd.sock в /etc/clamsmtpd.conf - путь и имя файла должен одинаковым для обоих конфигов В файл main.cf необходимо добавить две строчки: content_filter = scan:127.0.0.1:10025 receive_override_options = no_address_mappings Первая говорит postfix'у о том, что необходимо пересылать всю почту через сервис (фильтр) 'scan' на 10025-ый порт, который, как раз, открыт clamsmtpd. Вторая строчка говорит о том, чтобы postfix не делал никаких манипуляций с адресами до того, как они дойдут до content_filter. Так что получается, что фильтр работает с реальными почтовыми адресами, а не с результатами перевода в виртуальные псевдонимы, маскарадингом и т.п. В файл master.cf необходимо добавить следующие строки: # AV scan filter (used by content_filter) scan unix - - n - 16 smtp -o smtp_send_xforward_command=yes # For injecting mail back into postfix from the filter 127.0.0.1:10026 inet n - n - 16 smtpd -o content_filter= -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks -o smtpd_helo_restrictions= -o smtpd_client_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks_style=host -o smtpd_authorized_xforward_hosts=127.0.0.0/8 Примечание: вокруг знака '=' пробелы не ставить. Значение 127.0.0.1:10026 открывает 10026-порт для возвращения почты обратно от clamsmtpd. rc-update add clamd default rc-update add clamsmtpd default /etc/init.d/postfix reload все - антивирус должен проверять всю почту проходящую через Ваш почтовик P.S. Все вышеописанное проверялось на моей рабочей машине и на серваке небольшой конторы. Автор (или авторы) не несут ответственности за безграмотное и необдуманное применение данного руководства. Ваша безопасность в ваших руках и в голове! Данное описание не претендует на полное и развернутое и не является единственно возможным вариантом конфигурации. Также выражаю признательность разработчикам вышеописанных замечательных программ за прекрасное исполнение и хорошую документацию. Практически все вышенаписанное подчерпнуто из документации к самим пакетам, а также некоторые мысли родились из отрывочных данных, блуждающих в рунете - большое спасибо за это их авторам. PS. Некоторая путаница возникает с переадресацией почты - самый простой вариант использование файла aliases - но до его использования в отличие от sendmail, ящик который должен быть переадресован должен быть все-таки создан в системе через cyradm -user cyrus -auth login -server localhost команда cm и не забыть что etc/postfix/main.cf alias_maps = hash:/usr/local/etc/postfix/aliases alias_database = hash:/usr/local/etc/postfix/aliases Пошаговая инструкция. Источник: http://www.unixdoc.ru/index.php?mode=2&podmode=1&arcicle_id=92 |