与邮件服务相关的协议:
pop3:Post Office Protol 邮局协议,让用户能够到远程服务器上,通过账号密码接收检索自己邮件的一种协议
SMTP: Smiple Mail Transfer Protocol简单邮件传输协议,只是实现邮件传输
简单邮件传送协议(SMTP)是因特网电子邮件系统首要的应用层协议。它使用由TCP提供的可靠的数据传输服务把邮件消息从发信人的邮件服务器传送到收信人的邮件服务器。跟大多数应用层协议一样,SMTP也存在两个端:在发信人的邮件服务器上执行的客户端和在收信人的邮件服务器上执行的服务器端。SMTP的客户端和服务器端同时运行在每个邮件服务器上。当一个邮件服务器在向其他邮件服务器发送邮件消息时,它是作为SMTP客户在运行。当一个邮件服务器从其他邮件服务器接收邮件消息时,它是作为SMTP服务器在运行。
POP3协议允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时根据客户端的操作删除或保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。
----------------------------------------------------------------------
SMTP的前身是UUCP(Unix to Unix Copy Protocol)
服务端进程:smtpd ,客户端进程:smtp
smtp服务使用的是tcp的25号端口
----------------------------------------------------------------
如图:
当来自的用户发一封邮件给的用户。A用户就必须要指向一个SMTP服务器,假如在x.net上有个邮件服务器,然后通过SMTP协议对邮件进行传递。x.net上的邮件服务器查看发往的用户不再本域内,于是就通过DNS,对y.com的域名进行解析,找到之后发送过去。到达y.com域上的邮件服务器后,并不是直接发给用户了。而是放在邮件缓冲池中,当用户需要读取邮件时,从邮件缓冲池中对应用户目录下,取出邮件。而读取邮件的过程是由Pop3协议完成的。首先用户发送一个请求给pop3服务器,服务器经过验证,查看用户身份是否合法。如果合法,就从邮件地址池中取出用户对应的邮件目录,然后返回给用户。
---------------------------------------------------------------
提供smtp服务的软件我们称为MTA:Mail Transfer Agent(邮件传输代理)
提供pop服务的软件我们称为MRA:Mail Retravial Agent(邮件检索代理)
把邮件放到邮件缓冲池中的我们称为MDA :Mail Dilevery Agent(邮件投递代理)
能够让用户编写邮件并通过提交向外发送或者取邮件查看的我们成为MUA:Mail User Agent(邮件用户代理)
MSA:Mail Submission Agent(邮件提交代理)
-------------------------------------------------------------
中继
optenrelay ,如果允许中继,则发往非本地域的邮件会帮忙转发。
用户认证
邮件协议没有用户认证功能,那就需要借助其他软件
SASL:simple Authentication Security Layer 简单认证安全层。自身不认证,但提供了认证功能。
邮件服务器所使用相关的软件
MTA:(SMTP)
Exchange
sendmail ,单体式设计,稳定是稍差,安全性不高,稳定性也不是很好
postfix,效率,安全,稳定都优于sendmail
Qmail,效率非常高 ,但现在已很少使用
Exim
默认安装的是sendmail
MRA
Courier-imap:pop3,pop3s,imap4,imaps
dovecot:也能提供上面四种服务的解析
MDA:
procmail
maildrop
MUA:
Outlook
Foxmail
在linux上命令行下:pine,mutt
-----------------------------------
SMTP,25/tcp ;smtps,465/tcp
pop3,110/tcp;pop3s,995/tcp
imap4,143/tcp;imaps,993/tcp
-----------------------------------
配置邮件服务器:
MTA:sendmail(默认已经安装了),postfix
----------------------
安装:postfix
邮件服务器依赖于DNS服务器
首先,安装DNS
配置本地的yum源码,挂载镜像
#mount /dev/cdrom /media/cdrom
#vim /etc/yum.repos.d/my.repo
[base]
name=server
baseurl=file:///media/cdrom
gpgcheck=0
#yum install bind
----------------------------------------------------------
#vim /etc/named.conf
options {
directory "/var/named";
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
};
zone "a.org" IN {
type master;
file "a.org.zone";
};
zone "0.168.192.in-addr.arpa" IN {
type master;
file "192.168.0.zone";
};
------------------------------
#cd /var/named
-----------------------------
#dig -t NS . > /var/named/named.ca
#vim named.ca
------------------------------
#vim localhost.zone
$TTL 86400
@ IN SOA localhost. admin.localhost. (
2011082201
1H
10M
7D
1D )
IN NS localhost.
IN A 127.0.0.1
------------------------------
#vim named.local
$TTL 86400
@ IN SOA localhost. admin.localhost. (
2011082201
1H
10M
7D
1D )
IN NS localhost.
1 IN PTR localhost.
------------------------------
#vim a.org.zone
$TTL 86400
@ IN SOA a.org. admin.a.org. (
2011082201
1H
10M
7D
1D )
IN NS ns.a.org.
IN MX 10 mail.a.org.
ns IN A 192.168.0.15
mail IN A 192.168.0.15
-----------------------------
#vim 192.168.0.zone
$TTL 86400
@ IN SOA a.org. admin.a.org. (
2011082201
1H
10M
7D
1D )
IN NS ns.a.org.
15 IN PTR ns.a.org.
15 IN PTR mail.a.org.
---------------------------------------
把sendmail服务禁掉,卸载sendmail。
#service sendmail stop
#chkconfig sendmail off
#rpm -e sendmail --nodeps
#yum install postfix
#service postfix start
#postconf -d 在/etc/postfix/main.cf
-a sasl的认证方式(cyrus,dovecot)
-m 用于显示本地所支持的用户或者主机等名称映射的
#useradd gentoo
#useradd centos
#useradd ubuntu
#telnet 127.0.0.1 25
mail from:admin@126.com
rcpt to:gentoo@localhost
data
Subject:Hello
how are you?
.
quit
#tail /var/log/maillog
#postqueue -p 查看未发出去的邮件
#postqueue -f 强制发送
#su - gentoo
#mail 接收邮件
#cd /etc/postfix
#ls
#cp main.cf man.cf.2 ,备份
#vim main.cf
如果你在第一行点回车换行了,那么你就得在第二行开头时,加上空格。
myhostname = mail.a.org
inet_interface = $myhostname,localhost
mydomain = a.org
myorigin = $mydomain
mydestination = $myhostname,localhost.$mydomain,localhost,$mydomain,mail.$mydomain
#service postfix restart
#postconf -n 查看自己的配置是否生效
#telnet mail.a.org 25
mail form:centos@a.org
rcpt to:gentoo@a.org
data
Subject:Hello
OK?
.
quit
或者写成下面的格式
#telnet 192.168.0.15 25
mail from:gentoo@a.org
rcpt to:centos@a.org
data
Subject:Hello
OK
.
quit
在windows中做测试
打开运行>cmd
telnet 192.168.0.15 25
MAIL FROM:gentoo@a.org
RCPT TO:han@hanlenry.com
DATA
SUBJECT:hello
OK
.
#postconf -d |grep mynetworks
#vim /etc/postfix/main.cf
mynetworks = 192.168.0.0/24,127.0.0.0/8 允许来自192网段和127网段的我才允许中继
接收邮件
#yum install dovecot
配置文件:/etc/dovecot.conf
#vim /etc/dovecot.conf
修改支持的协议
protocols = imap imaps pop3 pop3s
#service dovecot start
#echo "To pop3 User" | mail -s "haha"
好了,整个邮件发送接收就搞定了。之后我会介绍基于认证和别名机制来扩展邮件服务。