Linux mail命令发送邮件

概念解释

邮件用户代理(MUA,Mail User Agent)
邮件传送代理(MTA,Mail Transport Agent)
邮件分发代理(MDA,Mail Deliver Agent)
mail 命令和 mailx 命令即为负责查看、编写邮件和向 MTA 发送邮件的 MUA。mailx是mail的功能加强版。
sendmail 即为负责邮件在网络上传输的 MTA,将邮件从一个 MTA 传送至另一个 MTA 。

本人使用的是 CentOS 6.6,自带了 mail、sendmail 命令。经测试,qq 邮箱可以收到邮件,可能会被拦截放入垃圾邮件,多尝试几次后,后面几次每次都可以收到了,估计是被防火墙识别为可信。
163 邮箱是直接被拦截,啥都不显示,垃圾邮件也没有。

mail 命令

1.直接使用shell当编辑器

mail -s "Dreamhj Test Mail" [email protected]
hello i m xx
welcome to www.dreamhj.com

第一行是输入的命令,-s表示邮件的主题,后面的[email protected]则是邮件的接收人,输入完这行命令后回车,会进入邮件正文的编写,我们可以输入任何文字,比如上面的两行。当邮件正文输入完成后,需要按CTRL+D结束输入,此时会提示你输入Cc地址,即邮件抄送地址,没有直接回车就完成了邮件的发送。
收到的邮件发信人格式为:[email protected]

2.使用管道进行邮件发送
echo “hello i m xx” | mail -s “Dreamhj Test Mail” [email protected]

3.使用文件进行邮件发送
mail -s “Hello from mzone.cc by file” [email protected] < mail.txt

因为 mail 程序本身就是调用sendmail来进行邮件发送的, sendmail 会使用本地服务器的 hostname 进行发件人填写,一般为 [email protected] 格式,但是主流的邮件服务提供商会拦截这种邮件。

解决办法:我们可以配置 mail 命令使用外部 SMTP 服务,下面用 163 邮箱为例:
vim /etc/mail.rc
在末尾添加如下配置:

set from=邮箱用户名@163.com
set smtp=smtp.163.com
set smtp-auth-user=邮箱用户名
set smtp-auth-password=密码
set smtp-auth=login

mail -s “Dreamhj” [email protected]
去收件箱查看,发现邮件 发件人变为:[email protected]

发送附件,直接加 -a 参数即可
mail -s “Dreamhj” -a /root/test.txt [email protected] < test.txt

邮件过滤

邮件服务提供商可能会通过 SPF、DKIM、DMARC、逆向地址解析 等技术来过滤垃圾邮件。

  • SPF(Sender Policy Framework) 发件人策略框架。SPF 记录是服务器的一个 DNS 记录。原理说明:邮件服务器收到一封邮件,ip 为 112.112.112.112,域名为 [email protected]。邮件服务器为了确认该邮件不是伪造的,就会去查询 test.com 的 SPF 记录,如果 该域名下的 SPF 记录 允许 IP为 112.112.112.112 的主机发送邮件,则认为这封邮件是合法的的,如果不合法则退信。

  • DKIM(DomainKeys Identified Mail )域名密钥识别邮件标准。DKIM 的基本工作原理同样是基于传统的密钥认证方式,他会产生两组钥匙,公钥(public key)和私钥(private key),公钥将会存放在 DNS 中,而私钥会存放在寄信服务器中。数字签名会自动产生,并依附在邮件头中,发送到寄信者的服务器里。公钥则放在DNS服务器上,供自动获得。收信的服务器,将会收到夹带在邮件头中的签名和在DNS上自己获取公钥,然后进行比对,比较寄信者的域名是否合法,如果不合法,则判定为垃圾邮件。

  • DMARC(Domain-based Message Authentication, Reporting and Conformance)以域名为基础的邮件认证、报告和一致性。DMARC 的主要用途就是设置“策略”。这个策略包含接收到来自这个域未通过身份验证的邮件时应执行什么操作。选项是不执行操作(“无”),将邮件放在“隔离区”中或者“拒绝”邮件。只有使用“拒绝”策略,域才能受到完全保护。
    DMARC 的第二个功能是让 ISP 发送有关某个域身份验证成功或失败的报告。这些报告将发送至“rua”(汇总报告)和“ruf”(取证报告)中定义的地址中。

  • 反向域名解析系统(Reverse DNS):。A 记录由域名解析得到地址,PTR(Point Record) 记录由地址解析得到域名

你可能感兴趣的:(运维)