Настройка Postfix и Антиспама

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

Име­ем:

Любую уста­нов­ку Postfix для сер­ве­ра example.com, с внут­рен­ним интер­фей­сом 192.168.0.1 и внеш­ним 80.80.80.80 (для при­ме­ра, вез­де где встре­ча­ют­ся необ­хо­диом заме­нитть на свои).

Зада­ча:

мини­ми­зи­ро­вать тра­фик, посту­па­е­мый вме­сте со спа­мом, а так­же умен­шить кол-во спа­ма, попа­да­ю­ще­го в поч­то­вые ящи­ки конеч­ных поль­зо­ва­те­лей, при­чем сила­ми толь­ко само­го Постфикса.

Тре­бу­е­мая поли­ти­ка для Postfix:

  • раз­ре­ше­на отправ­ка писем с адре­сов внут­рен­ней сети
  • раз­ре­шен при­ем писем сна­ру­жи для адре­са­тов внутри
  • при­ем писем толь­ко от суще­ству­ю­щих и кор­рект­ных адресатов
  • при­ем писем толь­ко для име­ю­щих­ся на сер­ве­ре адресатов
  • для отправ­ки писем FROM: *@example.com с нев­нут­рен­них хостов тре­бо­вать обя­за­тель­ную авто­ри­за­цию, без авто­ри­за­ции пись­ма отклонять

При­ме­ня­е­мые тех­ни­че­ские решения:

  • раз­ре­шать внут­рен­ним ип-адре­сам отправ­лять пись­ма на несу­ще­ству­ю­щие email-адре­са (рас­сыл­ка реклам­но­го отдела)
  • про­ве­рять суще­ство­ва­ние и кор­рект­ность адре­са отправителя
  • про­ве­рять суще­ство­ва­ние и кор­рект­ность адре­са получателя
  • про­ве­рять кор­рект­ность IP-адре­са сер­ве­ра пере­да­ю­ще­го письм
  • про­ве­рять нали­чие IP-адре­са отпра­ви­те­ля в спис­ках DNSBL
  • откло­нять пись­ма с IP-адре­сов, опре­де­ля­е­мых как дина­ми­че­ские (dialup & adsl)
  • для "осо­бо про­дви­ну­тых" респон­ден­тов с кри­вы­ми настрой­ка­ми при­ме­нять "белые списки"

Настройки

файл /etc/postfix/main.cf:

 

 

осталь­ное вооб­щем-то на усмот­ре­ние или стандартно.

теперь ука­зан­ные в кач-ве пара­мет­ров файлы:

файл /etc/postfix/helo_access:

послед­няя стро­ка иллю­стри­ру­ет при­мер "про­дви­ну­то­го" респон­ден­та, чей ком­пью­тер выда­ет бесмыс­лен­ное при­вет­ствие helo, а почту от тако­го респон­ден­та все рав­но при­ни­мать надо.

файл /etc/postfix/dul_checks:

 

 

файл /etc/postfix/sender_access:

здесь зада­ем мас­ки адре­сов, от кого мы хотим полу­чать (или запре­щать) кор­ре­спон­ден­цию несмот­ря на то, что доме­ны этих адре­сов могут быть неопределены.

файл /etc/postfix/recipient_access:

раз­ре­ша­ем или запре­ща­ем отправ­ку писем на эти адреса

файл /etc/postfix/helo_regexp:

запре­ща­ем ИП-адрес в каче­стве HELO. Это явное нару­ше­ние RFC, но прак­ти­ка пока­за­ла, что это рабо­та­ет без сбоев.

после созда­ния фай­лов helo_access, client_access и dul_checks необ­хо­ди­мо выполнить

и если все про­шло без руга­ни, то

и мож­но смот­реть лог-файл на пред­мет оши­бок и нали­чие оши­боч­ных сра­ба­ты­ва­ний (if ever any 🙂 ). Для удоб­ства мож­но grep'ить по клю­че­во­му сло­ву SPAM

В моем при­ме­ре я несколь­ко дней изу­чал жур­на­лы /var/log/mail.log на пред­мет лож­ных сра­ба­ты­ва­ний, и еще в тече­ние несколь­ких меся­цев наблю­дал за всем отсе­ян­ным по dul_cheсks пись­мам, и не обна­ру­жил ни одно­го слу­чая бло­ки­ров­ки нор­маль­ной почты по вине наше­го сервера.

Сле­ду­ет отме­тить, что встре­ча­лись очень искус­ные попыт­ки мимик­рии под реаль­ные емайл-адре­са, кото­рые тем не менее лег­ко про­ве­ря­лись с помо­щью whois-запросов.

После настро­ек пери­о­ди­че­ски всплы­ва­ли "про­дви­ну­тые" респон­ден­ты, кото­рые отсы­ла­ли пись­ма с адре­сов, не име­ю­щих ДНС-имен или с некор­рект­ным HELO. Для них всех были добав­ле­ны запи­си в "белые спис­ки", что так­же реши­ло проблему.

Как пока­зал опыт, DNSBL-про­вер­ки отсе­ка­ют при­мер­но 40% спа­ма в про­цес­се при­е­ма заго­лов­ков, еще 30% отсе­ка­ет­ся с помо­щью dul_checks, и на этом эко­но­мит­ся тра­фик не при­ня­тых тел писем спа­мов (при­мер­но 20-50 kb на каж­дой попыт­ке, а их может быть при­мер­но 30-50 тыс в неделю).

Уди­ви­тель­ное рядом, но на про­вер­ках HELO/EHLO отсе­ка­ет­ся боль­шин­ство хит­рых спам­ме­ров, кото­рые пыта­ют­ся замас­ки­ро­вать­ся под при­лич­ный сервер(10% от обще­го чис­ла писем).

Это осо­бен­но акту­аль­но в свя­зи с тем, что дина­ми­че­ски выде­ля­е­мые IP-адре­са тех­ни­че­ски не очень эффек­тив­но попа­да­ют в DNSBL-спис­ки, так как часто к момен­ту про­вер­ки на open-relay′ность неко­то­ро­го адре­са на нем уже "сидит" совер­шен­но дру­гой комп. Зато по обрат­ным домен­ным име­нам такие адре­са лег­ко рас­по­зна­ют­ся :), и это не зави­сит от спам­ме­ров, а толь­ко от ISP.

Одна­ко, ока­за­лось неэф­фек­тив­ным тре­бо­вать обя­за­тель­но­го раз­ре­ше­ние ИП-адрес отпра­ви­те­ля в ДНС. Хотя это тоже режет спам, часто попа­да­ют­ся сер­ве­ра неболь­ших фирм, чьи ISP поле­ни­лись рас­пи­сать раз­да­ва­е­мые для под­клю­че­ний ИП-адре­са в DNS. От опции reject_unknown_client при­шлось отка­зать­ся совсем.

При­ве­ден­ные настрой­ки обес­пе­чи­ли эффек­тив­ную филь­тра­цию спа­ма, умень­шив его кол-во на поря­док (с 300-500 спа­мов в сут­ки до 10-15 на один ящик элек­трон­ной почты).

Для сер­ве­ра с 30 поч­то­вы­ми ящи­ка­ми (при­мер­но 5 тыс при­ня­тых и 10 тыс откло­нен­ных писем в неде­лю) куму­ля­тив­ная эко­но­мия тра­фи­ка состав­ля­ет при­мер­но 300 мб в неде­лю, или око­ло полу­то­ра гига­байт в месяц.

Сто­ит отме­тить, что вме­сте с "закру­чи­ва­нию гаек" для про­ве­рок на эта­пе SMTP-соеди­не­ний осу­ществ­ля­лись offline-меры по борь­бе со спа­мом. Сре­ди них ана­лиз тен­ден­ций по жур­на­лу mail.log и отсыл­ка spam-report'ов на www.spamcop.net