Назад | Перейти на главную страницу

Postfix позволяет пользователям с аутентификацией SASL отправлять сообщения с любого IP-адреса

Я понимаю, что мне нужен 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