我想通过远程 SMTP 服务器发送电子邮件。如何才能做到这一点?我将从 bash shell 脚本发送电子邮件。
我正在使用 unix 机器。uname -a 返回:Linux linux 2.4.21 BrandZ fake linux i686 athlon i386 GNU/Linux
谢谢你。
这里没有真正用于此的事实上的客户端,大多数人只是使用他们的 MTA(邮件传输代理)进行中继,然后使用 sendmail(1) 或 mail(1) 将邮件注入他们的 MTA 队列(直接或通过 SMTP端口 25)
大多数 Unix 机器都带有 MTA,通常是 Sendmaill、Postfix 或 Exim 之一。
后缀
在 postfix 中,您想在 /etc/postfix/main.cf(或设置 main.cf 配置文件的任何位置)中设置中继主机。
relayhost = my.mailrelay.com
Run Code Online (Sandbox Code Playgroud)
发邮件
对于 sendmail,该术语称为 SMART_HOST,您可以在 sendmail.mc 中定义它
define(`SMART_HOST',`my.mailrelay.com')
Run Code Online (Sandbox Code Playgroud)
进出口
在 Exim 中,更改配置的“路由器”部分并添加
smarthost:
driver = domainlist
transport = remote_smtp
require_files = /etc/exim/smarthost
route_list = "* my.mailrelay.com"
Run Code Online (Sandbox Code Playgroud)
邮箱
我从未见过 Qmail 安装在一台机器上(主要是因为 DJB 的许可条款),所以它可能不符合您的情况,但我们不妨在一个地方列出 4 大 MTA 中的最后一个。
echo ":my.mailrelay.com" > /var/qmail/control/smtproutes
Run Code Online (Sandbox Code Playgroud)
笔记*
有些人可能会说,使用脚本通过端口 25/487 将消息注入到远程 SMTP 服务器。这个解决方案是有缺陷的。SMTP 旨在使邮件服务器可以出于任何原因暂时拒绝邮件。所有 SMTP 服务器都有回退机制,以便消息将被重试和重试。现在您的脚本可以实现这一点,但随后您将走上重新发明轮子的道路。实际上,每个 Linux 系统都安装了 MTA,并且它们很容易安装在 Linux 和我遇到的所有其他 Unix 系统上。刚开始时配置它们可能会令人生畏,但电子邮件无处不在,如果您想管理类 Unix 机器,您需要了解这一点。
如果您正在中继的远程 SMTP 服务器只是允许您通过 IP 进行中继,那么上述内容就足够了。但是,您要中继的远程 SMTP 服务器可能需要您使用 SMTP 身份验证和/或 SSL/TLS 进行中继。在这种情况下,您需要配置 MTA 以提供这些详细信息。