Примусове шифрування вихідних SMTP з Postfix


23

Хтось знає, як сказати Postfix для шифрування вихідної пошти?

Я налаштував його на використання шифрування під час прийому, але я не можу це зробити з вихідною поштою. Це мій main.cfфайл:

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

Відповіді:


30

smtp_tls_security_level = шифрувати або smtp_enforce_tls = так

Для конкретних напрямків ви можете використовувати smtp_tls_policy_maps

smtp_use_tls = так і smtp_enforce_tls = так , застарілі. З Postfix 2.3 та пізнішими версіями використовуйте smtp_tls_security_level замість цього.

Пам'ятайте: посилення шифрування TLS може спричинити проблеми доставки пошти для хоста SMTP, у якому не налаштовано TLS. Якщо сервер використовується для доставки електронної пошти лише на ваш внутрішній сервер із налаштованою TLS, у цьому випадку це не проблема. Але якщо сервер використовується для доставки пошти на загальнодоступні сервери, ви не можете припустити, що всі сервери мають підтримку TLS. У цьому випадку використовуйте smtp_tls_security_level = може


1
Я думаю, що він хоче лише застосувати це від програмного забезпечення mailclient до сервера відправки. Не від mailserver до mailserver (дивіться його коментар, опублікований 7 березня '10 о 23:26)
Cojones

4

Ідея полягає в тому, щоб змусити користувачів конфігурувати своїх клієнтів електронної пошти зашифрованим вихідним smtp-сервером. З поточним конфліктом Thunderbird залишає їм можливість спілкуватися із сервером smtp у простому тексті ...

Ви не можете відключити опцію в Thunderbird без перекомпіляції вихідного коду, але ви можете налаштувати демон postmpd stmpd (який отримує пошту від ваших клієнтів) для забезпечення шифрування. Для цього використовуйте smtpd_tls_security_level = шифрування , що еквівалентно застарілим параметрам smtpd_use_tls = так і smtp_enforce_tls = так . smtpd_tls_security_level = шифрувати і smtp_enforce_tls = так означає smtpd_tls_auth_only = так

З документації про постфікси про smtpd_tls_security_level = шифрувати

Обов’язкове шифрування TLS: оголосіть підтримку STARTTLS клієнтам SMTP та вимагайте, щоб клієнти використовували шифрування TLS. Відповідно до RFC 2487, це НЕ МОЖЕ бути застосовано у випадку SMTP-сервера, що публічно посилається. Натомість цю опцію слід використовувати лише на спеціалізованих серверах.

Якщо ви використовуєте загальнодоступний сервер, ви не можете застосувати шифрування електронної пошти на порт 25 / tcp. Краще рішення - відключити доставку пошти поштовим портом smtpd daemon port 25 / tcp від ваших клієнтів та включити демон для подання постфікса (що є спеціальним демоном postfix smtpd, який використовується лише для отримання пошти від ваших локальних клієнтів, описаних у RFC 4409, що працює на порт 587 / tcp) . Для цього встановіть smtpd_tls_security_level = може і видаліть permit_sasl_authenticatedз smtpd_recipient_restrictions . У master.cfрядку коментарів про демон подання:

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

1

Просто цікаво, як ви говорите, що він не використовує TLS? Значення за замовчуванням для smtp_tls_loglevel (яке відрізняється від smtpd_tls_loglevel) дорівнює 0, тому за замовчуванням у журналах Postfix ви не побачите нічого про узгодження TLS для вихідної пошти.

Якщо ви встановите smtp_tls_loglevel = 1 або вище, вам слід побачити такий рядок у журналі, коли надсилається повідомлення:

7 березня 22:28:10 стійка postfix / smtp [27400]: ініціалізація TLS-механізму на стороні клієнта

Я визнаю, що я лінивий, але окрім цього (і повідомлення мс вище) конфігурація мені здається прекрасною.


1
Я зрозумів, що Саймон хоче примусити всю пошту шифруватися за допомогою TLS. smtp_use_tls = так дозволяє постфікс використовувати TLS, якщо віддалений сервер підтримує його (smtp_use_tls = так, еквівалентний smtp_tls_security_level = може). Відповідне повідомлення повинно бути розміщено в журналі, якщо вихідна пошта була зашифрована за допомогою TLS. Ви маєте рацію, що параметри smtp_ * призначені для іншого демон-постфікса, ніж smtpd_ * (smtpd_ * - це для отримання повідомлень з віддалених серверів, smtp_ * - для доставки пошти на віддалені сервери).
sumar

Насправді я думаю, що питання може бути дещо неоднозначним. Принаймні, я не можу сказати, чи хоче Simon, щоб Postfix вимагав TLS або просто використовувати його, якщо сервер одержувача підтримує його.
jlupolt

1
Дякую за ваші слова, я, мабуть, мені не пояснив добре. Ідея полягає в тому, щоб змусити користувачів налаштувати своїх клієнтів електронної пошти зашифрованим вихідним smtp-сервером. З поточним конфліктом Thunderbird залишає їм можливість спілкуватися із сервером smtp у простому тексті ... чи можна цього уникнути? Заздалегідь дякую, Саймоне.
Саймон

Простий спосіб визначити, чи TLS активний - це переглянути необроблене повідомлення на стороні прийому та шукати результати аутентифікації: domainkeys = нейтрально (без знаку); Що вказує на те, що він не використовує TLS
Scott Stensland
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.