我似乎无法访问 Amazon EC2 实例上的端口 25。我已在安全组和 iptables 防火墙中打开该端口。我已以相同方式打开其他端口(包括 22 和 80),它们均能正常工作。
在实例上,我可以远程登录到端口 25 并查看来自 postfix 的输出。从 EC2 外部,我可以远程登录到端口 22 或端口 80 并查看来自 SSH 服务器和 Web 服务器的输出。但是当我从 EC2 外部远程登录到端口 25 时,它只是在等待。
我已经填写可以发送电子邮件的表格并确认已完成。我检查过,外发邮件运行正常。(所有邮件都通过中继以避免 IP 黑名单)。
那么 Amazon 对待端口 25 的传入流量是否不同?其他人是否能正常工作?任何帮助都非常感谢。
作为另一个麻烦来源,我在 SUSE Linux (SLES 10) 上使用 postfix,我想知道它们是否有一些隐藏的设置,这意味着它们不会响应机器外的端口 25。我已经使用和检查了 iptables 设置,iptables -L -nvv
我iptables -t nat -L -nvv
看不到任何会妨碍的规则。而且 postfix 确实响应了本地主机上的 telnet。
编辑:当我完全关闭 iptables 时,telnet 立即返回
telnet: Unable to connect to remote host: Connection refused
根据答案的要求,内容master.cf
如下:
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ==========================================================================
smtp inet n - n - - smtpd
#submission inet n - n - - smtpd
# -o smtpd_etrn_restrictions=reject
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#smtps inet n - n - - smtpd
# -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes
#submission inet n - n - - smtpd
# -o smtpd_etrn_restrictions=reject
# -o smtpd_enforce_tls=yes -o smtpd_sasl_auth_enable=yes
#628 inet n - n - - qmqpd
pickup fifo n - n 60 1 pickup
cleanup unix n - n - 0 cleanup
qmgr fifo n - n 300 1 qmgr
#qmgr fifo n - n 300 1 oqmgr
#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
smtp unix - - n - - smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay unix - - n - - smtp
-o fallback_relay=
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq unix n - n - - showq
error 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
#localhost:10025 inet n - n - - smtpd -o content_filter=
scache unix - - n - 1 scache
#
# ====================================================================
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# Many of the following services use the Postfix pipe(8) delivery
# agent. See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# ====================================================================
#
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
maildrop unix - n n - - pipe
flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
cyrus unix - n n - - pipe
user=cyrus argv=/usr/lib/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
uucp unix - n n - - pipe
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
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=foo argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient
procmail unix - n n - - pipe
flags=R user=nobody argv=/usr/bin/procmail -t -m /etc/procmailrc ${sender} {recipient}
和grep -v '#' /etc/sysconfig/postfix
:
POSTFIX_RELAYHOST="[mail.domain.com]"
POSTFIX_MASQUERADE_DOMAIN=""
POSTFIX_LOCALDOMAINS="\$myhostname"
POSTFIX_NULLCLIENT="no"
POSTFIX_DIALUP="no"
POSTFIX_NODNS="no"
POSTFIX_CHROOT="no"
POSTFIX_UPDATE_CHROOT_JAIL=no
POSTFIX_LAPTOP=no
POSTFIX_UPDATE_MAPS=yes
POSTFIX_MAP_LIST="virtual transport access canonical sender_canonical relocated sasl_passwd:600 relay_ccerts"
POSTFIX_RBL_HOSTS=""
POSTFIX_BASIC_SPAM_PREVENTION=off
POSTFIX_MDA=local
POSTFIX_SMTP_AUTH_SERVER=no
POSTFIX_SMTP_AUTH=no
POSTFIX_SMTP_AUTH_OPTIONS=""
POSTFIX_SMTP_TLS_SERVER=no
POSTFIX_SMTP_TLS_CLIENT="no"
POSTFIX_SSL_PATH="/etc/postfix/ssl"
POSTFIX_TLS_CAFILE="cacert.pem"
POSTFIX_TLS_CERTFILE="certs/postfixcert.pem"
POSTFIX_TLS_KEYFILE="certs/postfixkey.pem"
POSTFIX_SSL_COUNTRY="XX"
POSTFIX_SSL_STATE="Some state"
POSTFIX_SSL_LOCALITY="Some locality"
POSTFIX_SSL_ORGANIZATION="Some Organization"
POSTFIX_SSL_ORGANIZATIONAL_UNIT="Some Organizational Unit"
POSTFIX_SSL_COMMON_NAME="A common name"
POSTFIX_SSL_EMAIL_ADDRESS="postmaster"
POSTFIX_ADD_MAILBOX_SIZE_LIMIT=0
POSTFIX_ADD_MESSAGE_SIZE_LIMIT=10240000
POSTFIX_REGISTER_SLP="yes"
POSTFIX_ADD_MYNETWORKS_STYLE="subnet"
我已经更改了顶部的域名,但其他方面都是一样的。
答案1
当您更改已在运行的实例的安全组时,更改可能需要很长时间才能应用。时间意味着介于即刻和小时!
我会仔细检查你的 iptables 设置:
iptables iptables -nL -v --line-numbers -t filter
iptables iptables -nL -v --line-numbers -t nat
iptables iptables -nL -v --line-numbers -t mangle
iptables iptables -nL -v --line-numbers -t raw
如果一切顺利但仍然不起作用,只需重新启动实例。
答案2
我建议将 iptables 完全关闭几分钟,然后再测试一次 - 以将其排除在外。这样,您要么可以肯定它与数据包过滤无关,要么它肯定是数据包过滤的一部分。
您还可以与我们分享 /etc/postfix/master.cf 的相关内容吗?(或 SUSE Linux 上的任何位置)。它可能已设置为不监听除本地主机之外的任何内容。
我相信对于面向互联网的 smtpd,smtp 的行应该是这样的:
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ==========================================================================
smtp inet n - n - - smtpd
答案3
现在它已经可以正常工作了,但要感谢 Till 和 sandroid 的解答。对于其他有疑问的人,亚马逊对端口 25 并没有什么特别之处。看来 postfix 没有监听外部地址。我还没搞清楚为什么,但最终安装了另一个 MTA,它工作正常。