直接问题:我想启用 Perl 来发送电子邮件。我应该安装什么软件包来设置一个简单的电子邮件服务器:不需要传入,只需要传出。如果最好,我可以通过 gmail 的 SMTP 转发吗?
背景:我是一名程序员,有一个用 Perl 编写的夜间构建脚本。我想通过电子邮件将我的夜间构建结果通过电子邮件发送给自己(尤其是在出现错误的情况下)。
我已经简要地阅读了 perl 包Mail::Sendmail
,但如果还有其他更合适的,请告诉我!
我尝试了简单的aptget install sendmail
,但这似乎不起作用。我收到以下错误:
服务器说:421 4.3.0 collect: Cannot write ./dfp1PFXl7W020719 (bfcommit, uid=0, gid=120): No such file or directory message transmission error (421 4.3.0 collect: Cannot write ./dfp1PFXl7W020719 (bfcommit, uid) =0,gid=120):没有这样的文件或目录)服务器说:421 4.3.0收集:无法写入./dfp1PFXl7W020719(bfcommit,uid = 0,gid = 120):没有这样的文件或目录
我已经用谷歌搜索了这个问题并尝试了一些事情——将我的用户名添加到 /etc/mail/trusted-users 等,但无济于事。
换句话说,如果您能提供设置外发邮件服务器的简单说明,我将不胜感激。我真的不明白具体细节,但据我所知,我需要通过现有的 SMTP 服务器转发邮件——所以如果需要,我可以使用我的 gmail 帐户(无论如何我都想在那里发送日志)。任何建议将不胜感激。
所有这些对于这项工作来说都是太多的工具。ssmtp 做到这一点 - 但只有这个。
(如果已安装,这将删除 postfix 或 sendmail。)
以及该文件的内容:
我仍然认为 dovecot-postfix 易于安装和配置。我对Is There a Simple Mail-Server I Can Install? 的
回答中有更多详细信息?
在那里,EmmyS 能够让它为她的 phpmail 功能工作。
Dovecot-postfix 可能比您需要的更繁重,但之后只需要几个配置项:
好像有很多邮件服务器在运行,你可以尝试关闭 sendmail 吗?
并检查您的 smtp 端口 (25)
如果您看到端口 25 有另一个进程正在运行,请尝试停止它。pid 在输出的第三列。
正确配置后缀:设置为低级 debconf
选择对话框,然后选择低级别警告。然后安装后缀
选择带有“Internet 站点”配置文件的标准选项。如果您之前安装过 postfix,您可以通过以下方式重新配置它:
享受!
对于 perl 方面,如果您有像 SSMTP 这样的本地中继或任何其他类似程序,则 Perl::SendMail 将起作用。它似乎没有进行身份验证。
我发现了一篇关于使用 Perl 通过 GMAIL 发送电子邮件的帖子。请注意,该代码将包含您的 Google 凭据。(与 SSMTP 或您使用的任何其他中继一样。)
我建议您使用您的 ISP 中继服务器来发送邮件。在这种情况下,您可以独立使用 Perl::Sendmail。
推荐的解决方案:许多需要邮件服务器的程序将 Postfix 作为依赖项安装。如果尚未安装,请安装它或 Exim4。使用 ISP 的中继作为智能主机,将您的服务器配置为“智能主机发送的邮件;不是本地邮件”。为您的用户 ID 配置 /etc/email-addresses。还要配置 /etc/aliases 以将电子邮件转发到您的 gmail 帐户。
如果您使用 cron 运行,您构建到 stdout 或 stderr 的任何输出都将通过电子邮件发送给您。如果您想从脚本发送邮件,也可以使用 mailx 发送邮件。
您还可以查看 Net::SMTP,它允许您发送 SMTP 消息而无需任何外部程序,例如 sendmail。这对于 Ask Ubuntu 来说可能有点离题,因为这是一个纯粹的 Perl 解决方案,但您可能会发现它更可取。Net::SMTP 由 perl-modules 包提供,默认情况下应安装该包。