CentOS 5.1下 postfix + extmail + dovecot + maildrop 最新版安装笔记 本文最初发表于 http://hi.baidu.com/delphiss/blog/item/38571c94f7a7d50e7af48052.html 转载请注明出处 作者:wdy 安装环境是 CentOS 5.1,分区的时候 对 /var/spool/postfix 和 /var/vmail 进行了单独分区。 /var/spool/postfix 是postfix存储队列的地方, /var/vmail 是用来存储虚拟账号邮件的。 CentOS提供了很方便的yum在线安装,我的基本原则是非重要、对版本不敏感的模块尽量用yum安装,邮件系统主要模块则用源码编译安装。 首先用yum安装的模块有: mysql mysql-server mysql-devel db4-devel openssl gcc libxml2 libxml2-devel gcc-c++ 几个模块都需要用到PCRE, 前面说的 gcc-c++ 是安装PCRE必须的。 下载安装 RCRE: ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.8.tar.gz 先说明一下几个模块的搭配。 MTA 用的是 postfix的最新版本 postfix-2.5.5。 web模块是最先需要确定的,因为它决定了mysql表结构,这里选用国产的extmail,其他的根据extmail的需要倒推来确定。 webmail 使用 extmail-1.0.5 ,web管理模块用 extman-0.2.5 最新版本的extmail对maildrop的自动回复、转发等提供了很好的支持,所以MDA采用最流行的maildrop(2.0.4 ) 这里面简单说一下为什么要用maildrop。 对虚拟用户投递的支持,postfix自带了一个投递代理(MDA):virtual virtual投递代理在 master.cf 里描述为: virtual unix - n n - - virtual 如果我们在main.cf 里 设置 virtual_transport = virtual ,就表示对于包含在 virtual_mailbox_domains 域名里的邮件,都使用virtual进行投递。 postfix自带的virtual只提供了最基本的QUOTA功能,如果想使用更复杂的功能,如自动转发,自动回复,邮件自定义过滤等,就需要换成更高级的MDA。 当然可选择的MDA有很多种,比如 procmail, maildrop 等。我这里选用maildrop。maildrop用户多,出了问题也好找人问。 用户信息存储方式也有很多可选的,比如mysql,ldap等。这里选mysql,原因是各个模块,包括extmail等对这个支持最好最方便最简单。 maildrop 在投递邮件的时候,需要确定一些数据,比如收件用户的Maildir的路径,保存邮件用的uid,gid,邮箱容量等,这些数据需要maildrop的同门师兄 courier-authlib 来提供,所以要先吧courier-authlib装好。 下面要说的是SMTP 的 SASL认证(这个说来话长,有空补上)。postfix的模块化设计在这里也体现出比qmail高明的地方。 postfix 2.3 以后sasl支持三种模块: Cyrus SASL version 1 Cyrus SASL version 2 Dovecot protocol version 1 网上大部分的文章都是讲用 Cyrus SASL 2(并用Cyrus IMAP 提供POP3/IMAP服务),本文采用后起新秀 Dovecot 做为 sasl模块,Dovecot同时提供 POP3/IMAP 服务。 Dovecot使用最新的dovecot-1.1.4 。 开始安装! 下载 postfix-2.5.5.tar.gz postfix安装的是需要指定几个专门的用户和组,先创建 #groupadd -g 2001 postfix #useradd -g postfix -u 1001 -s /sbin/nologin -M postfix #groupadd -g 2002 postdrop #useradd -g postdrop -u 2002 -s /bin/false -M postdrop 编译 #make makefiles CCARGS='-DUSE_SASL_AUTH -DDEF_SERVER_SASL_TYPE=\"dovecot\" \ -DHAS_PCRE -DHAS_MYSQL \ -I/usr/include/ -I/usr/local/include -I/usr/include/mysql/' \ AUXLIBS='-L/usr/local/lib -L/usr/lib/mysql -lmysqlclient -lpcre' #make #make install make install的提问全部回车默认。 注意参数 -DUSE_SASL_AUTH -DDEF_SERVER_SASL_TYPE=\"dovecot\" 表示启用SASL身份认证,并默认使用dovecot。 mysql的几个路径可以根据实际情况做修改,我这里的目录都是yum默认安装的。 先导入mysql表结构和数据。 下载extman-0.2.5.tar.gz 解开后进入 docs目录 建库建表: #mysql -u root -p < extmail.sql (注意extmail.sql里配置的数据库,用户名,口令都是extmail) 导入初始数据: #mysql -u root -p < init.sql (先吧 init.sql 文件里的 extmail.org 改成你自己的域名) 把目录下 mysql_*.cf 全部拷贝至 /etc/postfix # cp mysql_*.cf /etc/postfix/ 下载 dovecot-1.1.4.tar.gz #./configure --prefix=/usr/local/dovecot --sysconfdir=/etc/dovecot --with-sql --with-sql-drivers --with-mysql --with-ssl=openssl #make #make install 注:dovecot的安装参考了javaeye unixboy的文章,版本不同略有改动 配置dovecot.conf #cd /etc/dovecot #cp dovecot-example.conf dovecot.conf #vi dovecot.conf base_dir=/var/run/dovecot protocols=imap imaps pop3 pop3s listen=* disable_plaintext_auth = no ssl_disable = yes mail_location = maildir:/var/vmail/%d/%n/Maildir pop3_uidl_format=%08Xu%08Xv auth default { ... mechanisms = plain login digest-md5 cram-md5 # 去掉注释 passdb sql { args = /etc/dovecot/dovecot-sql.conf } ... # 去掉注释 userdb sql { args = /etc/dovecot/dovecot-sql.conf } ... socket listen { ... client { path = /var/spool/postfix/private/auth mode = 0660 user = postfix group = postfix } } } 配置dovecot-sql.conf #cp dovecot-sql-example.conf dovecot-sql.conf #vi dovecot-sql.conf driver = mysql connect = host=localhost dbname=extmail user=extmail password=extmail # MD5-CRYPT是与extmail兼容的密码保存方式 default_pass_scheme = MD5-CRYPT # dovecot为SASL和POP3等服务提供密码验证的SQL语句 password_query = SELECT username AS user, password AS password \ FROM mailbox WHERE username = '%u' AND active = '1' # dovecot提供POP3/IMAP服务需要的SQL语句 user_query = \ SELECT maildir as home,2001 as uid ,2001 as gid \ FROM mailbox WHERE username='%u' and active='1' 创建符号链接 #ln -s /usr/local/dovecot/sbin/dovecot /usr/bin/dovecot 继续配置 postfix #mv /etc/aliases /etc/aliases.old #ln -s /etc/postfix/aliases /etc/aliases #/usr/bin/newaliases # vi main.cf myhostname = mail.abc.com mydomain = abc.com myorigin = $mydomain mydestination = $myhostname localhost localhost.$mydomain mynetworks = 127.0.0.0/8 inet_interfaces = all #注意这个,表示主机系统用户的邮件投递至用户目录下mbox文件(mailbox格式) home_mailbox = mbox sendmail_path = /usr/sbin/sendmail newaliases_path = /usr/bin/newaliases mailq_path = /usr/bin/mailq setgid_group = postdrop html_directory = no manpage_directory = /usr/local/man sample_directory = /etc/postfix #=====================Vritual Mailbox settings========================= virtual_mailbox_base = /var/vmail/ virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf virtual_alias_domains = virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf virtual_uid_maps = static:2001 virtual_gid_maps = static:2001 virtual_transport = virtual #====================QUOTA======================== message_size_limit = 52428800 mailbox_size_limit = 209715200 virtual_mailbox_limit = 209715200 virtual_create_maildirsize = yes virtual_mailbox_extended = yes virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf virtual_mailbox_limit_override = yes virtual_overquota_bounce = yes #====================SASL ESMTP Authenticat================= smtpd_sasl_auth_enable = yes smtpd_sasl_type = dovecot #smtpd_sasl_path 注意这个是dovecot的sasl路径,与 dovecot.conf 里的对应 smtpd_sasl_path = private/auth broken_sasl_auth_clients = yes smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_invalid_hostname, reject_non_fqdn_hostname, reject_unknown_sender_domain, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unknown_recipient_domain, reject_unauth_pipelining, reject_unauth_destination readme_directory = no command_directory = /usr/sbin daemon_directory = /usr/libexec/postfix queue_directory = /var/spool/postfix mail_owner = postfix data_directory = /var/lib/postfix 启动服务 dovecot postfix start 如果出错,看看 /var/log/maillog 未完待续... |
|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )
GMT+8, 2024-9-30 15:24 , Processed in 0.307163 second(s), 12 queries , Gzip On, MemCache On.
Powered by Discuz! X3.5
© 2001-2023 Discuz! Team.