从 Ubuntu 服务器现有的 SMTP 主机发送电子邮件

从 Ubuntu 服务器现有的 SMTP 主机发送电子邮件

我觉得我的问题很简单,但我已经尝试了很长时间,却没有解决它。你们这些有经验的服务器人员可能会嘲笑我,但我终于到了需要帮助的地步,否则我将一事无成。

我有一个运行 12.04 LTS 的小盒子,我想编写一些状态检查脚本并让服务器向我发送电子邮件并使用 cron 安排此任务。

我基本上想要一个命令行邮件客户端,可以像 Thunderbird 一样轻松设置,以便通过命令行通过我现有的 SMTP 发送邮件。可以轻松集成到我的 bash 脚本中。

我已经有一个远程主机来处理我们的电子邮件、SMTP、MTA 以及所有这些垃圾。我并不想专门设置一个中继来发送电子邮件,因为我有一个公司其他人已经在使用的中继。我试过了,但有太多方面我不明白,而且我不明白为什么在我们已经花钱购买远程主机来做这些事情的情况下,我还要设置本地的东西。

如果我真的必须设置 sendmail 或 postfix,那就这样吧,但如果有一个简单的替代方案,我会很感激。目前我几乎可以接受任何事情。

答案1

你有没有考虑过发电子邮件? (发电子邮件)

描述:轻量级、命令行 SMTP 电子邮件客户端

答案2

如果您的意思是要通过第三方 SMTP 服务器(例如,由您的 ISP 提供)发送电子邮件,那么您可以安装ssmtp,它是 Postfix/Sendmail 的替代品,但专门用于通过远程 SMTP 发送邮件的精确任务,因此配置起来更容易。然后,您可以使用以下命令发送电子邮件mailx,例如:

echo "Mail." | mailx -s "Subject" [email protected]

编辑:电子邮件是一项非常复杂的业务...需要记住以下几点:

请注意,上述命令未指定发件人地址(IE,收件人将在其电子邮件客户端的“发件人”字段中看到的地址)。默认情况下,发件人地址是您在本地计算机上的登录名,后跟@,后跟本地计算机的完整主机名。例如,在我的计算机上,登录名为firas,主机名为nomo

firas@nomo ~ % whoami
firas
firas@nomo ~ % hostname -f
nomo

因此,当我使用上述命令发送电子邮件时,发件人地址将是firas@nomo,如下所示mail.log

firas@nomo ~ % tail -n 3 /var/log/mail.log
Jun  9 20:37:46 nomo sSMTP[2203]: Creating SSL connection to host
Jun  9 20:37:48 nomo sSMTP[2203]: SSL connection using RSA_AES_128_CBC_SHA1
Jun  9 20:37:50 nomo sSMTP[2203]: Sent mail for firas@nomo (221 2.0.0 esmtp3.es.uci.edu closing connection) uid=1000 username=firas outbytes=364

绝大多数服务器将拒绝转发此电子邮件(作为反垃圾邮件措施),因为域名nomo不是有效域。幸运的是,有一个选项可以指定发送邮件时使用的ssmtp.conf任意域。也就是说,这是选项,所以如果我在 中有这个:sSMTPrewritedomainssmtp.conf

rewriteDomain=fkraiem.org

那么发件人地址将是[email protected]

通常,上述内容应该足够了(也就是说,只要您的发件人地址具有有效的域名,服务器就应该转发您的邮件)。但是,有些电子邮件提供商特别热心,只允许您使用您在他们那里注册的电子邮件地址。这意味着除了像上面那样更改域名之外,您可能还需要在本地计算机上更改您的登录名,或者向您的提供商注册一个新地址(如果他们允许),以便最终地址与您的注册地址相匹配。

指定任意发件人地址的另一种方法是将 选项设置fromlineoverridessmtp.confYES然后使用-a选项mailx

echo "Mail." | mailx -s "Subject" -a 'From: [email protected]' [email protected]

但这不是标准的,并且可能无法在 Ubuntu 以外的操作系统(以及其他基于 GNU 的系统)上运行。也可以使用其他更复杂的客户端,例如mutt

相关内容