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.

Особисті інструменти