Насправді відповідь Instyle дуже важко реалізувати, якщо ви хочете підтримувати багато різних доменів, і це неправильно, оскільки:
а) На його прикладі transport_maps
всі повідомлення електронної пошти, що надсилаються до цього домену, надсилаються до цієї конкретної служби, не зважаючи на те, чи надходять електронні листи чи ні. Оскільки він використовує конкретне доменне ім’я, він дійсно повинен бути лише відхиленими електронними листами ... але це не може бути гарантовано таким чином.
b) Дані, надіслані вашому сценарію, - це сам електронний лист, а не повідомлення відмов. Іншими словами, ваш код може не мати поняття, чому електронний лист відскочив (тобто місцевий відмов надсилатиме вам оригінальний електронний лист).
Правильний спосіб зробити це налаштування в Postfix - це використовувати клас сповіщень про відмов.
1) В /etc/postfix/main.cf
notify_classes = bounce
bounce_notice_recipient = bounces@example.com
transport_maps = hash:/etc/postfix/transport_maps
2) В / etc / postfix / transport_maps
# when you make changes to this file, run:
# sudo postmap /etc/postfix/transport_maps
bounces@example.com bulkbounce:
Як бачимо, тепер ми повідомляємо, що постфікс потрібно використовувати bounces@example.com
щоразу, коли електронний лист отримує відмову. Потім на транспортній карті, щоб використовувати bulkbounce
як послугу для обробки будь-якої адреси електронної пошти bounces@example.com
.
Нарешті ви можете визначитися bulkbounce
зі своїм сценарієм:
3) В /etc/postfix/master.cf
bulkbounce unix - n n - - pipe
flags=FRq user=bounce argv=/home/bounce/bin/snapbounce --sender ${sender} --recipient ${recipient}
Цей скрипт вимагає від вас користувача. nobody
теж хороший вибір. Якщо ви хочете мати конкретного користувача, ви можете створити його за допомогою:
useradd bounce
Без скрипту в master.cf
електронній пошті надсилаються на акаунт обміну. Отже, якщо у вас є сценарій, який аналізує електронні листи з файлів, це буде працювати без змін transport_maps
та master.cf
змін.
З коментаря нижче:
fyi-re: подвійний відмов ...
якщо ви змінюєте адресу повернення (VERP-адреса, наприклад user+id@fromdomain.com
, ви хочете прокоментувати рядок main.cf
для bounce_notice_recipient
, якщо вам цікаво проаналізувати +id
відмов лише у вашому сценарії.
Message-Id
у свій заголовок, він повинен бути відправлений назад, і це буде вистачить, щоб перевірити, хто хто.