Come reindirizzare tutta la posta elettronica in uscita da postfix a un singolo indirizzo per il test


13

Sto configurando un server di test per un'applicazione basata sul Web che invia alcune notifiche e-mail.

A volte i test vengono eseguiti con dati reali dei clienti e, per tale motivo, devo garantire che il server non sia in grado di inviare e-mail ai nostri clienti reali durante i test.

Quello che voglio è configurare Postfix in modo che prenda qualsiasi e-mail in uscita e lo reindirizzi a un singolo indirizzo e-mail, invece di recapitare alla destinazione reale.

Sto eseguendo il server Ubuntu 9.10.

Grazie in anticipo

Risposte:


19

Configurare un utente locale per ricevere tutta la posta bloccata:

adduser mailtrap

Devi aggiungere in main.cf:

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

Quindi crea / etc / postfix / transport con questo dentro:

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

Salvare quindi eseguire: postmap /etc/postfix/transportfinalmente riavviare postfixinvoke-rc.d postfix restart

Tutta la posta elettronica locale verrà recapitata normalmente e la posta esterna verrà recapitata mailtrapall'account locale .


Questo è esattamente quello che stavo cercando ... grazie!
thatjuan,

3
Lavora per me, ma solo dopo che ho aggiunto luser_relay = xxxxxin main.cf. Senza questo le email rimbalzerebbero.
Alex R,

1
Quando usi Ubuntu, puoi anche riavviare Postfix con sudo service postfix restart. Il percorso del file main.cf sopra menzionato è /etc/postfix/main.cf. Quando si installa e imposta Postfix per la prima volta, è possibile utilizzare l' Local onlyopzione di installazione.
mtnorthrop,

su MAC dovresti eseguire postmap hash:/etc/postfix/transporte sudo postfix stop,sudo postfix start
Bang Dao,

è fantastico qualcuno sa come eliminare i duplicati quando un messaggio ha più destinatari?
graywh

10

È meglio creare un file di alias virtuale:

In /etc/postfix/main.cf:

virtual_alias_maps = pcre:/etc/postfix/virtual

In / etc / postfix / virtual:

/.*@.*/ root

Puoi sostituirlo rootcon qualsiasi utente desideri ricevere tutta l'e-mail in uscita. Questo modello può essere modificato se si desidera che la posta locale venga recapitata normalmente (senza reindirizzamento):

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

Idea originale trovata qui: server di sviluppo Postfix - intercetta tutta la posta in uscita


2
Nota che potrebbe essere necessario in sudo apt-get install postfix-pcreanticipo, per evitare ... sorprese.
mirabilos,

funziona molto bene per me!
michael-mammut,

errore "Utente sconosciuto nella tabella degli alias virtuali"
Alex R

5

Postfix fornisce qualcosa chiamato smtp-sink. Di default buca tutta l'e-mail che riceve. Le versioni successive possono anche essere configurate per acquisire l'e-mail in file.

Questo non utilizza tecnicamente postfix (ma un'utilità fornita da postfix.) Inoltre non reindirizza tecnicamente ogni e-mail a un singolo indirizzo e-mail. Ma cattura tutto il traffico sulla porta 25 e lo scarica in un file che può essere analizzato.


Come si fa a invocare smtp-sink? L'unica manpage che ho trovato online sembrava che fosse un normale programma, ma se è arrivato con Postfix non è installato sul mio sistema (OSX 10.6). Come eseguirò questo servizio?
Chris Bloom,

C'è una manpage per smtp-sink. Ma alcuni parametri sono descritti anche qui: blog.malowa.de/2011/04/postfix-as-spam-trap-server.html
mailq
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.