Mail服务器配置

linux服务器中配置邮件服务器的软件大概有这三种:sendmail/postfix/qmail

以下利用postfix进行搭建邮件服务器




一:相关知识

MUA mail user agent 邮件用户代理 用于客户端发送邮件和阅读邮件

MTA mail tranfer agent 邮件传输代理 服务端软件,相当于是一个邮局,接收MUA发送过来的邮件,如果不是本地邮件,则发送给下一个MTA。

MDA mail delivery agent 邮件投递代理 将MTA所接收到的邮件,依照邮件的目的地将此邮件放到本机账号

--------------SMTP 允许中继----------
MTA 网易---------- MTA 新浪
| ----------------------------------------- |
|-------------------------------------------|
|SMTP -----------------------------------| MDA POP3
|-------------------------------------------|
zhangsan@126.com----------------------lisi@sina.com

协议:

发信人:zhangsan@126.com
收信人: lisi@sina.com

发信:
SMTP simple mail transfer protocol 简单邮件传输协议 端口号:TCP 25
smtps= smtp+ ssl/tls 端口:465

收信:
POP3 post office protocol 邮局协议 ,连接到MTA,读取或者下载邮件 端口号:110
pop3s=pop3+ssl/tls 端口:995

IMAP internet message access protocal 网络报文访问协议 能在下载邮件前先下载邮件头信息,以供用户选择性的下载 端口号:143
imap3s=imap3+ssl/tls 端口:993




二:涉及软件

(1)postfix

(2)dovecot

#yum install postfix dovecot -y

#/etc/init.d/postfix start -------启动

#netstat -ntlup |grep :25 -------查看启动端口
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 13999/master
tcp 0 0 ::1:25 :::* LISTEN 13999/master


或者

# lsof -i:25
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
master 2993 root 12u IPv4 14370 0t0 TCP *:smtp (LISTEN)
master 2993 root 13u IPv6 14372 0t0 TCP *:smtp (LISTEN)




三:发送邮件

(1)

# mail -s 'hello' root@rootbug.com --s参数是定义主题
1111111111111111 --邮件正文
. --点号表示结束
Cc: --抄送,这里我直接回车表示结束
-----------------------------------------------------------------------------------------------------------------
(2)
# mail a --也是调用mail命令
Subject: hello a
i am root
.
Cc: b
------------------------------------------------------------------------------------------------------------------
(3)查看邮件
#cat /var/spool/mail/root
#cat /var/mail/root

------------------------------------------------------------------------------------------------------------------

(4)
# mail -s 'hello2' root@rootbug.com < /etc/fstab
--把/etc/fstab的内容做为邮件的正文来发

-----------------------------------------------------------------------------------------------------------------

(5)

# telnet 127.0.0.1 25 --对25端口也就是smtp协议进行验证
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 li.cluster.com ESMTP Sendmail 8.13.8/8.13.8; Fri, 3 Sep 2010 10:31:00 +0800
helo abc --介绍,打招呼(可以不用打招呼直接到mail from)
250 li.cluster.com Hello localhost.localdomain [127.0.0.1], pleased to meet you
mail from:abc@qq.com --定义发送者,在这里随便定义
250 2.1.0 abc@qq.com... Sender ok
rcpt to:root@rootbug.com --定义接收者,在这里是本机的root用户
250 2.1.5 root@rootbug.com... Recipient ok
data --表示后面写的是邮件内容
354 Enter mail, end with "." on a line by itself
test mail from qq.com --邮件正文
. --点号表示内容结束
250 2.0.0 o832V0tl004576 Message accepted for delivery
quit --quit退出
221 2.0.0 li.cluster.com closing connection

------------------------------------------------------------------------------------------------------------

(6)通过mutt发送邮件

#yum install mutt -y

# mutt user1@rootbug.com --使用root用户给user1用户发送邮件,并且有发送附件等功能
#su - user1 --切换用户去查看邮件

-----------------------------------------------------------------------------------------------------------

(7)还可以安装其他的软件进行收发邮件,这里就不一一列举。




四:配合DNS进行搭建邮件服务器

linux客户端 ----------------------------DNS服务器 --------------------postfix服务器+dovecot

10.10.10.35-------10.10.10.15------10.10.10.15
|
|
|
客户端 windows xp
10.10.10.27

前期准备:
1,主机名和IP
2,时间同步
3,关闭iptables,selinux
4, 配置好yum




第一大步:配置DNS服务器和邮件交换记录
(1)先在15上把主机名和域定义好
#hostname mail.rootbug.com
#vim /etc/hosts
10.10.10.15 mail.rootbug.com
#vim /etc/sysconfig/network
HOSTNAME=mail.rootbug.com

(2)下面在10.10.10.15上做DNS
# yum install bind*

# vim /etc/named.conf

options {
 listen-on port 53 { any; }; --改为any
 listen-on-v6 port 53 { ::1; };
 directory "/var/named";
 dump-file "/var/named/data/cache_dump.db";
 statistics-file "/var/named/data/named_stats.txt";
 memstatistics-file "/var/named/data/named_mem_stats.txt";
 allow-query { any; }; --改为any
 recursion yes;
 dnssec-enable yes;
 dnssec-validation yes;
 dnssec-lookaside auto;
 /* Path to ISC DLV key */
 bindkeys-file "/etc/named.iscdlv.key";
 managed-keys-directory "/var/named/dynamic";
};
logging {
 channel default_debug {
 file "data/named.run";
 severity dynamic;
 };
};
zone "." IN {
 type hint;
 file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";


---------------------------------------------------------------------------------------------------------------

# vim cat /etc/named.rfc1912.zones

zone "localhost.localdomain" IN {
 type master;
 file "named.localhost";
 allow-update { none; };
};
zone "localhost" IN {
 type master;
 file "named.localhost";
 allow-update { none; };
};
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
 type master;
 file "named.loopback";
 allow-update { none; };
};
zone "1.0.0.127.in-addr.arpa" IN {
 type master;
 file "named.loopback";
 allow-update { none; };
};
zone "0.in-addr.arpa" IN {
 type master;
 file "named.empty";
 allow-update { none; };
};
zone "cluster.com" IN { --加上这一段,我的邮件域为cluster.com,跟主机名mail.rootbug.com不一样,方便理解和区分
 type master;
 file "data/master.cluster.com.zone";
};

--------------------------------------------------------------------------------------------------------

# vim /var/named/data/master.cluster.com.zone

$TTL 3600
@   IN   SOA   rootbug.   rootbug. (
             2013101001
                 30
                 60
                 90
                 3600 )
       IN   NS     10.10.10.15.
       IN   MX 0   10.10.10.15. --加上这一句,MX是邮件交换记录,0代表优先级别,0-20,0代表优先级最高
dns     IN   A   10.10.10.15
mail     IN   A   10.10.10.15 --这个是邮件服务器的域名,因为我这里和DNS模拟做成同一台,所以IP相同

--------------------------------------------------------------------------------------------------------

#/etc/init.d/named restart

(3)在客户端上把DNS指向DNS服务器,然后进行验证
----下面的验证是linux上做的,但是在XP的cmd命令行模式也是一样的命令来验证

# nslookup mail.cluster.com
Server: 10.10.10.15
Address: 10.10.10.15#53
Name: mail.cluster.com
Address: 10.10.10.15
# nslookup --验证邮件交换记录
> set type=mx
> cluster.com --这里写域,不是域名
Server: 10.10.10.15
Address: 10.10.10.15#53
cluster.com mail exchanger = 0 10.10.10.15.




第二大步:在linux客户端安装邮件客户端软件claws-mail或者thunderbird windows客户端自带outlook,不用安装。

(1)安装图形邮件客户端claws-mail

# tar xvf libetpan-0.57.tar.gz -C /usr/src/ --------IMAP4和NNTP支持,要先装这个包才能编译claws-mail--------
#tar xvf claws-mail-3.5.0.tar.gz -C /usr/src/
#cd /usr/src/libetpan-0.57/
#./configure
#make
#make install
#cd /usr/src/claws-mail-3.5.0/
#./configure
#make
#make install

--安装完成后,使用claws-mail &命令来打开,如果报找不到libetpan.so.13这个库文件,则使用下面的命令做一个软链接

# ln -s /usr/local/lib/libetpan.so.13 /lib/libetpan.so.13
--注意:如果用的是rhel6的64位的话,则ln -s /usr/local/lib/libetpan.so.13 /lib64/libetpan.so.13

(2)你或者也可以用thunderbird

# tar xf thunderbird-zh-17.0.4.tar.bz2 -C /usr/local
# cd /usr/local/thunderbird/
# ./thunderbird

-------直接使用这个命令去打开
------打开时暴库不存在,用yum安装后再打开----
# yum install libxul.so




第三大步:配置postfix和dovecot

(1)配置postfix

#vim /etc/postfix/main.cf
myhostname = mail.rootbug.com --本机主机名
mydomain = cluster.com --本机域名,postfix会自动扣除第一点号前的部分作为域名。如果不是FQDN形式的主机名,就一定要手动配置你的域名
myorigin = $mydomain
inet_interfaces = all --监听所有
mydestination = $myhostname, localhost.$mydomain, localhost ,$mydomain
 --加上$mydomain,则表示可以直接以域名来收邮件
mynetworks = 10.10.10.0/24, 127.0.0.0/8 --信任网络,在这里也可以不配,因为默认值为subnet,也就是本网段内的都是信任网络


---------------------------------------------------------------------------------------------------------

#/etc/init.d/postfix restart

# netstat -ntlup |grep :25 --验证端口
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 3289/master
tcp 0 0 :::25 :::* LISTEN 3289/master



---------------------------------------------------------------------------------------------------------


(2)配置dovecot

# vim /etc/dovecot/dovecot.conf
protocols = imap pop3 lmtp --打开这行的注释,在20行
login_trusted_networks = 10.10.10.0/24 --打开并配置这一行,表示能够成功登录的信任网络,大概在38行
# vim /etc/dovecot/conf.d/10-mail.conf
mail_location = mbox:~/mail:INBOX=/var/mail/%u  --打开这行的注释,在25行
#/etc/init.d/dovecot restart
# netstat -ntlup |grep :110
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 4802/dovecot
tcp 0 0 :::110 :::* LISTEN 4802/dovecot



--------------------------------------------------------------------------------------------------------------

(3)假设公司这个邮件服务器有两个员工的账号,做为管理员在邮件服务器上创建这两个用户,并给密码(高级的做法,可以把账号做到数据库里来管理)

# useradd zhangsan
# useradd lisi
# echo 123 | passwd --stdin zhangsan
# echo 123 | passwd --stdin lisi




第四大步:
(1)配置两个客户端,只要是配置 thunderbird和 claws和outlook(配置过程省略)
(2)发邮件测试

利用图形邮件工具(thunderbird和 claws和outlook)进行收发邮件
zhangsan发一封邮件给lisi,一切OK。