文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>邮局配置之实操通过

邮局配置之实操通过

时间:2006-06-19  来源:thinkwzb

文件

MySQL 4.1.11

网站:http://www.mysql.com

下载

APACHE 2.0.54

网站:http://www.apache.org

下载

PHP 4.3.11

网站:http://www.php.net

下载

Cyrus-SASL 2.1.20

网站:http://asg.web.cmu.edu/sasl

下载

Postfix 2.2.3

网站:http://www.postfix.org

下载

PostfixAdmin 2.1.0

网站:http://www.postfixadmin.com

下载

Courier-authlib 0.55

网站:http://www.courier-mta.org/authlib

下载

Courier-IMAP 4.0.2

网站:http://www.courier-mta.org/imap

下载

Courier-maildrop 1.8.0

网站:http://www.courier-mta.org/maildrop

下载

              需要pcre.h支持

              http://www.pcre.org/下载

Courier-sqwebmail 5.0.1

网站:http://www.courier-mta.org/sqwebmail

下载

SquirrelMail 1.4.4

网站:http://www.squirrelmail.org

下载

Openwebmail 2.51

网站:http://openwebmail.org

下载

clamav 0.84

网站:http://www.clamav.net

下载

Spamassassin 3.0.3

网站:http://spamassassin.apache.org

下载

amavisd-new 2.3.0

网站:http://www.ijs.si/software/amavisd

 

初始化权限配置:

groupadd -g 12345 postfix

 useradd -u 12345 -g 12345 -c postfix –d /no/where –s /no/nologin

 groupadd -g 12346 postdrop

groupadd vmail -g 1001

 useradd vmail -u 1001 -g 1001 –s /no/where –s /no/nologin

 

1.       安装mysql 4.1.11

./configure --prefix=/usr/local/mysql

make

 make install

 cp support-files/my-medium.cnf /etc/my.cnf

 

设置自启动

 cp support-files/mysql.server /etc/rc.d/init.d/mysqld

 chmod 700 /etc/rc.d/init.d/mysqld

 chkconfig --add mysqld

 

安装完以后要初始化数据库,要是升级安装的请跳过

/usr/local/mysql/bin/mysql_install_db --user=mysql

chown -R mysql:mysql /usr/local/mysql

/usr/local/mysql/bin/mysqld_safe --user=mysql &

 

ln -s /usr/local/mysql/bin/mysql /sbin/mysql

 ln -s /usr/local/mysql/bin/mysqladmin /sbin/mysqladmin

 

vi /etc/my.cnf

[safe_mysqld]

err-log=/var/log/mysqld/err.log

 

开启常规日志和更新日志 (在[mysqld]项下添加)

 vi /etc/my.cnf

[mysqld]

log=/var/log/mysqld/log.log

log-update=/var/log/mysqld/update.log

 

创建日志文件并设置权限

 mkdir /var/log/mysqld

 touch /var/log/mysqld/err.log /var/log/mysqld/log.log /var/log/mysqld/update.log

 chown -R mysql.mysql /var/log/mysqld

 

说明:

错误日志包含了服务器写入标准错误输出设备的所有消息,同时还包括了mysql服务的启动和关闭事件

常规日志用来记录有关mysql服务器运行的常规信息,包括用户的连接、查询及其他各种时间

更新日志用来记录修改数据库的查询信息,包括所有涉及数据库修改的SQl语句的查询记录

建议调试结束后关闭日志

 

2.       安装apache 2.0.54 (查看完整配置)

3.       安装php (查看完整配置)

php常用配置

max_execution_time = 30 ; // 改为600 (增加处理脚本的时间限制)

max_input_time = 600 ; //最大输出时间600秒

memory_limit = 8M ; //改为40M (这样才能发10M的附件)

register_global =On

post_max_size = 2M ; //php可接受的 post 方法大小 2M

file_uploads = On ; //允许上载文件

upload_max_filesize = 2M ; //最大上载文件2M

session.auto_start = 1 ; //session自动启动

 

4.安装cyrus-sasl 2.1.20

如果系统安装已经,先卸载它,或使用下面方法关闭它

 mv /usr/lib/sasl /usr/lib/sasl.OFF

 mv /usr/lib/sasl2 /usr/lib/sasl2.OFF

 

tar zxvf cyrus-sasl-2.1.20.tar.gz

cd cyrus-sasl-2.1.20

 ./configure \

--disable-anon -enable-plain --enable-login \

--enable-sql --with-mysql=/usr/local/mysql \

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

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

 make

 make install

 

echo "/usr/local/lib">>/etc/ld.so.conf

ldconfig

 ln -s /usr/local/lib/sasl2 /usr/lib/sasl2

 

/* 以下为加密方式,可不用

cyrus-sasl的密码是不加密的,可以下载加密认证补丁

 http://www.viperstrike.com/~lopaka/sysadmin/cyrus-sasl-mysql-encrypt/software-sources/patch-linux

 patch lib/checkpw.c patch-linux

重新编译安装

 LDFLAGS="-lcrypt" ./configure --disable-anon -enable-plain --enable-login --enable-sql --with-mysql=/usr/local/mysql --with-mysql-includes=/usr/local/mysql/include/mysql --with-mysql-libs=/usr/local/mysql/lib/mysql

 make

 make install

*/

 

 

 

5.安装postfix 2.2.3

如果你的系统上原来有sendmail,先将其停止并将其文件改名:

 /etc/init.d/sendmail stop

 chkconfig --level 0123456 sendmail off

 mv /usr/bin/newaliases /usr/bin/newaliases.orig

 mv /usr/bin/mailq /usr/bin/mailq.orig

 mv /usr/sbin/sendmail /usr/sbin/sendmail.orig

 

开始安装

 

wget ftp://postfix.cn99.com/postfix/official/postfix-2.2.3.tar.gz

 tar -zxvf postfix-2.2.3.tar.gz

 cd postfix-2.2.3

(Building Postfix with SASL authentication and mysql support)

 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/mysql -lmysqlclient -lz -lm -L/usr/local/lib -lsasl2'

 make install

 

如果/etc/aliases文件不存在,请用如下命令创建: 默认是有生成这个文件

 echo postfix: root >> /etc/aliases

 /usr/bin/newaliases

 

注意:

    本例中Mysql安装在/usr/lcoal/mysql,sasl2安装在/usr/lib/sasl2。如果安装路径不同,请自行修改编译时CCARGS和AUXLIBS选项。

    在执行make install的时候可能会得到如下的提示(如果没有就不用管了):

/usr/libexec/ld-elf.so.1: Shared object "libmysqlclient.so.12" not found

    这是因为mysql不是安装在默认目录中的,所以需要告诉postfix应该到哪里去找libmysqlclient.so.12,使用ldconfig就可以达到这个目的:

 echo /usr/local/mysql/lib/mysql >> /etc/ld.so.conf

 ldconfig

 

警告:

chmod 755 /usr/local/var/spool/authdaemon

有可能出现以下问题:

察看/var/log/maillog,postfix报错如下:
Apr 4 19:34:20 mail postfix/smtpd[5524]: warning: SASL authentication problem: unknown password verifier
Apr 4 19:34:20 mail postfix/smtpd[5524]: warning: unknown[61.51.142.87]: SASL LOGIN authentication failed

 

察看/var/log/maillog,postfix报错如下:

Jun 17 12:39:37 localhost postfix/smtpd[6160]: warning: 125.77.160.214: hostname pc214.broad.dynamic.xm.fj.cn.cndata.com verification failed: Name or service not known

Jun 17 12:39:37 localhost postfix/smtpd[6160]: connect from unknown[125.77.160.214]

Jun 17 12:39:37 localhost postfix/smtpd[6160]: warning: SASL authentication failure: cannot connect to Courier authdaemond: Permission denied

察看/var/log/maillog,postfix报错如下:

Jun 17 09:45:37 localhost postfix/smtpd[3303]: NOQUEUE: reject: EHLO from localhost.localdomain[127.0.0.1]: 501 <[email protected]>: Helo command rejected: Invalid name; proto=SMTP helo=<[email protected]>

Jun 17 09:45:46 localhost postfix/smtpd[3303]: lost connection after EHLO from localhost.localdomain[127.0.0.1]


察看/var/log/message,发现报错:
Apr 4 19:34:18 mail postfix/smtpd[5524]: SQL engine 'mysql' not supported
Apr 4 19:34:18 mail postfixsmtpd[5524]: auxpropfunc error –4

 

察看/var/log/message,发现报错:

Jun 17 13:23:57 localhost postfix/smtpd[6624]: sql_select option missing

Jun 17 13:23:57 localhost postfix/smtpd[6624]: auxpropfunc error no mechanism available

 

设置配置文件:

vi /etc/postfix/main.cf

#=====================BASE=========================

myhostname = mail.penjingyuan.com

mydomain = penjingyuan.com

myorigin = $mydomain

mydestination = $myhostname localhost localhost.$mydomain

mynetworks = 127.0.0.0/8

inet_interfaces = all

#=====================Vritual Mailbox settings=========================

virtual_mailbox_base = /mail

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

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

#virtual_alias_domains =

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

virtual_uid_maps = static:501

virtual_gid_maps = static:502

#virtual_transport = virtual

virtual_transport = maildrop

maildrop_destination_recipient_limit = 1

maildrop_destination_concurrency_limit = 1

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

message_size_limit = 14336000

virtual_mailbox_limit = 20971520

virtual_create_maildirsize = yes

virtual_mailbox_extended = yes

virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql/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 try again later.

virtual_overquota_bounce = yes

#====================SASL========================

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,permit

smtpd_sasl_auth_enable = yes

smtpd_sasl_local_domain = $myhostname

smtpd_sasl_security_options = noanonymous

smtpd_sasl_application_name = smtpd

smtpd_banner=$myhostname ESMTP "Version not Available"

 

readme_directory = no

sample_directory = /etc/postfix

sendmail_path = /usr/sbin/sendmail

html_directory = no

setgid_group = postdrop

command_directory = /usr/sbin

manpage_directory = /usr/local/man

daemon_directory = /usr/libexec/postfix

newaliases_path = /usr/bin/newaliases

mailq_path = /usr/bin/mailq

queue_directory = /var/spool/postfix

mail_owner = postfix

 

vi /etc/postfix/mysql/mysql_virtual_mailbox_limit_maps.cf

user = postfix

password = postfix

hosts = localhost

dbname = postfix

table = mailbox

select_field = quota

where_field = username

#additional_conditions = and active = '1'

 

vi /etc/postfix/mysql/mysql_virtual_mailbox_maps.cf

user = postfix

password = postfix

hosts = localhost

dbname = postfix

table = mailbox

select_field = maildir

where_field = username

#additional_conditions = and active = '1'

 

vi /etc/postfix/mysql/mysql_virtual_alias_maps.cf

user = postfix

password = postfix

hosts = localhost

dbname = postfix

table = alias

select_field = goto

where_field = address

 

vi  /etc/postfix/mysql/mysql_virtual_domains_maps.cf

user = postfix

password = postfix

hosts = localhost

dbname = postfix

table = domain

select_field = description

where_field = domain

#additional_conditions = and backupmx = '0' and active = '1'

 

配置 /usr/local/lib/sasl2/smtpd.conf

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

pwcheck_method: authdaemond

log_level: 3

mech_list: PLAIN LOGIN

authdaemond_path:/usr/local/var/spool/authdaemon/socket

 

启动postfix

 postfix start

 

测试smtp

 telnet localhost 25

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

220 www.test.com ESMTP "Version not Available"

ehlo www.test.com

250-www.test.com

250-PIPELINING

250-SIZE 10240000

250-VRFY

250-ETRN

250-AUTH LOGIN PLAIN

250-AUTH=LOGIN PLAIN

250 8BITMIME

 

 

6.安装postfixadmin 2.1.0

tar -zxvf postfixadmin-2.1.0.tgz

mv postfixadmin-2.1.0 /home/public/www/postfixadmin

chown -R vmail:vmail /var/www/postfixadmin

 

建立mysql表

cd /home/public/www/postfixadmin

mysql -u root [-p] < DATABASE_MYSQL.TXT

cp config.inc.php.sample config.inc.php

 

设置配置文件

vi config.inc.php

// Language config

// Language files are located in './languages'.

$CONF['default_language'] = 'cn';

// Database Config

// 'database_type' is for future reference.

$CONF['database_type'] = 'mysql';

$CONF['database_host'] = 'localhost';

$CONF['database_user'] = 'postfixadmin';

$CONF['database_password'] = 'postfixadmin';

$CONF['database_name'] = 'postfix';

//$CONF['encrypt'] = 'md5crypt';

$CONF['encrypt'] = 'cleartext';

// Mailboxes

// If you want to store the mailboxes per domain set this to 'YES'.

// Example: /usr/local/virtual/domain.tld/[email protected]

$CONF['domain_path'] = 'YES';

// If you don't want to have the domain in your mailbox set this to 'NO'.

// Example: /usr/local/virtual/domain.tld/username

$CONF['domain_in_mailbox'] = 'NO';

// Quota

// When you want to enforce quota for your mailbox users set this to 'YES'.

$CONF['quota'] = 'YES';

// You can either use '1024000' or '1048576'

$CONF['quota_multiplier'] = '1024000';

 

我们在这里使用明文口令方式,如果想使用密文,请把$CONF['encrypt']='cleartext';改成$CONF['encrypt']='md5crypt';

邮箱的存储格式使用domain.ltd/username的形式,所以设置:

$CONF['domain_path'] = 'YES';

$CONF['domain_in_mailbox'] = 'NO';

 

然后打开浏览器,进入postfixadmin的欢迎界面,点击网页上的setup,看看检查是否通过,记得要删除setup.php文件。然后进入http://www.yourdomain.com/postfixadmin/admin/index.php,就可以新建域名、管理员以及邮箱了。

 

建立/mail并设置权限

chown -R vmail:vmail /mail

 chmod -R ug+rwx,o-rwx /mail

 

 

7.安装Courier-authlib 0.55

tar -jxvf courier-authlib-0.55.20050407.tar.bz2

 cd courier-authlib-0.55.20050407

 ./configure \

--with-redhat \

--with-authmysql=yes \

--with-mailuser=vmail --with-mailgroup=vmail \

--with-mysql-libs=/usr/local/mysql/lib/mysql --with-mysql-includes=/usr/local/mysql/include/mysql/

make

 make install

make install-configure

 

 vi /usr/local/etc/authlib/authdaemonrc (确保只使用mysql认证模块)

authmodulelist="authmysql"

authmodulelistorig="authmysql"

 

 vi /usr/local/etc/authlib/authmysqlrc

MYSQL_SERVER localhost

MYSQL_SOCKET /tmp/mysql.sock

MYSQL_DATABASE postfix

MYSQL_USERNAME postfix

MYSQL_PASSWORD postfix

MYSQL_USER_TABLE mailbox

MYSQL_LOGIN_FIELD username

MYSQL_CRYPT_PWFIELD password

#MYSQL_CLEAR_PWFIELD password

MYSQL_UID_FIELD '1001'

MYSQL_GID_FIELD '1001'

MYSQL_HOME_FIELD '/var/mailbox/'

MYSQL_MAILDIR_FIELD maildir

MYSQL_NAME_FIELD name

MYSQL_QUOTA_FIELD quota

MYSQL_WHERE_CLAUSE active='1'

DEFAULT_DOMAIN test.com

 

注意:确认在这个文件中不能用空格键,只能用tab键。确认只使用单引号,比如:'/var/mailbox/','UID','GID'(本文为'1001')localhost不能用单引号确认你的/etc/hosts文件中有localhost编译时如果支持Ipv6可能导致错误MYSQL_GID_FIELD 和MYSQL_UID_FIELD是maildrop的UID和GID,而不是MySQL的。如果想使用md5密码,把MYSQL_CLEAR_PWFIELD password改成MYSQL_CRYPT_PWFIELD password

 

启动服务

要是想让imap开机就启动服务:

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

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

 chkconfig --level 0123456 courier-authlib on

手动启动服务:

 authdaemond start

 

测试courier-authlib

检查进程:

 pstree |grep authdaemond

|-authdaemond.mys---5*[authdaemond.mys]

 

 

 

8.安装Courier-imap 4.0.2

tar -jxvf courier-imap-4.0.2.20050403.tar.bz2

 cd courier-imap-4.0.2.20050403

 ./configure \

--prefix=/usr/local/imap \

--with-redhat \

--disable-root-check \

--enable-unicode=utf-8,iso-8859-1,gb2312,gbk,gb18030 \

--with-trashquota \

--with-dirsync

 make

 make install-strip (先install-strip,如果失败,再make install)

 make install-configure

 

vi /usr/local/imap/etc/pop3d

将POP3DSTART=NO改为POP3DSTART=YES

 

 vi /usr/local/imap/etc/imapd

将IMAPDSTART=NO改为IMAPDSTART=YES

 

让imap自启动:

 cp courier-imap.sysvinit /etc/rc.d/init.d/courier-imap

 chmod 755 /etc/rc.d/init.d/courier-imap

 chkconfig --level 0123456 courier-imap on

手动启动服务:

 /usr/local/imap/libexec/pop3d.rc start

 /usr/local/imap/libexec/imapd.rc start

 

测试courier-imap

检查进程:

 pstree |grep courier

|-2*[courierlogger]

|-2*[couriertcpd]

 

检查端口,应该有如下端口打开:

 netstat -an |grep LISTEN

tcp??0??0 0.0.0.0:110??0.0.0.0:*??LISTEN

tcp??0??0 0.0.0.0:143??0.0.0.0:*??LISTEN

 

检测POP3和IMAP服务:

 telnet localhost 110

+OK Hello there

USER [email protected]

+OK Password required.

PASS test

+OK Logged in.

QUIT

+OK bye-bye

 

faq: 以下错误为目录不存在或权限不足,无法跳转相应目录

[root@add mailbox]# telnet 127.0.0.1 110
Trying 127.0.0.1...
Connected to add.8866.org (127.0.0.1).
Escape character is '^]'.
+OK Hello there.
user [email protected]
+OK Password required.
pass test
-ERR chdir add.8866.org/test/ failed
Connection closed by foreign host.

 

9.安装Courier-maildrop 1.8.0

   注:有可能需要pcre.h的支持,先安装pcre

       tar –zxvf pcre-6.3.tar.gz

       ./configure

       make

       make install

 

tar jxvf maildrop-1.8.0.tar.bz2

 cd maildrop-1.8.0

 ./configure \

--prefix=/usr/local/maildrop \

--enable-sendmail=/usr/sbin/sendmail \

--enable-trusted-users='root vmail' \

--enable-syslog=1 \

--enable-maildirquota \

--enable-maildrop-uid=1001 \

--enable-maildrop-gid=1001 \

--with-trashquota \

--with-dirsync

 

make

 make install

 cp /usr/local/maildrop/bin/maildrop /usr/bin

 chmod a+rx /usr/bin/maildrop

 

注:察看/var/log/maillog文件会出现如下错误

Jun 17 04:02:14 localhost pipe[13389]: fatal: pipe_command: execvp /usr/local/bin/maildrop: No such file or directory

 

解决:ln –s /usr/local/maildrop/bin/maildrop  /usr/local/bin/maildrop

 

运行maildrop -v应该有如下提示信息:

maildrop 1.8.0 Copyright 1998-2004 Double Precision, Inc.

GDBM extensions enabled.

Courier Authentication Library extension enabled.

Maildir quota extension enabled.

This program is distributed under the terms of the GNU General Public

License. See COPYING for additional information.

 

新建/etc/maildroprc文件 (可有可无)

 vi /etc/maildroprc

logfile "/var/mailbox/maildrop.log"

to "$HOME$DEFAULT"

 

 chmod a+r /etc/maildroprc

 

配置Postfix (上面的配置文件有加入这些)

 vi /etc/postfix/main.cf

virtual_transport = maildrop

maildrop_destination_recipient_limit = 1

 

vi /etc/postfix/master.cf (默认装完后有以下资料)

maildrop unix - n n - - pipe

flags=DRhu user=vmail:vmail argv=/usr/local/maildrop/bin/maildrop -w 90 -d ${recipient}

 

在postfixadmin中建立一测试帐户[email protected]

测试maildrop

 maildrop -V 9 -d [email protected]

maildrop: authlib: groupid=1001

maildrop: authlib: userid=1001

maildrop: authlib: [email protected], home=/var/mailbox/, mail=test.com/test/

maildrop: Changing to /var/mailbox/

ctrl+c退出

 

下一步,查看日志(/var/log/maillog)看看postfix是不是和maildrop一起工作:

 cat /var/log/maillog | grep maildrop -A 2

Feb 28 11:50:41 malochia postfix/qmgr[7345]: 2875B7823E62: from=<[email protected]>;, size=3308, nrcpt=1 (queue active)

Feb 28 17:18:05 malochia postfix/pipe[11615]: 04DD57822697: to=<[email protected]>;, relay=maildrop, delay=0, status=sent (domain.tld)

 

如果没有,看看是不是由于配置不正确,而使邮件在队列中

 Mailq

相关阅读 更多 +
排行榜 更多 +
飞艇大战

飞艇大战

飞行射击 下载
三维空间战斗机

三维空间战斗机

飞行射击 下载
战斗机教练

战斗机教练

飞行射击 下载