linux使用smtp协议以及常见概念梳理
基本概念
MUA(Mail User Agent,邮件用户代理): 用户层面的客户端,作用是收发邮件。
MSA(Mail Submission Agent,邮件提交代理): 接收 MUA 提交的邮件,校验邮件格式后交给 MTA 发送。
MTA(Mail Transfer Agent,邮件传输代理): 接收来自 MUA /MSA的邮件,然后通过 SMTP 协议投递到目标服务器
MDA(Mail Delivery Agent,邮件投递代理): 负责把邮件从 MTA 投递到用户的邮箱(本地存储或远程存储)
协议梳理
常见邮件服务商提供的协议有: smtp、pop、imap
smtp: 用于发邮件,
端口占用
25:默认的smtp端口,他通常用于邮箱服务器的标准投递
465、587: 这两个端口都属于smtps,属于加密通信,相比于25端口而言,实际上仅仅是多了一个ca证书的区别。
ps: 对于自建邮局,25端口是必须的,这是由于在互联网协议当中,smtp标准必须使用该端口。
POP3:接收邮件
常见端口:
110:POP3 非加密默认端口。
995:POP3 over SSL(POP3S)。
IMAP:接收邮件
常见端口:
143:IMAP 非加密默认端口。
993:IMAPS,基于 SSL/TLS 加密
linux使用smtp协议
mail / mailx: 属于MUA客户端,
mail/mailx在linux系统中会将邮件交给sendmail接口,这一部不是很理解,总之就是要么交给系统中配置的邮局(MTA),要么交给系统中的邮件投递代理(MSA)
msmtp: 邮件投递代理MSA
这里需要注意的是所谓的邮件投递,他实际上就是说用外部邮箱(常见的qq、gmail、outlook等账号)进行发送邮件,在实际的发送中,他会将邮件先发给对应邮箱的smtp服务器,然后再发送给目标的邮箱。
踩坑
1,ubuntu中使用AppArmor来管理软件(指通过apt等包管理器安装的软件),会通过profile来配置程序能够访问的文件,如果发送过程中遇到权限错误,那么请尝试修正。
其他系统可能会用SELinux。