无法使用邮件命令发送邮件

无法使用邮件命令发送邮件

我无法使用“mail”命令从我的 Linux ubuntu 15.10 计算机发送邮件。文件“mail.log”通常报告“连接超时”。

我发出命令:'mail -s“我的主题”[电子邮件保护]<filename',其中'filename'是包含我的消息的文件。

具体来说,日志报告:

Jan 5 12:29:53 pegasus postfix/smtp[9006]: connect to mx01.gmx.com[74.208.5.27]:25: Connection timed out
Jan 5 12:30:23 pegasus postfix/smtp[9006]: connect to mx00.gmx.com[74.208.5.4]:25: Connection timed out

我怀疑是我的 ISP(verizon)阻塞了端口 25,从而导致了问题:但是,我尝试将 smtp 端口更改为 465(Verizon 建议)或 587(其他人建议),但没有成功。以下是我的 master.cf 文件:

smtp inet n - - - - smtpd

465 inet n - - - - smtpd

#smtp inet n - - - 1 postscreen
#smtpd pass - - - - - smtpd
#dnsblog unix - - - - 0 dnsblog
#tlsproxy unix - - - - 0 tlsproxy
#submission inet n - - - - smtpd
# -o syslog_name=postfix/submission
# -o smtpd_tls_security_level=encrypt
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
#smtps inet n - - - - smtpd
# -o syslog_name=postfix/smtps
# -o smtpd_tls_wrappermode=yes
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_reject_unlisted_recipient=no
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
# -o smtpd_recipient_restrictions=
# -o smtpd_relay_restrictions=permit_sasl_authentica -o milter_macro_daemon_name=ORIGINATING
#628 inet n - - - - qmqpd
pickup unix n - - 60 1 pickup
cleanup unix n - - - 0 cleanup
qmgr unix n - n 300 1 qmgr
#qmgr unix n - n 300 1 oqmgr
tlsmgr unix - - - 1000? 1 tlsmgr
rewrite unix - - - - - trivial-rewrite
bounce unix - - - - 0 bounce
defer unix - - - - 0 bounce
trace unix - - - - 0 bounce
verify unix - - - - 1 verify
flush unix n - - 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - - - - smtp
relay unix - - - - - smtp
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq unix n - - - - showq
error unix - - - - - error
retry unix - - - - - error
discard unix - - - - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - - - - lmtp
anvil unix - - - - 1 anvil
scache unix - - - - 1 scache
#
uucp unix - n n - - pipe
flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
#
# Other external delivery methods.
#
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}

答案1

master.cf仅定义你的 Postfix 将使用哪些服务和端口即接受哪些传入连接。它不会影响如何传出邮件已发送。

现在,虽然 Postfix 已经有很多选择对于其“smtp”传输,它实际上不允许您更改 SMTP 端口。但这没关系,因为即使你做过将传出 SMTP 端口更改为 587 或其他端口,这不会有什么用处——大多数接收服务器都没有聆听在那个端口上;你的错误消息只会变成“连接被拒绝”(或者可能是“消息被拒绝;需要身份验证”)。SMTP 邮件交换(服务器到服务器)端口是 25,故事结束。


您的“建议”可能来自有关配置邮件服务器的说明接受来自邮件应用程序(例如 Thunderbird 或 Outlook)的 SMTP 连接 - 实际上,SMTP 客户端到服务器(邮件提交)端口是 587,而一些较旧的配置仍然使用 465。

最初,端口 25 用于全部邮件,但后来分离分为 25 用于服务器与服务器之间的邮件交换,587 用于客户端与服务器之间的邮件提交。这样服务器就可以对每个端口应用不同的规则 - 例如,允许修复客户端提交的邮件中的某些问题,而 ISP 可以阻止端口 25,同时仍允许 587。

(一些邮件应用程序使用端口 465 进行“SMTPS” - 带有 TLS 的 SMTP(如 HTTPS) - 但它有缺点,例如不能用于服务器到服务器的通信。它最终被端口 25 和 587 上的 STARTTLS 取代。IANA 已将端口 465 重新分配给另一个协议,并且它不应再用于邮件。)


那么你该怎么办呢?有几个常规选择。

首先,如果您想将您的计算机变成您自己的域的完整邮件服务器:

  • 首选选项:要求您的 ISP 解除对 SMTP 连接的阻止。(某些 ISP如果你礼貌地请求并且承诺不发送垃圾邮件,请删除阻止内容。)

  • 让 Postfix 使用 ISP 提供的“中继”服务器,又称智能主机。(不过,只有部分 ISP 提供此功能,您仍需要进行一些操作传入邮件也是如此...)

  • 让所有 SMTP 连接都通过 VPN。(理想情况下,应该是通过 VPN你自己在某处租用的服务器——甚至不要考虑以隐私为导向的“隐藏我的屁股”类型的 VPN,它们已经以相同的方式出于相同的原因阻止了端口 25。)

或者,如果您只想mail从现有帐户(例如 Gmail 或 GMX)发送邮件:

  • 再次,配置 Postfix 以使用 Gmail 或 GMX 的“中继”服务器 - 本质上使其像常规邮件应用程序一样工作,通过 [smtp.gmail.com]:587,使用您的用户名和密码。

    (那里有相当多的“postfix gmail”教程,但您也可以用为此目的而制作的仅中继工具(如msmtp或)完全替换 Postfix。)esmtp

  • 或者安装蜗牛(以前称为 heirloom-mailx)– 的一个版本,mail它知道如何直接使用 SMTP,而无需通过 OS 邮件系统。(无论如何,其他邮件应用程序都是这样工作的。)命令仍然是mail

    (如果我没记错的话,GNU mailutils 也有一个mail支持 SMTP 的命令。)

相关内容