在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发送邮件最常见的两种方法