所以,我想从我的服务器发送电子邮件。
我安装了mailx
apt-get install mailx
但是像这样的命令
mail -s "Hello world" [email protected]
实际上是在给出错误/var/spool/邮件/其中写道:
Mailing to remote domains not supported.
为什么会发生这种情况?
答案1
您在本地使用什么 MTA?mail
仅使您能够形成邮件消息,但您仍然需要 MTA 来进行实际传递?默认情况下,大多数发行版都附带 sendmail。您可能需要安装另一个 MTA 或配置当前 MTA 以支持外部传递。
答案2
# fgrep remote /var/log/exim4/mainlog.1 | sed -E 's#([ <])[^ <]+@[^ >]+([ >])#\1a@b\2#g' | head -1 2019-01-08 00:47:00 1ggebk-00055M-St ** a@b <a@b> R=nonlocal: Mailing to remote domains not supported #
看起来 Debian 可能带有一个exim4
设置为无法在互联网连接的机器上正常工作的装置,其中传出的 smtp 端口没有被阻止。
正如各种评论所指出的那样,为了使其正常工作,必须运行dpkg-reconfigure exim4-config
,然后在向导中选择第一个internet
选项。请注意,在向导的后续对话框中,默认设置仍为仅侦听localhost
IPv4/IPv6 地址,因此,如果您保留其他默认设置,则看起来您仍然会保留传入的 SMTP 端口。
要验证向导是否正常工作,您可以检查 Debian 特有的/etc/exim4/update-exim4.conf.conf
(是的,它是一个重复的.conf.conf
,这不是打字错误),它在这次惨败中扮演了一定角色。以下是运行dpkg-reconfigure exim4-config
并仅更改向导中的第一个选项后的相关部分,该选项允许发送邮件,但保持 SMTP 端口仅对机器本身开放(如果您在第一个选项后单击重新配置,则为默认选项):
dc_eximconfig_configtype='internet'
…
dc_local_interfaces='127.0.0.1 ; ::1'
另一个解决方案是安装DragonFly 邮件代理在 jessie 及以上 —https://packages.debian.org/jessie/dma— 这是 MTA 的一个简单实现,实现了除传入 SMTP 之外的所有良好的 UNIX 邮件功能,因此,您不必担心配置错误或外部漏洞。
答案3
因为 mailx 需要完整的 SMTP 基础架构,默认情况下未配置该基础架构。您安装了哪种 SMTP 服务器(如果有)(即 postfix、exim、sendmail、qmail)?
答案4
如果您没有安装内部 SMTP 服务器,您可以通过 gmail SMTP 服务器发送邮件,您可以安装 sSMTP MTA 并使用 gMail SMTP 服务器或其他外部 SMTP 服务器对其进行配置。