码迷,mamicode.com
首页 > 其他好文 > 详细

centos下 postfix + extmail + dovecot + maildrop 安装笔记2014更新

时间:2014-10-29 21:32:48      阅读:387      评论:0      收藏:0      [点我收藏+]

标签:centos   postfix   extmail   dovecot   maildrop   

本文最初是2008年发表的,最近几天照此笔记又安装了一遍系统,这里更新一下记录。

作者:wangdy

 

安装环境是CentOS 6.5,拿到服务器的时候只有根目录的分区。邮件准备存储到 /var/mailbox 下。有条件的建议对 /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-develgcc-c++

几个模块都需要用到PCRE

 

先说明一下几个模块的搭配。

MTA 用的是 postfix-2.5.17

web模块是最先需要确定的,因为它决定了mysql表结构,这里选用国产的extmail,其他的根据extmail的需要倒推来确定。

webmail 使用 extmail-1.0.5 web管理模块用extman-0.2.5

最新版本的extmailmaildrop的自动回复、转发等提供了很好的支持,所以MDA采用最流行的maildrop2.5.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

用户信息存储方式也有很多可选的,比如mysql,ldap等。这里选mysql,原因是各个模块,包括extmail等对这个支持最好最方便最简单。

maildrop 在投递邮件的时候,需要确定一些数据,比如收件用户的Maildir的路径,保存邮件用的uidgid,邮箱容量等,这些数据需要maildrop的同门师兄 courier-authlib 来提供,所以要先把courier-authlib装好。

 

下面要说的是SMTP SASL认证。postfix的模块化设计在这里也体现出比qmail良好的地方。

postfix 2.3 以后sasl支持三种模块:

Cyrus SASL version 1 

Cyrus SASL version 2 

Dovecotprotocol version 1

网上大部分的文章都是讲用 Cyrus SASL 2(并用CyrusIMAP 提供POP3/IMAP服务),本文采用后起新秀 Dovecot 做为 sasl模块,Dovecot同时提供 POP3/IMAP 服务。

Dovecot的版本为dovecot-2.0.21

 

开始安装!

如果系统已经安装postfix请先卸载!

下载postfix-2.5.17.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

(如果预先安装的postfix已经创建了用户,也可以直接使用,要用到uid和gid)

 

#groupadd -g 1001 vmail

#useradd -g vmail -u 1001 -s /sbin/nologin

以上创建用了存取邮件的帐号vmail,此帐号很关键,很多涉及存取邮件的地方都要用到!

 

创建邮箱存储目录  /var/mailbox 

#chown vmail:vmail /var/mailbox

#chmod 700 /var/mailbox

 

编译

#makemakefiles 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

#makeinstall

 

注意make参数里加上正确的mysql -I  (头文件所在目录) -L (动态库所在目录)

make install的提问全部回车默认。

(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,可以编辑脚本修改。

extmail.sql里创建的数据库用户 webman 是用在web后台管理的,extmail用在所有其他地方,包括postfix邮件收发,dovecot 帐户验证、邮件收发,webmail里等。

 

导入初始数据:

#mysql-u root -p < init.sql

(可以先吧 init.sql 文件里的extmail.org 改成你自己的域名,或登录web管理后再添加域名)

把目录下 mysql_*.cf 全部拷贝至/etc/postfix

 

# cpmysql_*.cf /etc/postfix/

修改文件里的用户名口令

 

下载 dovecot-2.0.21.tar.gz

#./configure--prefix=/usr/local/dovecot --sysconfdir=/etc --with-sql --with-mysql

#make

#makeinstall

需要 ssl支持可以加上参数 --with-ssl=openssl

 

拷贝  doc/example-config/ 下的 dovecot.conf  /etc/dovecot

 

配置dovecot.conf

 

base_dir=/var/run/dovecot

protocols=imapimaps pop3 pop3s

listen=*

disable_plaintext_auth = no 

ssl_disable = yes 

mail_location= maildir:/var/vmail/%d/%n/Maildir

pop3_uidl_format=%08Xu%08Xv

authdefault {

...

mechanisms= plain login digest-md5 cram-md5

        

# 去掉注释

passdb sql { 

         args = /etc/dovecot/dovecot-sql.conf

}

...

# 去掉注释

userdbsql {

         args = /etc/dovecot/dovecot-sql.conf

}

...

socketlisten {

   ...

   client {

     path = /var/spool/postfix/private/auth

     mode = 0660

     user = postfix

     group = postfix

   }

}

}

 

编辑/etc/dovecot/dovecot-sql.conf

 

driver =mysql

connect =host=localhost dbname=extmail user=extmail password=extmail

default_pass_scheme=MD5-CRYPT

password_query= SELECT password, maildir as userdb_home FROM mailbox WHERE username = ‘%u‘

user_query= select 1001 as uid ,1001 as gid from mailbox where username=‘%u‘ Andactive=‘1‘

 

注意文件里的用户名口令。

password_query pop3 or imap登录的时候执行的,传用户名查密码,邮箱目录

user_query 是查询用户存取邮件用的uidgid的,这里写死了。。

 

创建符号链接

#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

 

编辑  /etc/postfix/main.cf

 

myhostname= mail.abc.com

mydomain= abc.com

myorigin= localhost

mydestination= $myhostname localhost localhost.$mydomain

mynetworks= 127.0.0.0/8

inet_interfaces= all

home_mailbox=  mbox

smtpd_banner= Welcome to ESMTP Server

#relay_domains=

alias_maps=

 

 

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

 

unknown_local_recipient_reject_code= 450

non_fqdn_reject_code= 450

unknown_virtual_alias_reject_code= 450

unknown_virtual_mailbox_reject_code= 450

maps_rbl_reject_code= 450

 

maximal_queue_lifetime= 1

bounce_queue_lifetime= 0

 

 

#=====================VritualMailbox settings=========================

#查询域名的配置

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_transport= maildrop

 

maildrop_destination_recipient_limit=1

 

#====================QUOTA========================

# 设置邮件大小限制和邮箱最大容量

message_size_limit= 500001000 

mailbox_size_limit= 500001000

virtual_mailbox_limit= 209715200

 

#====================SASLESMTP Authenticat=================

# 这里用到了dovecot

smtpd_sasl_auth_enable= yes

smtpd_sasl_type= dovecot

smtpd_sasl_path= private/auth

broken_sasl_auth_clients= yes

smtpd_sasl_local_domain=

smtpd_sasl_security_options= noanonymous

 

#注意第二行起有空格

smtpd_recipient_restrictions=

 permit_sasl_authenticated,

 permit_mynetworks,

 reject_invalid_hostname,

 reject_non_fqdn_hostname,

 reject_non_fqdn_sender,

 reject_non_fqdn_recipient,

 reject_unknown_sender_domain,

 reject_unknown_recipient_domain,

 reject_unauth_pipelining,

 reject_unauth_destination

#check_recipient_access pcre:/etc/postfix/spamd_filter_access

 

#reject_rbl_client sbl.spamhaus.org,

#reject_rbl_client cblless.anti-spam.org.cn,

 

smtpd_sender_restrictions=

 permit_sasl_authenticated,

 permit_mynetworks,

 reject_non_fqdn_sender,

 reject_unknown_sender_domain,

 reject_sender_login_mismatch,

 reject_authenticated_sender_login_mismatch,

 reject_unauthenticated_sender_login_mismatch

 

smtpd_helo_required= yes

smtpd_helo_restrictions=

 permit_sasl_authenticated,

 permit_mynetworks,

 reject_invalid_hostname

 

smtpd_sender_login_maps=

 mysql:/etc/postfix/mysql_virtual_sender_maps.cf,

 mysql:/etc/postfix/mysql_virtual_alias_maps.cf

 

disable_vrfy_command= yes

 

smtpd_client_restrictions=

 permit_mynetworks,

 check_client_access hash:/etc/postfix/access

 

#=====================TLS=========================

#smtptls支持,此处不详述

smtpd_use_tls= yes

smtpd_tls_security_level= may

smtpd_tls_key_file= /etc/postfix/certs/mail.key

smtpd_tls_cert_file= /etc/postfix/certs/mail.crt

smtpd_tls_loglevel= 1

smtpd_tls_session_cache_timeout= 3600s

smtpd_tls_session_cache_database= btree:/var/spool/postfix/smtpd_tls_cache

tls_random_source= dev:/dev/urandom

 

smtpd_sasl_auth_enable= yes

 

 

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服务

#dovecot

 

如果出错,看看 /var/log/dovecot

 

下载  maildrop-2.5.4.tar.gz

 

./configure--enable-sendmail=/usr/sbin/sendmail --enable-trusted-users=‘root vmail‘--enable-syslog=1 --enable-maildirquota --enable-maildrop-uid=1001--enable-maildrop-uid=1001 --with-trashquota --with-dirsync

 

Make& make install

 

/etc/postfix/master.cf 里增加

 

maildrop  unix -       n       n      -       -       pipe

  flags=DRhu user=vmailargv=/usr/local/bin/maildrop -d ${recipient}

 

安装extmailextman

 

extman是邮箱的后台管理web,注意 webman.cf 里的配置:

 

邮箱的根目录:

SYS_MAILDIR_BASE= /var/mailbox 

 

SYS_DEFAULT_UID= 1001

SYS_DEFAULT_GID= 1001

 

SYS_MYSQL_USER= webman

SYS_MYSQL_PASS= webman

 

 

extmail 里的  webmail.cf

 

SYS_MAILDIR_BASE= /var/mailbox

 

祝您成功!

centos下 postfix + extmail + dovecot + maildrop 安装笔记2014更新

标签:centos   postfix   extmail   dovecot   maildrop   

原文地址:http://blog.csdn.net/aryang/article/details/40593283

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!