不久前设置了这个东西,它可以很好地发送消息,但是我希望开始能够接收消息。
我尝试通过 telnet 进入端口 25,但是没有任何反应。
挖掘 dzwxgames.com mx:
dzwxgames.com. 60 IN MX 10 34.210.135.57.
现在,AWS 需要使用 SES 中继来发送消息,这很好。但是当我尝试接收消息时,它表现得好像所有端口都被阻止了。
网络状态监测
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN
tcp6 0 0 :::25 :::* LISTEN
tcp6 0 0 :::443 :::* LISTEN
tcp6 0 0 :::110 :::* LISTEN
tcp6 0 0 :::143 :::* LISTEN
但是 netstat 报告说他们也正在被监听。
因此我在 AWS 控制台上检查了我的安全组规则:
SMTP TCP 25 0.0.0.0/0
SMTPS TCP 465 0.0.0.0/0
POP3 TCP 110 0.0.0.0/0
看起来不错。好吧...也许 Postfix 不起作用?
后缀-n
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
home_mailbox = Maildir/
inet_interfaces = all
inet_protocols = all
mailbox_size_limit = 0
mydestination = $myhostname, dzwxgames.com, localhost, localhost.localdomain, localhost
myhostname = DZWXGamesWeb.dzwxgames.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter = +
relayhost = [email-smtp.us-west-2.amazonaws.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_tls_note_starttls_offer = yes
smtp_tls_security_level = encrypt
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_use_tls = yes
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
好的...那么 postfix 只在本地主机上监听?
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
我进行了一些谷歌搜索,它说可能需要启用 dovecot?
好的,将其添加到 postfix 主配置中
/etc/postfix/master.cf:
ifmail unix - n n - - pipe
flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp unix - n n - - pipe
flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix - n n - 2 pipe
flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman unix - n n - - pipe
flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
${nexthop} ${user}
dovecot unix - n n - - pipe
flags=DRhu user=mail:mail argv=/usr/lib/dovecot/deliver
-f ${sender} -d ${recipient}
好的,仍然没有结果。也许 dovecot 没有监听正确的端口?
# 2.2.22 (fe789d2): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.13 (7b14904)
doveconf: Warning: NOTE: You can get a new clean config file with: doveconf -n > dovecot-new.conf
doveconf: Warning: Obsolete setting in /etc/dovecot/dovecot.conf:103: 'imaps' protocol is no longer necessary, remove it
doveconf: Warning: Obsolete setting in /etc/dovecot/dovecot.conf:103: 'pop3s' protocol is no longer necessary, remove it
# OS: Linux 4.4.0-45-generic x86_64 Ubuntu 16.04.5 LTS ext3
mail_location = maildir:/home/%u/Maildir
namespace inbox {
inbox = yes
location =
mailbox Drafts {
special_use = \Drafts
}
mailbox Junk {
special_use = \Junk
}
mailbox Sent {
special_use = \Sent
}
mailbox "Sent Messages" {
special_use = \Sent
}
mailbox Trash {
special_use = \Trash
}
prefix =
}
passdb {
driver = pam
}
protocols = pop3 imap
service imap-login {
inet_listener imaps {
port = 993
ssl = yes
}
}
service imap {
process_limit = 1024
}
service pop3-login {
inet_listener pop3s {
port = 995
ssl = yes
}
}
service pop3 {
process_limit = 1024
}
ssl = no
userdb {
driver = passwd
}
是的,我不明白这一点。我用来设置它的教程似乎早已消失。而且仍然有很多问题。
- 我这个配置哪里出错了?
- 我如何解决它?
- 如果我使用 Cloudflare 来屏蔽我的服务器 IP,这会破坏我的 MX 记录吗?
- 为什么我的 netstat 显示端口 25 正在被监听但我却无法与它对话?
我知道亚马逊会阻止来自端口 25 的大量通信,但似乎没有任何信息表明他们阻止了到该端口的通信。我也已经设置了发送限制。
并且日志甚至没有报告他们收到消息。
答案1
您的安全策略是否允许外部连接到端口 25?这可能是问题所在。
在机器上,您可以 telnet 到 127.0.0.1 25 吗?
答案2
终于明白了。
这是完整的检查表:确保 Postfix/dovecot/squrrelmail/mailbox 已设置。设置完成后,您应该会看到。注意:这仅用于接收电子邮件。发送则是另一个地狱。
sudo netstat -plnt
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 1612/master
您看到的一定是 0.0.0.0,而不是 127.0.0.1 或 192.0.0.ext。
确保您的 Amazon 上的安全组启用了端口 25 和 ssl/tls 端口。
接下来检查 /etc/postfix/master.cf 是否有:
smtp inet n - n - - smtpd
它不是私有的,它在 inet 上,并且它不是 chrooted。不知道为什么。有时有帮助。只需确保您对文件夹具有适当的权限即可。
接下来确保您的 ufc 允许连接到 25。
sudo ufw status
25/tcp ALLOW Anywhere
如果不:
sudo ufw allow 25/tcp
即使 netstat 显示 25 也在被监听,它也可能被防火墙阻止了。
最后检查以确保你在 iptables 中有一个 ACCEPT。
sudo iptables -I INPUT -p tcp -m tcp --dport 25 -j ACCEPT
现在执行外部端口测试:https://www.yougetsignal.com/tools/open-ports/
大多数 ISP 都会阻止家庭通过端口 25 进行端口通信。就是这样。全部阻止。您甚至可能无法 ping 通服务器。是的,太糟糕了。
如果一切都顺利,你应该会一切顺利。检查你的邮件日志。
sudo tail -f /var/log/mail.log
Apr 26 07:43:05 DZWXGamesWeb postfix/qmgr[6257]: 87EEE400EC: from=<[email protected]>, size=3266, nrcpt=1 (queue active)
Apr 26 07:43:05 DZWXGamesWeb postfix/local[27250]: 87EEE400EC: to=<[email protected]>, relay=local, delay=0.37, delays=0.36/0/0/0, dsn=2.0.0, status=sent (delivered to maildir)
显示正确路由的信件。如果有任何问题,请检查 /var/log/mail.err