在 CentOS 7 上为 postfix smtp 设置中继端口

在 CentOS 7 上为 postfix smtp 设置中继端口

CentOS 7 服务器安装了 postfix、dovecot 和 mailx。我可以从本地 devbox 上运行的远程 Thunderbird 客户端与服务器建立 IMAP 连接。但我无法从安装在我的开发盒上的本地 Thunderbird 通过服务器发送电子邮件。经过大量研究,我发现原因是我的 devbox ISP 阻止了端口 25。所以我想将发送邮件端口更改为 465。这涉及服务器防火墙和 postfix 的更改,以及 devbox Thunderbird 中的更改。

这个问题与 stackexchange 网络上的类似问题不同,因为我问的是如何在 CentOS 7 中执行此操作,其中防火墙使事情变得复杂。

简单更改 SMTP 端口的问题是其他邮件服务器使用端口 25 相互发送电子邮件。如果我将 smtp 端口更改为 465,则没有人能够向我的服务器发送电子邮件。 如何更改 postfix、firewalld 和 Thunderbird,以便我的出站电子邮件通过端口 465,同时端口 25 保持开放状态以接收来自其他邮件服务器的邮件?

我需要特定配置文件的特定语法。我已经知道了答案涉及设置中继主机。但如何在 CentOS 7 中进行设置呢?

以下是我目前所做的:

1.)我将这一行添加465 inet n - - - - smtpd/etc/postfix/master.cf

   # =========================================  
   # service type  private unpriv  chroot  wakeup  maxproc command + args
   #               (yes)   (yes)   (yes)   (never) (100)  
   # ====================================================================  
    smtp      inet  n   -   n   -   -   smtpd  
    465   inet  n   -   -   -   -   smtpd  

/usr/lib/firewalld/services/smtp.xml2.)然后我通过如下 读取将firewalld中的SMTP端口号更改为465 :

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>Mail (SMTP)</short>
  <description>This option allows incoming SMTP mail delivery. If you need to allow remote hosts to connect directly to your machine to deliver mail, enable this option. You $
  <port protocol="tcp" port="465"/>
</service>

3.) 仍在服务器上,我输入systemctl stop postfixthen systemctl start postfixthen systemctl status postfix,一切顺利。然后我打字firewall-cmd --reload就没有问题了。

4.) 接下来,我将 devbox 的 Thunderbird 中的传出 smtp 端口更改为 465。

5.) 在服务器上,我按照 @derobert 的建议,输入tcpdump -n -i any tcp port 465并尝试使用我的 devbox Thunderbird 通过服务器发送电子邮件,并在服务器上打印出以下内容:

tcpdump -n -i any tcp port 465
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
18:07:36.276193 IP my.SERVER.ip.addr.urd > my.DEVBOX.ip.addr.37589: Flags [S.], seq 3232257854, ack 2935370285, win 14480, options [mss 1460,sackOK,TS val 979486294 ecr 14200749,nop,wscale 7], length 0
18:07:36.361712 IP my.DEVBOX.ip.addr.37589 > my.SERVER.ip.addr.urd: Flags [.], ack 1, win 115, options [nop,nop,TS val 14200832 ecr 979486294], length 0
18:07:36.362152 IP my.SERVER.ip.addr.urd > my.DEVBOX.ip.addr.37589: Flags [P.], seq 1:43, ack 1, win 114, options [nop,nop,TS val 979486380 ecr 14200832], length 42
18:07:36.366824 IP my.DEVBOX.ip.addr.37589 > my.SERVER.ip.addr.urd: Flags [P.], seq 1:186, ack 1, win 115, options [nop,nop,TS val 14200832 ecr 979486294], length 185
18:07:36.366865 IP my.SERVER.ip.addr.urd > my.DEVBOX.ip.addr.37589: Flags [.], ack 186, win 122, options [nop,nop,TS val 979486385 ecr 14200832], length 0
18:07:36.454916 IP my.DEVBOX.ip.addr.37589 > my.SERVER.ip.addr.urd: Flags [.], ack 43, win 115, options [nop,nop,TS val 14200920 ecr 979486380], length 0
18:07:36.454961 IP my.SERVER.ip.addr.urd > my.DEVBOX.ip.addr.37589: Flags [P.], seq 43:195, ack 186, win 122, options [nop,nop,TS val 979486473 ecr 14200920], length 152
18:07:36.539237 IP my.DEVBOX.ip.addr.37589 > my.SERVER.ip.addr.urd: Flags [.], ack 195, win 123, options [nop,nop,TS val 14201009 ecr 979486473], length 0
18:09:20.466757 IP my.DEVBOX.ip.addr.37589 > my.SERVER.ip.addr.urd: Flags [F.], seq 186, ack 195, win 123, options [nop,nop,TS val 14304941 ecr 979486473], length 0
18:09:20.467113 IP my.SERVER.ip.addr.urd > my.DEVBOX.ip.addr.37589: Flags [F.], seq 195, ack 187, win 122, options [nop,nop,TS val 979590485 ecr 14304941], length 0
18:09:20.550693 IP my.DEVBOX.ip.addr.37589 > my.SERVER.ip.addr.urd: Flags [.], ack 196, win 123, options [nop,nop,TS val 14305025 ecr 979590485], length 0
^C
11 packets captured
12 packets received by filter
0 packets dropped by kernel  

6.) 同样,也是基于@derobert 的建议,在我输入的 devbox 上nc my.server.ip.addr 465 < /dev/null并在终端中打印了220 mydomain.com ESMTP Postfix回复。

Thunderbird 中的发送服务器 (SMTP) 设置为:

Description:           <Not Specified>  
Server Name:           mydomain.com  
Port:                  465
User Name:             me
Authentication Method: Normal Password
Connection Security:   SSL/TLS  

但 Thunderbird 连接仍然超时,并且电子邮件未发送。我还需要做什么?

注意:当我/usr/lib/firewalld/services/smtp.xml再次更改为指示端口 25,并保留上述其他 5 个步骤中的所有其他内容相同时,我重新获得从服务器接收电子邮件的能力,但无法通过服务器发送电子邮件。


编辑:


@jsbillings 建议我在 master.cf 中定义提交端口。为了进一步推进,我postconf -M在终端中输入打印出master.cf的相关内容。我仍然无法发送电子邮件,但以下是我今天在处理此问题过程中所做的更改后的结果:

smtp       inet  n       -       n       -       -       smtpd
587        inet  n       -       -       -       -       smtpd
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_sasl_local_domain=$myhostname 
-o smtpd_client_restrictions=permit_sasl_authenticated,reject 
-o smtpd_sender_login_maps=hash:/etc/postfix/virtual 
-o smtpd_sender_restrictions=reject_sender_login_mismatch 
-o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
pickup     unix  n       -       n       60      1       pickup
cleanup    unix  n       -       n       -       0       cleanup
qmgr       unix  n       -       n       300     1       qmgr
tlsmgr     unix  -       -       n       1000?   1       tlsmgr
rewrite    unix  -       -       n       -       -       trivial-rewrite
bounce     unix  -       -       n       -       0       bounce
defer      unix  -       -       n       -       0       bounce
trace      unix  -       -       n       -       0       bounce
verify     unix  -       -       n       -       1       verify
flush      unix  n       -       n       1000?   0       flush
proxymap   unix  -       -       n       -       -       proxymap
proxywrite unix  -       -       n       -       1       proxymap
smtp       unix  -       -       n       -       -       smtp
relay      unix  -       -       n       -       -       smtp
showq      unix  n       -       n       -       -       showq
error      unix  -       -       n       -       -       error
retry      unix  -       -       n       -       -       error
discard    unix  -       -       n       -       -       discard
local      unix  -       n       n       -       -       local
virtual    unix  -       n       n       -       -       virtual
lmtp       unix  -       -       n       -       -       lmtp
anvil      unix  -       -       n       -       1       anvil
scache     unix  -       -       n       -       1       scache

答案1

您不能指望其他人有 SMTP 服务器侦听端口 25 以外的任何端口。如果您的 ISP 阻止出站端口 25,您可以设置您的 postfix 系统通过 ISP 中继邮件,例如在康卡斯特的这个例子中

不过,老实说,如果您在阻止出站端口 25 的 ISP 上运行自己的邮件服务,您可能需要考虑将服务切换到不阻止端口 25 的商业互联网提供商,或者将您的邮件移至托管允许 SMTP 的提供商。

编辑:

我现在更明白你在问什么了。您希望您的 SMTP 服务器都接收邮件是 SMTP 提交主机。您需要添加第二个服务/etc/postfix/master.cf并设置 SASL 身份验证。 Dovecot 维基有配置示例对于这个过程。

相关内容