在红孩子的时候跟部门的运维主管老骆学习了postfix+dovecot,算是勉强入了个门,但我从中发现了一个问题
在Redhat AS5与CentOS 5两种发行版上部署这套服务有点不太一样
在CentOS 5上安装完postfix后,配置文件manin.cf里的aliases的文件路径你需要重新设置下
并且重新newaliases
然后在注册下域名文件和密码文件

以下安装文档 (注:安装文档由老骆友情提供)
POSTFIX 安装
一, 所用IP及域名
IP:192.168.0.100 (根据实际情况更改)
域名:test.com (根据实际情况更改)
域名解析:test.com     MX       smtp.test.com
           smtp.test.com   A     192.168.0.100
           192.168.0.100   PTR     smtp.test.com
二, 所需软件
1, POSTFIX
版本:postfix-2.3.2
功能:SMTP
官方网站: http://www.postfix.org/
下载地点: http://www.postfix.org/download.html
     ftp://postfix.cn99.com/postfix/official/postfix-2.3.2.tar.gz
2.DOVECOT
版本:dovecot-1.0.rc7.
功能:SMTP认证,POP3,IMAP
官方网站: http://www.dovecot.org/
下载地点: http://www.dovecot.org/download.html
         http://www.dovecot.org/releases/dovecot-1.0.rc7.tar.gz
三, 安装前的准备
1, 修改主机名
1.1   修改host表
vi /etc/hosts
127.0.0.1   smtp.test.com localhost.localdomain localhost
1.2 修改network
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME= smtp.test.com
GATEWAY=202.108.17.1
1.3 修改主机名
hostname smtp.test.com
1.4 重新登陆
2,添加DNS地址
vi /etc/resolv.conf
nameserver 202.106.0.20

3,时间同步
ntpdate time.nist.gov
添加计划任务
crontab -e
00 01 * * 1 /usr/sbin/ntpdate time.nist.gov
4, 停止原有的mail
# service sendmail stop
Shutting down sendmail:                                     [   OK   ]
Shutting down sm-client:                                   [   OK   ]
chkconfig --level 2345 sendmail off
mv /usr/sbin/sendmail /usr/sbin/sendmail.OFF
mv /usr/bin/newaliases /usr/bin/newaliases.OFF
mv /usr/bin/mailq /usr/bin/mailq.OFF
四, 安装 DOVENT
1, 建立用户
#useradd -s /sbin/nologin -d /dev/null dovecot
2, 安装
tar -zxvf   dovecot-1.0.rc7.tar.gz
cd dovecot-1.0.rc7
./configure && make && make install
cp /usr/local/etc/dovecot-example.conf /usr/local/etc/dovecot.conf
scp 202.108.17.35:/usr/local/etc/dovecot.conf /usr/local/etc/dovecot.conf
3, 修改配置文件
###设立用户名和密码文件是 /etc/postfix/passwd ####
vi /usr/local/etc/dovecot.conf
base_dir = /var/run/dovecot/
protocols = imap   pop3 (修改)
listen = *
ssl_disable = yes
login_dir = /var/run/dovecot/login
login_user = dovecot
default_mail_env = maildir:/var/mail/vhosts/%d/%n/   (修改)
disable_plaintext_auth = no
pop3_uidl_format = %v
passdb passwd-file {
     # Path for passwd-file
     args = /etc/postfix/passwd
   }
userdb passwd-file {
     # Path for passwd-file
     args = /etc/postfix/passwd
   }

     auth default {   (默认打开)
       mechanisms = plain login (修改)
  
       socket listen {
         client {
           path = /var/spool/postfix/private/auth
           mode = 0660
           user = postfix
           group = postfix
         }
       }
}
五, 安装POSTFIX
1, 建立用户
groupadd -g 12345 postfix
useradd -u 12345 -g postfix -s /sbin/nologin -d /dev/null postfix
groupadd -g 54321 postdrop
groupadd -g 5000 vmail
useradd -u 5000 -g vmail -s /sbin/nologin -d /dev/null vmail
2, 安装
tar -zxvf postfix-2.3.2.tar.gz
cd postfix-2.3.2
make makefiles CCARGS='-DUSE_SASL_AUTH -DDEF_SERVER_SASL_TYPE=\"dovecot\"'
make
make install
(一路回车)
3, 修改main.cf
vi /etc/postfix/main.cf:
##添加如下代码
#smtp auth   (SMTP 认证)
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_recipient_restrictions = permit_sasl_authenticated permit_auth_destination reject
#virtual mailbox domain
virtual_mailbox_domains=/etc/postfix/vdomains
virtual_mailbox_base=/var/mail/vhosts
virtual_mailbox_maps=hash:/etc/postfix/vmailbox
virtual_mailbox_uid=100
virtual_uid_maps=static:5000
virtual_gid_maps=static:5000
virtual_alias_maps=hash:/etc/postfix/virtual
六, 添加域名,添加用户
例如要添加的域名:test.com,添加的用户: test@test.com 密码test
1,添家域名
vi /etc/postfix/vdomains
test.com
2,添加用户
vi /etc/postfix/vmailbox
test@test.com test.com/test/
mkdir /var/mail/vhosts
chown vmail.vmail /var/mail/vhosts
postmap /etc/postfix/vdomains
postmap /etc/postfix/vmailbox
postmap /etc/postfix/virtual
3,建立密码文件
vi /etc/postfix/passwd
test@test.com:{plain}test:5000:5000::/var/mail/vhosts/test.com/test/
用户名:{plain}密码:(邮件存储目录的用户和组):: 邮件存储目录
以后在添加用户的时候
添加存在域的用户
test2@test.com   密码:test2
1,修改 vmailbox
/etc/postfix/vmailbox
test2@test.com test.com/test2/
#postmap /etc/postfix/vmailbox
2,修改passwd
/etc/postfix/passwd
test2@test.com:{plain} test2:5000:5000::/var/mail/vhosts/test.com/test2/

添加不存在域的用户,先建立域名
test@abc.com 密码:test2006
1,修改vdomains 添加 abc.com
vi /etc/postfix/vdomains
abc.com
2,修改 vmailbox
test@abc.com abc.com/test/
#postmap /etc/postfix/vmailbox
3,修改 pssswd
test@abc.com:{plain}test2006:5000:5000::/var/mail/vhosts/ abc.com/test/
centos系统安装POSTFIX时需要重新注册下
修改/etc/postfix/main.cf
aliases map   的位置   指向/etc/postfix/aliases
aliases db   的位置   指向/etc/postfix/aliases
执行
newaliases
七,   启动
#dovecot
#postfix start
八, 测试
#netstat –nlp
查看 110,25 ,143   端口是否开放
通过以下命令获得 test@test.com的用户名及密码的BASE64编码:
perl -e 'use MIME::Base64; print encode_base64(" test@test.com")'
dGVzdC5jb20=
perl -e 'use MIME::Base64; print encode_base64("test")'
dGVzdA==
然后本机测试,其过程如下(蓝色的文字是我们输入/发送到Postfix的)
[root@smtp root]# telnet localhost 25
Trying 127.0.0.1...
Connected to smtp.test.com (127.0.0.1).
Escape character is '^]'.
220 smtp.trade.abc.cn ESMTP Postfix
ehlo aa.com
250-smtp.test.com
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
auth login
334 VXNlcm5hbWU6
dGVzdC5jb20=
334 UGFzc3dvcmQ6
dGVzdA==
235 2.0.0 Authentication successful
mail from:< test@163.com>
250 2.1.0 Ok
rcpt to:< test@test.com>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
good mail
.
250 2.0.0 Ok: queued as 1F2706FDDA
出现235 Authentication Successful 表明认证成功了。
这样 就以 test@163.com发送一封邮件给刚建立的用户 test@test.com
测试 110

[root@smtp root]# telnet localhost 110
Trying 127.0.0.1...
Connected to smtp.test.com (127.0.0.1).
Escape character is '^]'.
+OK Dovecot ready.
user test@test.com
+OK
pass test
+OK Logged in.
list
+OK 1 messages:
retr 1
dele 1
1 481
 
 
 
PS:最后安装部署完这套服务后,测试的时候,最好用Outlook或是Foxmail来进行测试,个人感觉好一些,因为用telnet来测试会出些错误……