Postfix

Postfix smtp 中繼可以發送郵件但不能中繼其他主機

  • February 26, 2020

案例:我們有幾個不支持 SSL/TLS 身份驗證的伊頓 PDU/PSU。我的任務是建構一個 SMTP 中繼伺服器,它可以接收基本的 SMTP/25 電子郵件並通過 SSL 將它們轉發給我們的電子郵件提供商。

注意:中繼主機使用 stunnel 在 465 上建立 smtps 連接。

我的 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

/etc/postfix/sasl_passwd

[127.0.0.1]:5000 notify@domain.com:notifypwd

/etc/後綴/通用

/^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

檢查通道連接

[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))

伊頓電源

配置 信用

伊頓結果

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

__

這是我第一次做這樣的設置。我的知識中可能有很多漏洞讓我感到悲傷。

  1. 在正確的設置中,您是否甚至需要為想要使用中繼伺服器的任何主機重新鍵入憑據?例如,在eaton smtp 配置中,它應該是sasl 文件中使用的電子郵件的憑據嗎?還是允許使用後綴轉發的系統帳戶?或者後綴/通用文件中定義的帳戶名稱?有點失落。
  2. stunnel 甚至是我應該通過 ssl/tls 連接的正確方式嗎?我在 smtp.mxhichina.com 的 telnet 提示符中看到了 starttls。

老實說,我認為我過於復雜了,或者遺漏了一些明顯的東西。如果有人有更好的設置來適應我的案例,也將不勝感激。


僅將 SSL 連接從 Stunnel 切換到 Postfix

結果

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

/etc/postfix/sasl_passwd

smtp.mxhichina.com notify@domain.com:notifypwd

你的線

 mynetworks = 127.0.0.0/8, 10.96.80.1/24

看起來不正確 - 您指定了一個主機(不確定它如何解釋關聯的網路。)嘗試將第二個條目更改為 10.96.80。0 /24

據我所知

smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd

當 postfix 充當 SMTP 客戶端而不是伺服器並啟用 postfix 本身對遠端伺服器的身份驗證時使用。http://www.postfix.org/SASL_README.html中的更多詳細資訊。

我認為你應該啟用

smtpd_sasl_auth_enable = yes

並查看上述自述文件的**“在 Postfix SMTP 伺服器中啟用 SASL 身份驗證和授權”部分。**

引用自:https://serverfault.com/questions/1003171