直接提问:我想启用 Perl 来发送电子邮件。我应该安装哪些软件包来设置简单的电子邮件服务器:不需要传入、仅限外向。我可以通过 gmail 的 SMTP 转发吗?这样最好吗?
背景:我是一名程序员,使用 Perl 编写了夜间构建脚本。我想通过电子邮件向自己发送夜间构建的结果(尤其是出现错误时)。
我简要地阅读了 perl 包Mail::Sendmail
,但如果有其他更合适的东西,请告诉我!!
我尝试了简单的方法aptget install sendmail
,但似乎不起作用。我收到以下错误:
服务器说:421 4.3.0 collect:无法写入 ./dfp1PFXl7W020719 (bfcommit, uid=0, gid=120):没有此文件或目录消息传输错误 (421 4.3.0 collect:无法写入 ./dfp1PFXl7W020719 (bfcommit, uid=0, gid=120):没有此文件或目录) 服务器说:421 4.3.0 collect:无法写入 ./dfp1PFXl7W020719 (bfcommit, uid=0, gid=120):没有此文件或目录
我用 Google 搜索了一下这个问题,并尝试了一些方法——将我的用户名添加到 /etc/mail/trusted-users 等,但都无济于事。
换句话说,如果您能提供设置外发邮件服务器的简单说明,我将不胜感激。我真的不了解具体细节,但据我所知,我需要通过现有的 SMTP 服务器转发邮件 - 这样我就可以在需要时使用我的 gmail 帐户(无论如何,我都想将日志发送到那里)。任何建议都将不胜感激。
答案1
它们对于这项工作来说都太过强大了。ssmtp 可以做到这一点 - 但仅此而已。
sudo apt-get install ssmtp
(如果已安装,这将删除 postfix 或 sendmail。)
sudoedit /etc/ssmtp/ssmtp.conf
该文件的内容如下:
[email protected]
Mailhub=smtp.gmail.com:465
RewriteDomain=gmail.com
AuthUser=your_gmail_username # (before the @gmail.com part)
AuthPass=your_gmail_password
FromLineOverride=Yes
UseTLS=Yes
答案2
我仍然认为 dovecot-postfix 很容易安装和配置。
我在回答中提供了更多详细信息是否有我可以安装的简单邮件服务器?
在那里,EmmyS 能够让它为她的 phpmail 功能工作。
Dovecot-postfix 所做的工作可能比您需要的要多,但它只需要进行以下几个配置项:
sudo apt-get install dovecot-postfix
答案3
您还可以查看 Net::SMTP,它允许您发送 SMTP 消息而无需任何外部程序(例如 sendmail)。这可能与 Ask Ubuntu 有点脱节,因为这是一个纯 Perl 解决方案,但您可能会发现它更可取。Net::SMTP 由 perl-modules 包提供,默认情况下应安装。
答案4
对于 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 发送邮件。