Memaksa enkripsi untuk SMTP keluar dengan Postfix

23

Adakah yang tahu bagaimana cara memberitahu Postfix untuk mengenkripsi surat keluar?

Saya telah mengonfigurasinya untuk menggunakan enkripsi pada penerimaan, tetapi saya tidak dapat melakukannya dengan surat keluar. Ini main.cffile saya :

smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = smtpd
transport_maps = hash:/etc/postfix/transport

# tls config
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.pem
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.pem
smtpd_tls_CAfile = /etc/postfix/ssl/smtpd.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
Simon
sumber

Jawaban:

30

smtp_tls_security_level = mengenkripsi atau smtp_enforce_tls = ya

Untuk tujuan tertentu, Anda dapat menggunakan smtp_tls_policy_maps

smtp_use_tls = yes dan smtp_enforce_tls = yes sudah ditinggalkan. Dengan Postfix 2.3 dan kemudian gunakan smtp_tls_security_level sebagai gantinya.

Ingat: Menegakkan enkripsi TLS dapat menyebabkan masalah pengiriman email untuk host SMTP, yang tidak memiliki konfigurasi TLS. Jika server digunakan untuk mengirimkan email hanya ke server internal Anda dengan TLS yang dikonfigurasi, itu bukan masalah dalam kasus itu. Tetapi jika server digunakan untuk mengirimkan email ke server publik, Anda tidak dapat berasumsi, bahwa semua server memiliki dukungan TLS. Dalam hal ini gunakan smtp_tls_security_level = may

sumar
sumber
1
Saya pikir dia hanya ingin menegakkannya dari klien perangkat lunak ke server pengirim. Bukan dari mailserver ke mailserver (lihat komentarnya diposting pada 7 Maret 10 di 23:26)
Cojones
4

Idenya adalah untuk memaksa pengguna untuk mengkonfigurasi klien email mereka dengan server smtp keluar terenkripsi. Dengan conf saat ini, Thunderbird memberi mereka pilihan untuk berkomunikasi dengan server smtp dalam teks biasa ...

Anda tidak dapat menonaktifkan opsi di Thunderbird tanpa mengkompilasi ulang kode sumber, tetapi Anda dapat mengonfigurasi daemon stmpd postfix (yang menerima email dari klien Anda) untuk menegakkan enkripsi. Untuk melakukannya, gunakan smtpd_tls_security_level = enkripsi , yang setara dengan opsi usang smtpd_use_tls = yes dan smtp_enforce_tls = yes . smtpd_tls_security_level = mengenkripsi dan smtp_enforce_tls = yes menyiratkan smtpd_tls_auth_only = ya

Dari dokumentasi postfix tentang smtpd_tls_security_level = enkripsi

Enkripsi TLS wajib: umumkan dukungan STARTTLS kepada klien SMTP, dan minta klien menggunakan enkripsi TLS. Menurut RFC 2487, ini TIDAK HARUS diterapkan untuk server SMTP yang dirujuk secara publik. Sebagai gantinya, opsi ini harus digunakan hanya pada server khusus.

Jika Anda menggunakan server publik, Anda tidak dapat menerapkan enkripsi email pada port 25 / tcp. Solusi yang lebih baik adalah menonaktifkan pengiriman email melalui porta daemon smtpd daemon post 25 / tcp dari klien Anda dan mengaktifkan daemon pengajuan postfix (yang merupakan daemon smtpd postfix khusus yang hanya digunakan untuk menerima email dari klien lokal Anda yang dijelaskan dalam RFC 4409 yang berjalan di port 587 / tcp) . Untuk melakukannya, atur smtpd_tls_security_level = mungkin dan hapus permit_sasl_authenticateddari smtpd_recipient_restrictions . Dalam master.cfbaris komentar tentang daemon pengiriman:

submission inet n       -       n       -       -   submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_recipient_resrictions=permit_sasl_authenticated,reject
sumar
sumber
1

Hanya ingin tahu, bagaimana Anda mengatakan bahwa itu tidak menggunakan TLS? Nilai default untuk smtp_tls_loglevel (yang berbeda dari smtpd_tls_loglevel) adalah 0, jadi secara default Anda tidak akan melihat apa pun tentang negosiasi TLS untuk email keluar dalam log Postfix.

Jika Anda menetapkan smtp_tls_loglevel = 1 atau lebih tinggi, Anda akan melihat baris seperti ini di log ketika pesan dikirim:

7 Maret 22:28:10 rack postfix / smtp [27400]: menginisialisasi mesin TLS sisi klien

Saya akui saya malas, tapi selain itu (dan catatan ms di atas) konfigurasi terlihat baik-baik saja bagi saya.

terima kasih
sumber
1
Saya mengerti, bahwa Simon ingin menegakkan semua email untuk dienkripsi menggunakan TLS. smtp_use_tls = yes memungkinkan postfix menggunakan TLS, jika server jauh mendukungnya (smtp_use_tls = yes setara dengan smtp_tls_security_level = mungkin). Pesan yang sesuai harus ditempatkan di maillog, jika surat keluar dienkripsi menggunakan TLS. Anda benar bahwa opsi smtp_ * untuk daemon postfix berbeda dari smtpd_ * (smtpd_ * untuk menerima email dari server jauh, smtp_ * untuk pengiriman mail ke server jauh).
sumar
Sebenarnya saya pikir pertanyaannya mungkin sedikit ambigu. Setidaknya saya tidak tahu apakah Simon ingin Postfix memerlukan TLS atau hanya menggunakannya jika server penerima mendukungnya.
jlupolt
1
Terima kasih atas kata-kata Anda, saya mungkin tidak menjelaskan dengan baik. Idenya adalah untuk memaksa pengguna untuk mengkonfigurasi klien email mereka dengan server smtp keluar terenkripsi. Dengan conf saat ini, Thunderbird memberi mereka pilihan untuk berkomunikasi dengan server smtp dalam teks biasa ... apakah mungkin untuk menghindari ini? Terima kasih sebelumnya, Simon.
Simon
Cara mudah untuk mengidentifikasi apakah TLS aktif adalah dengan melihat pesan mentah di sisi penerima dan mencari Otentikasi-Hasil: domainkeys = netral (tanpa tanda); Yang menunjukkan itu tidak menggunakan TLS
Scott Stensland