CentOS 6.2大型企业邮件系统(一)

Postfix是目前流行的一套邮件传输代理软件(MTA),其作者Wietst Venema最初开发这套软件时就对总体设计、扩展能力、可用性及系统安全等方面进行了充分的考虑。由于Postfix在稳定、效率、安全和可用性上的优势,使得很多大型的邮件服务提供商都从原有的MTA软件向Postfix过度,而新仅诞生的邮件产品也大多采用了Postfix。网易、Tom和新浪都将原有的Qmail更换为Postfix,可见Postfix在大规模邮件系统中有比较普遍的应用,当然,Postfix也完全适用设计中小型的邮件系统,因为Postfix在保证了效率、安全、扩展等方面优势的同时,还具有配置简单的特点。

CentOS 6.2大型企业邮件系统(一)


Postfix与其他MTA的对比

在众多MTA软件中,最有影响的应该是Sendmail、Qmail和Postfix。Sendmail是最古老的MTA之一(由于辰逸加入的晚,Sendmail好像只配置过一次~~~)也拥有一批固定的使用者;Qmail是新生代的代表,其特点是速度快、体积小,并且容易配置安装。Postfix起源于1996年,它采用模块化设计,使用了大量优秀的技术,已达到安全高效的目的。Postfix发展到现在已经成为功能非常丰富、扩展性和安全性非常强的优秀MTA软件。


1、Sendmail

MTA软件的很多现金功能都是在Sendmail上最先实现的。但Sendmail也有典型的历史问题,主要是整个程序没有实现良好的模块化,运行时需要SID权限,以及配置文件复杂难懂,这些是阻碍Sendmail更好普及应用的一些客观问题。

2、Qmail

Qmail是新生代的MTA代表,实现了模块化设计,避免了SID问题,基本功能齐全,配置较Sendmail简单,而且用户也很广泛。但Qmail最近几年的开发工作基本停止,补丁程序也相对零乱,这些都是长期使用Qmail的用户邮件服务提供商不得不认真考虑的问题。另外,Qmail的扩展性并不是很好,经常需要打补丁来完成功能的扩展。

3、Postfix

Postfix在设计上可以说是最为有没的,其实现了良好的模块化,邮件的处理流程是通过调用各个功能模块来完成,在效率、功能、可用性、扩展及安全等方面都考虑的比较充分。

Postfix部署准备(LAMP整合安装这里省略。本次部署基于CentOS 6.2 Web系统集成与安全)另外。整个编译部署过程十分漫长,那么如果没有耐心。基本上没必要继续参看本文,对于yum直接安装的案例在互联网中大有人做,如果你觉得make 三部曲能带给你快感。同时你和我一样。喜欢centos  那么你可以联系我。一起探讨,最后本文可能会写后二和三。同时我可能会在后面修改本文。postfix个人认为不是找找资料对着做做就能整合的。单纯的postfix 感觉也没什么用。不如找个webmail装在windows server上。起码不用懂脑筋了!


QQ交流群41405569

首先安装DNS,实现解析[我采用的yum,但省去了chroot的安装]

[root@itchenyi yum.repos.d]# yum install bind-9*

BIND的主配置文件内容如下:

[root@mail ~]# cat /etc/named.conf  | grep -v "^/"

options {
	directory 	"/var/named";
	dump-file	"/var/named/data/cache_dump.db";
	statistics-file "/var/named/data/named_stats.txt";
};
zone "itchenyi.com" IN {
	type master;
	file "itchenyi.com.zone";
};
zone "24.168.192.in-addr.arpa" IN {
	type master;
	file "192.168.24.zone";
	allow-update { none; };
};

BIND的区域解析文件如下[注:没有安装chroot]:

[root@mail ~]# cat /var/named/itchenyi.com.zone 
$TTL 86400
@	IN	SOA	itchenyi.com.	root	(
		0
		1D
		1H
		1W
		3H	)
@	IN	NS	ns.itchenyi.com.
ns	IN	A	192.168.24.220
mail	IN	A	192.168.24.220
pop3	IN	CNAME	mail
smtp	IN	CNAME	mail
@	IN	MX  10	mail

BIND的反向解析区域文件如下:

[root@mail ~]# cat /var/named/192.168.24.zone 
$TTL 86400
@	IN	SOA	24.168.192.in-addr.arpa.	root (
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
@	IN	NS	ns.itchenyi.com.
220	IN	PTR	mail.itchenyi.com.
@	IN	MX  5	mail.itchenyi.com.
220	IN	PTR	www.itchenyi.com.

使用nslookup进行测试[如果你没有这个命令请装 bind-util]

[root@itchenyi ~]# service named restart
Stopping named: .                                          [  OK  ]
Starting named:                                            [  OK  ]
[root@itchenyi ~]# nslookup pop3.itchenyi.com
[root@itchenyi ~]# nslookup mail.itchenyi.com
[root@itchenyi ~]# dig -t mx itchenyi.com

编译postfix时把sasl验证改为dovecot。并且使用自动安装方式,省去交互式安装需要手动按回车的麻烦,我这里是安照默认安装的路径。

[root@mail yum.repos.d]# yum install openssl openssl-devel db*         #postfix会依赖这些包,yum直接弄掉~

添加库搜索路径 | 添加用户和组

[root@mail postfix]# groupadd  -g  1200  postdrop
[root@mail postfix]# groupadd  -g  1000  postfix 
[root@mail postfix]#useradd  -M  -u  1000  -g  postfix  -G  postdrop -s  /sbin/nologin  postfix
[root@mail yum.repos.d]# echo "/software/mysql/lib/mysql/" >> /etc/ld.so.conf && ldconfig -v
[root@mail postfix]# tar zxf postfix-2.8.2.tar.gz 
[root@mail postfix]# cd postfix-2.8.2
[root@mail postfix-2.8.0]# chmod 755 ./postfix-install 
[root@mail postfix-2.8.0]# ln -sv /software/mysql/lib/mysql/ /usr/lib/mysql
"/usr/lib/mysql/mysql" -> "/software/mysql/lib/mysql/"
[root@mail postfix-2.8.0]# ln -sv /software/mysql/include/mysql/ /usr/include/mysql
"/usr/include/mysql" -> "/software/mysql/include/mysql/"

开始弄postfix:

[root@mail postfix]# tar zxf postfix-2.8.1.tar.gz 
[root@mail postfix]# cd postfix-2.8.1
[root@mail postfix-2.8.1]# make makefiles CCARGS='-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH  -DDEF_SERVER_SASL_TYPE=\"dovecot\" -DUSE_TLS -I/usr/include' AUXLIBS='-L/usr/lib/mysql -lmysqlclient -lz -lm -L/usr/lib -lssl -lcrypto'
[root@mail postfix-2.8.1]# make
[root@mail postfix-2.8.1]# ./postfix-install -non-interactive install_root=/ tempdir=/tmp config_directory=/etc/postfix command_directory=/usr/sbin/ daemon_directory=/software/postfix data_directory=/var/lib/postfix html_directory=no mail_owner=postfix mailq_path=/usr/bin/mailq manpage_directory=/usr/local/man newaliases_path=/usr/bin/newaliases queue_directory=/var/spool/postfix readme_directory=no sendmail_path=/usr/sbin/sendmail setgia_group=postdrop

生成别名二进制文件,这是个重要的步骤,不做会导致postfix工作效率极低:

[root@mail postfix-2.8.1]# newaliases
[root@chenyi postfix-2.8.2]# postconf -m | grep mysql		#你必须确保你的结果里有mysql,否则你得重新来过!
mysql

修改postfix配置文件

[root@mail postfix-2.8.1]# vi /etc/postfix/main.cf          #下面是你需要修改的

76 myhostname = mail.itchenyi.com                #指定运行postfix邮件系统的主机的主机名,默认情况下,其值被设定为本地机器名

83 mydomain = itchenyi.com                     #指定你的域名

99 myorigin = $mydomain                          #指明发件人所在的域名

113 inet_interfaces = all           #指定postfix系统监听的网络接口

162 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,

163         mail.$mydomain, www.$mydomain, ftp.$mydomain   #指定postfix接收邮件时收件人的域名,即你的postfix系统要接收到哪个域名的邮件

260 mynetworks = 192.168.24.0/28, 127.0.0.0/8


启动postfix

[root@chenyi postfix-2.8.2]# postfix start
postfix/postfix-script: starting the Postfix mail system
[root@chenyi postfix-2.8.2]# useradd chenyi1 && echo "123456" | passwd --stdin chenyi1
[root@chenyi postfix-2.8.2]# useradd chenyi2 && echo "123456" | passwd --stdin chenyi1

到这里就可以用telnet测试一下了:

[root@chenyi postfix-2.8.2]# telnet mail.itchenyi.com 25
Trying 192.168.24.220...
Connected to mail.itchenyi.com.
Escape character is '^]'.
220 mail.itchenyi.com ESMTP Postfix
ehlo mail.itchenyi.com
250-mail.itchenyi.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from:chenyi1@itchenyi.com
250 2.1.0 Ok
rcpt to:chenyi2@itchenyi.com
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
chenyi mail test
.
250 2.0.0 Ok: queued as A8E8D1A0331
quit
221 2.0.0 Bye
Connection closed by foreign host.

切换用户收收邮件~~

[root@chenyi ~]# su - chenyi2
[chenyi2@chenyi ~]$ mail		#该命令属于mailx包
Heirloom Mail version 12.4 7/29/08.  Type ? for help.
"/var/spool/mail/chenyi2": 1 message 1 new
>N  1 chenyi1@itchenyi.com  Sat Mar  2 03:36  13/503   
& 1
Message  1:
From chenyi1@itchenyi.com  Sat Mar  2 03:36:34 2013
Return-Path: <chenyi1@itchenyi.com>
X-Original-To: chenyi2@itchenyi.com
Delivered-To: chenyi2@itchenyi.com
Date: Sat,  2 Mar 2013 03:36:05 +0800 (CST)
From: chenyi1@itchenyi.com
Status: R

chenyi mail test

& q
Held 1 message in /var/spool/mail/chenyi2

安装dovecot

[root@chenyi postfix]# tar zxf dovecot-1.1.4.tar.gz 
[root@chenyi postfix]# useradd  -M  -s  /sbin/nologin  dovecot
[root@chenyi postfix]# cd dovecot-1.1.4
[root@chenyi dovecot-1.1.4]# ./configure --prefix=/software/dovecot --sysconfdir=/etc --with-mysql=/software/mysql/lib --with-sql 
[root@chenyi dovecot-1.1.4]# make && make install
[root@chenyi dovecot-1.1.4]# cp /etc/dovecot-example.conf /etc/dovecot.conf
[root@chenyi dovecot-1.1.4]# vi /etc/dovecot.conf
23 protocols = pop3 imap
47 disable_plaintext_auth = no
87 ssl_disable = yes
208    mail_location = maildir:~/Maildir

再次修改main.cf

[root@chenyi dovecot-1.1.4]# vi /etc/postfix/main.cf
415 home_mailbox = Maildir/


[root@chenyi dovecot-1.1.4]# vi /etc/pam.d/dovecot
  1 auth  required  pam_nologin.so
  2 auth  include  system-auth
  3 account  include  system-auth
  4 session  include  system-auth

启动dovecot

[root@chenyi dovecot-1.1.4]# /software/dovecot/sbin/dovecot -c /etc/dovecot.conf 
[root@chenyi dovecot-1.1.4]# echo "/software/dovecot/sbin/dovecot -c /etc/dovecot.conf" >> /etc/rc.local

查看查看端口

[root@chenyi dovecot-1.1.4]# /software/dovecot/sbin/dovecot -c /etc/dovecot.conf 
[root@chenyi dovecot-1.1.4]# netstat -pant | grep 110    #143你自己测把。。。。
tcp        0      0 0.0.0.0:110                 0.0.0.0:*                   LISTEN      20068/dovecot

测试测试

[root@chenyi dovecot-1.1.4]# telnet mail.itchenyi.com 110
Trying 192.168.24.220...
Connected to mail.itchenyi.com.
Escape character is '^]'.
+OK Dovecot ready.
user chenyi1
+OK
pass 123
+OK Logged in.
quit
+OK Logging out.
Connection closed by foreign host.

安装个webmail试试[如果对你自己充满了信心,请略过这里]

[root@chenyi postfix]# tar zxf squirrelmail-webmail-1.4.22.tar.gz 
[root@chenyi postfix]# mv squirrelmail-webmail-1.4.22 /software/apache2/htdocs/webmail
[root@chenyi postfix]# cd /software/apache2/htdocs/webmail/
[root@chenyi webmail]# mkdir -p attach data/
[root@chenyi webmail]# chown -R daemon:daemon attach/ data/
[root@chenyi webmail]# chmod 730 attach/
[root@chenyi webmail]# cp config/config_default.php config/config.php
118 $domain = 'itchenyi.com';
146 $smtpServerAddress = 'localhost';
151 $smtpPort = 25;
210 $imapPort = 143;
231 $imap_server_type = 'dovecot';
499 $data_dir = '/software/apache2/htdocs/webmail/data/';
517 $attachment_dir = '/software/apache2/htdocs/webmail/attach/';

重启apache服务

[root@chenyi webmail]# /software/apache2/bin/apachectl stop
[root@chenyi webmail]# /software/apache2/bin/apachectl start

访问该网站

CentOS 6.2大型企业邮件系统(一)

登录chenyi2 收到了邮件(收发过程省略)

CentOS 6.2大型企业邮件系统(一)










本文转自 lgpqdwjh 51CTO博客,原文链接:http://blog.51cto.com/itchenyi/1197308,如需转载请自行联系原作者
上一篇:LinkedHashMap源码解析(上)


下一篇:地区分布统计可视化|学习笔记