Cara mengalihkan semua email keluar dari postfix ke satu alamat untuk pengujian

13

Saya menyiapkan server pengujian untuk aplikasi berbasis web yang mengirimkan beberapa pemberitahuan email.

Terkadang pengujian dilakukan dengan data pelanggan nyata, dan untuk alasan itu saya perlu menjamin bahwa server tidak dapat mengirim email ke pelanggan nyata kami saat kami pengujian.

Yang saya inginkan adalah mengonfigurasi postfix sehingga dibutuhkan email keluar dan mengalihkannya ke satu alamat email, alih-alih mengirimkan ke tujuan yang sebenarnya.

Saya menjalankan server Ubuntu 9,10.

Terima kasih sebelumnya

juan itu
sumber

Jawaban:

19

Siapkan pengguna lokal untuk menerima semua surat yang terperangkap:

adduser mailtrap

Anda perlu menambahkan di main.cf:

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

Kemudian buat / etc / postfix / transport dengan ini di sana:

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

Simpan lalu jalankan: postmap /etc/postfix/transportakhirnya restart postfixinvoke-rc.d postfix restart

Semua email lokal akan dikirimkan secara normal dan email eksternal akan dikirim ke mailtrapakun lokal .

Andrew Schulman
sumber
Ini persis apa yang saya cari ... terima kasih!
thatjuan
3
Pekerjaan bagi saya, tapi hanya setelah saya menambahkan luser_relay = xxxxxdi main.cf. Tanpa ini, email akan terpental.
Alex R
1
Saat menggunakan Ubuntu, Anda juga dapat memulai ulang Postfix bersama sudo service postfix restart. Lokasi file main.cf Anda yang disebutkan di atas adalah /etc/postfix/main.cf. Saat pertama kali menginstal dan mengatur Postfix, Anda dapat menggunakan Local onlyopsi instalasi.
mtnorthrop
pada MAC Anda harus menjalankan postmap hash:/etc/postfix/transportdan sudo postfix stop,sudo postfix start
Bang Dao
ini bagus. apakah ada yang tahu cara menghilangkan duplikat ketika pesan memiliki banyak penerima?
graywh
10

Lebih baik membuat file alias virtual:

Di /etc/postfix/main.cf:

virtual_alias_maps = pcre:/etc/postfix/virtual

Di / etc / postfix / virtual:

/.*@.*/ root

Anda dapat mengganti rootdengan pengguna mana saja yang ingin Anda terima semua email keluar. Pola ini dapat diubah jika Anda ingin surat lokal dikirimkan secara normal (tanpa pengalihan):

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

Gagasan asli ditemukan di sini: Server pengembangan Postfix - mencegat semua surat keluar

Paul Gideon Dann
sumber
2
Perhatikan Anda mungkin perlu sudo apt-get install postfix-pcreterlebih dahulu, untuk menghindari ... kejutan.
mirabilos
bekerja untuk saya dengan sangat baik!
michael-mammut
galat "Pengguna tidak dikenal di tabel alias virtual"
Alex R
5

Postfix menyediakan sesuatu yang disebut smtp-sink. Secara default, lubang hitam semua email yang diterimanya. Versi yang lebih baru juga dapat dikonfigurasi untuk menangkap email dalam file.

Ini tidak secara teknis menggunakan postfix (tetapi utilitas yang disediakan oleh postfix.) Ini juga tidak secara teknis mengarahkan setiap email ke satu alamat email. Tapi itu menangkap semua lalu lintas di port 25 dan membuangnya ke file yang dapat diuraikan.

terguling
sumber
Bagaimana seseorang memanggil smtp-sink? Satu halaman manual yang saya temukan di internet membuatnya tampak seperti program normal, tetapi jika disertai postfix, itu tidak diinstal pada sistem saya (OSX 10.6). Bagaimana saya menjalankan layanan ini?
Chris Bloom
Ada halaman manual untuk smtp-sink. Tetapi beberapa parameter dijelaskan di sini juga: blog.malowa.de/2011/04/postfix-as-spam-trap-server.html
mailq