文章目录
1.介绍
最近由于mail主机变更,需要修改sendmail的smtp主机,在网络上搜索后记录一下
2.Log in using SSH
您必须以 sudo 或 root 用户身份通过 SSH 登录
3.配置 MTA
编辑/etc/mail/sendmail.mc并找到以下行:
dnl define(`SMART_HOST', `smtp.your.provider')dnl
将其替换为以下行:
define(`SMART_HOST', `mail.test.com')dnl
define(`RELAY_MAILER',`esmtp')dnl
define(`RELAY_MAILER_ARGS', `TCP $h 25')dnl
4.重新生成配置文件
使用以下命令重建配置文件:
mv /etc/mail/sendmail.cf /etc/mail/sendmail.cf.old --重建置之前,备份sendmail.cf
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf ---产生新的配置文件
5.重启邮件服务器
通过发出以下命令重新启动邮件服务器
service sendmail restart
or
/etc/init.d/sendmail restart
6.发送测试电子邮件
echo "test"|mail -s "test" bob@gmail.com -f sys.admin@pci.co.id
7.启用 SMTP 认证(AUTH)与 TLS
上面的测试都是基于匿名方式发送邮件,现在我们再看看透过邮件验证方式
7.1. 确保安装必要模块
sendmail sendmail-bin sendmail-cf libsasl2-modules
7.2.建立认证数据库 /etc/mail/authinfo
新增一个认证档:
/etc/mail/authinfo
内容如下(替换成你的 SMTP 主机与帐密):
AuthInfo:mail.test.com "U:root" "I:your_smtp_username" "P:your_smtp_password"
例如:
AuthInfo:mail.test.com "U:root" "I:bob@test.com" "P:MySecretPass123"
储存后使用 makemap 转换成 Sendmail 可读格式:
makemap hash /etc/mail/authinfo < /etc/mail/authinfo
这会生成 /etc/mail/authinfo.db
7.3. 修改 /etc/mail/sendmail.mc
加入或修改以下几行,启用 Smart Host + 认证:
define(`SMART_HOST', `mail.test.com')dnl
define(`RELAY_MAILER',`esmtp')dnl
define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl
define(`confAUTH_OPTIONS', `A p')dnl
define(`confAUTH_MECHANISMS', `LOGIN PLAIN')dnl
define(`confCACERT_PATH', `/etc/ssl/certs')dnl
define(`confCACERT', `/etc/ssl/certs/ca-certificates.crt')dnl
define(`confCLIENT_CERT', `/etc/ssl/certs/ssl-cert-snakeoil.pem')dnl
define(`confCLIENT_KEY', `/etc/ssl/private/ssl-cert-snakeoil.key')dnl
define(`confAUTH_INFO', `hash:/etc/mail/authinfo')dnl
7.4. 重新生成配置
sudo m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
7.5.重启 sendmail 服务
sudo systemctl restart sendmail
7.6. 测试发信
echo "测试内容" | mail -s "测试标题" yourname@gmail.com -f your@email.com