Jak przekierować wszystkie wychodzące wiadomości e-mail z Postfiksa na jeden adres w celu przetestowania

13

Konfiguruję serwer testowy dla aplikacji internetowej, która wysyła niektóre powiadomienia e-mail.

Czasami testy przeprowadzane są na rzeczywistych danych klientów i dlatego muszę zagwarantować, że serwer nie będzie w stanie wysyłać wiadomości e-mail do naszych prawdziwych klientów podczas testów.

Chcę skonfigurować postfiks, aby pobierał wszystkie wychodzące wiadomości e-mail i przekierowywał je na jeden adres e-mail, zamiast dostarczać je do rzeczywistego miejsca docelowego.

Korzystam z serwera Ubuntu 9.10.

Z góry dziękuję

thatjuan
źródło

Odpowiedzi:

19

Skonfiguruj lokalnego użytkownika, aby odbierał wszystkie wiadomości uwięzione:

adduser mailtrap

Musisz dodać w main.cf:

transport_maps = hash:/etc/postfix/transport
luser_relay = mailtrap

Następnie utwórz / etc / postfix / transport z tym:

localhost :
your.hostname.example.com:
* local:mailtrap

Zapisz, a następnie uruchom: w postmap /etc/postfix/transportkońcu zrestartuj postfiksinvoke-rc.d postfix restart

Wszystkie lokalne wiadomości e-mail będą dostarczane normalnie, a zewnętrzne wiadomości e-mail będą dostarczane na mailtrapkonto lokalne .

Andrew Schulman
źródło
Właśnie tego szukałem ... dziękuję!
thatjuan
3
Pracuje dla mnie, ale tylko po dodaniu luser_relay = xxxxxw main.cf. Bez tego e-maile odbijałyby się.
Alex R
1
Korzystając z Ubuntu, możesz także ponownie uruchomić Postfix za pomocą sudo service postfix restart. Lokalizacja wspomnianego powyżej pliku main.cf to /etc/postfix/main.cf. Podczas pierwszej instalacji i konfiguracji Postfix możesz użyć Local onlyopcji instalacji.
mtnorthrop
W systemie Mac należy uruchomić postmap hash:/etc/postfix/transporti sudo postfix stop,sudo postfix start
Bang DAO
to jest świetne. czy ktoś wie, jak wyeliminować duplikaty, gdy wiadomość ma wielu adresatów?
graywh
10

Lepiej jest utworzyć wirtualny plik aliasu:

W /etc/postfix/main.cf:

virtual_alias_maps = pcre:/etc/postfix/virtual

W / etc / postfix / virtual:

/.*@.*/ root

Możesz zastąpić rootdowolnego użytkownika, którego chcesz otrzymywać wszystkie wychodzące wiadomości e-mail. Ten wzór można dostosować, jeśli chcesz, aby poczta lokalna była dostarczana normalnie (bez przekierowań):

/.*@(?!hostname\.localdomain$).*/ root

Oryginalny pomysł znaleziony tutaj: Serwer programistyczny Postfix - przechwytuje wszystkie wiadomości wychodzące

Paul Gideon Dann
źródło
2
Pamiętaj, że możesz potrzebować sudo apt-get install postfix-pcrewcześniej, aby uniknąć… niespodzianek.
mirabilos
działa dla mnie bardzo dobrze!
michael-mammut
błąd „Użytkownik nieznany w wirtualnej tabeli aliasów”
Alex R
5

Postfix zapewnia coś o nazwie smtp-sink. Domyślnie blokuje wszystkie otrzymane wiadomości e-mail. Późniejsze wersje można również skonfigurować do przechwytywania wiadomości e-mail w plikach.

To technicznie nie korzysta z Postfix (ale narzędzie dostarczone przez Postfix.) Nie przekierowuje też technicznie każdego e-maila na jeden adres e-mail. Ale przechwytuje cały ruch na porcie 25 i zrzuca go do pliku, który można przeanalizować.

toppledwagon
źródło
Jak wywołać smtp-sink? Jedna strona, którą znalazłem w Internecie, sprawiała, że ​​wyglądał jak normalny program, ale jeśli przyszedł z postfiksem, nie jest zainstalowany w moim systemie (OSX 10.6). Jak mógłbym uruchomić tę usługę?
Chris Bloom
Istnieje strona podręczna dla smtp-sink. Ale niektóre parametry są tu również opisane: blog.malowa.de/2011/04/postfix-as-spam-trap-server.html
mailq