Linux通过mailx/sendmail发送邮件最常见的两种方法

在Linux中,有多种方法可以实现发送邮件功能,本文讲述最常见的两种方法,发送原理涉及本地和外部smtp服务。

# 安装基本软件
yum -y install mailx

使用sendmail服务

安装软件

yum install -y sendmail
# 安装配置管理工具
yum install -y sendmail-cf

# sendmail不能和postfix共用,禁用或卸载postfix
systemctl stop `rpm -qa postfix`

# 开启SMTP验证需要saslauthd服务
systemctl start saslauthd
systemctl enable saslauthd

配置服务

在sendmail文件中,通过dnl表示注释,修改/etc/mail/sendmail.mc

# 去掉以下两行行首的注释字符“dnl”
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl

# 将默认的127.0.0.1改为0.0.0.0,也可设置为仅限网段访问10.10.200.0/24
DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl

修改/etc/mail/sendmail.mc文件后,需要通过m4命令(在sendmail-cf软件包中)生成正式的sendmail配置文件/etc/mail/sendmail.cf

m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

启动服务

systemctl start sendmail
systemctl enable sendmailsystemctl restart saslauthd

验证服务

通过sendmail发送邮件,默认情况下发件人账号格式为“系统用户@主机名”,如“root@sendmailserver”。

# 方法一
echo '这是测试邮件的正文,请不要回复!' | mail -s '这是一封测试邮件' lzl@olzl.net
# 方法二
echo '这是测试邮件的正文,请不要回复!' > /opt/mail/content.txt
mail -s '这是一封测试邮件' lzl@olzl.net < /opt/mail/content.txt

使用外部smtp服务

通过mailx调用外部smtp服务器发送邮件,无需安装sendmail服务,创建或修改/etc/mail.rc文件,添加以下内容:

set from=FromUser@Domain
set smtp=smtp.Domain
set smtp-auth-user=AuthUser@Domain
set smtp-auth-password=Password
set smtp-auth=login

# 以上内容可以简化为
# set from=FromUser@Domain smtp=smtp.Domain smtp-auth-user=AuthUser@Domain smtp-auth-password=Password smtp-auth=login
# 举一个例子
# set from=lzl@olzl.net smtp=smtp.olzl.net smtp-auth-user=lzl@olzl.net smtp-auth-password=MyPassword smtp-auth=login

参数说明

参数 说明
from 发件人的邮箱账号
smtp 外部SMTP服务器
smtp-auth-user 登录SMTP服务器的用户
smtp-auth-password 登录SMTP服务器的密码
smtp-auth 认证方式,一般为login

验证服务

这时候,发件人已经成为mail.rc中所配置的邮箱账号。

# 参数-c是指抄送,最后一个邮箱账号为收件人
echo "这是一封新邮件" | mail -s '这是一封新邮件' -c lzl@olzl.net -c 18811569956@wo.cn 18610900098@wo.cn

原创文章禁止转载:技术学堂 » Linux通过mailx/sendmail发送邮件最常见的两种方法

精彩评论

9+8=

感谢您的支持与鼓励

支付宝扫一扫打赏

微信扫一扫打赏