
Как заставить мой сервер Postfix отправлять почту только на порт 587, а также включить TLS с портом 587 с безопасной аутентификацией (которая использует системных пользователей Linux)?
Во-первых, этот вопрос может показаться слишком обширным, но я не смог найти ни одного решения в интернете. Во многих статьях дается решение, но они пропускают некоторые части.
Я хочу принудительно включить аутентификацию и TLS-подключения.
Если кто-то спросит, могу выложить конфигурацию.
Спасибо заранее. Я новичок в postfix. Также я мог бы взглянуть наhttp://www.postfix.org/documentation.html, но прежде чем вы мне об этом расскажете, я не могу понять это как следует, поэтому я уверен, что испорчу конфигурацию и сделаю свой сервер непригодным для использования. Кроме того, postfix здесь был установлен с помощью менеджера пакетов apt. Но я уверен, что это не особо связано с ubuntu. Я использовал Exim4 до того, как начал использовать postfix, но там так мало поддержки Exim, потому что люди в основном используют его в cPanel, поэтому я не получаю поддержки vanilla Exim.
Нужна срочная помощь, поскольку безопасность нашего сервера под угрозой.
решение1
Чтобы включить порт 587, отредактируйте файл/etc/postfix/master.cf
vi /etc/postfix/master.cf
и удалите # перед строкой (раскомментируйте строку):
#submission inet n - n - - smtpd
так что это будет выглядеть так:
submission inet n - n - - smtpd
Возможно, вам захочется раскомментировать дополнительные строки, включающие аутентификацию SASL, сразу после этой строки. Каждая новая строка должна начинаться с пробела!
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
Все остальные параметры должны быть настроены в/etc/postfix/main.cfв зависимости от вашей среды.
Дополнительно вам может потребоваться настроить параметры TLS:
# TLS parameters
# you need to specify a real certificate location
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert.key
smtpd_use_tls=yes
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
smtp_tls_session_cache_database = btree:$data_directory/smtp_tls_session_cache
smtpd_sasl_tls_security_options=noanonymous
smtpd_tls_auth_only=yes
В зависимости от того, используете ли вы dovecot для получения писем, вам может потребоваться добавить:
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/dovecot-auth
broken_sasl_auth_clients=yes
Дополнительные ограничения безопасности:
smtpd_relay_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_non_fqdn_helo_hostname,reject_non_fqdn_sender,reject_unknown_sender_domain,reject_non_fqdn_recipient,reject_unknown_recipient_domain
проверьте и перезапустите postfix:
postfix check
systemctl restart postfix
Вы можете убедиться, что postfix теперь прослушивает оба порта 25 и 587:
netstat -na | grep LISTEN | grep 25
netstat -na | grep LISTEN | grep 587
Не забудьте разрешить порт 587 в вашем брандмауэре.
Создание пользователей postfix — это отдельная история. Как упоминалось в комментариях, для хранения почтовых ящиков (пользователей почты) следует использовать SQL. Если вы не хотите этого делать, можно использовать пользователей Linux, подробно описаноздесь.
P.S. Я не думаю, что здесь возможно предоставить полную конфигурацию, поскольку она всегда сильно зависит от конкретных требований случая и вашей среды.
решение2
Это позволит использовать только безопасные соединения:
smtpd_tls_auth_only = yes
Тогда у вас есть другие необходимые опции:
smtpd_tls_security_level = may
smtp_sasl_auth_enable = yes
smtp_use_tls = yes
Чтобы использовать 587, отредактируйте master.cf и раскомментируйте строку:
submission inet n - n - - smtpd
Постфикс перезагрузки.