Некорректно работает Postfix generic

Август 10, 2011 at 22:37 Оставьте комментарий

Задача была такая: создать локальный почтовый сервер на виртуальном домене, чтобы у каждого сотрудника в головном офисе и филиалах был свой аккаунт. При этом у многих сотрудников есть рабочая почта на реальных доменах. Чтобы люди не путались, с какой учетной записи в почтовом клиенте можно отправлять письма только внутренним адресатам, а с какой — внешним, было решено использовать smtp relay в  postfix.
С версии 2.2 есть возможность использовать  разные relayhost для разных пользователей postfix. В mail.cf надо добавить следующее:

smtp_sender_dependent_authentication = yes
sender_dependent_relayhost_maps = hash:/etc/postfix/relayhost_map
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/passwd

Где relayhost_map содержит информацию, через какой релей пересылать письма для данного пользователя:

user1@virtual_domain [real_domain_host_address]

А файл passwd имеет такую структуру:

user1@virtual_domain user2@real_domain:password

Например: my1@virtual.com [mail.ru]
и my1@virtual.com diman666@mail.ru:123456 соответственно.
Но многие почтовые серверы проверяют FQDN и обратную зону отправителя письма в целях борьбы со спамом. Поэтому все письма, отправленные сервером с трогательным именем localhost будут порезаны, даже не попадая в папку Спам.
Есть выход: нужно заставить postfix подставить в тело письма добросовестное имя реального почтового аккаунта, через который пересылаются ваши письма. При этом было бы неплохо, чтобы postfix делал это разумно: для внешних адресатов подставлял, а для внутренних — нет. Это по идее и делает generic.
В main.cf надо добавить

smtp_generic_maps = hash:/etc/postfix/generic

И создать файл generic такого вида:

user1@virtual_domain user2@real_domain

postfix действительно стал заменять виртуального пользователя на реального, но почему-то во всех письмах. Чтение документации привело к уверенности, что я идиот.
Чтение своих конфигов привело к уверенности, что где-то есть какая-то зараза, которая перехватывает письмо еще до отправки и что-то с ним делает, что postfix уже не считает его своим владельцем.
Зараза нашлась — amavis. После его отключения отправка пошла как по нотам. Внутреннее — внутренним, а внешним только внешее.
UPD Решение есть! надо сделать три изменения.
Вначале в etc/postfix/master.cf в секции amavis надо сделать как-то так. Тут главное — это lmtp в первой строке! Было — smtp.

amavis unix - - - - 2 lmtp
     -o smtp_data_done_timeout=1200
     -o disable_dns_lookups=yes
     -o smtp_send_xforward_command=yes
127.0.0.1:10025 inet n - - - - smtpd
     -o content_filter=
     -o local_recipient_maps=
     -o relay_recipient_maps=
     -o smtpd_restriction_classes=
     -o smtpd_client_restrictions=
     -o smtpd_helo_restrictions=
     -o smtpd_sender_restrictions=
     -o smtpd_recipient_restrictions=permit_mynetworks,reject
     -o mynetworks=127.0.0.0/8
     -o strict_rfc821_envelopes=yes
     -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
     -o smtpd_bind_address=127.0.0.1

Затем в /etc/main.cf добавляем строчку amavis_destination_recipient_limit = 1
И в fetchmailrc добавляем везде в секции poll строчку smtphost localhost
Спасибо!

Реклама

Entry filed under: Mail Server. Tags: , , , , , .

Недоступна сетевая папка с обновлением KAV. Fetchmailrc из passwd

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

Trackback this post  |  Subscribe to the comments via RSS Feed



%d такие блоггеры, как: