Здравствуйте!Имеется несколько почтовых серверов, которые обслуживают домены (предположим office1.ru, office2.ru, ...). При отправке почты регулярно появляются такие ошибки:
<********@gmail.com>: host gmail-smtp-in.l.google.com[74.125.77.27] said:
550-5.7.1 [94.*.*.*] The IP you're using to send mail is not
authorized to 550-5.7.1 send email directly to our servers. Please use the
SMTP relay at your 550-5.7.1 service provider instead. Learn more at
550 5.7.1 http://mail.google.com/support/bin/answer.py?answer=10336
q1si10796085eeh.59 (in reply to end of DATA command)Причем, ошибки возникают не у всех внешних почтовых серверов (yandex.ru и mail.ru работают, с rambler договорились, а gmail.com и freebsd.org не прнимают).
Чтобы не разбираться с каждым провайдером и/или почтовиком отдельно, мы заказали cloud-сервер в дата-центре, настроили на нем postfix и убедились, что там таких проблем нет.
Задача: создать на этом cloud-сервере relay-сервер для доменов office1.ru, office2.ru, ....
Почта при отправке должна проходить так:
1. Письмо приходит на офисный сервер officeN.ru.
2. Если получатель из того же домена, то оно доставляется локально (через Dovecot LDA). Этот пункт уже сделан и работает.
3. Если получатель из другого домена, то письмо перенаправляется на cloud-сервер (как релей). Этот пункт тоже сделан и работает.
4. На cloud-сервере: письма, приходящие как релеи от доменов office1.ru, ... должны пересылаться наружу (для определения "своих" доменов можно привязываться к IP, использовать сертификаты, sasl и пр.). Письма, приходящие как релеи от других доменов должны отбрасываться (во избежание open-relay конфигурации)Везде используется Postfix и Dovecot.
Поиски в гугле приводили в основном к решению пунктов 2 и 3.
Буду признателен за любую помощь!
В общем, решилось добавлением check_ccert_access:smtpd_client_restrictions = permit_sasl_authenticated,
check_client_access hash:/etc/postfix/maps/client_access,
reject_unknown_client_hostnamesmtpd_helo_restrictions = check_helo_access hash:/etc/postfix/maps/hello_access,
permit_sasl_authenticated,
reject_invalid_helo_hostname,
reject_non_fqdn_helo_hostname,
reject_unknown_helo_hostnamesmtpd_sender_restrictions = check_sender_access hash:/etc/postfix/maps/sender_access,
check_ccert_access hash:/etc/postfix/maps/client_ccert_relay,
reject_authenticated_sender_login_mismatch,
reject_unknown_sender_domain,
reject_unlisted_sendersmtpd_recipient_restrictions = permit_sasl_authenticated,
check_ccert_access hash:/etc/postfix/maps/client_ccert_relay,
reject_unauth_destination,
check_recipient_access hash:/etc/postfix/maps/recipient_access,
reject_unlisted_recipient,
reject_unknown_recipient_domain,
reject_non_fqdn_recipientsmtpd_etrn_restrictions = reject
В файле /etc/postfix/maps/client_ccert_relay:00:11:22:...:99 OK # md5 fingerprint для каждого клиентского сертификата серверов
00:11:22:...:ff OK # sha1 fingerprint для каждого клиентского сертификата серверов