Postfix+extmail+courier-authlib+msyql邮件服务

133214285.jpg

一、安装DNS服务:

1、配置本地yum

133318529.jpg

133322694.jpg

2、使用本地yum安装DNS软件包。

编辑好本地yum之后,使用yum安装DNS服务所需的软件包。

yum install bind bind-chroot caching-nameserver

133425762.jpg

3、编辑DNS的配置文件

133534586.jpg

133658641.jpg

133853259.jpg

133901138.jpg

133905608.jpg

至此DNS服务已经配置完成。启动DNS服务,service named start。让named服务随系统启动,chkconfig named on

134018155.jpg

因为该服务器是wj.com.域中的邮件交换器,所以要将服务的主机名改为mail.wj.com。修改主机名的方法有两种,一种是临时修改,注销之后再次登录生效,重启失效。使用命令:“hostname主机名另一种是永久修改,需要重启生效,编辑/etc/sysconfig/network文件,修改“HOSTNAME=主机名”。

134102890.jpg

134127914.jpg

DNS解析测试:

134219424.jpg

134248882.jpg

134330692.jpg

二、安装extmail前的准备工作

因为extmail是通过web来进行收发邮件,在线注册,身份验证的,所以需要httpd和mysql,openssl一些软件包。

httpd mysql mysql-server mysql-devel openssl-devel dovecot perl-DBD-MySQL tcl tcl-devel libart_lgpl libart_lgpl-devel

libtool-ltdl libtool-ltdl-devel expect

134427590.jpg

134443349.jpg

主要的软件包是:

dovecot //邮件的接收服务

httpd //利用web来进行收发电子邮件

mysql //mysql客户端

mysql-server //mysql的服务

其它的就是一些依赖的软件包,安装完成后,需要对某些服务进行设置。

①给mysql添加管理员登录口令,以及对其操作的授权。

134606377.jpg

134625853.jpg

三、安装extmail相关软件

134802993.jpg

软件包介绍:

Unix-Syslog-0.100.tar.gz //日志补丁软件包

courier-authlib-0.63.1.20111230.tar.bz //结合mysql进行身份验证

extmail-1.2.tar.gz //实现收发信件

extman-1.1.tar.gz // 实现web注册

postfix-2.8.2.tar.gz //postfix安装包,提供smtp服务


因为使用的是源代码进行安装,安装时需要进行编译,所以系统要具备基本的开发环境,安装圆满了才能够顺利进行。使用:yum grouplist查看系统开发环境所具备的基本组。

134931327.jpg

1、安装postfix

注意在安装postfix之前,要先关闭掉系统自带的sendmail,否则会和postfix的安装冲突。

servic sendmail stop //关闭sendmail服务

chkconfig sendmail off //不随系统启动

① tar -zxvf postfix-2.8.2.tar.gz -C /usr/local/src/

//解压缩postfix压缩包到/usr/local/src目录中

② cd /usr/local/src/postfix-2.8.2

//进入解压缩后的目录中

③ groupadd -g 2525 postfix

//添加一个组,组ID:2525

④ useradd -g postfix -u 2525 -s /sbin/nologin -M postfix

//创建一个无登录权限无家目录的用户postfix到组postfix中

⑤ groupadd -g 2526 postdrop

//添加一个组,组ID:2526

⑥ useradd -g postdrop �Cu 2526 -s /sbin/nologin -M postdrop

//创建一个无登录权限无家目录的用户postdropx到组postdrop中

⑦make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql-DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl -DUSE_TLS ' 'AUXLIBS=-L/usr/lib/mysql-lmysqlclient -lz -lm -L/usr/lib/sasl2 -lsasl2 -lssl -lcrypto'

//生成postfix的make文件

⑧ make //编译

⑨ make install //安装

按照以下的提示输入相关的路径([]号中的是缺省值,”]”后的是输入值,省略的表示采用默认值)


install_root: [/] /

tempdir: [/usr/local/src/ postfix-2.6.5]/tmp

config_directory: [/etc/postfix]

command_directory: [/usr/sbin]

daemon_directory: [/usr/libexec/postfix]

data_directory:[/var/lib/postfix]

html_directory: [no]/var/www/postfix_html

mail_owner: [postfix] //系统中要有postfix这个用户

mailq_path: [/usr/bin/mailq]

manpage_directory: [/usr/local/man]

newaliases_path: [/usr/bin/newaliases]

queue_directory: [/var/spool/postfix]

readme_directory: [no]

sendmail_path: [/usr/sbin/sendmail]

setgid_group: [postdrop] //系统中要有postdrop这个组


⑩ newaliases

//生成别名二进制文件,这个步骤如果忽略,会造成postfix效率极低:

安装好postfix之后,为它编写一个服务控制脚本或者利用rpm包中的postfix中的控制脚本。这里使用的是rpm包中postfix的服务控制脚本来控制源码安装的postfix。

135106146.jpg

135114221.jpg

1、编辑postfix的配置文件。

#vi/etc/postfix/main.cf

修改以下几项为您需要的配置

myhostname= mail.wj.com

mydomain= wj.com

inet_interfaces= all

mydestination= $myhostname, localhost.$mydomain, localhost, $mydomain

mynetworks= 192.168.30.0/24, 127.0.0.0/8

myorigin=$mydomain

说明:

myhostname 参数指定运行postfix邮件系统的主机的主机名,默认情况下,其值被设定为本地机器

名;

mydomain 参数指定您的域名,默认情况下,postfix将myhostname的第一部分删除而作为

mydomain的值;

inet_interfaces 参数指定postfix系统监听的网络接口;

mydestination 参数指定postfix接收邮件时收件人的域名,即您的postfix系统要接收到哪个域名

的邮件;

mynetworks 参数指定你所在的网络的网络地址,postfix系统根据其值来区别用户是远程的还是

本地的,如果是本地网络用户则允许其访问;

myorigin 参数用来指明发件人所在的域名;

注意:

每修改参数及其值后执行 postfix reload 即可令其生效;但若修改了inet_interfaces,则需重新启动postfix;

2、测试postfix

135231278.jpg

四、为postfix开启基于cyrus-sasl的认证功能

1、查看postfix是否支持cyrus-sasl认证。

135309651.jpg

2、产生postfix与sasl结合的文件。

利用sasl与sendmail结合的文件产生sasl与postfix认证的文件

135414201.jpg

启动saslauthd服务:service saslauthd start

3、修改postfix的配置文件,启用sasl认证。

#vim /etc/postfix/main.cf

添加如下内容:

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 //对客户验证的说明

smtpd_sasl_auth_enable= yes //服务器启用认证

smtpd_sasl_local_domain= $myhostname //认证的主机

smtpd_sasl_security_options= noanonymous //拒绝非认证登录

smtpd_banner= Welcome to our $myhostname ESMTP,Warning: Version not Available! //登录时的提示信息

135508399.jpg

4、重新加载配置文件:service postfix reload

135612948.jpg

五、安装Courier authentication library

1、安装

①tar -jxvfcourier-authlib-0.63.1.20111230.tar.bz2 -C/usr/local/src/

//解压缩courier-authlib压缩包

② cd /usr/local/src/courier-authlib-0.63.1.20111230/

//进入解压缩后的文件中

③ ./configure \

--prefix=/usr/local/courier-authlib\

--sysconfdir=/etc\

--with-authmysql \

--with-mysql-libs=/usr/lib/mysql \

--with-mysql-includes=/usr/include/mysql \

--with-redhat \

--with-authmysqlrc=/etc/authmysqlrc \

--with-authdaemonrc=/etc/authdaemonrc\

--with-ltdl-lib=/usr/lib \

--with-ltdl-include=/usr/include

//对环境进行配置,红色参数至关重要,要确保路径的正确性。

④ make //编译

⑤ make install //安装

2、共享库文件以及头文件

为了使其它程序能够查找到courier-authlib的库文件和头文件,需要将它的这些文件共享到系统的库文件和头文件中.

①共享库文件

在/etc/ld.so.conf.d/目录中创建一个文件:courier-authlib.conf

#touch /etc/ld.so.conf.d/courier-authlib.conf

内容是:courier-authlib的库文件的路径:/usr/local/courier-authlib/lib/courier-authlib/

135646951.jpg

②共享头文件

ln -s/usr/local/courier-authlib/include /usr/include/courier-authlib

//创建一个连接,将courier-authlib的头文件链接到系统的库文件目录中

1、修改文件的权限

chmod755 /usr/local/courier-authlib/var/spool/authdaemon

135837356.jpg

1、修改认证模块文件和mysql结合文件

#cp /etc/authdaemonrc.dist /etc/authdaemonrc

#cp /etc/authmysqlrc.dist /etc/authmysqlrc

① 修改/etc/authdaemonrc文件

140027823.jpg

② 修改/etc/authmysqlrc

编辑/etc/authmysqlrc 为以下内容,其中2525,2525 为postfix 用户的UID和GID。

MYSQL_SERVERlocalhost

MYSQL_PORT3306 (指定mysql监听的端口,这里使用默认的3306)

MYSQL_USERNAME extmail (这时为后文要用的数据库的所有者的用户名)

MYSQL_PASSWORDextmail (密码)

MYSQL_SOCKET /var/lib/mysql/mysql.sock (msyql的sock文件路径)

MYSQL_DATABASE extmail (访问extmail的数据库)

MYSQL_USER_TABLE mailbox (存放extmail用户的表)

MYSQL_CRYPT_PWFIELD password (对passwo字段加密)

MYSQL_UID_FIELD '2525' (extmail用户文件的用户ID)

MYSQL_GID_FIELD '2525' (extmail用户文件的组ID)

MYSQL_LOGIN_FIELD username (登录时的字段名username)

MYSQL_HOME_FIELD concat('/var/mailbox/',homedir) (用户的家目录)

MYSQL_NAME_FIELD name (用户名字段name)

MYSQL_MAILDIR_FIELD concat('/var/mailbox/',maildir) (用户邮件目录)

1、产生courier-authlib的服务控制脚本

#cd /usr/local/src/courier-authlib-0.63.1.20111230/

#cp courier-authlib.sysvinit /etc/init.d/courier-authlib

#chmod 755 /etc/init.d/courier-authlib

#chkconfig --add courier-authlib

#chkconfig --level 2345 courier-authlib on

#service courier-authlib start (启动服务)

140154380.jpg

1、创建extmail用户的虚拟家目录

新建虚拟用户邮箱所在的目录,并将其权限赋予postfix用户:

#mkdir-pv /var/mailbox

#chown�CR postfix:postfix /var/mailbox

140238548.jpg

1、cyrus-sasl与courier-authlib结合

接下来重新配置SMTP 认证,编辑 /usr/local/lib/sasl2/smtpd.conf ,确保其为以下内容:

pwcheck_method:authdaemond

log_level:3

mech_list:PLAINLOGIN

authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket

140326612.jpg

然后重启saslauthd服务:service saslauthd restart

140438615.jpg

六、安装extman及其相关配置

让postfix支持虚拟域和虚拟用户

1、编辑/etc/postfix/main.cf,添加如下内容:

########################VirtualMailbox Settings########################

virtual_mailbox_base= /var/mailbox

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:2525

virtual_gid_maps= static:2525

virtual_transport= virtual

maildrop_destination_recipient_limit= 1

maildrop_destination_concurrency_limit= 1

##########################QUOTASettings########################

message_size_limit= 14336000

virtual_mailbox_limit= 20971520

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_maildir_limit_message= Sorry, the user's maildir has overdrawn his diskspace quota, please Tidy yourmailbox and try again later.

virtual_overquota_bounce= yes

140621437.jpg

2、安装extman

① tar -zxvf extman-1.1.tar.gz

//解压缩extman软件包到当前目录

② 使用extman源码目录下docs目录中的extmail.sql和init.sql建立数据库:

# cd extman-1.1/docs

-------------------------------------------------------------------------------------------------------------

# mysql -u root -p<extmail.sql

# mysql -u root -p<init.sql

# mysql -u root -p 进行验证

140811607.jpg

140823327.jpg

③ 授予用户extmail访问extmail数据库的权限

mysql> GRANT allprivileges on extmail.* TO extmail@localhost IDENTIFIED BY 'extmail';

mysql> GRANT allprivileges on extmail.* TO [email protected] IDENTIFIED BY 'extmail';

mysql>FLUSHPRIVILEGES; 让设置的内容生效

cp mysql_virtual_* /etc/postfix/

//将extman-1.0.1/docs目录中的mysql开头的文件拷贝到/etc/postfix,设置虚拟域文件

141040206.jpg

service postfix restart

七、配置dovecot

1、在开始我们使用的是yum来安装dovecot,这里只需要对其进行配置

# vi /etc/dovecot.conf

要修改的内容如下:

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

141137697.jpg

141206137.jpg

auth default {

mechanisms = plain

passdb sql {

args = /etc/dovecot-mysql.conf

}

userdb sql {

args = /etc/dovecot-mysql.conf

}

141308415.jpg

141312848.jpg

2、产生dovecot与mysql结合的文件

首先要修改postf的配置文件:

# vim /etc/postfix/main.cf

141441402.jpg

# vim /etc/dovecot-mysql.conf //产生一个文件,内容如下:

driver= mysql

connect= host=localhost dbname=extmail user=extmail password=extmail (如mysql源码安装,host=/tmp/mysql.sock)

default_pass_scheme= CRYPT

password_query= SELECT username AS user,password AS password FROM mailbox WHERE username ='%u'

user_query= SELECT maildir, uidnumber AS uid, gidnumber AS gid FROM mailbox WHEREusername = '%u'

141553489.jpg

重启dovecot服务:service dovecot restart 。

141620463.jpg

监控日志,tail -f /var/log/maillog/ 出现如下信息说明正常:

141654474.jpg

八、安装Extmail (首先要确保安装了httpd)

1、安装

① # tar -zxvfextmail-1.2.tar.gz

//解压缩到当前目录

② # mkdir -pv /var/www/extsuite

//创建一个目录,用来作为一个web站点

# mv extmail-1.2/var/www/extsuite/extmail

# mv extman-1.1/var/www/extsuite/extman

//将extmail和extman拷贝到新建的站点目录下,以便通过web访问。

141812907.jpg③ 修改extmail目录下的cgi目录下文件的属性

141919971.jpg

④ 修改主配置文件

# cd /var/www/extsuite/extmail/

# cp webmail.cf.default webmail.cf

# vim webmail.cf

部分修改选项的说明:

------------------------------------------------------------------

SYS_MESSAGE_SIZE_LIMIT =5242880

用户可以发送的最大邮件


SYS_USER_LANG = en_US

语言选项,可改作:

SYS_USER_LANG = zh_CN

142045794.jpg

SYS_MAILDIR_BASE =/home/domains

此处即为您在前文所设置的用户邮件的存放目录,可改作:

SYS_MAILDIR_BASE =/var/mailbox

142133628.jpg

SYS_MYSQL_USER = db_user

SYS_MYSQL_PASS = db_pass

以上两句句用来设置连接数据库服务器所使用用户名、密码和邮件服务器用到的数据库,这里修改为:

SYS_MYSQL_USER = extmail

SYS_MYSQL_PASS = extmail

142215627.jpg

SYS_MYSQL_HOST = localhost

指明数据库服务器主机名,这里默认即可


SYS_MYSQL_TABLE = mailbox

SYS_MYSQL_ATTR_USERNAME =username

SYS_MYSQL_ATTR_DOMAIN =domain

SYS_MYSQL_ATTR_PASSWD =password

以上用来指定验正用户登录里所用到的表,以及用户名、域名和用户密码分别对应的表中列的名称;这里默认即可


SYS_AUTHLIB_SOCKET =/var/spool/authdaemon/socket

此句用来指明authdaemo socket文件的位置,这里修改为:

SYS_AUTHLIB_SOCKET =

usr/local/courier-authlib/var/spool/authdaemon/socket

142305896.jpg

⑤ 重启相关服务

142340749.jpg

九、配置httpd

由于extmail要进行本地邮件的投递操作,故必须将运行apache服务器用户的身份修改为您的邮件投递代理的用户;本例中打开了apache服务器的suexec功能,故使用以下方法来实现虚拟主机运行身份的指定。此例中的MDA为postfix自带,因此将指定为postfix用户:


如果您没有打开apache服务器的suexec功能,也可以使用以下方法解决:

# vi /etc/httpd/httpd.conf

User postfix

Group postfix


<VirtualHost *:80>

ServerName mail.wj.com

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

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

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

</VirtualHost>

十、安装extamil日志补丁

extmail将会用到perl的Unix::syslogd功能,您可以去http://search.cpan.org搜索下载原码包进行安装。

① # tar -zxvf Unix-Syslog-0.100.tar.gz

//解压缩文件

② # cd Unix-Syslog-0.100

# perl Makefile.PL //使用perl工具进行配置

# make //编译

# make install //安装

十一、extmail与extman结合

修改配置文件以符合本例的需要:

# cd /var/www/extsuite/extman

# chown -R postfix:postfix cgi/

# cp webman.cf.default webman.cf

# vi webman.cf

修改内容如下:

----------------------------------------------------------------

SYS_MAILDIR_BASE = /home/domains

此处即为您在前文所设置的用户邮件的存放目录,可改作:

SYS_MAILDIR_BASE = /var/mailbox


修改

SYS_CAPTCHA_ON = 1 为 SYS_CAPTCHA_ON= 0


修改

SYS_LANG = en_US 为 SYS_LANG = zh_CN

③ 通过web访问extman的目录

在apache的主配置文件中Extmail的虚拟主机部分,添加如下两行:

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

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

142453475.jpg

重启httpd服务:servicehttpd restart

④创建其运行时所需的临时目录,并修改其相应的权限:

#mkdir -pv /tmp/extman

#chown postfix.postfix /tmp/extman

⑤ 使用虚拟域

在postfix主配置文件中的mydestination选项中,我们指明了哪些域是本地的域,但是在extmail中,我们使用了虚拟域,为了产生冲突,需要禁用到postfix中的mydestination选项,如果不禁用,那在设置邮箱域时,必须和postfix中指明的相同。

142532726.jpg

十二、测试

好了,到此为止,重新启动apache服务器后,您的Webmail和Extman已经可以使用了,可以在浏览器中输入指定的虚拟主机的名称进行访问,如下:

http://mail.wj.com

142637314.jpg

选择管理即可登入extman进行后台管理了。默认管理帐号为:[email protected] 密码为:extmail*123*。首先应该添加一些域名。

142724476.jpg

142728672.jpg

142731473.jpg

说明:

(1) 以上所有源码软件包和数据文件下载地址:http://yunpan.cn/QGbVCAncIZyiS

(2) 添加域名后,如果无法自由注册,请重新编辑该域的属性,允许自由注册。

(3) 如果您安装后无法正常显示校验码,安装perl-GD模块会解决这个问题。如果想简单,您可以到以下地址下载适合您的平台的rpm包,安装即可: http://dries.ulyssis.org/rpm/packages/perl-GD/info.html

(4) extman-1.1自带了图形化显示日志的功能;此功能需要rrdtool的支持,您需要安装此些模块才可能正常显示图形日志。

(5)如果登陆http://ip/extmail后出现:

DBIconnect(‘database=extmail;host=localhost;mysql_socket=/var/lib/mysql/mysql.sock’,'extmail’,…)failed: Access denied for user ‘extmail’@'localhost’ (using password: YES) at/opt/test/htdocs/extsuite/extmail/libs/Ext/Auth/MySQL.pm line 45

检查webmail.cf中于数据库连接的设置是否正确,以及authmysqlrc的数据库设置是否正确即可


本文出自 “人生在勤,不索何获” 博客,谢绝转载!

你可能感兴趣的:(ExtMail)