Почтовый релей на Postfix

Продолжение записей о Postfix.

Начало тут http://bloknot.pp.ua/nastroika_postfix

Иногда требуется организовать почтовый релей чтобы отправлять почту не непосредственно на сервер получателя, а сначала на другой почтовый сервер, выполняющий ф-цию релея.

Postfix имеет настройки позволяющие пересылать почту от доверенных сетей, от прошедших SASL аутентификацию клиентов или на домены, за которые ответственен почтовый сервер.
Для того чтобы настроить релеинг необходимо, в одном из вариантов конфигурации:
1. Добавить в настройки сервера, явлюящегося релеем, данные для SASL аутентификации почтовых серверов, которые будут использовать наш сервер в каестве релея.
2. Настроить smtp SASL аутентификацию на серверах, которые будут использовать наш релей для пересылки почты.

Поскольку за SASL аутентификацию (в нашем конфиге) отвечает dovecot, то необходимо в его конфигурацию добавить данные для авторизации почтовых серверов. Я сделал следующим образом чтобы не менять конфиг dovecot. Данные для авторизации пользователей через dovecot хранятся в файлах вида /usr/local/etc/dovecot/passfiles/%d/passwd. Для каждого домена это отдельный файл содержащий список user account - password по одному в строке . Я создаю директорию domain-name.com в /usr/local/etc/dovecot/passfiles и внутри создаю файл passwd c содержимым, аналогичным содержимому для авторизации через imap/pop3. Например, это может быть строка вида:
valid.email@domain-name.com:{PLAIN}my_security_password.
Устанавливаю владельца и группу для этого файла пользователя dovauth(см. http://bloknot.pp.ua/dovecot-configuration ) и права 440, а на каталог 750. Это будет означать что почтовый сервер, выступающий для нашего релея в качестве клиента будет проходить SASL аутентификацию через dovecot, как и пользователь, использующий почтовый клиент. Успешно авторизовавшись, он будет пропущен postfix-om через правило
permit_sasl_authenticated. Но до этого есть правило
reject_authenticated_sender_login_mismatch и чтобы соответствовать ему, нужно добавить в файл /usr/local/etc/postfix/valid_envelop_senders строки вида
exist-email@domain-name.com valid.email@domain-name.com
по одной строке для каждого существующего email из домена domain-name.com ( здесь это exist-email@domain-name.com ) Эти строки означают что почта ото всех валидных пользователей domain-name.com может иметь логин valid.email@domain-name.com.
Далее нужно настроить конфиг postfix для всех серверов, которые будут использовать наш релей.
Вот тут хорошо описана процедура Postfix smtp authentication
http://postfix.state-of-mind.de/patrick.koetter/smtpauth/smtp_auth_mails...
Следует внести следующие дополнения в main.cf:

relayhost = [domain-name.relayhost.com] # указываем куда релеить почту
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl.passwd
smtp_sasl_security_options =

# создаем файл /etc/postfix/sasl.passwd следующего содержания
# domain-name.relayhost.com valid.email@domain-name.com:my_security_password
# и устанавливаем ему права на запись только для root 600, владелец и группа - root, после чего делаем
# postmap hash:/etc/postfix/sasl.passwd
# TLS for SMTP

smtp_tls_security_level = fingerprint
smtp_tls_policy_maps = hash:/etc/postfix/smtp_tls_policy

# if do not use 'smtp_tls_policy_maps' then used options presented below
#smtp_tls_fingerprint_cert_match =
#      3D:95:34:51:24:66:33:B9:D2:40:99:C0:C1:17:0B:D1
#      EC:3B:2D:B0:5B:B1:FB:6D:20:A3:9D:72:F6:8D:12:35
# here must write fingerprint which need create using command
# openssl x509 -noout -fingerprint -md5 -in cert.pem

#Файл smtp_tls_policy :
#[domain-name.relayhost.com]  fingerprint
#     match=02:en:bd:f7:6d:89:76:l3:39:df:nc:zq:bl:3p:qe:0m

#В котором fingerprint создается из файла ssl сертификата сервера, являющегося релеем.

#командой openssl x509 -noout -fingerprint -md5 -in cert.pem

smtp_tls_fingerprint_digest = md5

# Для исключения ошибки "...certificate verification failed... self-signed certificate..." возникающей из-за того
# что postfix после чтения логов переходит в chroot c понижением полномочий добавляем параметр и
# копируем в указанную директорию сертификат сервера, явлюящегося релеем.
smtp_tls_CAfile = /etc/postfix/trusted_ca/cert.pem

http://www.postfix.org/postconf.5.html#smtp_tls_policy_maps

http://www.postfix.org/TLS_README.html#client_tls_policy

Пока все.

 

Отправить комментарий

CAPTCHA
Чтобы убедиться в том что Вы не робот, ответьте, пожалуйста, на вопрос
Fill in the blank