Я понимаю, что мне нужен SMTP на порту 25 для получения электронной почты, но я не хочу, чтобы это был порт ретрансляции. Вместо этого я бы использовал порт 587 для зарегистрированных (аутентифицированных по SASL) пользователей для ретрансляции электронной почты с любого IP-адреса через мой сервер и на любой почтовый сервер (например, GMail, Yahoo).
Я настроил Postfix для получения электронной почты и аутентификации пользователей, но меня совершенно смущает разница между портами 25 и 587, а также то, как использовать один для приема и один для ретрансляции.
Вот соответствующая часть моего main.cf
В настоящее время.
myhostname = mx.example.com
mydomain = example.com
#myorigin = $mydomain
mydestination = localhost localhost.localdomain
mynetworks_style = host
smtpd_sender_restrictions = reject_unknown_sender_domain
smtpd_relay_restrictions = permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination
smtpd_recipient_restrictions = permit_mynetworks,
permit_sasl_authenticated,
# reject_unauth_destination is not needed here if the mail
# relay policy is specified under smtpd_relay_restrictions
# (available with Postfix 2.10 and later).
reject_unauth_destination
reject_rbl_client zen.spamhaus.org,
reject_rhsbl_reverse_client dbl.spamhaus.org,
reject_rhsbl_helo dbl.spamhaus.org,
reject_rhsbl_sender dbl.spamhaus.org
И master.cf
.
smtp inet n - - - - smtpd
#smtp inet n - - - 1 postscreen
#smtpd pass - - - - - smtpd
#dnsblog unix - - - - 0 dnsblog
#tlsproxy unix - - - - 0 tlsproxy
submission inet n - - - - smtpd
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=private/auth
-o smtpd_sasl_security_options=noanonymous
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o smtpd_sender_restrictions=reject_sender_login_mismatch
К сожалению, я получаю эту ошибку при попытке отправить на порт 587 с помощью моего почтового клиента с другого IP-адреса.
NOQUEUE: reject: RCPT from unknown[XXX.XXX.XXX.XXX]: 553 5.7.1 <test@example.com>: Sender address rejected: not owned by user test@example.com; from=<test@example.com> to=<test@domain.tld> proto=ESMTP helo=<[192.168.1.3]>
Конфигурация для каждого порта выполняется в master.cf
не main.cf
. В файлах конфигурации Postfix по умолчанию уже есть хорошие примеры настроек, их просто нужно раскомментировать. Порт 587 обозначен как submission
порт там (порт 25 конечно smtp
).
Ваши настройки можно было бы несколько упростить. В main.cf
укажите политику по умолчанию (для порта 25) только как recipient_restrictions
, больше ничего не нужно:
smtpd_recipient_restrictions = permit_mynetworks reject_unverified_recipient reject_rbl_client zen.spamhaus.org reject_rbl_...... permit_auth_destination reject
В master.cf
, переопределите его, удалив ранее установленные ограничения и разрешив неограниченную ретрансляцию для аутентифицированных пользователей:
smtp inet n - n - - smtpd submission inet n - n - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_reject_unlisted_recipient=no -o smtpd_recipient_restrictions= -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING