(1) 安装courier-imap

[root@mail1~]# cd
[root@mail1~]# tar jxvf courier-imap-4.5.0.tar.bz2
[root@mail1~]# cd courier-imap-4.5.0
 [root@mail1 urier-imap-4.5.0]# ./configure  --prefix=/usr/local/imap  --with-redhat 
--disable-root-check  --enable-unicode=utf-8,iso-8859-1,gb2312,gbk,gb18030
--with-trashquota  --with-dirsync --with-mysql-libs=/usr/local/mysql/lib/mysql --with-mysql-includes=/usr/local/mysql/include/mysql/ --with-authmysql --with-authmysql=yes
[root@mail1courier-imap-4.1.3]# make
[root@mail1courier-imap-4.1.3]# make install
[root@mail1courier-imap-4.1.3]# make install-configure
(2) 修改配置文件/usr/local/imap/etc/pop3d及/usr/local/imap/etc/imapd。把 /usr/local/imap/etc/pop3d 文件的行"POP3DSTART=NO"改成"POP3DSTART=YES",再依照这个形式把文件 /usr/local/imap/etc/imapd的行"IMAPDSTART=NO"改成"IMAPDSTART=YES"即可。
(3) 复制文件 courier-imap.sysvinit到目录/usr/local/imap/sbin,以便于启动 imap的守护进程。
[root@mail1courier-imap-4.1.3]# cp courier-imap.sysvinit /usr/local/imap/sbin/imapd
(4) 测试imap服务。
[root@mail1 courier-imap-4.1.3]# /usr/local/imap/sbin/imapd  start
Starting Courier-IMAP server: imap pop3
5> 使用 POP3 over ssl
1)进入目录 /usr/local/imap/share 修改文件mkpop3dcert,将其有效期改成365000 (默认值是 365),修改后的行为:
Usr/bin/openssl req –new –x509 –days 36500 –nodes \
                -config /usr/local/imap/etc/pop3d.conf –out
/usr/local/imap/share/pop3d.pem –keyout
/usr/local/imap/share/pop3d.pem || cleanup
2)执行命令 /usr/local/imap/share/mkpop3dcert.在同一目录生成所需的文件 pop3d.pem
3)执行命令 /usr/local/imap/libexec/pop3d-ssl.rc start, 启动pop3-ssl
4)然后用 netstan –anp | grep 995检查是否在监听。正常情况下会有以下的输出:
Tcp    0       0   :::995     :::*
   LISTEN   2412/couriertcpd
在 postfix所有组件都正常工作以后。把客户端的POP端口由110修改成995,然后收一下,这样就能准确无误地验证SSL功能是否正常工作了。
◆安装courier-maildrop
Maiidrop的作用是本地投递,即把收到的邮件移动到相应的用户目录。在前面配置 postfix的时候,我们已经把与maildrop相关的东西写进文件/etc/postfix/master.cf了,因此这里就不再叙述。前面的步骤我们也提到过pcre 这个软件,它是安装maildrop所必须的,所以需要先安装这个软件(如果系统不存在这个软件的话)。

[root@mail1 courier-imap-4.1.3]# cd
[root@mail1 courier-imap-4.1.3]# tar jxvf pcre-7.2.tar.bz2
[root@mail1 courier-imap-4.1.3]# cd pcre-7.2
[root@mail1 courier-imap-4.1.3]# ./configure
[root@mail1 courier-imap-4.1.3]# make
[root@mail1 courier-imap-4.1.3]# make install
//安装pcre应该是非常容易的事情,片刻之间就可搞定,接下来安装maildrop.在执行配置过程中,需要很多选项,不要疏漏。
[root@mail1 pcre-7.2]# cd
[root@mail1 pcre-7.2]# tar jxvf maildrop-2.5.0.tar.bz2
[root@mail1 pcre-7.2]# cd maildrop-2.5.0
[root@mail1 maildrop-2.5.0]#
 
      首先将 courier-authlib的头文件及库文件链接至/usr目录(编译maildrop时会到此目录下找此些相关的文件):
        ln -sv /usr/local/authlib/bin/courierauthconfig   /usr/bin
        ln -sv /usr/local/authlib/include/*   /usr/include
 
[root@mail1 maildrop-2.5.0]# ./configure  --prefix=/usr/local/maildrop  --enable-
sendmail=/usr/sbin/sendmail --enable-trusted-users='root vmail'  --enable-syslog=1 
--enable-maildirquota  --enable-maildrop-uid=1001  --enable-maildrop-gid=1001  --with
-trashquota --with-dirsync
[root@mail1maildrop-2.0.4]# make
[root@mail1maildrop-2.0.4]# make install
[root@mail1maildrop-2.0.4]# cp /usr/local/maildrop/bin/maildrop /usr/bin
下面的命令简单验证 maildrop

[root@mail1~]# maildrop v
maildrop 2.0.4 Copyright 1998-2005 Double Precision, Inc.
GDBM extensions enabled.
Courier Authentication Library extension enabled.
Maildir quota extension enabled.
This program is distributed under the terms of the GNU General Public
License. See COPYING for additional information.
输出内容一定要有 "Courier Authentication Library extension enabled"这一行。如果没有这个输出,那是非常不幸的事情了,返回去挨个排错吧。那么这个"Courier Authentication Library extension enabled"是怎么一回事呢?这表明maildrop已经和前面我们安装配置的SASL和courier-authlib紧密结合在一起了。
知道 maildrop把邮件移动到哪个用户目录还是非常有必要的,这个操作就是maildrop的日志记录。这里我们创建一个新文件/etc/maildroprc,这个文件就2行内容:

[root@mail1mailbox]# more /etc/maildroprc
logfile "/var/mailbox/maildrop.log" 
to "$HOME/$DEFAULT"      或者 to "$HOME/Maildir" 
的信,

 

很可惜 maidrop没有创建和删除邮件用户目录的能力,在配置postfixadmin时,我们提到需要使用2个shell脚本 /usr/sbin/maildirdel.sh及/usr/sbin/maildirmake.sh,这2个脚本的作用就是用来弥补maildrop不能创建/删除目录这个缺陷的。

[root@mail1 ~]# more /usr/sbin/maildirmake.sh
#!/bin/bash
set -e
if [ ! -d /var/mailbox/$1 ]
then
mkdir /var/mailbox/$1
fi 
chown -R vmail:vmail /var/mailbox/$1
cd "/var/mailbox/$1"
/usr/local/imap/bin/maildirmake $2
mkdir /var/mailbox/$1/$2/Maildir
chown -R vmail:vmail /var/mailbox/$1/$2
 
[root@mail1 ~]# more /usr/sbin/maildirdel.sh
#!/bin/bash
rm -rf /var/mailbox/$1/$2
这 2个脚本由web调用,而web(apache)的执行用户为vmail,出于安全考虑,我们给vmail用户的权限非常有限,为了保证这2个 shell脚本能正常执行,需要使用sudo这个工具来完成这个任务。尽管可以使用vi这样的编辑器来修改/etc/sudoers这个配置文件,但还是不及visudo可靠,因为visudo可以对修改的内容做语法检查,如果更改不正确,保存文件是会给出提示。把行"vmail ALL = NOPASSWD: /usr/sbin/maildirmake.sh , /usr/sbin/maildirdel.sh"追加到文件末尾即可!
有的时候,在 postfixadmin里创建新的邮件帐号,帐号倒是创建成功了,却并没有在指定的位置生成相应的虚拟用户目录,从网上收集的信息来看,这个问题似乎很普遍,我本人也被这个问题困扰过--以vmail 用户手动执行sudo /usr/sbin/maildirdel.sh就能创建目录,用web方式就是不行-实验多次才找出原因,原来是/etc/sudoers里需要把 "Defaults    requiretty"这行注释掉。有人可能要问,你怎么知道要这样做呢?答:我是通过看apache日志知道要这样干的。
安装创建邮件存储目录
[root@mail1 ~]# mkdir -p /var/mailbox/mail.sery.com/postmaster
[root@mail1 ~]# maildirmake /var/mailbox/mail.sery.com /Maildir
[root@mail1 ~]# chown -R vmail:vmail /var/mailbox
 
调式POSTFIX
 
[root@mail1 postfixadmin]# perl -e 'use MIME::Base64;print encode_base64("ggggg\@mail.sery.com")'
Z2dnZ2dAbWFpbC5zZXJ5LmNvbQ==
[root@mail1 postfixadmin]# perl -e 'use MIME::Base64;print encode_base64("123456)'
MTIzNDU2
 
[root@mail1 postfixadmin]# telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 mail1.mail.sery.com ESMTP "Version not Available"
ehlo mail.sery.com
250-mail1.mail.sery.com
250-PIPELINING
250-SIZE 14336000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
auth login
334 VXNlcm5hbWU6
Z2dnZ2dAbWFpbC5zZXJ5LmNvbQ==
334 UGFzc3dvcmQ6
MTIzNDU2
235 2.0.0 Authentication successful
quit
221 2.0.0 Bye
Connection closed by foreign host.
[root@mail1 postfixadmin]#
 
[root@mail1 postfixadmin]# telnet 127.0.0.1 110
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
+OK Hello there.
user ggggg
+OK Password required.
pass 123456
+OK logged in.
quit
+OK Bye-bye.
Connection closed by foreign host.
 
[root@mail1 postfixadmin]# /usr/local/authlib/sbin/authtest -s login ggggg@mail.sery.com 123456
Authentication succeeded.
     Authenticated: ggggg@mail.sery.com  (uid 1001, gid 1001)
    Home Directory: /var/mailbox/
           Maildir: /var/mailbox/mail.sery.com/ggggg/
             Quota: 0S
Encrypted Password: $1$b52655bb$pKOrEujA0eZnhBAuunfhG0
Cleartext Password: 123456
           Options: (none)
 
OK 测试SASL 与POP3 SMTP 成功了
 
认所有服务在系统启动后启动起来
[root@mail1 postfixadmin]# cat /etc/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
######################################
/usr/local/apache/bin/apachectl start
/usr/local/mysql/bin/mysqld_safe --user=mysql &
/usr/local/authlib/sbin/authdaemond start
/usr/local/sbin/saslauthd -a shadow pam
/usr/local/authlib/sbin/courierlogger -pid=/usr/local/authlib/var/spool/authdaemon/pid -start /usr/local/authlib/libexec/courier-authlib/authdaemond
/usr/local/imap/sbin/imapd start
/usr/local/imap/libexec/pop3d-ssl.rc start