UNIX:使用 SMTP 服务器发送邮件

UNIX:使用 SMTP 服务器发送邮件

我想通过远程 SMTP 服务器发送电子邮件。该怎么做?我将从 bash shell 脚本发送电子邮件。

我正在使用 unix 机器。uname -a 返回:Linux linux 2.4.21 BrandZ fake linux i686 athlon i386 GNU/Linux

谢谢。

答案1

这里实际上没有事实上的客户端,大多数人只是使用他们的 MTA(邮件传输代理)进行中继,然后使用 sendmail(1) 或 mail(1) 将邮件注入他们的 MTA 队列(直接或通过 SMTP 端口 25)

大多数 Unix 机器都带有 MTA,通常是 Sendmaill、Postfix 或 Exim 之一。

后缀

在 postfix 中,您需要在 /etc/postfix/main.cf(或设置 main.cf 配置文件的任何位置)中设置您的中继主机。

relayhost = my.mailrelay.com

发送邮件

对于 sendmail,该术语称为 SMART_HOST,您可以在 sendmail.mc 中定义它

define(`SMART_HOST',`my.mailrelay.com')

进出口

在 Exim 中,更改配置的“路由器”部分并添加

smarthost:
  driver = domainlist
  transport = remote_smtp
  require_files = /etc/exim/smarthost
  route_list = "* my.mailrelay.com"

邮件系统

我从未见过 Qmail 安装在机器上(主要是因为 DJB 的许可条款)所以它可能不适合你的情况,但我们不妨在一个地方列出四大 MTA 中的最后一个。

echo ":my.mailrelay.com" > /var/qmail/control/smtproutes

笔记*

有些人可能会说,使用脚本通过端口 25/487 将消息注入远程 SMTP 服务器。这种解决方案是有缺陷的。SMTP 的设计使得邮件服务器可以暂时拒绝任何原因的邮件。所有 SMTP 服务器都具有后备机制,因此可以反复重试发送消息。现在您的脚本可以实现这一点,但这样您就走上了重新发明轮子的道路。实际上,每个 Linux 系统都安装了 MTA,而且在 Linux 和我遇到的所有其他 Unix 系统上安装它们都很简单。刚开始时,配置它们可能会令人生畏,但电子邮件无处不在,如果您想管理类 Unix 机器,您需要学习这一点。

如果您要中继的远程 SMTP 服务器仅允许您通过 IP 进行中继,则上述内容应该足够了。但是,您要中继的远程 SMTP 服务器可能会要求您使用 SMTP 身份验证和/或 SSL/TLS 进行中继。在这种情况下,您需要配置 MTA 以提供这些详细信息。

答案2

如果您只想从您的系统发送邮件,而不想用自己的 MTA 接收邮件,或者需要任何特殊的配置,那么您不妨安装一个最小的 MTA,如 sSMTP、nbsmtp 或 nullmailer。

它们带有与 sendmail 兼容的接口(/sbin/sendmail/usr/sbin/sendmail),并将由mailmailxnail(或任何其他 CLI 邮件客户端)使用来发送邮件。

答案3

首先,您可以使用 mailx 命令(参见 man mailx),它可以从命令行发送邮件。

为了使其正常工作,您还需要安装一个本地 SMTP 服务器,作为外部 SMTP 服务器的中继。

相关内容