SMTP(Simple Mail Transfer Protocol)
smptd: TCP 25 服务端。
smtp: 客户端。随机端口,通常大于5000
SMTP状态码:
1xx 纯信息
2xx 正确
3xx 上一步操作尚未完成,待后续补充
4xx 暂时性错误
5xx 永久性错误
SMTP协议命令:
helo 以smtp协议向对方发送hello信息。
ehlo 以esmtp协议向对方发送hello信息。
mail from:USERNAME@DOMAIN 发信人信息。
rcpt to:USERNAME@DOMAIN 收件人信息。
data
smtp --> smtpd 客户端连接服务器
三次握手后:
1.hello 发送hello确认服务端在线。服务端在线则返回相应。
2.mail from 发送发件人信息。
3.rcpt to 发送收件人信息。收件人是本地则不用中继。若不是本地则验证是否可以中继。
4.data 发送邮件正文。
5. . 发送空白行,用.标记正文结束标记。
LMTP 本地邮件传输协议
若目标是本地用户,则直接放在本地用户的家目录下。
若目标是远程用户,则会调用smtp客户端,负责连接对方的smtpd。
邮件传输(MT):远程服务端到本地服务端。
邮件投递(MD):本地服务端到用户。
邮件用户(MU):使用邮箱的用户。
MUA(Mail User Agent):邮件用户代理。一般指客户端。从本地服务端收取邮件到用户家目录。outlook、foxmail、thunderbird、evolution、mutt(纯文本界面)等。
MTA(Mail Transfer Agent):邮件传输代理。一般指SMTP服务器。负责邮件的传送。
MDA(Mail Delivery Agent):邮件投递代理。SMTP服务器调用此代理,负责投递到用户的邮箱。如procmail、maildrop等。
MRA(Mail Retrieval Agent):邮件检索代理。用来取回邮箱中的邮件并传递给用户。通过pop3和iamp4实现。dovecot、cyrus-imap等。
收邮件用smtp协议 发邮件用pop3或imap。
pop3:TCP 110端口
imap4:TCP 143端口
Open Relay: 开放式中继
SASL v2:Simple Authintication Secure Layer 简单认证安全层。默认通过访问/etc/passwd和/etc/shadodw进行账号的验证。使用此层,邮件服务就可以支持认证。访问mysql服务器需要额外的组件。cyrus-sasl、courier-authlib(mysql)。
邮箱格式:
mbox:一个文件存储所有邮件,通过分隔符划分。linux默认使用此。
maildir:一个文件存储一个邮件,所有邮件存储在一个目录中。虚拟用户使用此格式。
WebMail:通过web服务器,使用php等动态语言。直接调用本地的smtp客户端,连接本地或远程服务器。凭借用户的账号等身份信息,以MUA的身份连接pop3服务器。检索后返回web服务器。用户通过浏览器进行查阅邮件。squirrelmail、Openwebmail、extmail(extman)等。
ldap(Lightweight Directory Access Protocol) 轻量级目录访问协议。读取很快,写入很慢。适合一次写入,多次读取。AD就是代表。
虚拟用户:仅用于访问某服务的数字标识。
用户邮箱:
/var/spool/postfix
/var/mail/USERNAME
垃圾邮件过滤器:
常见的邮件服务器:
sendmail
qmail
postfix:
模块化设计,安全新高,兼容sendmail,效率高。
exim
服务端:
Posxfix + SASL(courier-authlib)+ mysql
客户端:
Dovecot+mysql
webmail:
extmail+extman+httpd
邮箱服务器整体思路:
dns(负责域名解析) --> httpd(提供web界面) --> mysql(身份验证) --> postfix(发送) --> dovecot(接收) --> courier-authlib(身份认证)--> webmail(提供网页界面) --> webman(提供网页后台管理) --> maildrop(投递)
本文出自 “小私的blog” 博客,请务必保留此出处http://ggvylf.blog.51cto.com/784661/1668734
原文地址:http://ggvylf.blog.51cto.com/784661/1668734