Пример использования: у нас есть несколько блоков PDU / PSU Eaton, которые не поддерживают аутентификацию SSL / TLS. Мне было поручено создать сервер ретрансляции SMTP, который может принимать основные электронные письма SMTP / 25 и пересылать их нашему провайдеру электронной почты через SSL.
Примечание. Узел ретрансляции устанавливает соединение smtps на 465 с помощью stunnel.
Я нахожусь в точке, где мой сервер ретрансляции SMTP Postfix может успешно отправлять почту через нашего провайдера электронной почты, alimail. Но я не могу заставить его ретранслировать электронные письма с других хостов в нашей сети.
/etc/postfix/main.cf
smtpd_banner = mail01v-la ESMTP
inet_interfaces = all
inet_protocols = ipv4
mynetworks = 127.0.0.0/8, 10.96.80.0/24
relayhost = [127.0.0.1]:5000
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CApath = /etc/ssl/certs
smtp_use_tls = no
smtp_generic_maps = regexp:/etc/postfix/generic
/ и т.д. / постфикс / sasl_passwd
[127.0.0.1]:5000 notify@domain.com:notifypwd
/ и т.д. / постфикс / общий
/^root@(.*)$/ notify@domain.com
/etc/stunnel/stunnel.conf
client = yes
foreground = no
[smtps]
accept = 5000
connect = smtp.mxhichina.com:smtps
SMTP Telnet к провайдеру
[root@mail01v-la ~]# telnet smtp.mxhichina.com smtp
Trying 205.204.101.152...
Connected to smtp.mxhichina.com.
Escape character is '^]'.
220 smtp.aliyun-inc.com MX AliMail Server
ehlo google.come
250-smtp.aliyun-inc.com
250-STARTTLS
250-8BITMIME
250-AUTH=PLAIN LOGIN XALIOAUTH
250-AUTH PLAIN LOGIN XALIOAUTH
250-PIPELINING
250 DSN
Проверка подключения Stunnel
[root@mail01v-la ~]# telnet 127.0.0.1 5000
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
220 smtp.aliyun-inc.com MX AliMail Server
Отправка электронной почты с сервера ретрансляции
echo "Stack Body" | mail -s "Test Subject for Stack" user@domain.com
Полученные результаты
Feb 14 18:30:29 mail01v-la postfix/pickup[4812]: 3194940DE2: uid=0 from=<root>
Feb 14 18:30:29 mail01v-la postfix/cleanup[4865]: 3194940DE2: message-id=<20200215023029.3194940DE2@mail01v-la.domain.com>
Feb 14 18:30:29 mail01v-la postfix/qmgr[2606]: 3194940DE2: from=<root@mail01v-la.domain.com>, size=481, nrcpt=1 (queue active)
Feb 14 18:30:30 mail01v-la postfix/smtp[4867]: 3194940DE2: to=<user@domain.com>, relay=127.0.0.1[127.0.0.1]:5000, delay=1.3, delays=0.01/0.01/0.85/0.46, dsn=2.0.0, status=sent (250 Data Ok: queued as freedom)
Feb 14 18:30:30 mail01v-la postfix/qmgr[2606]: 3194940DE2: removed
Случайный сервер CentOS
/etc/postfix/main.cf
relayhost = [10.96.80.126]:5000
Результат
Feb 14 18:06:52 test01v-la postfix/pickup[1247]: BB87C305A42F: uid=0 from=<root>
Feb 14 18:06:52 test01v-la postfix/cleanup[1387]: BB87C305A42F: message-id=<20200215020652.BB87C305A42F@test01v-la.domain.com>
Feb 14 18:06:52 test01v-la postfix/qmgr[1248]: BB87C305A42F: from=<root@test01v-la.domain.com>, size=477, nrcpt=1 (queue active)
Feb 14 18:06:53 test01v-la postfix/smtp[1389]: BB87C305A42F: to=<notify@domain.com>, relay=10.96.80.126[10.96.80.126]:5000, delay=0.78, delays=0.01/0.01/0.61/0.15, dsn=5.0.0, status=bounced (host 10.96.80.126[10.96.80.126] said: 553 authentication is required (in reply to MAIL FROM command))
Блок питания Eaton
Результат Eaton
email[17131]: message error -110 in function smtp_start_session test - (Connection timed out) retrying smtp_start_session test email[17131]: Failed to connect to SMTP server 10.96.80.126:5000 with username notify@domain.com
Я впервые делаю такую настройку. Вероятно, в моих знаниях много пробелов, которые вызывают у меня горе.
При правильной настройке вам даже нужно повторно вводить учетные данные для любых хостов, которые хотят использовать сервер ретрансляции? Например, в конфиге eaton smtp должны ли быть кредиты электронной почты, использованные в файле sasl? Или системный аккаунт разрешен для пересылки с постфиксом? Или имя учетной записи, определенное в файле postfix / generic? Немного потеряно.
Является ли stunnel правильным способом подключения через ssl / tls? Я вижу starttls, доступные в приглашении telnet для smtp.mxhichina.com.
Честно говоря, я думаю, что я слишком усложняю это или упускаю что-то очевидное. Если у кого-то есть лучшая настройка для моего варианта использования, мы будем очень признательны.
Полученные результаты
Feb 20 11:27:22 mail01v-la postfix/qmgr[1537]: 6B38AE5EE: from=<root@mail01v-la.domain.com>, size=479, nrcpt=1 (queue active)
Feb 20 11:27:22 mail01v-la postfix/smtp[1558]: CLIENT wrappermode (port smtps/465) is unimplemented
Feb 20 11:27:22 mail01v-la postfix/smtp[1558]: instead, send to (port submission/587) with STARTTLS
Feb 20 11:27:40 mail01v-la postfix/smtp[1558]: 6B38AE5EE: to=<user@domain.com>, relay=smtp.mxhichina.com[205.204.101.152]:465, delay=613, delays=595/0.02/19/0, dsn=4.4.2, status=deferred (lost connection with smtp.mxhichina.com[205.204.101.152] while receiving the initial server greeting)
Feb 20 11:32:22 mail01v-la postfix/qmgr[1537]: A3F736B2: from=<root@mail01v-la.domain.com>, size=477, nrcpt=1 (queue active)
main.cf
inet_interfaces = all
inet_protocols = ipv4
mynetworks = 127.0.0.0/8, 10.96.80.0/24
relayhost = [smtp.mxhichina.com]:465
smtp_use_tls = yes
smtp_enforce_tls = yes
smtp_tls_wrappermode = yes
soft_bounce = yes
smtp_sasl_auth_soft_bounce = yes
/ и т.д. / постфикс / sasl_passwd
smtp.mxhichina.com notify@domain.com:notifypwd
Спасибо всем за помощь. Моя первоначальная настройка была правильной, за исключением порта, к которому я пытался подключиться от других клиентов, который должен был быть 25 вместо 5000.
EX. На случайном сервере CentOS:
/etc/postfix/main.cf
relayhost = [10.96.80.126]:25
Причина, по которой Eaton не работал, заключалась в том, что сеть не была определена в mynetworks в /etc/postfix/main.cf и из-за проблемы с маршрутизацией в мою сеть OOB.
Спасибо всем за помощь.
Если вы не используете старую версию Postfix, вам не нужно настраивать stunnel
поговорить со своим провайдером электронной почты с помощью SSL / SMTPS. Postfix> = 3.0 может сделать это напрямую, установив следующие параметры в вашем /etc/postfix/main.cf
:
relayhost = [smtp.mxhichina.com]:465
smtp_use_tls = yes
smtp_enforce_tls = yes
smtp_tls_wrappermode = yes
# Optional, but recommended to prevent mail loss
soft_bounce = yes
smtp_sasl_auth_soft_bounce = yes
Затем в вашем /etc/postfix/sasl_passwd
, определите следующую запись:
smtp.mxhichina.com notify@domain.com:notifypwd
Как только вы измените /etc/postfix/sasl_passwd
файл, убедитесь, что командная строка postmap /etc/postfix/sasl_passwd
был запущен. Кроме того, запустите командную строку postmap -q smtp.mxhichina.com hash:/etc/postfix/sasl_passwd
чтобы убедиться, что учетные данные для аутентификации были сохранены правильно.
Ссылка: http://www.postfix.org/TLS_README.html#client_smtps
Что касается блоков питания Eaton и другого сервера CentOS в вашей сети, я считаю, что вам просто нужно указать адрес своего сервера ретрансляции и порт. 25/tcp
в качестве SMTP-сервера / ретранслятора:
relayhost = [10.96.80.126]:25
Таким образом, сервер Postfix будет получать сообщения электронной почты с использованием простых и не прошедших проверку подлинности SMTP-соединений, сохранять их в своей собственной очереди электронной почты и затем пересылать сообщения вашему провайдеру, используя SSL / SMTPS-соединения и соответствующие учетные данные.
Насколько я могу судить
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
используются, когда постфикс действует как SMTP-клиент, а не как сервер, и включает аутентификацию самого постфикса на удаленном сервере. Подробнее в http://www.postfix.org/SASL_README.html.
Я думаю, вам следует разрешить
smtpd_sasl_auth_enable = yes
и глядя на «Включение SASL-аутентификации и авторизации на SMTP-сервере Postfix» раздел вышеупомянутого ридми.
Ваша линия
mynetworks = 127.0.0.0/8, 10.96.80.1/24
Выглядит неправильно - вы указали один хост (не знаете, как он интерпретирует связанную сеть). Попробуйте изменить вторую запись на 10.96.80.0/ 24