postfix различные варианты настроек.

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

Как мне вырезать все вложения при отправке писем во внешний мир?

Реа­ли­зо­вать дан­ную зада­чу мож­но с помо­щью про­грам­мы altermime.

В дан­ном при­ме­ре исполь­зо­ва­лась сле­ду­ю­щая вер­сия altermime

Для нача­ла пишем неболь­шой скрипт.

Сохра­ня­ем его напри­мер под таким име­нем /etc/postfix/filter/remove_attachments.sh

И выстав­ля­ем пра­ва на запуск

Теперь нам необ­хо­ди­мо опи­сать сам транс­порт для филь­тра­ции в фай­ле /etc/postfix/master.cf

Теперь опи­сы­ва­ем поли­ти­ки филь­тра­ции в фай­ле /etc/postfix/main.cf

Созда­ем соот­вет­ству­ю­щие кар­ты просмотра

Отправ­ля­ем внут­ри доме­на пись­мо с вложением

Теперь попро­бу­ем отпра­вить пись­мо с вло­же­ни­ем в мир

Отправ­ля­ем внут­ри доме­на пись­мо с вложением

Как вид­но из log-фай­ла пись­мо было пере­да­но филь­тру altermime, кото­рый уда­лил вло­же­ния и далее отправ­ле­но адресату


 

Как избавиться от сообщений вида - warning: dict_nis_init: NIS domain name not set - NIS lookups disabled

Как пра­ви­ло сооб­ще­ние появ­ля­ет­ся если вы явно не зада­ли зна­че­ние пара­мет­ра alias_maps и у вас на сер­ве­ре не настро­е­на NIS (Network Information Service)

Как вид­но из выво­да зна­че­ние по умол­ча­нию содер­жит ссыл­ку на кар­ту типа nis. Что­бы решить дан­ную про­бле­му доста­точ­но ука­зать сле­ду­ю­щее значение

И дать коман­ду postfix пере­чи­тать кон­фи­гу­ра­ци­он­ный файл


 

Как мне отвер­гать соеди­не­ния, в кото­рых пред­став­ля­ют­ся име­нем мое­го сервера?

Для это­го необ­хо­ди­мо сде­лать соот­вет­ству­ю­щую про­вер­ку в smtpd_helo_restrictions

В дан­ный спи­сок вно­сим имя наше­го сервера

Созда­ем кар­ту hello_access.db и даем коман­ду postfix пере­чи­тать кон­фи­гу­ра­ци­он­ный файл

А теперь тести­ру­ем наше ограничение

Смот­рим log-файл


 

Как мне сде­лать кво­ти­ро­ва­ние поч­то­вых ящиков?

Вооб­ще то это не функ­ция MTA, по это­му по умол­ча­нию postfix не под­дер­жи­ва­ет дан­ный функ­ци­о­нал. Если вам необ­хо­ди­мы кво­ты, то вы може­те исполь­зо­вать vda (virtual delivery agent) с пат­чем. Либо исполь­зо­вать аль­тер­на­тив­ные аген­ты достав­ки, напри­мер maildrop/dovecot delivery agent


 

Что такое клас­сы адре­сов в postfix и для чего они нужны?

Клас­сы адре­сов это спо­соб груп­пи­ров­ки адре­сов полу­ча­те­лей по спо­со­бу достав­ки их писем. Все­го суще­ству­ет 5 встро­ен­ных клас­сов адресов:

  • класс локаль­ных доме­нов [local domain class]
  • класс вир­ту­аль­ных али­а­сов [virtual alias domain class]
  • класс вир­ту­аль­ных доме­нов [virtual mailbox domain class]
  • класс доме­нов ретранс­ля­ции (пере­сыл­ки) [relay domain class]
  • класс доме­на по умол­ча­нию [default domain class]

Каж­дый из пред­опре­де­лен­ных клас­сов адре­сов опре­де­ля­ет сле­ду­ю­щие три вещи:

  • Спи­сок доме­нов, кото­рые явля­ют­ся чле­на­ми дан­но­го клас­са: напри­мер, все локаль­ные доме­ны или все доме­ны ретрансляции.
  • Транс­порт достав­ки по умол­ча­нию. Напри­мер, local/virtual/relay/maildrop (транс­пор­ты достав­ки опи­са­ны в фай­ле master.cf). Это поз­во­ля­ет добить­ся лег­ко­сти в настрой­ке postfix, так как отпа­да­ет необ­хо­ди­мость явно ука­зы­вать роутинг в таб­ли­це транспортов
  • Спи­сок допу­сти­мых полу­ча­те­лей для дан­но­го клас­са адре­сов. SMTP сер­вер postfix отвер­га­ет несу­ще­ству­ю­щих полу­ча­те­лей с сооб­ще­ни­ем «User unknown in [local/virtual/relay] table». Дан­ная воз­мож­ность поз­во­ля­ет избе­жать заби­ва­ния оче­ре­ди сооб­ще­ни­я­ми о недо­став­ки MAILER-DAEMON

 

У меня в систе­ме 3 ящи­ка, поль­зо­ва­те­ли систем­ные. Как мне при­ни­мать почту толь­ко для этих ящиков?

Для реше­ния дан­ной зада­чи доста­точ­но пре­чис­лить необ­хо­ди­мых поль­зо­ва­те­лей в фай­ле и ука­зать ссыл­ку на него в пара­мет­ре local_recipient_maps

Теперь отпра­вим пись­мо систем­но­му поль­зо­ва­те­лю alexander, но кото­рый не ука­зан в /etc/postfix/local_mailbox

Как мы видим postfix еще на эта­пе SMTP сес­сии сооб­щил о том, что тако­го поль­зо­ва­те­ля нет.


 

Как бороть­ся с ошиб­кой warning: do not list domain domain.ua in BOTH mydestination and virtual_mailbox_domains?

Итак у нас postfix со сле­ду­ю­щей конфигурацией

Ука­зы­ва­ем, где хра­нить и в каком фор­ма­те почту для поль­зо­ва­те­ля alex@vmware.local

Настрой­ки мини­маль­ные, толь­ко что­бы опи­сать суть про­бле­мы. Как вид­но из выво­да наш домен - vmware.local ука­зан в $mydestination с помо­щью пара­мет­ра $mydomain, а так­же он ука­зан в $virtual_mailbox_domains. Т.е. мы ука­за­ли один и тот же домен сра­зу в двух клас­сах адре­сов - локаль­ных и вир­ту­аль­ных. Чего не сто­ит нико­гда делать.

Теперь давай­те отпра­вим почту поль­зо­ва­те­лю alex@vmware.local (в систе­ме суще­ству­ет систем­ный поль­зо­ва­тель alex, так­же он опи­сан в virtual_mailbox_maps, см. выше)

Теперь смот­рим log-файл

Как видим мы полу­чи­ли соот­вет­ству­ю­щее пре­ду­пре­жде­ние о том, что наш домен ука­зан сра­зу в двух клас­сах адре­сов. И как вид­но из сооб­ще­ний почту была достав­ле­на локаль­но­му поль­зо­ва­те­лю alex, а не как мы хоте­ли виртуальному.

Самое про­сто реше­ние дан­ной про­бле­мы - это иско­лю­чить домен vmware.local из $mydestination

Еще раз отправ­ля­ем сооб­ще­ние и смот­рим log-файл

Как вид­но из сооб­ще­ния пись­мо достав­ле­но вир­ту­аль­но­му поль­зо­ва­те­лю alex, о чем сви­де­тель­ству­ет стро­ка relay=virtual, а так­же фор­мат ящи­ка - delivered to maildir


 

Нек­то­рые полез­ные команды

Вывод зна­че­ния по умол­ча­нию опре­де­лен­но­го параметра

Вывод теку­ще­го зна­че­ния параметра

Вывод вер­сии postfix

Про­смотр теку­щей оче­ре­ди сообщений

Уда­ле­ние всех писем из очереди

Повтор­ная отправ­ка сооб­ще­ний, кото­рые нахо­дят­ся в очереди


 

Как мне реа­ли­зо­вать «умный» грейлистинг?

Под сло­вом «умный» я под­ра­зу­ме­ваю изби­ра­тель­ный метод по опре­де­лен­ным кри­те­ри­ям. Напри­мер, даль­ше в при­ме­ре, мы будем «награж­дать» грей­ли­стин­гом хосты у кото­рых отсут­ству­ет запись в обрат­ной зоне или они исполь­зу­ют т.н. лите­раль­ную фор­му, т.е. в helo под­став­ля­ют ip адрес заклю­чен­ный в квад­рат­ные скобки.

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

В дан­ном фай­ле мы опи­сы­ва­ем отпра­ви­те­лей, кото­рых мы хотим исклю­чить из грейлистинга

В дан­ном фай­ле мы опи­сы­ва­ем хосты, кото­рые мы хотим исклю­чить из грейлистинга

В дан­ном фай­ле мы опи­сы­ва­ем соб­ствен­но саму поли­ти­ку - при отсут­ствии запи­си в обрат­ной зоне, кли­ент будет награж­ден грей­ли­стин­гом. greylisting - это поль­зо­ват­леь­ский класс, кото­рый опре­де­ля­ет­ся в фай­ле main.cf.

В дан­ном фай­ле мы опи­сы­ва­ем поли­ти­ку - при исполь­зо­ва­нии лите­раль­ной фор­мы, кли­ент будет награж­ден грейлистингом.


 

Как мне откло­нять соеди­не­ния от кли­ен­тов, когда mx отпра­ви­те­ля резолвит­ся в адрес из част­ной сети?

Тогда при попыт­ке отпра­вить отпра­вить вам пись­мо в лог-фай­ле будет следующее

А теперь давай­те посмот­рим что же не понра­ви­лось postfix в этом клиенте

Теперь думаю все ста­ло понят­но, вряд­ли сто­ит при­ни­мать почту от кли­ен­тов у кото­рых MX запись ука­зы­ва­ет на 127.0.0.1


 

Как мне запре­тить при­ем почты от опре­де­лен­но­го домена/пользователя?


 

Как мне запре­тить при­ем писем с опре­де­лен­ны­ми вложениями?

Тогда при попыт­ке отпра­вить пись­мо с вло­же­ни­ем exe/bat/cmd/mp3 в лог-фай­ле будет следующее


 

Как избе­жать дуб­ли­ро­ва­ния писем при исполь­зо­ва­нии алиасов?

Напри­мер у нас есть сле­ду­ю­щий алиас

Если чело­век отпра­вит пись­мо на info и user1, то user1 полу­чит две копии пись­ма. К сожа­ле­нию архи­тек­ту­ра postfix на дан­ный момент не поз­во­ля­ет избе­жать дан­ной проблемы


 

Как мне полу­чать всю почту для не суще­ству­ю­щих ящиков?

Для это­го доста­точ­но задать сле­ду­ю­щие пара­мет­ры в main.cf

При такой настрой­ке вся поч­та для не суще­ству­ю­щих поль­зо­ва­те­лей будет пере­на­прав­лять­ся поль­зо­ва­те­лю info

Осо­бен­но­сти рабо­ты дан­ной функции:

  • будет рабо­тать толь­ко для систем­ных поль­зо­ва­те­лей и транс­пор­та local
  • пара­метр local_recipient_maps нуж­но оста­вить пустым, а не ком­мен­ти­ро­вать, т.к. в слу­чае ком­мен­ти­ро­ва­ния у него будет зна­че­ние по умолчанию

Что­бы узнать зна­че­ние по умол­ча­нию, необ­хо­ди­мо выпол­нить сле­ду­ю­щую команду


 

Как заста­вить postfix уве­дом­лять отпра­ви­те­ля о том, что пись­мо не достав­ле­но полу­ча­те­лю и нахо­дит­ся в очереди?

Для вклю­че­ния дан­ной воз­мож­но­сти необ­хо­ди­мо задать пара­метр delay_warning_time

При такой настрой­ке, уве­дом­ле­ние будет отправ­лять­ся через 3 часа


 

У меня в систе­ме несколь­ко интер­фей­сов, как мне ука­зать postfix слу­шать толь­ко определенные?

Суще­ству­ет два спо­со­ба реше­ния этой зада­чи: вне­се­ния изме­не­ний в main.cf или master.cf


 

Как ука­зать postfix слу­шать порт отлич­ный от 25го?

Для это­го доста­точ­но заме­нить стро­ку в master.cf

на сле­ду­ю­щую

И пере­за­пу­стить postfix. После это­го мож­но про­ве­рить изменения


 

Как узнать под­дер­жи­ва­ет ли postfix аутен­ти­фи­ка­цию, и если под­дер­жи­ва­ет, то какие методы?

Для это­го доста­точ­но выпол­нить сле­ду­ю­щую коман­ду и после при­вет­ствия обя­за­тель­но вве­сти ESMTP коман­ду ehlo <host_name>

Стро­ка 250-AUTH PLAIN LOGIN гово­рит о том, что дан­ный сер­вер под­дер­жи­ва­ет два мето­да аутен­ти­фи­ка­ции - PLAIN и LOGIN.

Так­же из дан­но­го выво­да мы можем полу­чить сле­ду­ю­щую инте­рес­ную информацию:

  • 250-SIZE 5242880 - мак­си­маль­ный раз­мер пись­ма ~5 Mb.
  • 250 DSN - дан­ный сер­вер под­дер­жи­ва­ет DSN (Delivery Status Notifications)
  • 250-STARTTLS - вклю­че­на под­держ­ка SSL/TLS для пере­да­чи писем с помо­щью шифрования

 

Как узнать под­дер­жи­ва­ет ли postfix MySQL, LDAP, SQLite, PCRE, …

Для это­го доста­точ­но выпол­нить сле­ду­ю­щую команду

Как вид­но из выво­да дан­ная сбор­ка postfix не под­дер­жи­ва­ет MySQL. Так же мож­но про­ве­рить с каки­ми внеш­ни­ми биб­лио­те­ка­ми собран сам postfix


 

У меня на сер­ве­ре 2 интер­фей­са и нуж­но, что­бы при соеди­не­нии на 1й интер­фейс выда­вал­ся один банер, а при соеди­не­нии на 2й интер­фейс вто­рой. Как это мож­но реализовать?

Где xxx.xxx.xxx.xxx и yyy.yyy.yyy.yyy ip адрес пер­во­го и вто­ро­го интер­фей­са соот­вест­вен­но. Пере­мен­ные banner_if1 и banner_if2 мы опре­де­ля­ли в фай­ле main.cf спе­ци­аль­но, так как в фай­ле master.cf не допус­ка­ют­ся про­бе­лы в зна­че­ни­ях параметров

Про­ве­ря­ем


 

Как мне сохра­нить копии всех исхо­дя­щих писем?

При такой настрой­ке копии всех исхо­дя­щих писем будут дуб­ли­ро­вать­ся на ящик sender_bcc@sys-adm.org.ua


 

Как мне сохра­нить копии всех вхо­дя­щих писем?

При такой настрой­ке копии всех вхо­дя­щих писем будут дуб­ли­ро­вать­ся на ящик recipient_bcc@sys-adm.org.ua


 

Как мне сохра­нить копии всех писем?

При такой настрой­ке копии всех писем будут дуб­ли­ро­вать­ся на ящик all@sys-adm.org.ua

--------------------------------------------------------------------------------------------------------------------------------

/etc/postfix/main.cf:
smtpd_sender_restrictions = hash:/etc/postfix/access

/etc/postfix/access
spamer@domain REJECT # Забло­ки­ро­вать емайл.
domain REJECT # Забло­ки­ро­вать всю почту с доме­на и поддоменов
spamer@ REJECT # Забло­ки­ро­вать поль­зо­ва­те­ля с любо­го домена
spamer@domain 550 NO SPAM # Выдать сообщение
192.168.1.1 REJECT # Не при­ни­мать почту с IP (или подсети)

# postmap /etc/postfix/access
# postfix reload

 

 

 

Пере­на­прав­ле­ние почты с внут­рен­но­го адре­са на внешний

В файл main.cf 
recipient_bcc_maps = hash:/etc/postfix/recipient_bcc 

В файл recipient_bcc 

ivan@nashdomen.ru vanya@mail.ru 

поле чего

    postmap /etc/postfix/recipient_bcc
postfix reload