我正在尝试通过命令行从 ubuntu 服务器 (14.04.2 LTS) 发送电子邮件,然后在小脚本中发送电子邮件。为此,我想将 ssmtp 与网络内部的外部邮件服务器一起使用,不需要任何身份验证。这意味着external-server.com:25
另一台主机上有一个 smtp 服务器 (),我想使用它来发送邮件。由于我的主机和 smtp 服务器位于同一网络中,因此我可以访问 smtp 服务器而无需任何身份验证。
因此我配置了 ssmtp 来使用该外部服务器,这是我的 ssmtp.conf:
#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
[email protected]
# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=external-server.com:25
# Where will the mail seem to come from?
rewriteDomain=external-server.com
# The full hostname
#hostname=
# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
#FromLineOverride=YES
#Settings for sending logfiles as [email protected]
[email protected]
AuthPass=
UseTLS=YES
UseSTARTTLS=YES
我现在可以拨打电话 并输入这样的消息:ssmtp [email protected]
To: [email protected]
From: [email protected]
Subject: Test
Lorem ipsum ...
如果我现在点击Ctrl+ D,则不会有任何反应,我实际上可能需要等待几分钟。此外,Ctrl+C似乎被忽略了。只需Ctrl+Z即可。
-logmail.err
是空的,mail.log
仅显示
Mar 23 14:53:50 ubuntu-server sSMTP[2810]: Creating SSL connection to host
我还使用 tcpdump 验证了连接已启动。因此,我能指出的唯一问题是Ctrl+D似乎被忽略了。有人知道这个问题或更好的解决方案吗?
编辑
实际上问题是该AuthUser
字段不为空,并且其他子网可以使用 smtp 服务器,但不允许我的子网使用。
取消注释 FromLineOverride=YES 也很好,因此用户可以使用自己的电子邮件地址。
答案1
我绝不是这个主题的专家,但是你的配置似乎缺失了:
TLSCert
The file name of an RSA certificate to use for TLS, if required.
TLSKey
The file name of an RSA key to use for TLS, if required.
TLS_CA_File
A file of trusted certificates for validating the server, if required.
TLS_CA_Dir
A directory of trusted certificates for validating the server, if required.
我认为如果使用 TLS,这些是必需的