W rzeczywistości odpowiedź Instyle jest bardzo trudna do wdrożenia, jeśli chcesz obsługiwać wiele różnych domen i jest błędna, ponieważ:
a) Na jego przykładzie transport_maps
wszystkie wiadomości e-mail wysyłane do tej domeny są wysyłane do tej konkretnej usługi bez względu na to, czy wiadomości e-mail są odsyłane, czy nie. Ponieważ używa określonej nazwy domeny, w rzeczywistości powinien być tylko odbijanymi wiadomościami e-mail ... ale nie można tego zagwarantować.
b) Dane wysłane na Twój skrypt to sam e-mail, a nie wiadomość odesłana. Innymi słowy, Twój kod może nie mieć pojęcia, dlaczego wiadomość e-mail została odesłana (tzn. Odesłanie lokalne wyśle Ci tylko oryginalną wiadomość e-mail).
Prawidłowym sposobem wykonania tej konfiguracji w Postfiksie jest użycie klasy powiadomień o odesłaniu.
1) W /etc/postfix/main.cf
notify_classes = bounce
bounce_notice_recipient = bounces@example.com
transport_maps = hash:/etc/postfix/transport_maps
2) W / etc / postfix / transport_maps
# when you make changes to this file, run:
# sudo postmap /etc/postfix/transport_maps
bounces@example.com bulkbounce:
Jak widać, mówimy teraz, że postfix powinien być używany, bounces@example.com
gdy wiadomość e-mail zostanie odesłana. Następnie na mapie transportu, aby użyć bulkbounce
jako usługi do obsługi dowolnego adresu e-mail bounces@example.com
.
Wreszcie możesz zdefiniować za bulkbounce
pomocą skryptu:
3) W /etc/postfix/master.cf
bulkbounce unix - n n - - pipe
flags=FRq user=bounce argv=/home/bounce/bin/snapbounce --sender ${sender} --recipient ${recipient}
Ten skrypt wymaga posiadania użytkownika. nobody
to także dobry wybór. Jeśli chcesz mieć konkretnego użytkownika, możesz go utworzyć za pomocą:
useradd bounce
Bez skryptu master.cf
wiadomości e-mail są wysyłane na konto zbiorcze. Więc jeśli masz skrypt, który analizuje wiadomości e-mail z plików, działałoby to bez zmian transport_maps
i master.cf
.
Od komentarza poniżej:
fyi - re: podwójne odbicie ...
jeśli modyfikujesz adres zwrotny (np. adres VERP user+id@fromdomain.com
, to będziesz chciał skomentować wiersz main.cf
dla bounce_notice_recipient
, jeśli chcesz przeanalizować +id
odbicie tylko w skrypcie.
Message-Id
umieścić swój własny nagłówek, należy go odesłać i to wystarczy sprawdzić, kto jest kim.