欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

CentOS5.6+postfix+extmail 安装配置

shiping1 的头像

CentOS5.6+postfix+extmail 安装配置  

2011-05-14 00:34:02|  分类: 默认分类|举报|字号 订阅

下载LOFTER客户端
 
 

操作系统

CentOS 5.6

CentOSRHEL是一样的,而且升级免费

邮件传输代理(MTA

Postfix 2.6.2

最新 邮件系统主程序

WebMail 系统

Extmail 1.1.0

支持多语言、全部模板化,功能基本齐全

Web 账户管理后台

Extman 1.0.0

支持无限域名、无限用户

邮件投递代理(MDA

maildrop 2.0.4

支持过滤和强大的功能

其它数据认证库

courier-authlib 0.62..2

负责courier-imap,maildrop 的认证

SMTP 认证库

cyrus-sasl 2.1.22

标准的SASL实现库,支持courier authlib

POP3 认证库

courier-imap 4.5.0

Pop3 ,IMAP 认证功能

 

 

一、安装前准备

1.安装时加上mysql server ,其它以默认安装(如果安装时忘记安装mysql,可以运行 yum install mysql-server 来安装);

2.关闭防火墙;

3.关闭SELINUX

4.删除系统原来安好的sendmail  # rpm -e --nodeps sendmail sendmail-cf

5.vi 使用高亮 # vi ~/.bashrc 中在alias下面另上一行 alias vi='vim' 后重启(这一步可有可无)

6.建立EMOS1.5 YUM

# vi /etc/yum.repos.d/EMOS-Base.repo  #建立EMOS的库

 

 

# EMOS-Base.repo

#

# Created by ExtMail Dev Team: http://www.extmail.org/

#

# $Id$

 

[EMOS-base]

name=EMOS-Base

baseurl=http://mirror.extmail.org/yum/emos/1.5/os/$basearch/

gpgcheck=0

priority=0

protect=0

 

[EMOS-update]

name=EMOS-Updates

baseurl=http://mirror.extmail.org/yum/emos/1.5/updates/$basearch/

gpgcheck=0

priority=0

protect=0

 

 

 

# yum clean all 保存退出后清空原来的记录

 

 

二、配置MTApostfix

# yum install postfix #安装postfix 

 

# postconf -n >/etc/postfix/main2.cf

# mv /etc/postfix/main.cf /etc/postfix/main.cf.bak

# mv /etc/postfix/main2.cf /etc/postfix/main.cf

 

# vi /etc/postfix/main.cf #修改main.cf 配置文件

增加以下内容

 

# hostname

mynetworks = 127.0.0.1

myhostname = mail.rookie.com

mydestination = $mynetworks $myhostname

 

# banner

mail_name = Postfix - by extmail.org

smtpd_banner = $myhostname ESMTP $mail_name

 

# response immediately

smtpd_error_sleep_time = 0s

 

# Message and return code control

message_size_limit = 5242880

mailbox_size_limit = 5242880

show_user_unknown_table_name = no

 

# Queue lifetime control

bounce_queue_lifetime = 1d

maximal_queue_lifetime = 1d

 

 

 

 

三、配置courier-authlib

# yum install courier-authlib courier-authlib-mysql

 

修改authlib 配置文件

 

# rm -f /etc/authlib/authmysqlrc

# vi /etc/authlib/authmysqlrc

 

 

MYSQL_SERVER            localhost

MYSQL_USERNAME          extmail

MYSQL_PASSWORD          extmail

MYSQL_SOCKET            /var/lib/mysql/mysql.sock

MYSQL_PORT              3306

MYSQL_OPT               0

MYSQL_DATABASE          extmail

MYSQL_USER_TABLE        mailbox

MYSQL_CRYPT_PWFIELD     password

MYSQL_UID_FIELD         uidnumber

MYSQL_GID_FIELD         gidnumber

MYSQL_LOGIN_FIELD       username

MYSQL_HOME_FIELD        homedir

MYSQL_NAME_FIELD        name

MYSQL_MAILDIR_FIELD     maildir

MYSQL_QUOTA_FIELD       quota

MYSQL_SELECT_CLAUSE     SELECT username,password,"",uidnumber,gidnumber,\

                        CONCAT('/home/domains/',homedir),               \

                        CONCAT('/home/domains/',maildir),               \

                        quota,                                          \

                        name                                            \

                        FROM mailbox                                    \

                        WHERE username = '$(local_part)@$(domain)'

 

 

 

修改authmysqlrc 的权限和拥有者

# chown daemon.daemon /etc/authlib/authmysqlrc

# chmod 660 /etc/authlib/authmysqlrc

 

修改authdaemonrc 以下内容

 

authmodulelist="authmysql"

authmodulelistorig="authmysql"

 

 

启动

# service courier-authlib start

Starting Courier authentication services: authdaemond

 

修改authdaemon socket 目录权限,否则以下面的测试SMTP认证就不能通过

# chmod 755 /var/spool/authdaemon/

 

 

四、配置maildrop

# yum install maildrop

 

配置master.cf 为了使Postfix支持Maildrop,必须修改/etc/postfix/master.cf文件,注释掉原来的maildrop的配置内容,并改为:

 

maildrop   unix        -       n        n        -        -        pipe

  flags=DRhu user=vuser argv=maildrop -w 90 -d ${user}@${nexthop} ${recipient} ${user} ${extension} {nexthop}

 

 

 

配置main.cf 由于maildrop不支持一次接收多个收件人,因此必须在/etc/postfix/main.cf里增加如下参数:

 

maildrop_destination_recipient_limit = 1

 

 

 

测试maildropauthlib支持

# maildrop -v

 

注意事项: 

 

1、如需重新编译Maildrop软件包,必须先获得其源码rpm包,并且必须先行安装courier-authlib及其devel软件包,否则编译后的maildrop将无法打开authlib支持。 

 

2、maildrop RPM包安装时,会自动创建vuser用户及vgroup用户组,专门用于邮件的存储,vuser:vgroup的uid/gid都是1000,这与一般的邮件文档中提及用postfix用户存邮件不一样。因为postfix用户的uid一般都低于500,而Suexec模块编译时对UID/GID的要求是要大于500,因此使用postfix用户不能满足要求。其次,如果用Maildrop作为投递代理(MDA),以postfix身份投递的话,会导致postfix MTA错误。

 

 

五、配置apache

修改apache配置文件

# vi /etc/httpd/conf/httpd.conf

在最后一行加上

 

    NameVirtualHost *:80

    Include conf/vhost_*.conf

 

 

 

新建vhost_extmail.conf

# vi /etc/httpd/conf/vhost_extmail.conf

 

# VirtualHost for ExtMail Solution

<VirtualHost *:80>

ServerName mail.rookie.com

DocumentRoot /var/www/extsuite/extmail/html/

 

ScriptAlias /extmail/cgi/ /var/www/extsuite/extmail/cgi/

Alias /extmail /var/www/extsuite/extmail/html/

 

ScriptAlias /extman/cgi/ /var/www/extsuite/extman/cgi/

Alias /extman /var/www/extsuite/extman/html/

 

# Suexec config

SuexecUserGroup vuser vgroup

    </VirtualHost>

 

 

 

设置apache开机启动

# chkconfig httpd on

 

 

六、配置 extmail+extman

安装extmail extman 自己安装的时候需要yum -y install perl-Unix-Syslog

# yum install extsuite-webmail extsuite-webman

 

# cp /var/www/extsuite/extmail/webmail.cf.default /var/www/extsuite/extmail/webmail.cf

# vi /var/www/extsuite/extmail/webmail.cf

修改以下两项

 

SYS_MYSQL_USER = extmail

    SYS_MYSQL_PASS = extmail

 

 

 

更新cgi目录权限 由于SuEXEC的需要,必须将cgi目录修改成vuser:vgroup权限:

# chown -R vuser:vgroup /var/www/extsuite/extmail/cgi/

# chown -R vuser:vgroup /var/www/extsuite/extman/cgi/

 

链接基本库到Extmail

# mkdir /tmp/extman

# chown -R vuser:vgroup /tmp/extman/

由于RedHat发行版中包含了一个叫tmpwatch的工具,该工具会定期扫描/tmp/下的文件,如果这些文件很久都没被使用,将被删除,因此如果后台长期不使用,/tmp/extman目录有可能被tmpwatch删除,所以要么定期登陆后台,要么修改 webman.cf将临时目录修改到另一个地方。此处暂以/tmp/extman默认值为例。

 

数据库库初始化

# service mysqld start

设置开机启动

# chkconfig mysqld on

导入数据且初始化(默认的mysql都没有密码的,所以以下命令都不需要认证密码)

# vi /var/www/extsuite/extman/docs/init.sql

把里面所有 extmail.org 的改为 rookie.com

# mysql </var/www/extsuite/extman/docs/extmail.sql

# mysql </var/www/extsuite/extman/docs/init.sql

上述导入初始化SQL时,默认的uidnumber/gidnumber都是1000,这和vuser:vgroup 的uid/gid一致,是因为maildrop投递时会从数据库里取uidnumber/gidnumber,而在master.cf里已经定义好了投递时的运行身份(vuser:vgroup),所以这两个字段的内容必须为1000,否则将出现投递错误,例如报0×06等错误。

 

设置虚拟域和虚拟用户的配置文件

# cp /var/www/extsuite/extman/docs/mysql_virtual_alias_maps.cf /etc/postfix/

# cp /var/www/extsuite/extman/docs/mysql_virtual_domains_maps.cf /etc/postfix/

# cp /var/www/extsuite/extman/docs/mysql_virtual_mailbox_maps.cf /etc/postfix/

# cp /var/www/extsuite/extman/docs/mysql_virtual_sender_maps.cf /etc/postfix/

 

# vi /etc/postfix/main.cf

增加以下内容

 

# extmail config here

virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf

virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf

    virtual_transport = maildrop:

 

 

 

重启postfix 

# service postfix restart

 

测试authlib

# /usr/sbin/authtest -s login postmaster@rookie.com extmail

如输出以下结果证明extman 正确安装,数据库也正确导入,courier-authlib 正确连接mysql数据库

 

Authentication succeeded.

 

     Authenticated: postmaster@rookie.com  (uid 1000, gid 1000)

    Home Directory: /home/domains/rookie.com/postmaster

           Maildir: /home/domains/rookie.com/postmaster/Maildir/

             Quota: 104857600S

Encrypted Password: $1$phz1mRrj$3ok6BjeaoJYWDBsEPZb5C0

Cleartext Password: extmail

           Options: (none)

 

 

 

配置图形化日志

# /usr/local/mailgraph_ext/mailgraph-init start

启动cmdserver(在后台显示系统信息

# /var/www/extsuite/extman/daemon/cmdserver --daemon

加入开机自启动

# echo "/usr/local/mailgraph_ext/mailgraph-init start" >> /etc/rc.d/rc.local

# echo "/var/www/extsuite/extman/daemon/cmdserver -v -d" >> /etc/rc.d/rc.local

 

注:

Extmail url: http://ip/extmail

Extman url: http://ip/extman

 

Extman 管理员用户名:root@rookie.com

     管理员默认密码: extmail*123*

Extmail 登录时,域名项应改为 rookie.com

 

 

七、配置cyrus-sasl

删除系统自带的

# rpm -e --nodeps cyrus-sasl

rpm -qa |grep cyrus-sasl |xargs rpm -e --nodeps

安装EMOS1.5里的

# yum install cyrus-sasl

修改postfix 配置文件

# vi /etc/postfix/main.cf

增加以下内容

 

 

# smtpd related config

smtpd_recipient_restrictions =        permit_mynetworks,        permit_sasl_authenticated,        reject_non_fqdn_hostname,        reject_non_fqdn_sender,        reject_non_fqdn_recipient,        reject_unauth_destination,        reject_unauth_pipelining,        reject_invalid_hostname,

 

# SMTP sender login matching config

smtpd_sender_restrictions =        permit_mynetworks,        reject_sender_login_mismatch,        reject_authenticated_sender_login_mismatch,        reject_unauthenticated_sender_login_mismatch

 

smtpd_sender_login_maps =        mysql:/etc/postfix/mysql_virtual_sender_maps.cf,        mysql:/etc/postfix/mysql_virtual_alias_maps.cf

 

# SMTP AUTH config here

broken_sasl_auth_clients = yes

smtpd_sasl_auth_enable = yes

smtpd_sasl_local_domain = $myhostname

smtpd_sasl_security_options = noanonymous

 

 

 

配置smtpd.conf

# vi /usr/lib/sasl2/smtpd.conf

清空后改为以下内容

 

pwcheck_method: authdaemond

log_level: 3

mech_list: PLAIN LOGIN

    authdaemond_path:/var/spool/authdaemon/socket

 

 

 

重启postfix后测试SMTP认证

# service postfix restart

 

通过以下命令获得postmaster@extmail.org的用户名及密码的BASE64编码:

# perl -e 'use MIME::Base64; print encode_base64("postmaster\@rookie.com"

)'

结果:

cG9zdG1hc3RlckByb29raWUuY29t

 

# perl -e 'use MIME::Base64; print encode_base64("extmail")'

结果:

ZXh0bWFpbA==

 

开始测试

# telnet localhost 25

 

Trying 127.0.0.1...

Connected to localhost.localdomain (127.0.0.1).

Escape character is '^]'.

220 mail.rookie.com ESMTP Postfix - by extmail.org

ehlo demo.domain.tld <<输入内容

250-mail.rookie.com

250-PIPELINING

250-SIZE 5242880

250-VRFY

250-ETRN

250-AUTH LOGIN PLAIN

250-AUTH=LOGIN PLAIN

250-ENHANCEDSTATUSCODES

250-8BITMIME

250 DSN

auth login <<输入内容

334 VXNlcm5hbWU6

cG9zdG1hc3RlckByb29raWUuY29t <<输入内容

334 UGFzc3dvcmQ6

ZXh0bWFpbA== <<输入内容

235 2.7.0 Authentication successful ##显示这个说明认证成功

Quit <<输入内容

221 2.0.0 Bye

Connection closed by foreign host.

 

 

 

 

八、配置courier-imap

默认的courier-authlibcourier-imap都会增加系统自启动设置,因此下一次服务器启动将自动启动相应的authlibPOP3服务

# yum install courier-imap

 

由于Courier-imapIMAP目录是按UTF-7编码的,ExtMail目前还没有正式支持IMAP目录,因此需要屏蔽IMAP,只提供pop3服务。而就目前的使用情况来看,IMAP使用的非常少,绝大部分OutLook/Foxmail用户都习惯使用POP3而非IMAP

# vi /usr/lib/courier-imap/etc/imapd

修改以下内容

 

    IMAPDSTART=NO

 

 

 

# vi /usr/lib/courier-imap/etc/imapd-ssl

修改以下内容

 

    IMAPDSSLSTART=NO

 

 

 

启动courier-imap ,测试pop3(先登录extman 新建一个邮件用户,如用户名为staff1,密码为staff1)

# service courier-imap start

# telnet localhost 110

 

Trying 127.0.0.1...

Connected to localhost.localdomain (127.0.0.1).

Escape character is '^]'.

+OK Hello there.

user staff1@rookie.com <<输入内容

+OK Password required.

pass staff1 <<输入内容

+OK logged in.

list <<输入内容

+OK POP3 clients that break here, they violate STD53.

.

Quit <<输入内容

+OK Bye-bye.

Connection closed by foreign host.

 

 

 

 

OK,SMTPPOP3的认证都通过,就意谓着邮件服务器能正常收发了,也就是邮件服务器能正常使用了~YEAH~~~~ 如需要添加杀毒Clamav、查毒amavisd-new、邮件过滤DSpam 的,可以继续看下一篇教程也可以到

http://wiki.extmail.org/extmail_solution_for_linux_centos-5

继续其他配置

来自  
http://zs0760.blog.163.com/blog/static/16519525120114140342139/


普通分类: