邮件服务器一. 邮件服务基础知识,今天小编就来聊一聊关于linux教程第10章技术?接下来我们就一起去研究一下吧!
linux教程第10章技术
邮件服务器
一. 邮件服务基础知识
1. 常用邮件客户端:
大概分两类:
(1)webmail,也就是类似www.126.com这种形式的web页面,客户只需要注册,然后登录使用,所有过程都是图形化,傻瓜化。
(2)邮件客户端软件,如outlook,foxmail,thunderbird等,它们需要在客户端进行一定的配置。
2. 开源邮件服务器
sendmail --单体式结构
postfix --模块化(centos自带)
qmail --模块化
3. 相关概念
MUA = mail user agent --邮件用户代理 客户端软件,发送邮件和阅读邮件
MTA = mail tranfer agent --邮件传输代理 服务端软件,相当于是一个邮局,接收MUA发送过来的邮件,如果不是本地邮件,则发送给下一个MTA。
MDA = mail delivery agent --邮件投递代理 将MTA所接收到的邮件,依照邮件的目的地将此邮件放到本机账号
邮件协议:
发信:
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
南宁隆安 --> 南宁邮局 --> 北京朝阳区邮局 -->朝阳区
MUA MTA MTA MDA
zhangsan@126.com 网易服务器 新浪服务器 lisi@sina.com
SMTP 允许中继
MTA 网易----------> MTA 新浪
| |
| |
SMTP POP3
| |
zhangsan@126.com lisi@sina.com
MUA
发信人:zhangsan@126.com
收信人: lisi@sina.com
4. postfix软件架构
参考网址:http://wiki.ubuntu.org.cn/Postfix_基本设置指南
5. 参考文档
postfix权威指南.pdf
用centos6.5默认的PDF查看器看的有可能是乱码,用rhel5的话不是乱码,就安装/share/soft/AdobeReader_chs-8.1.7-1.i486.rpm这个包,但是安装他需要很多依赖
解决方法一:把这个包加到软件仓库里createrepo,使用yum install来安装
解决方法二:不用把它加到软件仓库,只配置你系统ISO的yum就可以
yum install /share/soft/AdobeReader_chs-8.1.7-1.i486.rpm --直接去yum install 这个rpm包的全名,全自动帮你从yum里去寻找依赖性
--yum install ld-linux.so 还可以直接yum install一个库文件,也会自动帮你去查找属于哪个包和解决相关依赖性
6. 配置yum源
# rm -rf /etc/yum.repos.d/*
# touch /etc/yum.repos.d/local.repo
# vim /etc/yum.repos.d/local.repo
[centos6.5]
name=centos6.5
baseurl=http://192.168.1.59/yum/
enabled=1
gpgcheck=0
# yum clean all
二. postfix使用
postfix在本机的发信原理 参考postfix权威指南30页的图3-2和35页的图3-4
1. 安装postfix服务
# yum install postfix dovecot -y
--centos6.5里默认的MTA就是postfix了, rhel5里拥有的system-switch-mail包可以切换postfix和sendmail这两个MTA,但在centos6.5里已经没有了
# /etc/init.d/postfix restart --启动postfix (注意不要把/etc/hosts文件的127.0.0.1的那两句给删掉,否则启不来)
# 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
--从上面看到的是只监听127.0.0.1的25端口,那么现在只能在本机上给本地的用户发
# /etc/init.d/dovecot restart
# netstat -ntlup | grep :110
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 6346/dovecot
tcp 0 0 :::110
2. 配置文件
/etc/postfix/main.cf --主配置文件
/etc/postfix/master.cf --运行参数配置文件,该文件主要规定了Postfix每个子程序的运行参数,该文件默认已经配置好了,通常不需要更改
/etc/postfix/access --访问控制文件,用来设置服务器为哪些主机进行转发邮件,即用于实现中继代理。
/etc/aliases --别名文件,用来定义邮箱别名,设置完毕后,需要在main.cf中启用,并使用postalias或newaliases生成相关数据库
/etc/postfix/virtual --虚拟别名域库文件,用来设置虚拟账户和域的数据库文件
3. 发送测试邮件
发送邮件方法一
# mail -s 'hello' root --s参数是定义主题
1111111111111111 --邮件正文
. --点号表示结束
# ls /var/spool/mail/ --存放邮件的目录,以用户名的来存的
cat /var/spool/mail/root
cat /var/mail/root
# mail -s 'hello2' root < /etc/fstab
--把/etc/fstab的内容做为邮件的正文来发
发送邮件方法二:
# cat /etc/rc.local | sendmail root
--邮件报警脚本,就可以按下面的方式来发送(nagios就是用类似下面的命令)
# printf "***** test ******\n\n姓名:张 三\n性别:男\n年龄:25\n职业:IT\n" |mail -s "haha" root
发邮件方法三: 参考权威指南24页
# yum install telnet --远程连接工具
# 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 qianyun.com ESMTP Sendmail 8.13.8/8.13.8; Fri, 3 Sep 2010 10:31:00 0800
helo qianyun.com --介绍自己,用help命令查看支持的命令集,help helo查看helo的用法
250 qianyun.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@qianyun.com --定义接收者,在这里是本机的root用户
250 2.1.5 root@qianyun.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 qianyun.com closing connection
发邮件方法四:
mutt 一个linux下的文本的MUA工具 客户端程序
yum install mutt -y
# mutt root@qianyun.com
发送邮件方法五:
安装别的软件或者webmail,进行软件收发
问题:我用一个linux,如果发邮件到一个外网邮箱
答案:首先需要能上外网。直接用mail命令就可以做,mail -s "xxxx" xxxx@126.com
4. postfix dovecot dns收发邮件
邮件发送也需要DNS的支持,并且DNS要配置邮件交换记录
mail.cluster.com 公网域名
@cluster.com 邮件域
mail.qianyun.com 主机名
postfix dovecot
|
|
----- DNS ----
linux客户端 windows客户端
张三(zhangsan) 李四(lisi)
zhangsan@cluster.com lisi@cluster.com
linux客户端 DNS postfix dovecot windows xp客户端
192.168.1.45------------------------192.168.1.59-----------------------192.168.1.73
前期准备:
1,主机名和IP
2,时间同步
3,关闭iptables,selinux
4, 配置好yum
第一大步:配置DNS服务器和邮件交换记录
先在192.168.1.59上把主机名和域定义好
#hostname mail.qianyun.com
#vim /etc/sysconfig/network
HOSTNAME=mail.qianyun.com
#vim /etc/hosts
192.168.1.59 mail.qianyun.com
下面在192.168.1.59上做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 /etc/named.rfc1912.zones
zone "cluster.com" IN { --加上这一段,我的邮件域为cluster.com,跟主机名mail.qianyun.com不一样,方便理解和区分
type master;
file "data/master.cluster.com.zone";
};
# vim /var/named/data/master.cluster.com.zone
$TTL 3600
@ IN SOA SDFSADFA. fsdfa. (
1234567890
30
30
30
3600 )
IN NS 192.168.1.59.
IN MX 0 192.168.1.59. --加上这一句,MX是邮件交换记录,0代表优先级别,0-20,0代表优先级最高
mail IN A 192.168.1.59 --这个是邮件服务器的域名,因为我这里和DNS模拟做成同一台,所以IP相同
cluster.com. IN A 192.168.1.59
/etc/init.d/named restart
在客户端上把DNS指向DNS服务器,然后进行验证
--下面的验证是linux上做的,但是在XP的cmd命令行模式也是一样的命令来验证
# nslookup mail.cluster.com
Server: 192.168.1.59
Address: 192.168.1.59#53
Name: mail.cluster.com
Address: 192.168.1.59
第二大步:在linux客户端192.168.1.45安装邮件客户端软件claws-mail
windows客户端自带outlook,不用安装
安装图形邮件客户端,这里使用claws-mail
# ls /share/soft/soft/soft/mail_client/
claws-mail-3.5.0.tar.gz libetpan-0.57.tar.gz
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版本比较老,你也可以不支持IMAP4和NNTP,使用下面的命令来编译./configure --disable-libetpan
--安装完成后,使用claws-mail &命令来打开,如果报找不到libetpan.so.13这个库文件,则使用下面的命令做一个软链接
# ln -s /usr/local/lib/libetpan.so.13 /lib/libetpan.so.13
--注意:如果用的是centos6.5的64位的话,则ln -s /usr/local/lib/libetpan.so.13 /lib64/libetpan.so.13
检查是否安装成功,使用claws-mail & 能打开图形就表示成功了
第三大步:在mail服务器上安装postfix和dovecot
# yum install postfix dovecot
综合配置一个简单的postfix邮件服务器
vim /etc/postfix/main.cf --参考postfix权威指南的52页
myhostname = mail.qianyun.com --本机主机名,主机名也可以收邮件
mydomain = cluster.com --本机域名,postfix会自动扣除第一点号前的部分作为域名。如果不是FQDN形式的主机名,就一定要手动配置你的域名
myorigin = $mydomain --解释见权威指南53页
inet_interfaces = all --监听所有,注释inet_interfaces = localhost
mydestination = $myhostname, localhost.$mydomain, localhost ,$mydomain
--加上$mydomain,则表示可以直接以域名来收邮件
mynetworks = 192.168.1.0/24, 127.0.0.0/ --信任网络,在这里也可以不配,因为默认值为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
假设公司这个邮件服务器有两个员工的账号,做为管理员在邮件服务器上创建这两个用户,并给密码(高级的做法,可以把账号做到数据库里来管理)
# useradd zhangsan
# useradd lisi
# echo 123 | passwd --stdin zhangsan
# echo 123 | passwd --stdin lisi
=====================================================
第四大步:
配置两个客户端(配置过程省略)
发邮件测试
# vim /etc/dovecot/dovecot.conf
20 protocols = imap pop3 lmtp --打开这行的注释,在20行
38 login_trusted_networks = 192.168.1.0/24 --打开并配置这一行,表示能够成功登录的信任网络
# vim /etc/dovecot/conf.d/10-mail.conf
25 mail_location = mbox:~/mail:INBOX=/var/mail/%u --打开这行的注释
#/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
如果在收信时,还是收不了,报类似下面的错误;或者在/var/log/maillog里也能找到下面的错误
Couldn't open INBOX: Internal error occurred. Refer to server log for more information
也就表示下面两个目录创建不出来,你可以对照我下面的权限,自己去创建,并修改权限等
# mkdir -p /home/zhangsan/mail/.imap/INBOX/
# chown -R zhangsan.zhangsan /home/zhangsan
# ll -d /home/zhangsan/mail/.imap/INBOX/
drwxrwx--- 2 zhangsan zhangsan 4096 Mar 17 15:23 /home/zhangsan/mail/.imap/INBOX/
# mkdir -p /home/lisi/mail/.imap/INBOX/
# chown -R lisi.lisi /home/lisi
# ll -d /home/lisi/mail/.imap/INBOX/
drwxrwx--- 2 lisi lisi 4096 Mar 17 15:23 /home/lisi/mail/.imap/INBOX/
第五大步:
2台客户端机器dns都要指向邮件的服务器:192.168.1.59
# /etc/resolv.conf
nameserver 192.168.1.59
windows主机:
192.168.1.59
测试
邮件的地址:
zhangsan@cluster.com
lisi@cluster.com
收邮件和发邮件的地址(smtp和pop3服务器):
mail.cluster.com
=============================================================
实现两个域的互发
把DNS互相转发,两个域的客户端都能nslookup查到对方的域得到其邮件服务器的IP
就可以两边互相转发了
=============================================================
总结:上面讲的只是邮件收发的基本原理,实际的邮件服务器在上面的基础上还有更多的功能,如:
1,邮件群发
2,虚拟邮件域(指一个邮件服务器可以做多个邮件域)
3, webmail (开发一个web界面程序由apache这种web服务器来提供web界面的管理,开源的有openwebmail,squirrelmail,extman等)
4, 邮件用户由数据库或者由ldap来管理(也就是邮件用户不是系统用户,而是放到类似mysql这样的数据库里,和数据连接)
5, 反垃圾邮件(现在反垃圾邮件可以使用DNS反向,域名黑名单,关键字评分等机制来实现,但不能从根本上解决垃圾邮件的问题)
6,邮件杀毒(装一个软件对邮件进行杀毒就可,开源的有clamAV等)
搭建一个完整的邮件服务器是很复杂的,就算搭建成功的话,维护起来出了问题也非常难排错;
所以除了大公司外,很多小公司也会选择花钱买一套邮件系统,这样会有完整的售后服务
如果公司很小,或刚起步,也可以选择一些大公司提供的企业邮件(如腾讯企业邮,网易企业邮这种,人数不多的话是免费的)
如果公司一定想要自己搭建一套的话,可以选择整合版本(如extmail或zimbra等)
====================================================================
三. 开源邮件系统的搭建
基于zimbra的邮件服务器搭建
第一步:搭建DNS服务器
(1)准备工作之修改主机名
# hostname qianyun.com
# vim /etc/sysconfig/network
HOSTNAME=qianyun.com
# vim /etc/hosts
192.168.1.45 mail.qianyun.com qianyun.com
(2) 关闭防火墙和selinux
# iptables -F
# setenforce 0
(3) 搭建DNS服务器
# yum install bind* -y
# vim /etc/named.conf
加入一段:
options {
forwarders { 114.114.114.114; 8.8.8.8; };
};
zone "qianyun.com" IN {
type master;
file "data/master.qianyun.com.zone";
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "data/master.1.168.192.arpa";
};
# named-checkconf /etc/named.conf --检测是否有语法错误
创建正向解析文件
# vim /var/named/data/master.qianyun.com.zone
$TTL 86400
@ IN SOA qy.com. root.qy.com. (
20150922
3H ;refresh
15M ;retry
1W ;expiry
1D ) ;minimum
IN NS 192.168.1.45.
IN MX 0 mail.qianyun.com.
mail IN A 192.168.1.45
创建反向解析文件
# cp /var/named/data/master.qianyun.com.zone /var/named/data/master.1.168.192.arpa
# vim /var/named/data/master.1.168.192.arpa
$TTL 86400
@ IN SOA qy.com. root.qy.com. (
20150922
3H ;refresh
15M ;retry
1W ;expiry
1D ) ;minimum
IN NS 192.168.1.45.
IN MX 0 mail.qianyun.com.
45 IN PTR mail.qianyun.com
解析文件正确性检查,出现OK 提示就表示正确
# named-checkzone qianyun.com /var/named/data/master.10.1.1.arpa
/var/named/data/master.192.168.1.arpa:8: NS record '192.168.1.45.' appears to be an address
zone qianyun.com/IN: qianyun.com/MX 'mail.qianyun.com' has no address records (A or AAAA)
zone qianyun.com/IN: loaded serial 20150922
OK
# named-checkzone qianyun.com /var/named/data/master.qianyun.com.zone
/var/named/data/master.qianyun.com.zone:8: NS record '192.168.1.45.' appears to be an address
zone qianyun.com/IN: loaded serial 20150922
OK
# /etc/init.d/named restart --重启服务
# chkconfig named on --开机启动
# vim /etc/resolv.conf
nameserver 192.168.1.45
解析测试:
# nslookup
> set type=mx
> qianyun.com
Server: 192.168.1.45
Address: 192.168.1.45#53
qianyun.com mail exchanger = 0 mail.qianyun.com.
> set type=ptr
> 192.168.1.45
Server: 192.168.1.45
Address: 192.168.1.45#53
108.1.168.192.in-addr.arpa name = mail.qianyun.com.1.168.192.in-addr.arpa.
第二步,安装和配置zimbra
准备工作:
# /etc/init.d/postfix stop
# chkconfig postfix off
# yum install sysstat compat-libstdc * nc file -y --依赖文件
# tar xvf zcs-8.6.0_GA_1153.RHEL6_64.20141215151155.tgz -C /usr/src/
# cd /usr/src/
# mv zcs-8.6.0_GA_1153.RHEL6_64.20141215151155/ zcs
# cd zcs
# ./install.sh --platform-override
安装过程:
Do you agree with the terms of the software license agreement? [N] y
Install zimbra-ldap [Y] --存放用户名密码
Install zimbra-logger [Y] --日志
Install zimbra-mta [Y] --邮件服务器
Install zimbra-dnscache [Y] n --dns,自己来配
Install zimbra-snmp [Y] --snmp
Install zimbra-store [Y]
Install zimbra-apache [Y] --web网页界面
Install zimbra-spell [Y] --检测
Install zimbra-memcached [Y] --缓存
Install zimbra-proxy [Y] --代理
The system will be modified. Continue? [N] y
Change domain name? [Yes] y
Create domain: [mail.qianyun.com] qianyun.com
---------------------------------------------------------
Main menu
1) Common Configuration:
2) zimbra-ldap: Enabled
3) zimbra-logger: Enabled
4) zimbra-mta: Enabled
5) zimbra-snmp: Enabled
6) zimbra-store: Enabled
Create Admin User: yes
Admin user to create: admin@qianyun.com
******* Admin Password UNSET
Anti-virus quarantine user: virus-quarantine.rmy8cpwf@qianyun.com
Enable automated spam training: yes
Spam training user: spam.c7bccov_@qianyun.com
Non-spam(Ham) training user: ham.liyxy9ois@qianyun.com
SMTP host: mail.qianyun.com
Web server HTTP port: 8080
Web server HTTPS port: 8443
Web server mode: https
IMAP server port: 7143
IMAP server SSL port: 7993
POP server port: 7110
POP server SSL port: 7995
Use spell check server: yes
Spell server URL: http://mail.qianyun.com:7780/aspell.php
Enable version update checks: TRUE
Enable version update notifications: TRUE
Version update notification email: admin@qianyun.com
Version update source email: admin@qianyun.com
Install mailstore (service webapp): yes
Install UI (zimbra,zimbraAdmin webapps): yes
7) zimbra-spell: Enabled
8) zimbra-proxy: Enabled
9) Default Class of Service Configuration:
s) Save config to file
x) Expand menu
q) Quit
---------------------------------------------------------
Address unconfigured (**) items (? - help) 6
Select, or 'r' for previous menu [r] 4
Password for admin@qianyun.com (min 6 characters): [7D1ZrZOG] 123456 --管理员admin的密码
Select, or 'r' for previous menu [r] r
Select from menu, or press 'a' to apply config (? - help) a
Save configuration data to a file? [Yes]
Save config in file: [/opt/zimbra/config.62794]
Saving config in /opt/zimbra/config.62794...done.
The system will be modified - conti/etc/init.d/postfix stopnue? [No] yes
Notify Zimbra of your installation? [Yes] no
安装完成,按任意键退出
# su - zimbra --这个用户是安装zimbra 的时候自动创建的,切换到这个用户
$ zmcontrol status --查看zcs工作状态
$ zmcontrol restart --启动zcs
$ exit --退出zimbra帐号
验证zimbra服务器是否可以正常工作
管理员登陆页面:https://mail.qianyun.com:7071 --注意是https
https://192.168.1.45:7071
登录名:admin 密码:123456
网络客户端:https://mail.qianyun.com:8443
,