中继邮件 (nullmailer)

来自 Alpine Linux

概述

Nullmailer 是轻量级且简单的 MTA(邮件传输代理),允许您将本地电子邮件中继到另一台服务器。如果您在家中运行私有服务器,并且只想通过 ISP 的邮件服务器将来自 cron 等的通知中继到您的外部邮箱,这将非常有用。 Nullmailer 还允许您重写信封发件人,这对于通过许多 ISP 现在正在进行的垃圾邮件检查是必需的。

安装

Nullmailer 只能在 testing 分支中找到。 如何启用 Testing 仓库

apk add nullmailer@testing

配置

Nullmailer 使用 /etc/nullmailer/ 下的各个文件进行配置,每个设置一个文件。

当邮件发送给任何本地用户时,例如“root”、“me@localhost”等,邮件可以发送到一些外部地址或地址(作为逗号分隔的列表)代替

内容 /etc/nullmailer/adminaddr

me@example.com

当 nullmailer 将邮件中继到远程服务器时,可以覆盖信封发件人,因为如果信封发件人包含不存在的域(如 root@localhost.example),邮件通常会被拒绝(请注意,信封发件人与 From: 标头不同,From: 标头仍然是 root@localhost.example,但这通常不会被拒绝)

内容 /etc/nullmailer/allmailfrom

me@example.com

每当 nullmailer 处理没有主机名或域名的地址时,可以使用 defaulthost 和 defaultdomain 文件来设置默认值,但这也可以使用一个文件完成。因此,来自:me 和 发送到:me 将变为 来自:me@localhost.example 和 发送到:me@localhost.example。请注意,这适用于标头,标头仅供参考,并在邮件客户端中显示。信封发件人和收件人仍然必须使用上面解释的配置文件正确设置。

理想情况下,您应该拥有并控制您可以使用的域,但如果不是,则将其设置为保证不存在的域,例如 localhost.example。不要只是选择一些随机的不存在的域,因为有人将来可能会注册它

内容 /etc/nullmailer/me

localhost.example

要配置邮件发送到的中继服务器,请为每个远程服务器添加一行。通常这将是您的 ISP 的邮件服务器。可选地,nullmailer 支持不同的身份验证方案

内容 /etc/nullmailer/remotes

smtp.example.com smtp smtpa.example.com smtp --port=2525 --user=user --pass=pass smtpa.example.com smtp --port=2525 --auth-login --user=user --pass=pass

日志记录

Nullmailer 仅记录到 stdout 和 stderr,这意味着 syslog 无法轻易使用。相反,可以使 OpenRC 将 stdout 和 stderr 写入日志文件

内容 /etc/conf.d/nullmailer

output_log="/var/log/mail.log" error_log="/var/log/mail.err"

由于 nullmailer 以同名用户身份运行,因此它无法自行创建日志文件。只需手动创建日志文件即可

touch /var/log/mail.log /var/log/mail.err chown nullmailer:adm /var/log/mail.log /var/log/mail.err chmod 0640 /var/log/mail.log /var/log/mail.err

测试

要测试配置,只需向 root 和一些现有地址等发送一些测试邮件。

echo -e "Subject: Nullmailer testing\n\nSending to root." | sendmail root echo -e "Subject: Nullmailer testing\n\nSending to me." | sendmail me@example.com