Postfix pada server pengembangan, memungkinkan surat untuk dikirim hanya ke satu domain

11

Kami memiliki postfix pada server pengembangan kami, dan saya ingin agar hanya dapat mengirim email ke domain kami, bukan ke domain lain, mencegah pengguna luar menerima surat secara tidak sengaja dari server pengembangan kami.

Saya mencari di seluruh dokumen, mencoba beberapa hal tetapi masih mengirim ke semua domain ...

datadevil
sumber

Jawaban:

7

transport (5) peta digunakan untuk mendefinisikan kembali bagaimana email dialihkan oleh postfix.

  • Tambahkan baris berikut ke /etc/postfix/main.cf:

    transport_maps = hash:/etc/postfix/transport
    
  • Tambahkan file baru / etc / postfix / transport dengan konten ini:

    .example.com   :
    example.com    :
    *              discard:
    

Ganti example.comdengan domain yang harus dikirimi oleh server surat Anda. Jika Anda tidak peduli dengan sub-domain, maka hapus baris pertama.

Jangan lupa untuk meng-hash file setelah mengeditnya dengan postmap (1) dan memuat ulang postfix sehingga perubahan dapat berlaku:

# postmap /etc/postfix/transport && postfix reload
Carlo Arenas
sumber
7

Anda dapat dengan mudah membatasi penerima dengan standar smtpd_recipient_restrictions atau lebih tepatnya check_recipient_access .

Cukup buat tabel akses (5)/etc/postfix/access dengan konten berikut ( example.com menjadi domain yang Anda inginkan untuk mengirim email):

example.com    OK

Anda juga dapat mengizinkan hanya beberapa alamat tertentu:

[email protected]    OK
[email protected]    OK

Jangan lupa untuk hash file setelah mengeditnya dengan postmap (1) :

# postmap /etc/postfix/access

Sekarang masukkan batasan penerima berikut di main.cf Anda:

smtpd_recipient_restrictions = 
    hash:/etc/postfix/access
    reject

dan memuat ulang Postfix:

postfix reload

Setelah itu, ujilah jika berhasil .

Joseph
sumber
1
Itu akan bekerja untuk surat yang dikirim melalui SMTP, bukan melalui / usr / lib / sendmail dan proses lokal dapat melakukan keduanya. Tampaknya pengaturan 'otor_submit_users' dapat digunakan untuk memblokir pengiriman lokal dengan sendmail / postdrop, maka pembatasan smtpd akan cukup.
Jacek Konieczny
6

Jadi jika seseorang menemukan ini seperti yang saya lakukan: jawabannya memang header_checks dan berfungsi seperti ini:

  • Tambahkan baris berikut ke /etc/postfix/main.cf:

    header_checks = regexp:/etc/postfix/header_checks
    
  • Tambahkan file baru /etc/postfix/header_checksdengan konten ini:

    /^To:.*@allowed-domain.com/  DUNNO
    /^To:.*@/   REDIRECT [email protected]
    

Ganti allowed-domain.comdengan domain yang harus dikirimi oleh server surat Anda. Ganti [email protected]dengan alamat email semua email lain harus diarahkan ke.

Jika Anda perlu mengizinkan beberapa domain, baris pertama akan terlihat seperti ini:

/^To:.*@(allowed-domain.com|another-domain.com)/  DUNNO

Alih-alih mengarahkan, Anda dapat dengan mudah mengirim semua email lain. Ganti baris kedua di atas dengan:

/^To:.*@/   DISCARD No outgoing mails allowed

Penjelasan:

  • Postfix melewati header surat satu per satu.
  • Setiap baris tajuk akan dicocokkan dengan header_checksfile baris demi baris.
  • Jika cocok dengan baris pertama ( To:berisi domain yang diizinkan), itu akan melompat ke baris header berikutnya dan mulai memeriksa header lagi dari atas. Karena tidak ada saluran lain yang cocok, ini berarti surat dikirimkan.
  • Jika cocok dengan baris kedua ( To:berisi alamat email eksternal lain), itu mengarahkan ulang surat.
Jonas
sumber
masalah ini tampaknya telah dipecahkan dengan jawaban ini, mungkin harus ditandai sebagai dipecahkan? (Setidaknya itu berfungsi seperti pesona bagi saya)
Sverre
bagaimana dengan Cc:dan Bcc:?
Paul Tobias
3

Sudahkah Anda mencoba header_checks (5) ?

0x44
sumber
tidak, memeriksa itu sekarang
datadevil