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

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 .


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


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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.