Postfix mini howto
Матеріал з docs.linux.org.ua — збірника документації з Unix/Linux українською мовою.
Поштова система на основі postfix з фільтрацією вірусів та спаму. (Postfix+Dovecot+ClamAV+SpamAssassin)
Ця стаття не містить у собі нічого революційного. Вона всього лише забрані до купи шматки документації присвяченої тому чи іншому питанню. Все що викладено нижче – досвід побудови поштової системи на хостинг-сервері з ISPmanager.
Зміст |
Встановлення необхідного ПЗ.
Наразі приводжу у якості прикладу FreeBSD 6.1, Linux версія не буде дуже сильно відрізнятись (принаймні я на це сподіваюсь бо багато чого залежить від дистра). Postfix встановлюємо версії >= 2.3 з підтримкою DovecotSASL. Це надасть можливість створювати віртуальних користувачів не звертаючись за допомогою до різних SQL використовуючи файл паролів та викинути з нашої поштової системи cyrus-sasl (тобто зменшити кількість деталей що можуть вийти з ладу та розвалити всю поштову систему). Dovecot, ClamAV, SpamAssassin, ClamSMTP встановлюємо з портів у звичайному вигляді та стабільні версії. spamass-rules встановлюємо останні, хоча власні правила мають працювати краще.
Налаштування ПЗ.
Налаштування МТА Postfix.
У головний файл параметрів postfix/main.cf додаємо наступні рядки:
#Вмикаємо sasl-авторизацію. smtpd_sasl_auth_enable = yes #Дозволяємо відсилання пошти лише тим, хто вдало пройшов авторизацію, та тим, хто входить у довірену мережу smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,check_relay_domains #Тип sasl smtpd_sasl_type = dovecot #Шлях до сокета через який власне і йде авторизація. Може бути повним, або відносно queue_directory smtpd_sasl_path = private/auth
Всі інші налаштування робимо читаючи конфіг, та змінюючи у ньому потрібні місця.
У файл postfix/master.cf додаємо наступні рядки:
#Відсилання пошти на перевірку до ClamSMTP:
scan unix - - n - 16 smtp
-o smtp_send_xforward_command=yes
#Повернення пошти від ClamSMTP:
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
#Перевірка пошти SpamAssassin
spamfilter unix - n n - - pipe flags=Rq user=clamav argv=/usr/local/bin/spamfilter -f ${sender} -- ${recipient}
До рядка
smtp inet n - - - - smtpd
додаємо наступне:
-o smtpd_client_restrictions=permit_sasl_authenticated -o content_filter=spamfilter:dummy -o content_filter = scan:127.0.0.1:10025
Налаштування Dovecot.
Знову ж таки, йдемо по файлу конфігурації вносячи незначні зміни доки не знаходимо розділ auth deafult. Робимо його вміст наступним:
auth deafult {
mechanisms = plain login
#Наразі, використовується файл з паролями /usr/local/etc/dovecot.passwd
passdb passwd-file {
args = /usr/local/etc/dovecot.passwd
}
userdb passwd-file {
args = /usr/local/etc/dovecot.passwd
}
#Через цей сокет піде авторизація у postfix.
socket listen {
client {
#Шлях має бути таким як і у налаштуваннях postfix.
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}
}
Налаштування ClamAV & ClamSMTP
Тут все залежить від Вашого бажання захиститись від вірусів. Взагалі, конфігурація досить стандартна, і зводиться до двох файлів: clamd.conf:
LogFile /var/log/clamav/clamd.log LogFileMaxSize 2M PidFile /var/run/clamav/clamd.pid TemporaryDirectory /var/clamav DatabaseDirectory /var/clamav/db LocalSocket /var/clamav/clamd.sock FixStaleSocket yes User clamav ScanMail yes
clamsmtpd.conf:
OutAddress: 10026 Listen: 0.0.0.0:10025 ClamAddress: /var/clamav/clamd.sock Header: X-Virus-Scanned: ClamAV using ClamSMTP TempDirectory: /var/clamav User: clamav
Налаштування SpamAssassin.
Все зводиться до файла mail/spamassassin/local.cf:
rewrite_header Subject: *****SPAM***** ( _HITS_ ) required_score 7.0 use_bayes 1 bayes_auto_learn 1
Взагалі, можемо до нього додати будь-які додаткові правила, але це вже справа кожної окремої людини, виходячи з конкретних обставин. та простенького сценарію оболонки /usr/local/bin/spamfilter:
#!/usr/local/bin/bash /usr/local/bin/spamc | /usr/sbin/sendmail -i "$@" exit $?
Тепер нам залишається лише запустити все що нам потрібно: postfix, dovecot, clamd, clamsmtp, sa-spamd.

