Если я подключаюсь к Postfix на моем сервере с почтовым клиентом на порту 143 с SSL, то почта, отправляемая через это соединение из виртуального домена, проходит через smtpd_sender_restrictions
и, таким образом, позволяет фильтру, который направляет его в amavis, добавлять свою подпись DKIM перед передачей.
Пока все хорошо, но ...
Однако если я создам электронное письмо от того же пользователя @ virtual_domain как указано выше, непосредственно из Drupal (или Roundcube, запущенного для аутентифицированного пользователя, если на то пошло), запущенного на том же сервере, что и Postfix, это электронное письмо не проходит smtpd_sender_restrictions
и, таким образом, не попадает в amavis и не получает свою подпись DKIM.
Что мне делать, чтобы мои локальные (программно сгенерированные) электронные письма передавали smtpd_sender_restrictions
? Кажется, я не вижу условий здесь в руководстве что я могу добавить к правилу, чтобы расслабить его? Вот правило, которое я использую в /etc/postfix/main.cf
:
##################
# SASL Settings and DKIM Settings
# See http://gogs.info/books/debian-mail/chunked/postfix.sasl.html
# See http://gogs.info/books/debian-mail/chunked/antispam.dkim.html
##################
smtpd_sender_restrictions =
# If mail is coming from mynetwork or from authenticated users use amavis filtering on port 10026 (DKIM signing)
check_sender_access regexp:/etc/postfix/amavis/tag_as_originating.re
permit_mynetworks
permit_sasl_authenticated
permit_tls_clientcerts
# For other mail use amavis filtering on port 10024 (skips DKIM signing)
check_sender_access regexp:/etc/postfix/amavis/tag_as_foreign.re
Я управляю m виртуальными доменами с помощью Post Admin, и разрешенные отправители перечислены здесь:
virtual_mailbox_domains = mysql:/etc/postfix/sql/virtual_domains_maps.cf
и я имею smtpd_recipient_restrictions
для защиты от произвольной открытой ретрансляции.
На моем Exim MTA я подписываю каждое исходящее сообщение. Я вижу смысл Postfix smtpd_sender_resrictions
но я не могу заставить их делать то, что я хочу здесь.
Я мог направлять сообщения, приходящие через pickup
пройти в amavis через порт 10026, чтобы подписать их DKIM.
Эти сообщения создаются либо веб-сайтом Drupal на моем сервере (которому я доверяю), либо пользователями, входящими в свою веб-почту Roundcube.
Я просто добавил эти два аргумента к существующим pickup
транспорт в /etc/postfix/master.cf
:
pickup fifo n - - 60 1 pickup
-o smtpd_tls_security_level=encrypt
-o content_filter=smtp-amavis:[127.0.0.1]:10026
(Благодаря blog.purrdeta.com для указателей)
Транспорт smtp-amavis
уже был определен в master.cf
и используется сообщениями, поступающими через smtpd
очередь.
Мне потребовалось некоторое время, чтобы понять, что эти сообщения проходят через очередь получения и, следовательно, не подлежат smtpd_sender_restrictions
в моем первоначальном вопросе. За осознание этой ошибки я должен поблагодарить очень ясного объяснение архитектуры Postfix.