у меня есть отправить только настроен postfix MTA, которому разрешена отправка из @ example.com
Когда происходит отскок, я хотел бы обработать это в скрипте.
Я выполнил шаги, указанные в этом ответе: https://serverfault.com/a/735721/444076
Мой скрипт вызывается правильно, но на адрес отправителя по-прежнему приходит электронное письмо с сообщением о недоставке. Как я могу предотвратить это?
main.cf
mydestination = bounce.example.com, localhost
# BOUNCE CONFIG
notify_classes = bounce
bounce_notice_recipient = bounce@bounce.example.com
transport_maps = hash:/etc/postfix/transport_maps
bounce_size_limit = 1
transport_maps
# when you make changes to this file, run:
# sudo postmap /etc/postfix/transport_maps
bounce@bounce.example.com bulkbounce:
master.cf
bulkbounce unix - n n - - pipe
flags=FRq user=nouser argv=/path/to/bouncescript.sh
Однако отправка письма вроде (действительна из, недопустимый rcpt):
FROM: someuser@example.com
TO: invalid@invalid.com
SUBJECT: ...
...
В результате мой скрипт вызывается (хорошо), а someuser@example.com получает электронное письмо с сообщением о недоставке (нежелательно).
Как я могу это отключить? Или что мне не хватает.
Примеры журналов:
Nov 16 17:27:32 dev postfix/smtpd[6654]: connect from localhost[::1]
Nov 16 17:27:32 dev postfix/smtpd[6654]: 486FED9F98: client=localhost[::1]
Nov 16 17:27:32 dev postfix/cleanup[6658]: 486FED9F98: message-id=<3884f81324a6b2e7dfd90e01c3477084@swift.generated>
Nov 16 17:27:32 dev postfix/qmgr[6652]: 486FED9F98: from=<someuser@example>, size=544, nrcpt=1 (queue active)
Nov 16 17:27:32 dev postfix/smtpd[6654]: disconnect from localhost[::1]
Nov 16 17:28:13 dev postfix/smtp[6659]: 486FED9F98: to=<bouncetest@tribulant.com>, relay=tribulant.com[23.22.38.89]:25, delay=41, delays=0.05/0.02/21/20, dsn=5.0.0, status=bounced (host tribulant.com[23.22.38.89] said: 550 No such person at this address. (in reply to RCPT TO command))
Nov 16 17:28:13 dev postfix/cleanup[6658]: 7604CD9F9D: message-id=<20171116172813.7604CD9F9D@app.example.com>
Nov 16 17:28:13 dev postfix/qmgr[6652]: 7604CD9F9D: from=<>, size=2984, nrcpt=1 (queue active)
Nov 16 17:28:13 dev postfix/bounce[6693]: 486FED9F98: sender non-delivery notification: 7604CD9F9D
Nov 16 17:28:13 dev postfix/cleanup[6658]: 76DAED9F9E: message-id=<20171116172813.76DAED9F9E@app.example.com>
Nov 16 17:28:13 dev postfix/qmgr[6652]: 76DAED9F9E: from=<double-bounce@app.example.com>, size=2599, nrcpt=1 (queue active)
Nov 16 17:28:13 dev postfix/bounce[6693]: 486FED9F98: postmaster non-delivery notification: 76DAED9F9E
Nov 16 17:28:13 dev postfix/qmgr[6652]: 486FED9F98: removed
Nov 16 17:28:13 dev postfix/smtp[6659]: 7604CD9F9D: to=<someuser@example>, relay=mx.mailprotect.be[178.208.39.141]:25, delay=0.08, delays=0/0/0.05/0.03, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as C0B5E4401F4)
Nov 16 17:28:13 dev postfix/qmgr[6652]: 7604CD9F9D: removed
Nov 16 17:28:13 dev postfix/pipe[6694]: 76DAED9F9E: to=<bounce@bounce.example.com>, relay=bulkbounce, delay=0.16, delays=0/0.01/0/0.15, dsn=2.0.0, status=sent (delivered via bulkbounce service)
Nov 16 17:28:13 dev postfix/qmgr[6652]: 76DAED9F9E: removed
fqdn: app.example.com
Теперь, когда я понимаю, что происходило, ответ очевиден.
Следуя RFC, MTA (должен) всегда отправлять сообщение о недоставке отправителю (FROM или Return Path, если установлено).
Добавление notify_classes не меняет этого поведения, оно добавляет поведение поверх него. (Итак, второе письмо отправлено)
Чтобы добиться того, чего я хотел, чтобы вызывался только сценарий, я удалил notify_classes и bounce_notice_recipient. Кроме того, я изменил наше приложение, чтобы всегда добавлять заголовок «Return-Path» с bounce@bounce.example.com
Когда происходит возврат, MTA отправляет сообщение об отказе в FROM или обратный путь, если он был установлен (теперь это bounce@bounce.example.com). Поскольку это электронное письмо отображается в transport_maps, оно передается скрипту по конвейеру, и на самом деле электронные письма не отправляются. Ура