Возможно при установке указанных пакетов понадобится
установить все зависимости, которые они за собой тянут. Предоставим
системе самой разобраться, что же ей не хватает - она с этим вполне
успешно справляется.
Предпочитаю использовать для /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
}
Далее редактируем /etc/imapd.conf
configdirectory: /var/imap
partition-default: /var/spool/imap
auto_transition: yes
tls_ca_path: /etc/ssl/certs
tls_cert_file: /etc/ssl/cyrus/server.crt
tls_key_file: /etc/ssl/cyrus/server.key
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
вроде бы с настройкой cyrus покончено
Теперь займемся почтовыми ящиками юзеров, для этого используем программу cyradm
/etc/init.d/cyrus start
cyradm -user cyrus -server localhost
localhost> cm user.testuser
localhost> help - выводит все команды для руления юзерскими ящиками
localhost> exit
Не забудьте забить в sasldb2 нового юзера:
sasldbpasswd2 testuser ( может правильнее 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.
Желательно поставить антивирус например cmalav используем для
этого связку 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. Все вышеописанное проверялось на моей рабочей машине и на
серваке небольшой конторы.
Автор (или авторы) не несут ответственности за безграмотное и
необдуманное применение данного руководства. Ваша безопасность в ваших
руках и в голове! Данное описание не претендует на полное и развернутое
и не является единственно возможным вариантом конфигурации.
Также выражаю признательность разработчикам вышеописанных замечательных
программ за прекрасное исполнение и хорошую документацию. Практически
все вышенаписанное подчерпнуто из документации к самим пакетам, а также
некоторые мысли родились из отрывочных данных, блуждающих в рунете -
большое спасибо за это их авторам.
ru.gentoo-wiki.com