Postfix как пограничный relay для Exchange

Thank you for reading this post, don't forget to subscribe!

Что бы не зава­лить Exchange кучей писем, я обыч­но уста­нав­ли­ваю погра­нич­ный сер­вер на Linux с Postfix и SpamAssassin. Такое реше­ние поз­во­ля­ет еще на вхо­де отфиль­тро­вать совсем уж спа­мов­ские пись­ма и не нагру­жать ими внут­рен­ний сер­вер. При этом таких сер­ве­ров луч­ше сра­зу под­нять несколь­ко для отказоустойчивости.

yum -y install spamassassin postfix
systemctl enable spamassassin
systemctl enable postfix
Созда­ем ката­ло­ги и фай­лы для postfix
mkdir  /etc/postfix/db #каталог для баз
mkdir  /etc/postfix/ad #каталог для скриптов AD
mkdir  /etc/postfix/ssl #каталог  для сертификатов
В ката­ло­ге db у меня созда­ны такие файлы:
bad_clients — руч­ная бло­ки­ров­ки мэйлов
good_clients — белый список
header_checks — для ана­ли­за заголовков
helo_regexp — для ана­ли­за helo
relay_domains — спи­сок доме­нов для пересылки
relay_recipients — спи­сок ящиков
virtual_transport — спи­сок smtp сер­ве­ров (в нашем слу­чае exchange)
Кон­вер­ти­ру­ем эти фай­лы в индек­си­ро­ван­ные базы для Postfix.
postmap bad_clients good_clients header_checks helo_regexp relay_domains relay_recipients virtual_transport
В ката­лог /etc/postfix/ssl нуж­но поло­жить сер­ти­фи­кат в фор­ма­те .pem, хотя мож­но и в дру­гих. У меня этот сер­ти­фи­кат от Lets Encrypt, но пой­дут и самоподписные.
Далее я про­сто при­ве­ду при­мер Postfix конфигов:

[codesyntax lang="php"]

[/codesyntax]

[codesyntax lang="php"]

[/codesyntax]
/^Subject:.*SPAM/ REDIRECT spam@domain.com

/([0-9]{1,3}(\.|-)){3}[0-9]{1,3}/i REJECT Dynamic address

domain.com OK

domain.com smtp:[10.1.1.1]
Теперь немно­го настро­им SpamAssassin
adduser --system spamd
mkdir /home/spamd/.spamassassin/
vim /home/spamd/.spamassassin/user_prefs #просто создаем пустой файл
Настро­им firewall для 25 порта:
firewall-cmd --zone=public --add-service=smtp --permanent
firewall-cmd --reload
Запу­стим сервисы:
systemctl start spamassassin
systemctl start postfix