如何在 Sendmail 中配置外部 SMTP 中继发送邮件 ?

Sendmail 是一个开源邮件传输代理(MTA),它提供了一种有效的方式来管理和传输电子邮件。然而,对于需要发送大量电子邮件的组织来说,仅仅依靠 Sendmail 可能是不够的。这就是通过外部 SMTP 服务器转发电子邮件的用处所在。本文将逐步指导如何配置 Sendmail 以通过外部 SMTP 服务器转发电子邮件。
必备条件
在开始配置之前,需要准备以下信息:
- 外部 SMTP 服务器的主机名或 IP 地址
- 外部 SMTP 服务器使用的端口号(通常为 25, 587 或 465)
- 登录到外部 SMTP 服务器所需的身份验证凭证(用户名和密码)
Step 1: 安装 Sendmail
如果您的系统上还没有安装 SendMail,则可以按照以下步骤安装它:
On an RHEL-based system (Fedora / CentOS)
sudo yum install sendmail sendmail-cf
On a Debian-based system (Ubuntu / Debian)
sudo apt install sendmail sendmail-cf
Step 2: 创建 SMTP 凭证文件
在 /etc/mail 目录中创建一个名为“smtp-auth-creds”的文件。
sudo nano /etc/mail/smtp-auth-creds
将以下行添加到文件中,将 username 替换为您的用户名,将 password 替换为您的密码
AuthInfo:smtp.example.com "U:username" "P:password" "M:PLAIN"
保存文件并退出,将 smtp-auth-creds 文件编译到 sendmail 中
makemap hash /etc/mail/smtp-auth-creds < /etc/mail/smtp-auth-creds
Step 3: 修改 sendmail.mc 文件
修改 sendmail.mc 文件以通过外部 SMTP 服务器配置电子邮件中继。
sudo nano /etc/mail/sendmail.mc
配置 SMART_HOST 到中继服务器,例如:通过 Gmail SMTP 发送邮件,则设置为 smtp.gmail.com
define(`SMART_HOST', `smtp.example.com')dnl
在上面一行之后,添加更多的配置,如 SMTP 凭据,SMTP 端口等。
define(`ESMTP_MAILER_ARGS', `TCP $h 587')dnl
FEATURE(`authinfo', `hash -o /etc/mail/smtp-auth-creds.db')dnl
define(`confAUTH_OPTIONS', `A p')dnl
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
保存文件并关闭文本编辑器。
Step 4: 生成 sendmail.cf 文件
sendmail.mc 文件用于生成 sendmail.cf 文件,Sendmail 使用它来确定其配置。要生成 sendmail.cf 文件,请使用以下命令:
sudo make -C /etc/mail
然后重新启动 sendmail 服务以应用更改
systemctl restart sendmail
Step 5: 验证 sendmail 设置
要验证配置是否按预期工作,可以使用 sendmail 发送测试电子邮件
echo "This is a test email" | sendmail recipient@example.com
如果一切配置正确,您应该在收件箱中收到测试电子邮件。
我的开源项目
评论已关闭
