热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

安装Postfix+Dovecot+SquirrelMail+Extmail+Extman+SpamAssassin

本人历时20个小时,终于登上邮件服务的第十八重天!其中出现很多问题,但是想办法还是解决了!Linux下mail服务器架构之源码实现postfix全功能电子邮件(未完,待续.......)第一重天、安装前的准备工作:[root@junjie~]#uname?r#查看Linux的环境2.

本人历时20个小时,终于登上邮件服务的第十八重天!其中出现很多问题,但是想办法还是解决了!

Linux下mail服务器架构之

源码实现postfix全功能电子邮件

(未完,待续.......)

第一重天、安装前的准备工作:

[root@junjie ~]# uname ?r #查看Linux的环境

2.6.25.19

准备:关闭firewall和SELinux(略)

1.准备:下载以下软件(这里我将包放在/root/mail/和/root/lamp/下了)

软件包免费下载地址:http://down.51cto.com/data/371439

httpd-2.2.9.tar.gz

mysql-5.0.95.tar.gz

php-5.4.0.tar.bz2

DBD-mysql-4.020.tar.gz

DBI-1.616.tar.gz

File-Tail-0.99.3.tar.gz

GD-2.46.tar.gz

MailScanner-4.84.3-1.rpm.tar.gz

Unix-Syslog-1.1.tar.gz

courier-authlib-0.62.4.tar.bz2

dovecot-1.1.4.tar.gz

extmail-1.2.tar.gz

extman-1.1.tar.gz

fp-Linux-i686-ws.tar.gz

postfix-2.8.2.tar.gz

rrdtool-1.2.23-3.el5.i386.rpm

rrdtool-perl-1.2.23-3.el5.i386.rpm

squirrelmail-webmail-1.4.22.tar.gz

squirrelmail-webmail-1.4.22.tar.gz

2.#修改ip地址为192.168.101.210,修改dns指向为192.168.101.210

[root@junjie ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

NETMASK=255.255.255.0

IPADDR=192.168.101.210

[root@junjie ~]# service network restart

[root@junjie ~]# vim /etc/resolv.conf

nameserver 192.168.101.210

3、安装以下开发所用到的rpm包组:

Development Libraries

Development Tools

Legacy Software Development

X Software Development

#安装方法: yum groupinstall "packge_group_name"

4.构建本地yum服务器(略)

5.安装配置dns服务器:

[root@junjie ~]# yum install -y bind bind-chroot caching-nameserver

[root@junjie ~]# cd /var/named/chroot/etc/

[root@junjie etc]# cp ?p named.caching-nameserver.conf named.conf

[root@junjie etc]# vim named.conf

15 listen-on port 53 { any; };

27 allow-query { any; };

28 allow-query-cache { any; };

37 match-clients { any; };

38 match-destinations { any; };

[root@junjie etc]# vim named.rfc1912.zones

20 zone "junjie.com" IN {

21 type master;

22 file "junjie.com.db";

23 allow-update { none; };

24 };

37 zone "101.168.192.in-addr.arpa" IN {

38 type master;

39 file "192.168.101.db";

40 allow-update { none; };

41 };

[root@junjie etc]# cd ../var/named/

[root@junjie named]# cp -p localhost.zone junjie.com.db

[root@junjie named]# vim junjie.com.db

2 @ IN SOA ns.junjie.com. root (

9 @ IN NS ns.junjie.com.

10 ns IN A 192.168.101.210

11 mail IN A 192.168.101.210

12 pop3 IN CNAME mail

13 smtp IN CNAME mail

14 @ IN MX 10 mail

[root@junjie named]# cp -p named.local 192.168.101.db

[root@junjie named]# vim 192.168.101.db

210 IN PTR mail.junjie.com.

[root@junjie named]# chkconfig named on

[root@junjie named]# service named start

[root@junjie named]# rndc reload

server reload successful

#查看dns解析是否正常

[root@junjie named]# nslookup pop3.junjie.com

[root@junjie named]# nslookup mail.junjie.com

[root@junjie named]# dig -t mx junjie.com

[root@junjie named]# nslookup 192.168.101.210

6.修改主机名称,并重新启动系统,重启后挂载光盘

[root@junjie named]# vim /etc/sysconfig/network

HOSTNAME=mail.junjie.com

[root@junjie named]# init 6

[root@mail ~]# mount /dev/cdrom /mnt/cdrom/

第二重天 LAMP平台结构,源码构建LAMP环境

[root@mail ~]# cd lamp/

[root@mail lamp]# ls

httpd-2.2.9.tar.gz

mysql-5.0.95.tar.gz

php-5.4.0.tar.bz2

2.1安装apache软件:

[root@mail lamp]# tar -zxvf httpd-2.2.9.tar.gz -C /usr/local/src/

[root@mail lamp]#cd /usr/local/src/httpd-2.2.9/

[root@mail httpd-2.2.9]# ./configure

--prefix=/usr/local/apache2 --enable-so --enable-rewrite

[root@mail httpd-2.2.9]# make && make install

#这里我们并没有将Suexec编译进apache中去,提到这个的原因

#是因为后面我们装postfix时候的后台管理extman是通过CGI的

#方式来调用程序的,如果不启用Suexec的话那么就会限制其他

#用户调用CGI程序,但考虑到启用Suexec的风险我们在此

#就不启用它了。

#(启用方式:--enable-suexec ?with-suexec-caller=daemon

#?with-suexec-docroot=/usr/local/apache2/htdocs)

#进行相关配置,使apache正常工作

[root@www httpd-2.2.9]# cd /usr/local/apache/

[root@www apache]# ./bin/apachectl start

[root@www apache]# netstat -tupln |grep http

[root@www apache]# vim /etc/profile

55 PATH=$PATH:/usr/local/apache/bin/

[root@www apache]# . /etc/profile

[root@www apache]# echo $PATH

/usr/lib/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:

/root/bin:/usr/local/apache/bin/

#此时可以再任何位置:apachectl start|restart |stop

#配置apache的库文件

[root@www include]# cat /etc/ld.so.conf

[root@www include]# cd /etc/ld.so.conf.d/

[root@www ld.so.conf.d]# vim apache.conf

/usr/local/apache/lib

[root@www ld.so.conf.d]# ldconfig -v |grep apache

/usr/local/apache/lib:

[root@www ld.so.conf.d]#

#查看httpd信息.

[root@www ld.so.conf.d]# netstat -tupln |grep httpd

tcp 0 0 :::80 :::* LISTEN 21263/httpd

2.2安装mysql软件:

[root@mail ld.so.conf.d]# cd /root/lamp/

[root@mail lamp]#useradd -M -s /sbin/nologin mysql

#添加mysql用户,如果安装系统时候已经装过mysql会提示用户已存在,

#建议在安装前先卸载掉系统自带的mysql,卸载完成后必须重启,

#否则新装的mysql会无法启动,提示错误信息3306端口被占有

[root@mail lamp]# tar -zxvf mysql-5.0.95.tar.gz -C /usr/local/src/

[root@mail lamp]# cd /usr/local/src/

[root@mail src]# ll

[root@junjie src]# ln -s mysql-5.0.95/ mysql

[root@junjie src]# ll

[root@junjie src]# cd mysql

[root@mail mysql]# ./configure --prefix=/usr/local/mysql

[root@mail mysql]#make

[root@mail mysql]# make install

#安装完成。

#配置mysql,复制主配置文件

[root@mail mysql-5.0.95]# cp support-files/my-medium.cnf /etc/my.cnf

#初始化

[root@mail mysql-5.0.95]# /usr/local/mysql/bin/mysql_install_db --user=mysql

[root@mail mysql-5.0.95]# chown -R root:mysql /usr/local/mysql

[root@mail mysql-5.0.95]# chown -R mysql /usr/local/mysql/var

#添加库文件路径

[root@mail mysql-5.0.95]# vim /etc/ld.so.conf.d/mysql.conf

/usr/local/mysql/lib/mysql/

[root@mail mysql-5.0.95]# ldconfig -v |grep mysql

/usr/local/mysql/lib/mysql:

libmysqlclient.so.15 -> libmysqlclient.so.15.0.0

#后台安全启动 (如果显示启动并且卡住不动按回车)

[root@mail mysql-5.0.95]# /usr/local/mysql/bin/mysqld_safe --user=mysql &

#复制启动脚本

[root@mail mysql-5.0.95]# cp support-files/mysql.server /etc/init.d/mysqld

#赋予脚本执行权限

[root@mail mysql-5.0.95]# chmod +x /etc/init.d/mysqld

[root@mail mysql-5.0.95]# chkconfig --add mysqld

[root@mail mysql-5.0.95]# chkconfig mysqld on

[root@mail mysql-5.0.95]# service mysqld start

#设置系统全局的环境变量PATH值,方便使用mysql数据库命令

[root@mail mysql-5.0.95]# echo "PATH=$PATH:/usr/local/mysql/bin" >>/etc/profile

2.3安装php软件

[root@mail mysql-5.0.95]# cd /root/lamp/

[root@mail lamp]# ll

total 39640

-rw-r--r-- 1 root root 6396996 Apr 1 10:07 httpd-2.2.9.tar.gz

-rw-r--r-- 1 root root 22693585 Apr 1 10:08 mysql-5.0.95.tar.gz

-rw-r--r-- 1 root root 11439508 Apr 1 10:07 php-5.4.0.tar.bz2

[root@mail lamp]# tar -jxvf php-5.4.0.tar.bz2 -C /usr/local/src/

[root@mail lamp]# cd /usr/local/src/php-5.4.0/

[root@mail php-5.4.0]# ./configure --prefix=/usr/local/php5

--enable-mbstring --with-apxs2=/usr/local/apache2/bin/apxs

--with-mysql=/usr/local/mysql --with-config-file-path=/usr/local/php5

#复制配置文件

[root@mail php-5.4.0]# cp php.ini-production /usr/local/php5/php.ini

#修改apache服务的主配置文件使其支持php

[root@mail php-5.4.0]# vim /usr/local/apache2/conf/httpd.conf

53 LoadModule php5_module modules/libphp5.so

#确认53行的存在,如果没有就重新编译php

#添加这行记录,在这行添加关于php格式的首页

167 DirectoryIndex index.php index.html

310 AddType application/x-httpd-php .php

#启动apache,在/usr/local/apache目录下执行指令:bin/apachectl start

[root@mail php-5.4.0]# cd /usr/local/apache2/

[root@mail apache2]# ./bin/apachectl start

[root@mail apache2]# netstat -tupln |grep 80

tcp 0 0 :::80 :::* LISTEN 31981/httpd

2.4测试php是否与apache整合成功

[root@mail apache2]# cd /usr/local/apache2/htdocs/

[root@mail htdocs]# ls

[root@mail htdocs]# mv index.html index.php

[root@mail htdocs]# vim index.php

--xjzhujunjie

--2012/04/10

phpinfo();

?>

#在浏览器中输入http://192.168.101.210/index.php

#看到下图表示跟apache服务整合成功

[root@mail htdocs]# vim index.php

--xjzhujunjie

--2012/04/10

$link=mysql_connect('127.0.0.1','root','');

if($link)

echo "scuess";

else

echo "fail";

?>

#在IE浏览器中输入网址http://192.168.101.210/index.php

#看到下图表示跟mysql服务整合成功

[root@mail htdocs]# service mysqld stop

Shutting down MySQL..STOPPING server from pid file /usr/local/mysql/var/mail.junjie.com.pid

120401 11:36:07 mysqld ended [ OK ]

第三重天 安装postfix软件

3.1、卸载sendmailsendmail将占用tcp 25端口,和postfix冲突:

[root@junjie ~]# rpm -e sendmail --nodeps

3.2编译安装postfix软件

[root@mail ~]# groupadd -g 1200 postdrop

[root@mail ~]# groupadd -g 1000 postfix

[root@mail ~]# useradd -M -u 1000 -g postfix -G postdrop

-s /sbin/nologin postfix

[root@mail ~]# cd /root/mail/

[root@mail mail]# tar -zxvf postfix-2.8.2.tar.gz -C /usr/local/src/

[root@mail mail]# cd /usr/local/src/postfix-2.8.2/

#安装,安装过程中会出现互动提问,直接选择默认设置即可.若配置中时出现问

#题,检查路径是否正确,或查看日志,和postfix用户是否存在

[root@mail postfix-2.8.2]# make -f Makefile.init makefiles

'CCARGS=-DHAS_MYSQL

-I/usr/local/mysql/include/mysql

-DUSE_SASL_AUTH -I/usr/local/include/sasl'

'AUXLIBS=-L/usr/local/mysql/lib -lmysqlclient

-lz -lm -L/usr/local/lib -lsasl2'

[root@mail postfix-2.8.2]# make

[root@mail postfix-2.8.2]# make install

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

[root@mail postfix-2.8.2]# newaliases

#查看postfix支持的模块是否有mysql;

#若不存在mysql,就不要往下做了,必须重做,知道出现mysql为止

[root@mail postfix-2.8.2]# postconf ?m

mysql

第四重天 配置postfix

#进行一些基本配置,测试启动postfix并进行发信

[root@mail postfix-2.8.2]# cp /etc/postfix/main.cf /etc/postfix/main.cf.bak

[root@mail postfix-2.8.2]# vim /etc/postfix/main.cf

76 myhostname = mail.junjie.com

83 mydomain = junjie.com

99 myorigin = $mydomain

113 inet_interfaces = all

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

163 mail.$mydomain, www.$mydomain, ftp.$mydomain

260 mynetworks = 192.168.101.0/24, 127.0.0.0/8

说明:myorigin参数用来指明发件人所在的域名;mydestination参数指定postfix接收邮件时收件人的域名,即您的postfix系统要接收到哪个域名的邮件;myhostname 参数指定运行postfix邮件系统的主机的主机名,默认情况下,其值被设定为本地机器名;mydomain参数指定您的域名,默认情况下,postfix将myhostname的第一部分删除而作为mydomain的值;mynetworks 参数指定你所在的网络的网络地址,postfix系统根据其值来区别用户是远程的还是本地的,如果是本地网络用户则允许其访问;inet_interfaces 参数指定postfix系统监听的网络接口.注意:1、在postfix的配置文件中,参数行和注释行是不能处在同一行中的;2、任何一个参数的值都不需要加引号,否则,引号将会被当作参数值的一部分来使用;3、每修改参数及其值后执行 postfix reload 即可令其生效; 但若修改了inet_interfaces,则需重新启动postfix;4、如果一个参数的值有多个,可以将它们放在不同的行中, 只需要在其后的每个行前多置一个空格即可; postfix会把第一个字符为空格或tab的文本行视为上一行的延续;

#检查配置,启动postfix

[root@mail postfix-2.8.2]# postfix start

postfix/postfix-script: starting the Postfix mail system

[root@mail postfix-2.8.2]# postfix check

[root@mail postfix-2.8.2]# service postfix restart

postfix: unrecognized service

#无法启动,此时要制作制作postfix启动控制文件

#【没有启动文件的启动postfix方法:

#/usr/local/postfix/sbin/postfix start】

[root@mail postfix-2.8.2]# mkdir /tmp/abc

[root@mail postfix-2.8.2]# cd /tmp/abc

[root@mail abc]# cp /mnt/cdrom/Server/postfix-2.3.3-2.1.el5_2.i386.rpm ./

[root@mail abc]# rpm2cpio postfix-2.3.3-2.1.el5_2.i386.rpm |cpio -id

16333 blocks

[root@mail abc]# ll

[root@mail abc]# ll etc/rc.d/init.d/postfix

-rwxr-xr-x 1 root root 2404 Apr 1 13:01 etc/rc.d/init.d/postfix

[root@mail abc]# cp etc/rc.d/init.d/postfix /etc/rc.d/init.d/

[root@mail abc]# service postfix restart

Shutting down postfix: [ OK ]

Starting postfix: [ OK ]

[root@mail abc]# chkconfig --add postfix

[root@mail abc]# chkconfig postfix on

[root@mail abc]# chkconfig --list postfix

postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off

#连接postfix,验正服务启动状况,测试是否可以发信:

[root@mail ~]# useradd user1

[root@mail ~]# useradd user2

[root@mail ~]# echo "123" |passwd --stdin user1

[root@mail ~]# echo "123" |passwd --stdin user2

[root@mail ~]# telnet mail.junjie.com 25

Trying 192.168.101.210...

Connected to mail.junjie.com (192.168.101.210).

Escape character is '^]'.

220 mail.junjie.com ESMTP Postfix

ehlo mail.junjie.com

250-mail.junjie.com

250-PIPELINING

250-SIZE 10240000

250-VRFY

250-ETRN

250-ENHANCEDSTATUSCODES

250-8BITMIME

250 DSN

mail from:user1@junjie.com

250 2.1.0 Ok

rcpt to:user2@junjie.com

250 2.1.5 Ok

data

354 End data with .

user1--to--user2

.

250 2.0.0 Ok: queued as 4961D16DE6E

quit

221 2.0.0 Bye

Connection closed by foreign host.

[root@mail ~]# su - user2

[user2@mail ~]$ mail

Mail version 8.1 6/6/93. Type ? for help.

"/var/spool/mail/user2": 1 message 1 new

>N 1 user1@junjie.com Tue Apr 10 16:37 13/472

& 1

Message 1:

From user1@junjie.com Tue Apr 10 16:37:23 2012

X-Original-To: user2@junjie.com

Delivered-To: user2@junjie.com

Date: Tue, 10 Apr 2012 16:36:42 +0800 (CST)

From: user1@junjie.com

user1--to--user2

& quit

Saved 1 message in mbox

[user2@mail ~]$

#cat /home/test/Maildir/new/ 按tab键可以看见刚才发的那封邮件,说明SMPT没有问题。

第五重天 Dovecot 邮局软件安装(提供pop3/imap4协议)

5.1安装Dovecot

[root@mail ~]# cd /root/mail/

[root@mail mail]# tar -zxvf dovecot-1.1.4.tar.gz -C /usr/local/src/

[root@mail mail]# cd /usr/local/src/dovecot-1.1.4/

[root@mail dovecot-1.1.4]# groupadd dovecot

[root@mail dovecot-1.1.4]# useradd -M -s /sbin/nologin dovecot

[root@mail dovecot-1.1.4]# ./configure --syscOnfdir=/etc --with-mysql && make && make install

5.2安装完成,配置

[root@mail dovecot-1.1.4]# cp /etc/dovecot-example.conf /etc/dovecot.conf

[root@mail dovecot-1.1.4]# vim /etc/dovecot.conf

23 protocols = pop3 imap

47 disable_plaintext_auth = no

87 ssl_disable = yes

208 mail_location = maildir:~/Maildir

[root@mail ~]# vim /etc/postfix/main.cf

415 home_mailbox = Maildir/

[root@mail dovecot-1.1.4]# vim /etc/pam.d/dovecot

auth required pam_nologin.so

auth include system-auth

account include system-auth

session include system-auth

#/usr/local/sbin/dovecot -c /etc/dovecot.conf 启动把这句话写入开机脚本

# pkill -1 dovecot #重新读取dovecot

[root@mail dovecot-1.1.4]# /usr/local/sbin/dovecot -c /etc/dovecot.conf

测试接受服务器dovecot

[root@mail dovecot-1.1.4]# telnet mail.junjie.com 110

Trying 192.168.101.210...

Connected to mail.junjie.com (192.168.101.210).

Escape character is '^]'.

+OK Dovecot ready.

user user2

+OK

pass 123

+OK Logged in.

list

+OK 1 messages:

1 432

.

retr 1

+OK 432 octets

Return-Path:

X-Original-To: user2@junjie.com

Delivered-To: user2@junjie.com

Received: from mail.junjie.com (mail.junjie.com [192.168.101.210])

by mail.junjie.com (Postfix) with ESMTP id 6FA1116DEF5

for ; Tue, 10 Apr 2012 17:46:37 +0800 (CST)

Message-Id: <20120410094651.6FA1116DEF5@mail.junjie.com>

Date: Tue, 10 Apr 2012 17:46:37 +0800 (CST)

From: user1@junjie.com

11111111111111

.

quit

+OK Logging out.

Connection closed by foreign host.

第六重天 安装Webmail软件

6.1 squirrelmail安装

[root@mail ~]# cd mail/

[root@mail mail]# tar -zxvf squirrelmail-webmail-1.4.22.tar.gz -C /usr/local/apache2/htdocs/

[root@mail mail]# cd /usr/local/apache2/htdocs/

[root@mail htdocs]# mv squirrelmail-webmail-1.4.22/ webmail

6.2 配置webmail

[root@mail htdocs]# cd /usr/local/apache2/htdocs/webmail/

[root@mail webmail]# mkdir -p attach data/

[root@mail webmail]# chown -R daemon:daemon attach/ data/

[root@mail webmail]# chmod 730 attach/

[root@mail webmail]# cp config/config_default.php config/config.php

[root@mail webmail]# vim config/config.php

118 $domain = 'junjie.com';

146 $smtpServerAddress = 'localhost';

151 $smtpPort = 25;

210 $imapPort = 143;

231 $imap_server_type = 'dovecot';

499 $data_dir = '/usr/local/apache2/htdocs/webmail/data/';

517 $attachment_dir = '/usr/local/apache2/htdocs/webmail/attach/';

6.3重启 apache 服务

[root@mail webmail]# /usr/local/apache2/bin/apachectl restart

6.4测试:客户端IE地址栏中输入 http://mail.junjie.com/webmail (前提mail.junjie.com可以被解析,否则用ip)即可看见下图:

到此我们的postfix+webmail已经安装完成,但是为了使我们更好的管理维护邮件服务器的前端与后台接下来我们来安装extmail和extman以便实现我们的需求。

6.5 初始化 extman 软件

6.5.1 数据库脚本

[root@mail ~]# service mysqld restart

Shutting down MySQL.. [ OK ]

Starting MySQL. [ OK ]

[root@mail ~]# cd mail/

[root@mail mail]# tar -zxvf extman-1.1.tar.gz -C /usr/local/src/

[root@mail mail]# cd /usr/local/src/extman-1.1/docs/

6.5.2脚本导入数据库的时候会询问密码,默认情况下root用户密码为空

[root@mail docs]# mysql -u root -p < extmail.sql

Enter password:

[root@mail docs]# mysql -u root -p

Enter password:

#注意这里在5.3版本中汇出错

ERROR 1064 (42000) at line 50: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TYPE=MyISAM COMMENT='Ext/Webman - Admin Accounts'' at line 15

原因:编写数据库的版本比当前安装的版本不相同。

解决:1、用文本编辑器打开extmail.sql;

2、查找/替换,将数据库文件内的所有TYPE=MyISAM修改为ENGINE=MyISAM,保存退出;

3、重新导入extmail.sql即可。

第七重天 配置 Postfix

#查看模块,#postconf -m |grep mysql 返回值有mysql,说明可以支持mysql 数据库的查询表

[root@mail docs]# cd

[root@mail ~]# postconf -m |grep mysql

mysql

7.1 修改配置文件

[root@mail ~]# vim /etc/postfix/main.cf

162-163行需要注释掉

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

163 # mail.$mydomain, www.$mydomain, ftp.$mydomain

652 virtual_mailbox_base = /mailbox

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

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

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

656 virtual_uid_maps = static:1000

657 virtual_gid_maps = static:1000

658 virtual_transport = virtual

[root@mail ~]# cd /usr/local/src/extman-1.1/docs/

[root@mail docs]# cp mysql_virtual_* /etc/postfix/

第八重天 虚拟用户设置SMTP发信认证

8.1 软件安装

注意:确认系统中的rpm格式的mysql 软件被卸载

[root@mail ~]# cd mail/

[root@mail mail]# tar -jxvf courier-authlib-0.62.4.tar.bz2 -C /usr/local/src/

[root@mail mail]# cd /usr/local/src/courier-authlib-0.62.4/

[root@mail courier-authlib-0.62.4]# ./configure --prefix=/usr/local/courier-authlib --without-stdheaderdir --with-authmysql --with-redhat --with-mysql-libs=/usr/local/mysql/lib/mysql --with-mysql-includes=/usr/local/mysql/include/mysql

install-configure #生成默认配置文件authmysqlrc 和 authdaemonrc

[root@mail courier-authlib-0.62.4]# make && make install && make install-configure

8.2 添加courier-authlib的库文件路径

[root@mail courier-authlib-0.62.4]# vim /etc/ld.so.conf.d/courier-authlib.conf

/usr/local/courier-authlib/lib/courier-authlib

[root@mail courier-authlib-0.62.4]# ldconfig -v |grep courier-authlib

/usr/local/courier-authlib/lib/courier-authlib:

8.3 修改authdaemonrc主配置文件

[root@mail courier-authlib-0.62.4]# cd /usr/local/courier-authlib/etc/authlib

[root@mail authlib]# cp authdaemonrc authdaemonrc.bak

[root@mail authlib]# vim authdaemonrc

27 authmodulelist="authmysql"

34 authmodulelistorig="authmysql"

[root@mail authlib]# chmod -R 755 /usr/local/courier-authlib/var/spool/authdaemon/

8.4 修改authmysqlrc 文件

[root@mail authlib]# cd /usr/local/courier-authlib/etc/authlib

[root@mail authlib]# cp authmysqlrc authmysqlrc.bak

[root@mail authlib]# vim authmysqlrc

26 MYSQL_SERVER localhost

27 MYSQL_USERNAME extmail

28 MYSQL_PASSWORD extmail

49 MYSQL_SOCKET /tmp/mysql.sock

56 MYSQL_PORT 3306

68 MYSQL_DATABASE extmail

83 MYSQL_USER_TABLE mailbox

92 MYSQL_CRYPT_PWFIELD password

113 MYSQL_UID_FIELD uidnumber

119 MYSQL_GID_FIELD gidnumber

128 MYSQL_LOGIN_FIELD username

133 MYSQL_HOME_FIELD concat('/mailbox/',homedir)

139 MYSQL_NAME_FIELD name

150 MYSQL_MAILDIR_FIELD concat('/mailbox/',maildir

8.5. 复制courier-authlib脚本,并启动courier-authlib服务。

[root@mail authlib]# cd /usr/local/src/courier-authlib-0.62.4/

[root@mail courier-authlib-0.62.4]# cp courier-authlib.sysvinit /etc/init.d/courier-authlib

[root@mail courier-authlib-0.62.4]# cd

[root@mail ~]# chmod 755 /etc/init.d/courier-authlib

[root@mail ~]# chkconfig --add courier-authlib

[root@mail ~]# chkconfig --level 2345 courier-authlib on

[root@mail ~]# chkconfig --list courier-authlib

courier-authlib 0:off 1:off 2:on 3:on 4:on 5:on 6:off

[root@mail ~]# service courier-authlib start

Starting Courier authentication services: authdaemond

[root@mail ~]# ps -aux |grep courier-authlib

第九重天 修改Cyrus sasl 设置

#添加如下文件

[root@mail ~]# vim /usr/lib/sasl2/smtpd.conf

pwcheck_method: authdaemond

mech_list:PLAIN LOGIN

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

第十重天 修改Dovecot配置

10.1修改Dovecot

[root@mail ~]# vim /etc/dovecot.conf

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

790 auth default {

795 mechanisms = plain

828 # passdb pam {

857 # }

899 passdb sql {

901 args = /etc/dovecot-mysql.conf

902 }

962 userdb sql {

964 args = /etc/dovecot-mysql.conf

965 }

#打开一行,postfix的配置文件也要该(可能已经改过)

[root@mail ~]# vim /etc/postfix/main.cf

415 home_mailbox = Maildir/

10.2 建立数据查询配置文件,手动产生/etc/dovecot-mysql.conf文件:

[root@mail ~]# vim /etc/dovecot-mysql.conf

1 ver = mysql

2 cOnnect= host=localhost dbname=extmail user=extmail password=extmail

3 default_pass_scheme = CRYPT

4 password_query = SELECT username AS user,password AS password FROM m ailbox WHERE username = ‘%u’

5 user_query = SELECT maildir, uidnumber AS uid, gidnumber AS gid FRO M mailbox WHERE username = ‘%u’

第十一重天 建立虚拟用户

11.1 建立邮箱目录并调整权限

[root@mail ~]# mkdir -p /mailbox/extmail.org/postmaster/Maildir

[root@mail ~]# cd /mailbox/extmail.org/postmaster/Maildir/

[root@mail Maildir]# chown -R postfix:postfix /mailbox/

#启动服务

[root@mail Maildir]# dovecot

Fatal: Dovecot is already running with PID 29275 (read from /usr/local/var/run/dovecot/master.pid)

[root@mail Maildir]# /usr/local/sbin/dovecot -c /etc/dovecot.conf

Fatal: Dovecot is already running with PID 29275 (read from /usr/local/var/run/dovecot/master.pid)

11.2 虚拟用户测试

确认authlib服务

[root@mail Maildir]# /usr/local/courier-authlib/sbin/authtest -s login postmaster@extmail.org extmail

Authentication succeeded.

Authenticated: postmaster@extmail.org (uid 1000, gid 1000)

Home Directory: /mailbox/extmail.org/postmaster

Maildir: /mailbox/extmail.org/postmaster/Maildir/

Quota: (none)

Encrypted Password: $1$phz1mRrj$3ok6BjeaoJYWDBsEPZb5C0

Cleartext Password: extmail

Options: (none)

(其实这时候如果验证不通过,后面的虚拟用户也可以建立) 成功提示信息

第十二重天 ExtMail平台

基于Perl 语言开发的中文Webmail管理平台

套件:ExtMail --Web 界面的邮件操作

Extman ?Web 界面的邮件系统管理

12.1平台安装

3个倚赖包

[root@mail Maildir]# cd /root/mail/

[root@mail mail]# ll

[root@mail mail]# tar -zxf Unix-Syslog-1.1.tar.gz -C /usr/local/src/

[root@mail mail]# cd /usr/local/src/Unix-Syslog-1.1/

[root@mail Unix-Syslog-1.1]# perl Makefile.PL && make && make install

[root@mail Unix-Syslog-1.1]# cd /root/mail/

[root@mail mail]# ll

[root@mail mail]# tar -zxf DBI-1.616.tar.gz -C /usr/local/src/

[root@mail mail]# cd /usr/local/src/DBI-1.616/

[root@mail DBI-1.616]# perl Makefile.PL && make && make install

[root@mail DBI-1.616]# cd /root/mail/

[root@mail mail]# ll

[root@mail mail]# tar -zxf DBD-mysql-4.020.tar.gz -C /usr/local/src/

[root@mail mail]# cd /usr/local/src/DBD-mysql-4.020/

[root@mail DBD-mysql-4.020]# perl Makefile.PL && make && make install

#注意以上三个包在编译安装过程可能会提示 警告信息 隐式函数 计算出的变量值未被使用等,只要没有error信息就一切ok

安装ExtMail

[root@mail DBD-mysql-4.020]# cd /root/mail/

[root@mail mail]# ll

[root@mail mail]# tar -zxf extmail-1.2.tar.gz -C /usr/local/apache2/htdocs/

[root@mail mail]# cd /usr/local/apache2/htdocs/

[root@mail htdocs]# ll

[root@mail htdocs]# mv extmail-1.2 extmail

[root@mail htdocs]# cd extmail/

[root@mail extmail]# chown -R postfix:postfix cgi/

[root@mail extmail]# ll

[root@mail extmail]# cp webmail.cf.default webmail.cf

[root@mail extmail]# ll

12.2 修改配置文件

[root@mail extmail]# vim webmail.cf

2 SYS_COnFIG= /usr/local/apache2/htdocs/extmail/

5 SYS_LANGDIR = /usr/local/apache2/htdocs/extmail/lang

8 SYS_TEMPLDIR = /usr/local/apache2/htdocs/extmail/html

127 SYS_MAILDIR_BASE = /mailbox

139 SYS_MYSQL_USER = extmail

140 SYS_MYSQL_PASS = extmail

141 SYS_MYSQL_DB = extmail

142 SYS_MYSQL_HOST = localhost

143 SYS_MYSQL_SOCKET = /tmp/mysql.sock

12.3 修改apache服务,添加虚拟主机

[root@mail extmail]# vim /usr/local/apache2/conf/httpd.conf

66 User postfix

67 Group postfix

412 NameVirtualHost *:80

413

414 ServerName mail.junjie.com

415 DocumentRoot /usr/local/apache2/htdocs/extmail/html/

416 ScriptAlias /extmail/cgi/ "/usr/local/apache2/htdocs/extmail/cgi/"

417 Alias /extmail "/usr/local/apache2/htdocs/extmail/html/"

418

#这里由于前面我们并没有启用Suexec 所以我们没有在虚拟主机中添加 SuexecUerGroup postfix postfix

#重启apache

[root@mail extmail]# /usr/local/apache2/bin/apachectl restart

12.4 Extmail无法访问问题原因

到这一步很多网上的文档都会说这时候只要在客户端访问 http://mail.junjie.com 就可以看到ExtMail的登录界面,但是经过我很多次实践改动配置得到的结果都是访问页面不存在404的错误提示页面,一度我曾认为可能是我之前编译的那三个倚赖包有问题,或者是我的PHP有问题,以及cgi权限问题都想到但是结果依然是404页面不存在,但是我可以很正常的看到访问http://mail.junjie.com时候页面确实是跳转到了http://mail.junjie.com/extmail/cgi/index.cgi这个目录,而且我这个目录中文件确实存在,没有任何问题,经过我多次尝试终于找到原因如果要成功的访问到这个页面就必须把Extman装上,并且在apache配置文件中写入extman的路径这样我终于如愿以偿的看到了期望已久的ExtMail的登录界面。

下面我们开始安装Extman

第十三重天 Extman平台

13.1 安装包

4个倚赖包

[root@mail extmail]# cd /root/mail/

[root@mail mail]# tar -zxf GD-2.46.tar.gz -C /usr/local/src/

[root@mail mail]# cd /usr/local/src/GD-2.46/

[root@mail GD-2.46]# perl Makefile.PL && make && make install

[root@mail GD-2.46]# cd /root/mail/

[root@mail mail]# tar -zxf File-Tail-0.99.3.tar.gz -C /usr/local/src/

[root@mail mail]# cd /usr/local/src/File-Tail-0.99.3/

[root@mail File-Tail-0.99.3]# perl Makefile.PL && make && make install

[root@mail File-Tail-0.99.3]# cd /root/mail/

[root@mail mail]# rpm -ivh rrdtool-1.2.23-3.el5.i386.rpm

[root@mail mail]# rpm -ivh rrdtool-perl-1.2.23-3.el5.i386.rpm

Extman 套件

[root@mail mail]# tar -zxf extman-1.1.tar.gz -C /usr/local/apache2/htdocs/

[root@mail mail]# cd /usr/local/apache2/htdocs/

[root@mail htdocs]# ll

[root@mail htdocs]# mv extman-1.1 extman

[root@mail htdocs]# ll

[root@mail htdocs]# cd extman/

[root@mail extman]# chown -R postfix:postfix cgi/

[root@mail extman]# mkdir /tmp/extman

[root@mail extman]# chown -R postfix:postfix /tmp/extman/

13.2 修改配置文件

[root@mail extman]# cp webman.cf.default webman.cf

[root@mail extman]# ll

[root@mail extman]# vim webman.cf

2 SYS_COnFIG= /usr/local/apache2/htdocs/extman/

5 SYS_LANGDIR = /usr/local/apache2/htdocs/extman/lang

8 SYS_TEMPLDIR = /usr/local/apache2/htdocs/extman/html

12 SYS_MAILDIR_BASE = /mailbox

127 SYS_MYSQL_USER = webman

128 SYS_MYSQL_PASS = webman

129 SYS_MYSQL_DB = extmail

130 SYS_MYSQL_HOST = localhost

131 SYS_MYSQL_SOCKET = /tmp/mysql.sock

13.3 调整apache主配文件。添加extman相关目录别名

[root@mail extman]# vim /usr/local/apache2/conf/httpd.conf

412 NameVirtualHost *:80

413

414 ServerName mail.junjie.com

415 DocumentRoot /usr/local/apache2/htdocs/extmail/html/

416 ScriptAlias /extmail/cgi/ "/usr/local/apache2/htdocs/extmail/cgi/"

417 Alias /extmail "/usr/local/apache2/htdocs/extmail/html/"

418 ScriptAlias /extman/cgi "/usr/local/apache2/htdocs/extman/cgi/"

419 Alias /extman "/usr/local/apache2/htdocs/extman/html/"

420

[root@mail extman]# /usr/local/apache2/bin/apachectl restart

13.4 现在在客户端访问

http://mail.junjie.com 就可以看见ExtMail的登录界面了。在客户端访问

http://mail.junjie.com/extman 就可以看见Extman后台管理登录界面了

默认管理员账户:root@extmail.org

默认密码:extmail*123*

#如无法登录禁用校验码,将1改为0

#[root@mail ~]# vim /usr/local/apache2/htdocs/extman/webman.cf

#21 SYS_CAPTCHA_ON = 1


推荐阅读
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • 搭建个人博客:WordPress安装详解
    计划建立个人博客来分享生活与工作的见解和经验,选择WordPress是因为它专为博客设计,功能强大且易于使用。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • JavaScript 跨域解决方案详解
    本文详细介绍了JavaScript在不同域之间进行数据传输或通信的技术,包括使用JSONP、修改document.domain、利用window.name以及HTML5的postMessage方法等跨域解决方案。 ... [详细]
  • 最适合初学者的编程语言
    本文探讨了适合编程新手的最佳语言选择,包括Python、JavaScript等易于上手且功能强大的语言,以及如何通过有效的学习方法提高编程技能。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • 解决PHP项目在服务器无法抓取远程网页内容的问题
    本文探讨了在使用PHP进行后端开发时,遇到的一个常见问题:即在本地环境中能够正常通过CURL获取远程网页内容,但在服务器上却无法实现。我们将分析可能的原因并提供解决方案。 ... [详细]
  • 从CodeIgniter中提取图像处理组件
    本指南旨在帮助开发者在未使用CodeIgniter框架的情况下,如何独立使用其强大的图像处理功能,包括图像尺寸调整、创建缩略图、裁剪、旋转及添加水印等。 ... [详细]
  • 精选10款Python框架助力并行与分布式机器学习
    随着神经网络模型的不断深化和复杂化,训练这些模型变得愈发具有挑战性,不仅需要处理大量的权重,还必须克服内存限制等问题。本文将介绍10款优秀的Python框架,帮助开发者高效地实现分布式和并行化的深度学习模型训练。 ... [详细]
  • 本文总结了一次针对大厂Java研发岗位的面试经历,探讨了面试中常见的问题及其背后的原因,并分享了一些实用的面试准备资料。 ... [详细]
  • 本文详细介绍了在Linux操作系统上安装和部署MySQL数据库的过程,包括必要的环境准备、安装步骤、配置优化及安全设置等内容。 ... [详细]
  • 深入理解:AJAX学习指南
    本文详细探讨了AJAX的基本概念、工作原理及其在现代Web开发中的应用,旨在为初学者提供全面的学习资料。 ... [详细]
author-avatar
雙子座的魚love
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有