现在的位置: 首页 > 综合 > 正文

postfix邮件系统完整版

2018年01月22日 ⁄ 综合 ⁄ 共 156782字 ⁄ 字号 评论关闭

 http://www.kuqin.com/article/14mail/553326.html

[原创] postfix邮件系统完整版


来源 chinaunix.net 酷勤网整理

redhat9+postfix+cyrus-sasl+mysql+postfixadmin+courier-imap+courier-maildrop+squirrelmail(courier-sqwebmail openwebmail)+clamav+spamassassin+amavisd-new

2005年5月5日加入Cyrus SASL with MySQL Encrypted Passwords
2005年5月3日更新防病毒及防垃圾
2005年4月12日加入mysql日志管理
2005年4月10日至13日加入openwebmail 
2005年4月8日加入apache自启动脚本
2004年10左右成稿

1.mysql

2.apache

3.php

4.cyrus-sasl

5.postfix

6.postfixadmin

7.courier-authlib

8.courier-imap

9.courier-maildrop

10.webmail
    10.1.sqwebmai
    10.2.squirrelmail
    10.3.openwebmail 

11.clamav

12.spamassassin

13.amavisd-new

14.后记加一点说明

15.附:启动脚本

本文用到的软件

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 
下载 
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 
下载 
1.安装mysql 4.1.11
# groupadd mysql
# useradd -g mysql mysql
# wget http://dev.mysql.com/get/Downloads/MySQL-4.1/mysql-4.1.11.tar.gz/from/http://mysql.new21.com/
# tar -zxvf mysql-4.1.11.tar.gz
# cd mysql-4.1.11
# ./configure --prefix=/usr/local/mysql --with-charset=gbk
# 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

安装完以后要初始化数据库,要是升级安装的请跳过
# cd /usr/local/mysql
# /usr/local/mysql/bin/mysql_install_db --user=mysql
# chown -R root .
# chown -R mysql var
# chgrp -R mysql .
# /usr/local/mysql/bin/mysqld_safe --user=mysql & 

好了,至此mysql安装完毕,你可以这样起动你的mysql服务
# /etc/rc.d/init.d/mysqld start 

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

为了能让系统找到mysql,请运行如下命令
# PATH=$PATH:/usr/local/mysql/bin
# export PATH
# echo "/usr/local/mysql/lib/mysql" >;>; /etc/ld.so.conf
# ldconfig

日志管理
开启错误日志 (在[safe_mysqld]项下添加)
# 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 

# service mysqld restart 

说明:
错误日志包含了服务器写入标准错误输出设备的所有消息,同时还包括了mysql服务的启动和关闭事件
常规日志用来记录有关mysql服务器运行的常规信息,包括用户的连接、查询及其他各种时间
更新日志用来记录修改数据库的查询信息,包括所有涉及数据库修改的SQl语句的查询记录
建议调试结束后关闭日志

Go to top.

2.安装apache 2.0.54
# wget http://apache.freelamp.com/httpd/httpd-2.0.54.tar.bz2
# tar jxvf httpd-2.0.54.tar.bz2
# cd httpd-2.0.54
# ./configure --prefix=/usr/local/apache
# make
# make install

设置自启动
# cp support/apachectl /etc/init.d/httpd

修改/etc/init.d/httpd
# vi /etc/init.d/httpd(在第两行之后添加如下内容)
#!/bin/sh 

# Startup script for the Apache Web Server 
# chkconfig: - 85 15 
# description: Apache is a World Wide Web server. It is used to serve / 
# HTML files and CGI. 
# processname: httpd 
# pidfile: /usr/local/apache/log/httpd.pid 
# config: /usr/local/apache/conf/httpd.conf

# chkconfig --add httpd
# chmod 755 /etc/init.d/httpd 
# chkconfig httpd on 

创建网页根目录
# mkdir /var/www

# vi /usr/local/apache/conf/httpd.conf
//存放网页的目录,原来为DocumentRoot "",改成:
DocumentRoot "/var/www"
//这句应该和DocumentRoot 的目录保持一致,原来为<Directory "">;,改成:
<Directory "/var/www">;
//Indexes:当在目录中找不到DirectoryIndex列表中指定的文件就生成当前目录的文件列表
//FollowSymlinks:允许符号链接跟随,访问不在本目录下的文件
Options Indexes FollowSymLinks
//禁止读取.htaccess配置文件的内容
AllowOverride None
//指定先执行Allow(允许)访问规则,再执行Deny(拒绝)访问规则
Order allow,deny
//设置Allow(允许)访问规则,允许所有连接
Allow from all
</Directory>;

启动服务:
# /usr/local/apache/bin/apachectl start

# service httpd start 

Go to top.

3.安装php 4.3.11
# wget http://cn2.php.net/get/php-4.3.11.tar.bz2/from/cn.php.net/mirror
# tar -jxvf php-4.3.11.tar.bz2
# cd php-4.3.11
# ./configure /
--prefix=/usr/local/php /
--with-mysql=/usr/local/mysql /
--with-apxs2=/usr/local/apache/bin/apxs
# make
# make install
# cp php.ini-dist /usr/local/php/lib/php.ini

# vi /usr/local/php/lib/php.ini
;default_charset = "iso-8859-1"
在这行下面加一行
default_charset = "gbk"

# vi /usr/local/apache/conf/httpd.conf
找到#AddType application/x-tar .tgz 这行,在下面加两行。
AddType application/x-httpd-php .php 
AddType application/x-httpd-php-source .phps
找到下面一行在后面加上index.php,这表示网站的默认页也能够为index.php 
DirectoryIndex index.html index.html.var index.php 
注意:改变了http.conf后,要重启apache服务器,否则不会生效!

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自动启动 

Go to top.

4.安装cyrus-sasl 2.1.20
如果系统安装已经,先卸载它,或使用下面方法关闭它
# mv /usr/lib/sasl /usr/lib/sasl.OFF
# mv /usr/lib/sasl2 /usr/lib/sasl2.OFF

编译安装cyrus-sasl2.1.20
# wget ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-2.1.20.tar.gz
# 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

为了让postfix能找到sasl,请运行如下命令:
# 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 

Go to top.

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

开始安装
# groupadd -g 12345 postfix
# useradd -u 12345 -g 12345 -c postfix -d/dev/null -s/bin/false postfix
# groupadd -g 54321 postdrop
# 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

Go to top.

6.安装postfixadmin 2.1.0
建立apache和maildrop的用户和组
# groupadd vmail -g 1001
# useradd vmail -u 1001 -g 1001 -s/bin/false -d/dev/null

# vi /usr/local/apache/conf/httpd.conf

User nobody
Group #-1
改为
User vmail
Group vmail

# wget http://high5.net/postfixadmin/download.php?file=postfixadmin-2.1.0.tgz
# tar -zxvf postfixadmin-2.1.0.tgz
# mv postfixadmin-2.1.0 /var/www/postfixadmin
更改权限,假定运行apache的用户和组为vmail
# chown -R vmail:vmail /var/www/postfixadmin
# cd /var/www/postfixadmin
# chmod 640 *.php *.css
# cd /var/www/postfixadmin/admin/
# chmod 640 *.php .ht*
# cd /var/www/postfixadmin/images/
# chmod 640 *.gif *.png
# cd /var/www/postfixadmin/languages/
# chmod 640 *.lang
# cd /var/www/postfixadmin/templates/
# chmod 640 *.tpl
# cd /var/www/postfixadmin/users/
# chmod 640 *.php

建立mysql表
# cd /var/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/username@domain.tld
$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,就可以新建域名、管理员以及邮箱了。

Go to top.

# vi /etc/postfix/main.cf
#=====================BASE========================= 
#主机名称(用 FQDN 的方式来写)
myhostname = www.test.com
#domain 名称
mydomain = test.com
#邮件标头上面的 mail from 的那个地址
myorigin = $mydomain
#可用来收件的主机名称(这里没有使用$mydomain是因为我们将使用virtualhost)
mydestination = $myhostname localhost localhost.$mydomain
#允许不使用smtp发信认证的网段
mynetworks = 127.0.0.0/8
inet_interfaces = all
#使用的邮箱格式 
#home_mailbox = Maildir/
#mailbox_transport = maildrop 

#=====================Vritual Mailbox settings========================= 
# 指定用户邮箱所在的根目录
virtual_mailbox_base = /var/mailbox/
#指定postfix如何去检索邮件用户,这里是采用mysql (用户邮箱的目录)
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
#邮件账号的uid, 使用apache的运行用户
virtual_uid_maps = static:1001
virtual_gid_maps = static:1001
#virtual_uid_maps = mysql:/etc/postfix/mysql/mysql-virtual_uid_maps.cf
#virtual_gid_maps = mysql:/etc/postfix/mysql/mysql-virtual_gid_maps.cf
# use this for virtual delivery(如果没有安装maildrop,则此处为virtual)
#virtual_transport = virtual
#use this for maildrop-delivery (如果有maildrop,则此处为maildrop)
virtual_transport = maildrop
#Maildrop-Options for usage with maildrop
maildrop_destination_recipient_limit = 1
maildrop_destination_concurrency_limit = 1

#/var/mailbox/最后的"/"字符不能省略
#所有的MySQL查询配置文件统一存放在/etc/postfix/mysql中

#====================QUOTA========================
#每封信的最大大小(10M),postfix的默认值是10M, 但这指的是邮件正文和编码后附件的总和, 经过#base64编码,附件的大小会增加35%左右, 因此这里设定可接受邮件的大小为14M 
message_size_limit = 14336000
#邮箱的默认大小(10M) 
virtual_mailbox_limit = 20971520
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
#指定postfix如何获得用户的quota信息(每个用户的邮箱大小)
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 try again later.
virtual_overquota_bounce = yes

#====================SASL======================== 
broken_sasl_auth_clients = yes
#In order to allow mail relaying by authenticated clients
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"

Go to top.

建立/var/mailbox并设置权限
# mkdir /var/mailbox 
# chown -R vmail:vmail /var/mailbox
# chmod -R ug+rwx,o-rwx /var/mailbox

建立/etc/postfix/mysql文件夹和MySQL查询配置文件
# mkdir /etc/postfix/mysql
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

2、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'

3、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'

4、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'

Go to top.

配置 /usr/local/lib/sasl2/smtpd.conf
# vi /usr/local/lib/sasl2/smtpd.conf
pwcheck_method: auxprop
auxprop_plugin: sql
mech_list: plain login
sql_engine: mysql
sql_hostnames: localhost
sql_user: postfix
sql_passwd: postfix
sql_database: postfix
sql_select: SELECT password FROM mailbox WHERE username='%u@%r' and domain='%r' and active='1'

启动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

Go to top.

7.安装Courier-authlib 0.55
新版本的imap不再包含authentication library,必须先安装 Courier authentication library 
# wget http://www.courier-mta.org/beta/courier-authlib/courier-authlib-0.55.20050407.tar.bz2
# 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]

Go to top.

8.安装Courier-imap 4.0.2
# wget http://www.courier-mta.org/beta/imap/courier-imap-4.0.2.20050403.tar.bz2
# 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 test@test.com 
+OK Password required. 
PASS test
+OK Logged in. 
QUIT
+OK bye-bye

Go to top.

9.安装Courier-maildrop 1.8.0
# groupadd vmail -g 1001
# useradd vmail -u 1001 -g 1001 -s/bin/false -d/dev/null
# wget http://jaist.dl.sourceforge.net/sourceforge/courier/maildrop-1.8.0.tar.bz2
# 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

运行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}

由于maildrop没有建立maildir的功能,因此由一小断脚本实现
# vi /etc/sudoers 
vmail ALL = NOPASSWD: /usr/sbin/maildirmake.sh

新建/usr/sbin/maildirmake.sh文件
# vi /usr/sbin/maildirmake.sh 
#!/bin/bash
set -e
if [ ! -f /var/mailbox/$1 ]
then
mkdir /var/mailbox/$1
fi 
chown -R vmail:vmail /var/mailbox/$1
cd "/var/mailbox/$1"
/usr/local/imap/bin/maildirmake $2
chown -R 1001:12345 /var/mailbox/$1/$2
chmod -R g=s /var/mailbox/$1/$2

# chmod 755 /usr/sbin/maildirmake.sh

更改postfixadmin/admin目录下的create-mailbox.php文件
在此文件的200行后加一行:
# vi /var/www/postfixadmin/admin/create-mailbox.php
system("sudo /usr/sbin/maildirmake.sh $fDomain ".$_POST['fUsername']); 

说明:
建立的邮箱格式:/var/vmail/domain.tld/username 
uid 1001 是vmail的用户id,也是目录/var/vmail的owner
gid 12345 是postfix的组id

在postfixadmin中建立一测试帐户test@test.com
测试maildrop
# maildrop -V 9 -d test@test.com
maildrop: authlib: groupid=1001
maildrop: authlib: userid=1001
maildrop: authlib: logname=test@test.com, 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=<remote@user.nl>;, size=3308, nrcpt=1 (queue active) 
Feb 28 17:18:05 malochia postfix/pipe[11615]: 04DD57822697: to=<user@domain.tld>;, relay=maildrop, delay=0, status=sent (domain.tld) 

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

配置quotas
新建文件/usr/local/maildrop/etc/quotawarnmsg
# vi /usr/local/maildrop/etc/quotawarnmsg 
From: 管理员 test.com <postmaster@test.com>; 
Reply-To: postmaster@test.com
To: Valued Customer:; 
Subject: 警告!您的邮箱空间即将用完!
Mime-Version: 1.0 
Content-Type: text/plain; charset=gb2312
Content-Transfer-Encoding: 8bit 

亲爱的用户,您的邮箱空间已用了90%。如果还想继续收到邮件的话,请删除一些邮件。

设置quotas
Postfixadmin的数据库的maildrop表的quota字段是int类型的,在maildrop下不能工作,不过我们可以修改 /usr/local/etc/authlib/authmysqlrc文件,把其中的MYSQL_QUOTA_FIELD quota一行改为MYSQL_QUOTA_FIELD concat(quota,'S') ,如果你想限制邮件的数量,也可以改成MYSQL_QUOTA_FIELD concat(quota,'C')。
如果我们把一个用户的邮箱设为10M,我们可以把quota的值改为“10000000S”。也可以用“C”,“1000C”的意思是只能存放1000条邮件。 

给test@test.com发一封信,但是不用包含附件。然后:
# cd /var/mailbox/test.com/test
# cat maildirsize
1000000S 
1622 1

maildirsize这个文件存储了邮箱配额的信息,而且courier-imap也用这个文件。
举个例子说明一下该文件,我的一个maildirsize文件的内容如下:
# cat maildirsize 
5000000S 
42898 9 
3403 1 
1622 1 
2371 1 

说明这个邮箱的容量是5M(如果你把quota字段的值删除,maildrop会自动给它一个值,但是不要把它的值设置成null),现在邮箱里有四封信。
假设该用户用掉了5M中的3M,只剩2M了,如果来了一封大于2M的邮件,将会被退回,如果是1.7M的邮件,maildrop会收下该邮件,更新maildirsize文件,重新计算quota,得知该用户使用了90%(/etc/postfix/master.cf中的-w 90)以上的配额,maildrop会拷贝/usr/local/maildrop/etc/quotawarnmsg文件到该用户的邮箱中警告该用户。

Go to top.

10.webmail

10.1.安装sqwebmail 5.0.1 
# wget http://optusnet.dl.sourceforge.net/sourceforge/courier/sqwebmail-5.0.1.tar.bz2
# tar jxvf sqwebmail-5.0.1.tar.bz2
# cd sqwebmail-5.0.1
# ./configure /
--prefix=/usr/local/sqwebmail /
--enable-unicode=utf-8,iso-8859-1,gb2312,gbk,gb18030 /
--with-trashquota
# make configure-check 
# make 
# make install-strip
# make install-configure

启动服务
# /usr/local/sqwebmail/libexec/sqwebmaild.rc start

测试sqwebmail
http://192.168.0.5/cgi-bin/sqwebmail
使用用户test@test.com,密码test,登陆进出以后就可以测试收发邮件了。但是图片不能显示,只要
# mv /usr/local/apache/htdocs/webmail /var/www

修改Apache 
# cd /var/www
# vi index.html //输入一下内容: 
<html>; 
<head>; 
<title>;MAIL SYSTEM</title>; 
<meta http-equiv="Content-Type" content="test/html;charset=gb2312">; 
<meta http-equiv="refresh" content="0;url=http://mail.test.com/cgi-bin/sqwebmail">; 
</head>; 
<body bgcolor="#FFFFFF" test="#000000">; 
</html>; 

经过以上修改以后,你就可以通过:http://mail.test.com 直接来访问sqwebmail了,这样就方便多了。可惜是英文的,不知道哪位达人能汉化一下,并把界面改的漂亮一点就好了。

Go to top.

10.2.安装squirrelmail 1.4.4
下载squirrelmail及中文包
# wget http://jaist.dl.sourceforge.net/sourceforge/squirrelmail/squirrelmail-1.4.4.tar.bz2
# wget http://jaist.dl.sourceforge.net/sourceforge/squirrelmail/zh_CN-1.4.4-20050122.tar.bz2
把squirreelmail解压到/var/www目录下。
# tar -jxvf squirrelmail-1.4.4.tar.bz2 -C /var/www/
# mv /var/www/squirrelmail-1.4.4 /var/www/squirrelmail 
解压中文包
# tar -jxvf zh_CN-1.4.4-20050122.tar.bz2 -C /var/www/squirrelmail/

在配置squirrelmail之前先下载三个插件:
Quota Usage Version 1.3
# wget http://www.squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Fquota_usage-1.3-1.2.7.tar.gz 
Compatibility Version 1.3
# wget http://www.squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Fcompatibility-1.3.tar.gz
Change MySQL Password Version 3.2
# wget http://www.squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Fchange_mysqlpass-3.2-1.2.8.tar.gz

把这三个插件解压到squirrelmail的plugin目录下并设置权限。
# tar -zxvf quota_usage-1.3-1.2.7.tar.gz -C /var/www/squirrelmail/plugins/
# tar -zxvf compatibility-1.3.tar.gz -C /var/www/squirrelmail/plugins/
# tar -zxvf change_mysqlpass-3.2-1.2.8.tar.gz -C /var/www/squirrelmail/plugins/
第一个插件是用来显示邮箱的使用情况的;第二个和第三个插件是用来修改密码的。
如果不想装这些插件,请跳过。

配置Quota Usage
# cd /var/www/squirrelmail/plugins/quota_usage
# cp config.php.sample config.php

配置Change MySQL Password 
# cd /var/www/squirrelmail/plugins/change_mysqlpass
# cp config.php.sample config.php
# vi config.php
更改如下几个变量:
$mysql_database = 'postfix';
$mysql_table = 'mailbox';
$mysql_userid_field = 'username';
$mysql_password_field ='password';
$mysql_manager_id = 'postfix';
$mysql_manager_pw = 'postfix';
$mysql_unixcrypt = 0;
//$mysql_MD5crypt = 1;
$mysql_MD5crypt = 0;
$use_ssl_for_password_change = 0;

如果你的密码是MD5加密的,就把$mysql_MD5crypt = 0;改成$mysql_MD5crypt = 1;

配置squirrelmail
# cd /var/www/squirrelmail
# ./configure
进入10. Languages
把1. Default Language : 的en_US改成zh_CN。
进入8. Plugins,添加这三个插件

打开浏览器输入http://192.168.0.5/squirrelmail/,用test@test.com登陆,你将会在屏幕的左上角看到邮箱的使用情况,你还会看到一条警告信息:
Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /var/www/squirrelmail/plugins/change_mysqlpass/functions.php on line 129
这是由于数据库结构不一致造成的,你只要把functions.php中的129行注释调即可(在行首加//)。
现在你还可以用选项中的change passwd修改你的密码了,不过这个模块是英文的,如果你想改成中文的,可以自己修改,squirrelmail网站上有介绍。或者请参考:
http://datastrategy.org/number5/archives/000241.html
1、把change_mysqlpass.po与locale/zh_CN/LC_MESSAGES/squirrelmail.po合并
最简单的方法就是:
# cat change_mysqlpass.po >;>; /var/www/squirrelmail/locale/zh_CN/LC_MESSAGES/squirrelmail.po 
2、执行:
# cd /var/www/squirrelmail/locale/zh_CN/LC_MESSAGES/
# msgfmt -o squirrelmail.mo squirrelmail.po 

由于安全原因,建议把data目录移出web tree,比如移到/usr目录下,设置权限
# cp -R /var/www/squirrelmail/data/ /var/data
# chown -R vmail.vmail /var/data
# chmod 730 -R /var/data

Go to top.

10.3.openwebmail 2.51
安装DBI.pm
# wget http://search.cpan.org/CPAN/authors/id/T/TI/TIMB/DBI-1.48.tar.gz
# tar zxvf DBI-1.48.tar.gz
# cd DBI-1.48
# perl Makefile.PL
# make
# make test 
# make install

安装DBD-mysql
# wget http://search.cpan.org/CPAN/authors/id/R/RU/RUDY/DBD-mysql-2.9006.tar.gz 
# tar zxvf DBD-mysql-2.9006.tar.gz
# cd DBD-mysql-2.9006
# export LANG='C'
# ln -s /usr/local/mysql/bin/mysql_config /usr/bin/mysql_config
# perl Makefile.PL /
--libs="-L/usr/local/mysql/lib/mysql -lmysqlclient -lz" /
--cflags=-I/usr/local/mysql/include/mysql /
--testhost=127.0.0.1
# make
# make test # Some minor error messages can be ignored here
# make install

安装CGI.pm
# wget http://search.cpan.org/CPAN/authors/id/L/LD/LDS/CGI.pm-3.07.tar.gz
# tar zxvf CGI.pm-3.07.tar.gz
# cd CGI.pm-3.07
# perl Makefile.PL
# make
# make test 
# make install

安装Text-Iconv
# wget http://search.cpan.org/CPAN/authors/id/M/MP/MPIOTR/Text-Iconv-1.4.tar.gz
# wget http://openwebmail.org/openwebmail/download/packages/Text-Iconv-1.2.tar.gz
# tar zxvf Text-Iconv-1.2.tar.gz
# cd Text-Iconv-1.2
# perl Makefile.PL
# make
# make test
# make install

安装MIME-Base64
# wget http://openwebmail.org/openwebmail/download/packages/MIME-Base64-3.01.tar.gz
# tar zxvf MIME-Base64-3.01.tar.gz
# cd MIME-Base64-3.01
# perl Makefile.PL
# make
# make test
# make install

安装suidperl(9.0安装盘的第二张盘中有)
# wget http://turtle.ee.ncku.edu.tw/openwebmail/download/redhat/rpm/packages/rh9/perl-suidperl-5.8.0-88.i386.rpm
# rpm -ivh perl-suidperl-5.8.0-88.i386.rpm

如果采用 rpm 安装,安装系统会自动对应到正确路径。若使用手动安装,将openwebmail目录及data目录移至如下/var/www/cgi-bin/openwebmail及/var/www/data,我是用tarball安装的
# wget http://openwebmail.org/openwebmail/download/release/openwebmail-2.51.tar.gz
# tar zxvf openwebmail-2.51.tar.gz -C /var/www 

加入openwebmail的权限,编辑httpd.con,加入如下内容,假设/var/www/cgi-bin是apache的cgi-bin目录
# vi /usr/local/apache/conf/httpd.conf
ScriptAlias /openwebmail "/var/www/cgi-bin/openwebmail/openwebmail.pl"

存盘后重新启动apache
# service httpd restart 

编辑mysql认证文件
# vi /var/www/cgi-bin/openwebmail/auth/auth_mysql.pl
my $SQLHost = 'localhost';
my $sqlusr = 'postfix';
my $sqlpwd = 'postfix';
my $auth_db = 'postfix';
my $auth_table = 'mailbox';
my $field_username = 'username';
my $field_password = 'password';
my $field_realname = 'name';
my $field_uid = '1001';
my $field_gid = '1001';
my $field_home = 'maildir';
my $pass_type = 'cleartxt';

编辑openwebmail主配置文件
# vi /var/www/cgi-bin/openwebmail/etc/openwebmail.conf
domainnames auto
auth_module auth_mysql.pl
auth_withdomain yes
mailspooldir /var/mailbox
create_syshomedir new
use_syshomedir new
ow_cgidir /var/www/cgi-bin/openwebmail
ow_usersdir /var/mailbox
ow_cgiurl /cgi-bin/openwebmail
ow_htmldir /var/www/data/openwebmail
ow_htmlurl /data/openwebmail
logfile /var/log/openwebmail.log

quota_module quota_du.pl #磁盘限额模块
quota_limit 30000 #用户主目录磁盘上限30M
spool_limit 10000 #收件箱上限10M /var/mail

enable_webdisk no
enable_sshterm no 

接下来执行初始化
# /var/www/cgi-bin/openwebmail/openwebmail-tool.pl --init

将dbm.conf中的设定改为执行初始化后系统所要求的
# cp /var/www/cgi-bin/openwebmail/etc/defaults/dbm.conf /var/www/cgi-bin/openwebmail/etc/
# vi /var/www/cgi-bin/openwebmail/etc/dbm.conf
dbm_ext .db 
dbmopen_ext .db 
dbmopen_haslock no

再执行一次初始化
# /var/www/cgi-bin/openwebmail/openwebmail-tool.pl --init 

这时便会出现一些讯息,最后出现一行
Send the site report?(Y/n) 
按 Enter 即可,这样便完成 openwebmail 的设定

创建日志文件并设置logrotate
# touch /var/log/openwebmail.log
# vi /etc/logrotate.d/syslog (加入下面几行)
/var/log/openwebmail.log { 
postrotate 
/usr/bin/killall -HUP syslogd 
endscript 
}

测试
http://192.168.1.5/openwebmail

openwebmail不支持Maildir,所以照这篇文章的设置,将不能收邮件,可以打个补丁(非官方提供),也可以把postfix改成Mailbox格式的,但是我更期待支持Maildir的官方版,应该快了吧!

Go to top.

11.安装clamav 0.84
# wget http://jaist.dl.sourceforge.net/sourceforge/clamav/clamav-0.84.tar.gz
# tar zxvf clamav-0.84.tar.gz
# cd clamav-0.84
# groupadd clamav
# useradd -g clamav -s/bin/false -d/dev/null clamav 
# ./configure --prefix=/usr/local/clamav --with-dbdir=/usr/local/share/clamav
# make
# make check
# make install

编辑/usr/local/clamav/etc/clamd.conf
# vi /usr/local/clamav/etc/clamd.conf
#Verbose logging with syslog
LogSyslog
LogVerbose
LogFacility LOG_MAIL
LogFile /var/log/clamav/clamd.log
#Change pid file location
PidFile /var/run/clamav/clamd.pid
DatabaseDirectory /usr/local/share/clamav 
#Set the clamav socket
LocalSocket /var/run/clamav/clamd
#Close the connection when this limit is exceeded
StreamMaxLength 10M
#Don't run clamd as root
User amavis
#Newer versions require you to uncomment this
ScanMail
ScanArchive

编辑/usr/local/clamav/etc/freshclam.conf
# vi /usr/local/clamav/etc/freshclam.conf
DatabaseDirectory /usr/local/share/clamav
UpdateLogFile /var/log/clamav/freshclam.log
LogSyslog
LogVerbose
DatabaseOwner amavis
#Check for updates every two hours. That is the official recommendation
Checks 12
DatabaseMirror db.CN.clamav.net
DatabaseMirror database.clamav.net
NotifyClamd

注意:一定要注释掉上面两个文件中Example那行

添加amavis用户和组
# groupadd amavis
# useradd -g amavis -s /bin/false -c "Amavis User" -d /dev/null amavis

创建日志文件夹并设置权限
# mkdir /var/log/clamav
# chmod -R 744 /var/log/clamav
# chown -R amavis:amavis /var/log/clamav

# chown -R amavis.amavis /usr/local/share/clamav
# mkdir /var/run/clamav
# chmod 700 /var/run/clamav
# chown amavis.amavis /var/run/clamav

手动更新病毒库
# /usr/local/clamav/bin/freshclam 

设置自动更新病毒库
# vi /etc/crontab
0 4 * * * root /usr/local/clamav/bin/freshclam --quiet -l /var/log/clamd.log 

启动
# /usr/local/clamav/sbin/clamd

Go to top.

13.安装amavisd-new 2.3.0

# wget http://www.ijs.si/software/amavisd/amavisd-new-2.3.0.tar.gz
# tar zxvf amavisd-new-2.3.0.tar.gz
# cd amavisd-new-2.3.0
# groupadd amavis
# useradd -g amavis -s /bin/false -c "Amavis User" -d /dev/null amavis

# mkdir -p /var/amavis /var/amavis/tmp /var/amavis/var /var/amavis/db
# chown -R amavis:amavis /var/amavis
# chmod -R 750 /var/amavis

# cp amavisd /usr/local/sbin/
# chown root /usr/local/sbin/amavisd
# chmod 755 /usr/local/sbin/amavisd

# cp amavisd.conf /etc/
# chown root /etc/amavisd.conf
# chmod 644 /etc/amavisd.conf

病毒邮件存放目录
# mkdir /var/virusmails
# chown amavis:amavis /var/virusmails
# chmod 750 /var/virusmails

Go to top.

编辑/etc/amavisd.conf,修改下面这几行
# vi /etc/amavisd.conf
$max_servers=8; 
$daemon_user = 'amavis';
$daemon_group = 'amavis';
$mydomain = 'test.com';
$db_home = "$MYHOME/db";
$inet_socket_port = 10024;
$sa_tag_level_deflt = -100; 
$sa_tag2_level_deflt = 6.3; 
$sa_kill_level_deflt = $sa_tag2_level_deflt;
$virus_admin = "virusalert/@$mydomain";
$sa_spam_subject_tag = '***SPAM*** ';
$notify_method = $forward_method;
$forward_method = 'smtp:127.0.0.1:10025'; 
$final_virus_destiny = D_DISCARD;
$final_banned_destiny = D_DISCARD;
$final_spam_destiny = D_DISCARD;
['ClamAV-clamd',
  /&ask_daemon, ["CONTSCAN {}/n", "/var/run/clamav/clamd"],
  qr//bOK$/, qr//bFOUND$/,
  qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],

测试amavis
# /usr/local/sbin/amavisd debug
ERROR: MISSING REQUIRED BASIC MODULES:
Time::HiRes
IO::Wrap
Unix::Syslog
Mail::Field
MIME::Words
Net::Server
BEGIN failed--compilation aborted at /usr/local/sbin/amavisd line 141.
根据出错提示,缺什么装什么
# perl -MCPAN -e shell
cpan>; install Time::HiRes
cpan>; install IO::Wrap
cpan>; install Unix::Syslog
cpan>; install Mail::Field
cpan>; install MIME::Words
cpan>; install Net::Server
cpan>; install BerkeleyDB
cpan>; install Convert::TNEF
cpan>; install Convert::UUlib
cpan>; install Archive::Tar
cpan>; install Archive::Zip (# export LANG=C)
cpan>; install HTML::Parser
cpan>; install DB_File
cpan>; install Net::DNS (when prompted to enable tests, choose no)
cpan>; install Digest::SHA1
cpan>; install Mail::SpamAssassin (# export LANG=en_US) 

启动
# /usr/local/sbin/amavisd start

Go to top.

设置postfix
修改/etc/postfix/main.cf
# vi /etc/postfix/main.cf (加入一行)
content_filter = amavis:127.0.0.1:10024
修改/etc/postfix/master.cf
# vi /etc/postfix/master.cf (在最后加上)
# amavisd-new
amavis unix - - n - 2 smtp
  -o smtp_data_done_timeout=1200
  -o smtp_send_xforward_command=yes
  -o disable_dns_lookups=yes

localhost:10025 inet n - n - - smtpd
  -o content_filter=
  -o local_recipient_maps=
  -o relay_recipient_maps=
  -o mynetworks=127.0.0.0/8
  -o smtpd_helo_restrictions=
  -o smtpd_client_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o strict_rfc821_envelopes=yes
  -o smtpd_error_sleep_time=0
  -o smtpd_soft_error_limit=1001
  -o smtpd_hard_error_limit=1000

重新启动postfix
# postfix stop
# postfix start
# postfix check

# netstat -an | grep LISTEN (应该可以看到这两个端口在监听)
127.0.0.1.10024 *.* 0 0 49152 0 LISTEN
127.0.0.1.10025 *.* 0 0 49152 0 LISTEN

Go to top.

12.安装Spamassassin 3.0.3
前面装amavis的时候已经装好了,如果没装,请按如下方式安装
# perl -MCPAN -e shell
cpan>; install HTML::Parser
cpan>; install DB_File
cpan>; install Net::DNS (when prompted to enable tests, choose no)
cpan>; install Digest::SHA1
cpan>; install Mail::SpamAssassin 

# vi /etc/mail/spamassassin/local.cf (修改后不用重新启动 SpamAssassin,立即生效)
report_safe 0
use_bayes 1
bayes_path /var/amavisd/.spamassassin/bayes
bayes_auto_learn 1 
skip_rbl_checks 0
use_razor2 1
use_dcc 1
use_pyzor 1
# 是否能够进行 DNS 查询。直接设定为 yes 将有效加快 amavis 的启动速度
dns_available yes
# 检查是否为由内部网络所寄出的信件。
# 若是,则永远不判断为垃圾邮件。(评分减 50 分)
# 其中的 example.net 请替换成您的 Domain Name..
header LOCAL_RCVD Received =~ /.*/(/S+/.domain/.com/s+/[.*/]/)/
describe LOCAL_RCVD Received from local machine
score LOCAL_RCVD -50
# 垃圾邮件计分规则
score DCC_CHECK 4.000
score SPF_FAIL 10.000
score SPF_HELO_FAIL 10.000
score RAZOR2_CHECK 2.500
score BAYES_99 4.300
score BAYES_90 3.500
score BAYES_80 3.000

新建文件/var/amavisd/.spamassassin/user_prefs
# touch /var/amavis/.spamassassin/user_prefs

检查local.cf语法
# spamassassin --lint 

bayes(计划中) 

启动spamd
# /usr/bin/spamd --daemonize --pidfile /var/run/spamd.pid

下载中文垃圾垃圾邮件过滤规则Chinese_rules.cf
# wget -N -P /usr/share/spamassassin www.ccert.edu.cn/spam/sa/Chinese_rules.cf

每次更新Chinese_rules.cf需要重启spamd方法如下
# kill -HUP `cat /var/run/spamd.pid`

自动更新中文垃圾垃圾邮件过滤规则
# vi /etc/crontab (加一行)
0 0 1 * * root wget -N -P /usr/share/spamassassin www.ccert.edu.cn/spam/sa/Chinese_rules.cf;kill -HUP `cat /var/run/spamd.pid`

测试病毒扫描
使用其他邮件系统用户给该系统的用户发送邮件,包含以下内容:
X5O!P%@AP[4/PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
如果这个用户能够收到有病度提示的邮件说明病毒过滤已经成功!
邮件病毒扫描日志将被记录在/var/log/clamav/clamav.log中!

测试垃圾邮件扫描
使用其他邮件系统用户给该系统的用户发送邮件,包含以下内容:
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
然后查看邮件日志看看,发出的邮件是否被BOUNCE或DISCARD了

建立maildrop过滤脚本(如果你使用amavisd-new来对spamassassin进行操作的话,跳过该项)
# vi /etc/maildroprc
if ( $SIZE < 26144 )
{
exception {
xfilter "/usr/bin/spamassassin"
}
}

if (/^X-Spam-Flag: *YES/)
{
exception {
to "$HOME$DEFAULT/.Spam/"
}
}
else
{
exception {
to "$HOME$DEFAULT"
}
}

Go to top.

14.后记
大功告成,终于结束了。这篇文章花了本人无数心血,参考了无数篇文章,多少个日日夜夜啊,好几次烦得差点吐血,但是我坚持下来了。希望各位能够成功。

Go to top.

15.启动脚本
postfix的启动脚本:
# cat /etc/rc.d/init.d/postfix
#!/bin/bash
#
# mailsys This shell script takes care of starting and stopping Postfix 
# author : xingyu.wang <wxy@cngnu.org>; 2004/1/28
#
# chkconfig: 2345 80 30
# description: Postfix is a Mail Transport Agent, which is the program
# that moves mail from one machine to another.
#
# processname: mailsys
# pidfile: /var/run/postfix.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -f /usr/sbin/postfix ] || exit 0
RETVAL=0
prog="Postfix"

start() {
# Start daemons.
echo -n $"Starting $prog: "
/usr/sbin/postfix start >; /dev/null 2>;&1 &

RETVAL=$?

if [ $RETVAL -eq 0 ]; then
touch /var/lock/subsys/postfix
success $"$prog start" 
else
failure $"$prog start failure"
fi

echo
return $RETVAL
}

stop() {
# Stop daemons.
echo -n $"Shutting down $prog: "
/usr/sbin/postfix stop >; /dev/null 2>;&1 & 
RETVAL=$?

if [ $RETVAL -eq 0 ]; then
rm -f /var/lock/subsys/postfix
success $"$prog stop"
else
failure $"$prog stop failure"
fi

echo
return $RETVAL
}

# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
start
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit 1
esac
exit $RETVA

# chmod 755 /etc/rc.d/init.d/postfix
# chkconfig --level 0123456 postfix on

clamav的启动脚本(有问题)
# cat /etc/rc.d/init.d/clamd
#!/bin/bash
#
# clamav: This script controls the clamd
#

# chkconfig: 2345 79 31
# description: clamav 
# processname: clamav
# pidfile: /var/run/clam.pid

# Source function library.
. /etc/rc.d/init.d/functions

prog="/usr/local/sbin/clamd"
prog_base="ClamD"
prog_config_file="/etc/clamav.conf"

## Check that networking is up.

RETVAL=0

# See how we were called.
case "$1" in
start)
echo -n "Starting $prog_base:" 
$prog -c $prog_config_file >;>; /var/log/clamd.log &
RETVAL=$?
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/${prog_base}
success
echo
;;
stop)
echo -n "Shutting down $prog_base:" 
#Force the kill...
kill `ps -A | grep clamd | cut -c1-6` &>; /dev/null
RETVAL=$?
#Sleep for a second or two.
/bin/sleep 3s
#Kill the stale socket.
rm -f /tmp/clamd >; /dev/null
if [ $RETVAL -eq 0 ] ; then
success
#echo "${prog_base} stopped"
rm -f /var/lock/subsys/${prog_base}
echo
else
echo
fi
;;
status)
status ${prog_base}
RETVAL=$?
;;
restart)
$0 stop
$0 start
RETVAL=$?
;;
reload)
#action $"Reloading ${prog_base}:" ${prog} -c ${prog_config_file} reload
$0 restart
RETVAL=$?
;;
*)
echo "Usage: $0 {start|stop|status|restart|reload}"
exit 1
esac

exit $RETVAL

# chmod 755 /etc/rc.d/init.d/clamd
# chkconfig --level 0123456 postfix on


 profans 回复于:2005-05-30 18:44:46

THanks ...
好好研究一下。
谢谢兄弟。


 守夜人 回复于:2005-05-30 19:31:14

晕,我看配置最麻烦的就是Email了,还好我用的是一个带自动安装角本的安装包


 oid2000 回复于:2005-05-31 08:08:17

写的很仔细,对我们这些新手很有帮助,但看到要安装这么多的软件包,我还真有点不太明白每个软件包的具体用途,不知楼主是否可以把里面所用到的每一个软件包的具体用途也介绍一下,特别是有依赖关系的软件包,先谢谢了!


 KindGeorge 回复于:2005-05-31 08:42:35

写的好详细,值得顶,研究一下


 zhangzezhi 回复于:2005-05-31 08:45:07

很不错,我也做了一个,但好象日志没你做的那么细,学习.


 bigbomb 回复于:2005-05-31 09:34:05

辛苦了,老大


 yzjboy 回复于:2005-05-31 09:51:44

我也强顶一下


 b2linux 回复于:2005-05-31 09:56:12

有心人啦! :em02:


 alsonluo 回复于:2005-05-31 15:05:04

Sqwebmail中文乱码问题如何解决?


 zhangshoug 回复于:2005-05-31 16:12:59

我前几天也在用postfix做这样的系统,在网上找了一些资料,但还没做成功.有了这个贴子,我不用自己做了.先收藏了,等有空再慢慢研究.


 anstan 回复于:2005-05-31 20:14:34

楼主,这是我的文章,^_^
最新版的在这里:http://anstan.go.nease.net/
强烈建议斑竹把这个原创精华还给我!


 anstan 回复于:2005-05-31 20:36:48

引用:原帖由 "oid2000"]写的很仔细,对我们这些新手很有帮助,但看到要安装这么多的软件包,我还真有点不太明白每个软件包的具体用途,不知楼主是否可以把里面所用到的每一个软件包的具体用途也介绍一下,特别是有依赖关系的软件包,先谢谢了!

我安装redhat9的时候只装了开发工具,其它的都没装。文中的都是采用tarball方式安装,凡是涉及到依赖性的,在文中都有说明。我是去年5月份开始接触linux的,当时公司说可能要建邮件服务器,让我先学学,于是就上网搜文章,说postfix不错,qmail好久不更新了,于是决定用postfix的,找到了一篇王兴宇大大的文章,发现他的文章对初学者简直就是一场恶梦,而且他的软件大都是rpm方式安装的,我不喜欢,至今还记得他的文章中关于cyrus-sasl打补丁的那一段,我是怎么搞也没成功,同时也发现自己什么都不懂,就开始弄这个东西有点拔苗助长,于是决定先学习一些shell的知识。同时看了Oreilly出的Postfix.The.Definitive.Guide,也参考了很多google里的文章,postfixadmin的官方论坛也帮我解决了不少问题。现在我们公司的邮件服务器就是用的这套系统,还不错,防垃圾的能力也不错。
还有,你问的每个软件包的用途,去看看王老大的那篇吧。


 anstan 回复于:2005-05-31 20:46:57

引用:原帖由 "alsonluo"]Sqwebmail中文乱码问题如何解决?

水平有限,抱歉。


 william_teng 回复于:2005-05-31 22:02:11

谢谢楼主的好贴,我要好好研究一下!


 思一克 回复于:2005-06-01 08:44:30

你好,

你说的意思是?

请明晰

JY


 思一克 回复于:2005-06-01 08:45:41

对不起。我是给楼主回短信,错写到帖子了


 ylwy 回复于:2005-06-01 08:51:23

好贴子,谢谢


 anstan 回复于:2005-06-01 09:29:14

引用:原帖由 "思一克" 发表:
你好,

你说的意思是?

请明晰

JY

我的意思是说这篇文章是我的,楼主发了我的文章,他得了原创精华,我心理不平衡,没发现我跟楼主是两个人吗?所以我想能不能把这个原创精华物归原主,不信,你可以问问楼主。


 思一克 回复于:2005-06-01 10:12:03

那楼主也出来说话,我就给此精华贴DELETE,在将你的加为精华。我的意思对吗?


 oid2000 回复于:2005-06-01 10:12:08

支持anstan!


 znavy 回复于:2005-06-01 10:30:13

怎么取消反弹消息?


 anstan 回复于:2005-06-01 10:54:10

引用:原帖由 "思一克"]那楼主也出来说话,我就给此精华贴DELETE,在将你的加为精华。我的意思对吗?

是这个意思。


 anstan 回复于:2005-06-01 11:05:41

引用:原帖由 "znavy"]怎么取消反弹消息?

什么反弹消息?


 zhangshoug 回复于:2005-06-01 21:59:51

我照这个做了,还是不能收邮件.
/var/mailbox下不能建立用户的maildir


 wind521 回复于:2005-06-02 11:21:42

顶,辛苦了


 gunguymadman 回复于:2005-06-03 12:25:33

太好了


 Linux@初学者 回复于:2005-06-05 16:43:00

嘿嘿,解决了,那个文件里有一个多余的行红字部分
有问题啊
当我做到建立mysql表时:
[root@rhel3 postfixadmin]# /usr/local/mysql/bin/mysql -uroot  -p  < DATABASE_MYSQL.TXT 
Enter password: 
ERROR 1064 (42000) at line 57: 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 'goto text NOT NULL,
  domain varchar(255) NOT NULL default '',
  created datetim' at line 3
第57行:CREATE TABLE alias (
  address varchar(255) NOT NULL default '',
  [color=red]goto text NOT NULL,[/color]
  domain varchar(255) NOT NULL default '',
  created datetime NOT NULL default '0000-00-00 00:00:00',
  modified datetime NOT NULL default '0000-00-00 00:00:00',
  active tinyint(1) NOT NULL default '1',
  PRIMARY KEY  (address),
  KEY address (address)
) TYPE=MyISAM COMMENT='Postfix Admin - Virtual Aliases';
还是因为数据库版本的问题? 我的是5.0.6 :em02: 


 nymz 回复于:2005-06-14 13:44:28

[root@yanhon mailbox]# pstree |grep courier
     |-courierlogger---authdaemond---5*[authdaemond]
     |-2*[courierlogger]
     |-2*[couriertcpd]
[root@yanhon mailbox]# telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Hello there.
user test@yanhon.com
+OK Password required.
pass test
-ERR Temporary problem, please try again later
Connection closed by foreign host.
[root@yanhon mailbox]#


 zyhjay 回复于:2005-06-14 14:05:27

引用:原帖由 "zhangshoug" 发表:
我照这个做了,还是不能收邮件.
/var/mailbox下不能建立用户的maildir

 :shock: 我也遇到相同问题


 zyhjay 回复于:2005-06-14 14:07:26

引用:原帖由 "nymz"]hon mailbox]#

怎么我也遇到这个了。有人成功吗?发个言吧


 k99882001 回复于:2005-06-15 15:45:31

我也遇到了同样的问题,
请高手指点


 cobra_zhou 回复于:2005-06-16 14:25:51

gcc -shared  sql.lo sql_init.lo plugin_common.lo  -L/var/lib/mysql -lmysqlclient -lresolv -lresolv -lc  -Wl,-soname -Wl,libsql.so.2 -o .libs/libsql.so.2.0.21
/usr/bin/ld: cannot find -lmysqlclient
collect2: ld returned 1 exit status
make[2]: *** [libsql.la] Error 1
make[2]: Leaving directory `/root/mail/cyrus-sasl-2.1.21/plugins'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/mail/cyrus-sasl-2.1.21'
make: *** [all] Error 2

cyrus-sasl 2.1.20时出现上面的错误信息?是我的MYSQL路径不对吗?我是REDHAT安装时就把MSYQL APACHE PHP全部装上了,这种情况路径应该怎么设?

急啊!!!!


 k99882001 回复于:2005-06-16 17:25:27

使用courier-imap4以前的版本可解决用户认证的问题


 nymz 回复于:2005-06-17 16:09:51

引用:原帖由 "k99882001"]使用courier-imap4以前的版本可解决用户认证的问题

我改用courier-imap-3.0.8.tar.gz2的还是出现这个问题,我都快要疯了!!求求大家,POP3 登陆 :lol: 不成功!!!


 k99882001 回复于:2005-06-17 16:27:00

这篇文章可能有帮助
http://www.hsboy.com/blog/archives/22-guid.html


 k99882001 回复于:2005-06-17 16:43:38

引用:原帖由 "zhangshoug" 发表:
我照这个做了,还是不能收邮件.
/var/mailbox下不能建立用户的maildir

我按照全文配置,发现对于一个没有邮箱的域名而言,建立第一个邮箱后,在/var/mailbox下可产生正确的用户目录,类似于domail/username,而建该域名下的第二个信箱就不能产生信箱目录,不知道各位高手这是为什么


 anstan 回复于:2005-06-17 19:49:36

引用:原帖由 "nymz"]hon mailbox]#

有没有其它什么错误信息,还可以详细点吗


 nymz 回复于:2005-06-18 15:12:56

POP3验证一直不成功,我都没有信心了!


 rxg 回复于:2005-06-19 15:52:48

引用:原帖由 "k99882001" 发表:

我按照全文配置,发现对于一个没有邮箱的域名而言,建立第一个邮箱后,在/var/mailbox下可产生正确的用户目录,类似于domail/username,而建该域名下的第二个信箱就不能产生信箱目录,不知道各位高手这是为什么

我也是一模一样,不知道怎么解决?


 anstan 回复于:2005-06-20 08:58:53

新建/usr/sbin/maildirmake.sh文件 
# vi /usr/sbin/maildirmake.sh 
#!/bin/bash 
set -e 
if [ ! -f /var/mailbox/$1 ] 

应该是
if [ ! -d /var/mailbox/$1 ] 

不好意思


 tom1133 回复于:2005-06-20 14:51:53

postfix/smtpd[4620]: SQL engine 'mysql' not supported
postfix/smtpd[4620]: auxpropfunc error no mechanism available

我的log/messages里总是显示这个错误。发的信也不在/var/mailbox里,是和我的mysql不兼容吗?我用的是mysql5 。


 seacaptain 回复于:2005-06-20 15:00:41

你可以调整/usr/local/lib/sasl2/smtpd.conf文件
pwcheck_method: auxprop
auxprop_plugin: sql
sql_engine: mysql
mech_list: PLAIN LOGIN
sql_user: postfix
sql_passwd: postfix     
sql_hostname: localhost
sql_database: postfix     
sql_verbose: yes
sql_select: select password from mailbox where username = '%u@%r'

我也遇到过这样的错误.把文件调整成这样就没问题了.

2/我曾经使用mysql.4.1.X的版本,结果总是报can't connect to localhost 的错误.换用mysql.3.23.58没问题了


 d18zj 回复于:2005-06-22 08:18:27

楼上的,不行啊,我改了还是这样


 mailjzwu_1 回复于:2005-06-23 20:42:05

不错,多谢楼主! :)  :)


 nymz 回复于:2005-06-28 08:39:55

/var/log/maillog

Jun  8 04:20:34 yanhon authdaemond.mysql: modules="authmysql", daemons=5
Jun  8 04:20:38 yanhon pop3d: Connection, ip=[::ffff:127.0.0.1]
Jun  8 04:20:49 yanhon pop3d: LOGIN: DEBUG: ip=[::ffff:127.0.0.1], command=USER
Jun  8 04:20:51 yanhon pop3d: LOGIN: DEBUG: ip=[::ffff:127.0.0.1], command=PASS
Jun  8 04:21:07 yanhon pop3d: LOGIN: DEBUG: ip=[::ffff:127.0.0.1], command=USER
Jun  8 04:21:13 yanhon pop3d: LOGIN: DEBUG: ip=[::ffff:127.0.0.1], command=PASS
Jun  8 04:21:19 yanhon pop3d: LOGIN: DEBUG: ip=[::ffff:127.0.0.1], command=QUIT
Jun  8 04:21:19 yanhon pop3d: LOGOUT, ip=[::ffff:127.0.0.1]
Jun  8 04:23:29 yanhon pop3d: Connection, ip=[::ffff:127.0.0.1]
Jun  8 04:23:44 yanhon pop3d: LOGIN: DEBUG: ip=[::ffff:127.0.0.1], command=USER
Jun  8 04:23:48 yanhon pop3d: LOGIN: DEBUG: ip=[::ffff:127.0.0.1], command=PASS
Jun  8 04:23:48 yanhon pop3d: LOGIN: DEBUG: ip=[::ffff:127.0.0.1], username=test
Jun  8 04:23:48 yanhon pop3d: LOGIN: DEBUG: ip=[::ffff:127.0.0.1], password=test
Jun  8 04:23:48 yanhon pop3d: authdaemon: starting client module
Jun  8 04:23:48 yanhon authdaemond.mysql: failed to connect to mysql server (server=localhost, userid=postfix)
Jun  8 04:23:48 yanhon pop3d: authdaemon: TEMPFAIL - no more modules will be tried
Jun  8 04:23:53 yanhon pop3d: LOGIN FAILED, ip=[::ffff:127.0.0.1]
Jun  8 04:24:13 yanhon pop3d: LOGIN: DEBUG: ip=[::ffff:127.0.0.1], command=QUIT
Jun  8 04:24:13 yanhon pop3d: LOGOUT, ip=[::ffff:127.0.0.1]
Jun  8 04:26:54 yanhon authdaemond.mysql: modules="authmysql", daemons=5
Jun  8 04:40:54 yanhon pop3d: Connection, ip=[::ffff:127.0.0.1]
Jun  8 04:41:02 yanhon pop3d: LOGIN: DEBUG: ip=[::ffff:127.0.0.1], command=USER
Jun  8 04:41:06 yanhon pop3d: LOGIN: DEBUG: ip=[::ffff:127.0.0.1], command=PASS
Jun  8 04:41:06 yanhon pop3d: LOGIN: DEBUG: ip=[::ffff:127.0.0.1], username=nymz@yanhon.com
Jun  8 04:41:06 yanhon pop3d: LOGIN: DEBUG: ip=[::ffff:127.0.0.1], password=123456
Jun  8 04:41:06 yanhon pop3d: authdaemon: starting client module
Jun  8 04:41:06 yanhon authdaemond.mysql: failed to connect to mysql server (server=localhost, userid=postfix)
Jun  8 04:41:06 yanhon pop3d: authdaemon: TEMPFAIL - no more modules will be tried
Jun  8 04:41:11 yanhon pop3d: LOGIN FAILED, ip=[::ffff:127.0.0.1]
Jun  8 04:41:14 yanhon pop3d: LOGIN: DEBUG: ip=[::ffff:127.0.0.1], command=QUIT


 lvboy09900 回复于:2005-06-28 15:47:45

我知安装到了postfixadmin2.1.0,这一步,建好了个人邮箱,我用管理员给一个用户发信,用outlool收发,测试时只能发送通过,而收邮件不行,为什么?


 nymz 回复于:2005-06-29 11:09:41

引用:原帖由 "lvboy09900"]我知安装到了postfixadmin2.1.0,这一步,建好了个人邮箱,我用管理员给一个用户发信,用outlool收发,测试时只能发送通过,而收邮件不行,为什么?

老是POP3验证不成功!!!


 万里北国 回复于:2005-07-22 19:23:34

引用:原帖由 "nymz" 发表:

老是POP3验证不成功!!!

我也是遇上这种情况,不过刚成功了。
检查authmysqlrc里MYSQL_SOCKET /tmp/mysql.sock这句,我的mysql.sock不在tmp下,改成正确路径就行了。


 万里北国 回复于:2005-07-22 23:12:09

我这里存在的问题是,新建域和邮箱时在/var/mailbox下不会自动产生域的目录和用户邮箱目录,
如果是手动建立这些目录,测试一下pop3和imap,
telnet localhost 110用user和pass命令可以测试通过,但实际并不能收信。
我用postfixadmin的管理员邮箱给一个本地域的一个测试帐户发信,收不到。
用postfixadmin给www.tom.com的一个邮箱发信,可以收到,但用mozilla给www.tom.com的邮箱发信,报告却是拒收,奇怪了,用postfixadmin发信tom.com是可以收到的。

但来自tom.com的回信却收不到,pop3和imap还是有问题。(防火墙已经完全停止)

唉,真是耗心费神啊!


 ljiayu-nj 回复于:2005-07-25 09:35:43

准备按此试一下,想问一下
10.webmail 
   10.1.sqwebmai 
   10.2.squirrelmail 
   10.3.openwebmail 
是三个都要装还是只要一个就可以?


 anstan 回复于:2005-07-25 09:37:34

引用:原帖由 "ljiayu-nj" 发表:
准备按此试一下,想问一下
10.webmail 
   10.1.sqwebmai 
   10.2.squirrelmail 
   10.3.openwebmail 
是三个都要装还是只要一个就可以?

装squirrelmail吧


 万里北国 回复于:2005-07-25 21:29:25

引用:原帖由 "anstan" 发表:

装squirrelmail吧

igenus行不行?


 anstan 回复于:2005-07-25 21:32:03

要改一改才可以,你去
http://www.xuki.org/bbs/
看看


 xpy9989201 回复于:2005-07-26 02:02:20

好啊~~但是有图就更好啦


 万里北国 回复于:2005-07-26 09:20:53

刚发现一个小问题,按楼主的文章做完后,
我在mozilla邮件客户端里发信,
有两个帐户,一个用pop3收信,
一个用imap收信,当然服务器是一样的。
用pop3的那个收发一切正常,用imap的那个帐户收信正常,对外发信时却先显示“正在发送邮件”,然后又说“正在复制消息到sent文件夹”,接着出来一个警告:“当前命令没有执行成功,邮件服务器响应:Invalid mailbox name...”,我在收、发件人的地址栏里可都是填的全名,不存在名字不对不全的因素,看到这样的信息,让人觉得好象邮件没发出去,只得关掉窗口,但令人奇怪的是其实邮件发送已经成功,到对方的邮箱里去看,邮件确实送到了!
为什么明明发送成功还要出这样的提示信息?那个用pop3收信的帐户就没有这样的事,只是用imap收信的帐户才有这种情况,难道收信服务器的设置也会影响postfix的对外发信?


 skid 回复于:2005-07-27 12:23:32

老大真厉害,学习。


 ljiayu-nj 回复于:2005-08-02 09:11:39

在# vi /etc/postfix/main.cf一段中,
#======Vritual Mailbox settings================= 
#==========QUOTA========================
#===========SASL======================== 
这几段都是自己添加的吗?我在main.cf中没发现有这样的几段啊

另,如果是自己添加,加在什么地方合适?


 anstan 回复于:2005-08-02 09:35:05

引用:原帖由 "ljiayu-nj" 发表:
在# vi /etc/postfix/main.cf一段中,
#======Vritual Mailbox settings================= 
#==========QUOTA========================
#===========SASL======================== 
这几段都是自己添加的吗?我?.........

直接加在最后就可以了,这样方便。


 ljiayu-nj 回复于:2005-08-02 18:18:12

在装courier-imap的时候,出现以下错误:
[root@v20 courier-imap-4.0.4]# ./configure /
>; --prefix=/usr/local/imap /
>; --with-redhat /
>; disable-root-check /
>; enable-unicode=utf-8,iso-8859,gb2312,gbk,gb18030 /
>; --with-trashquota /
>; --with-dirsync
configure: WARNING: you should use --build, --host, --target
configure: error: invalid variable name: enable-unicode

什么意思?


 anstan 回复于:2005-08-02 18:32:01

引用:原帖由 "ljiayu-nj"] courier-imap-4.0.4 发表:
# ./configure /
>; --prefix=/usr/local/imap /
>; --with-redhat /
>; disable-root-check /
>; enable-unicode=utf-8,iso-8859,gb2312,gbk,gb18030 /
>; --with-trashquota /..........

4.0.4可能不再支持某些选项了,你可以
./configure --help
看看


 ljiayu-nj 回复于:2005-08-03 17:56:40

安装amavisd-new-2.3.2时,在测试和启动时,出现下列错误:
# /usr/local/sbin/amavisd start
Digest::MD5 version 2.22 required--this is only version 2.20 at /usr/local/sbin/
amavisd line 1362.
BEGIN failed--compilation aborted at /usr/local/sbin/amavisd line 1362.
这是什么意思?


 anstan 回复于:2005-08-03 18:55:17

你的Digest::MD5 版本低了


 ljiayu-nj 回复于:2005-08-03 23:51:26

在新建文件/var/amavisd/.spamassassin/user_prefs时
# touch /var/amavis/spamassassin/user_prefs,出现下列错误:
touch: 正在创建目录 ‘/var/amavis/.spamassassin/user_prefs’: 没有那个文件或目录
我查看了一下,/var/amavis下没有.spamassassin这个目录

检查local.cf语法
# spamassassin --lint 时,出现:
Created user preferences file: /root/.spamassassin/user_prefs
warning: score set for non-existent rule BAYES_90
lint: 1 issues detected.  please rerun with debug enabled for more information.


 suyang0218 回复于:2005-08-06 14:43:21

[color=red]那位能把postfix中的smtpd与Cyrus-SASL经过mysql数据库验证的模型及思路说下,我建的系统不能发信,总是有如下错误提示:
Aug  6 14:23:25 update-01 postfix/smtpd[3291]: warning: unknown[xxx.xxx.xxx.xxx]: SASL LOGIN authentication failed
。。。[/color]


 feiyi 回复于:2005-08-07 04:06:12

还不能发邮件,认证通不过.


 differ 回复于:2005-08-09 09:15:46

引用:原帖由 "ljiayu-nj" 发表:
在新建文件/var/amavisd/.spamassassin/user_prefs时
# touch /var/amavis/spamassassin/user_prefs,出现下列错误:
touch: 正在创建目录 ‘/var/amavis/.spamassassin/user_prefs’: 没有那个文件或目录
我查看..........

我是先手工建.spamassassin目录的,不过后面那个90的错误我也有。好像是因为CPAN安装的spamassassin的版本比作者当时安装的高了吧?配置文件都分成了几个部分。

其实碰到错误先不要着急问作者,可以先看看日志,或者打开debug,很多时候问题并不复杂。如果想偷懒就尽量用作者文章中提到的软件版本。


 tomecai 回复于:2005-08-09 10:43:17

按照文中方法安装,可以在IE中登陆openwebmail时输入用户名及密码,点击登陆,不显示网页,而是显示openwebmail.pl中的文本内容,如何解决???


 differ 回复于:2005-08-09 11:11:30

引用:原帖由 "tomecai"]按照文中方法安装,可以在IE中登陆openwebmail时输入用户名及密码,点击登陆,不显示网页,而是显示openwebmail.pl中的文本内容,如何解决???

这个应该是apache的配置上的问题


 e-ghost 回复于:2005-08-09 16:55:16

那我可以到哪裡找到您的最新版本??  :em02:


 anstan 回复于:2005-08-10 10:04:30

引用:原帖由 "e-ghost"]那我可以到哪裡找到您的最新版本??  :em02:

因为网易不提供免费空间服务了,所以只好撤下来了,需要的话,发我邮箱吧,我给你一份,内容跟这个贴没有大改变,也很久没更新了。
heracai@126.com

还有向大家道歉一下,给cyrus-sasl打了mysql密码加密补丁后,smtp验证会有问题,当时没做好测试,不好意思。
如果你确实想要在mysql中密码加密,sasl认证的时候可以采用authdaemond的方式,不要用auxprop了。
再次表示歉意。


 differ 回复于:2005-08-10 15:45:19

首先谢谢lz详细的教程。

我是在现有的邮件系统基础上加防毒防垃圾邮件的,目前刚刚把clamav+amavsi搞定。
说说我安装碰到的问题和解决方法(redhat8下,perl 5.80)

clamav

clamav的安装没有啥问题,只是我自作聪明的以为lz在安装clamav中出现了笔误:
# vi /usr/local/clamav/etc/clamd.conf  
User [color=red]amavis[/color] 

# chown -R [color=red]amavis:amavis[/color] /var/log/clamav
# chown -R [color=red]amavis.amavis[/color] /usr/local/share/clamav 
# chown [color=red]amavis.amavis[/color] /var/run/clamav 

把clamav误写成amavis了。后来amavis debug一直报无权限,才发现了玄机:)

amavis

用MCPAN装amavis需要的perl模块时,install Net::Server 
装的是0.88版,amavis始终起不来,debug的提示是“Couldn't become uid ..., ”的错误,搜索了amavis的maillist,
安装  http://www.xmission.com/~jmcrc/Net-Server-0.87.tar.gz  才解决这个问题。后来仔细看amavis README文档发现推荐perl 5.8.2及以上版本 :em13:


 tomecai 回复于:2005-08-11 10:21:54

引用:原帖由 "zhangshoug" 发表:
我照这个做了,还是不能收邮件.
/var/mailbox下不能建立用户的maildir

我也是,怎么解决,帮忙了


 bluerocly 回复于:2005-08-11 16:40:38

怎么还没有给  anstan 老兄正身呀
huanghaojie 做事不厚道
怎么发完就不见踪迹了 
应该给大家多多解决问题
大家也好 顶你呀!


 suyang0218 回复于:2005-08-11 17:25:26

我的系统老是给我报relay=127.0.0.1[127.0.0.1], delay=20833, status=deferred (host 127.0.0.1[127.0.0.1] said: 450 4.4.1 Can't connect to 127.0.0.1 port 10025, Bad file descriptor at /usr/local/sbin/amavisd line 4217, <GEN4>; line 130., MTA([127.0.0.1]:10025), id=04254-02 (in reply to end of DATA command))
错,阻止邮件的投递,请问是怎么回事???


 lishuxi2003 回复于:2005-08-16 19:20:44

./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/ 

奇怪 我怎么运行这句就没完~~


 zcwhy 回复于:2005-08-16 20:33:32

引用:原帖由 "守夜人"]晕,我看配置最麻烦的就是Email了,还好我用的是一个带自动安装角本的安装包

兄弟,你的是怎么自动个法?
我刚配置了QMAIL花了一星期才搞定。能介绍一下你的自动方法吗?


 wangpeng18 回复于:2005-08-22 10:21:29

110登陆没有问题 但是使用SMTP 25 发信不可以
不能验证成功 

Aug 22 02:16:57 mail postfix/smtpd[1942]: warning: unknown[192.168.0.5]: SASL LOGIN authentication failed
Aug 22 02:16:57 mail postfix/smtpd[1942]: disconnect from unknown[192.168.0.5]
Aug 22 02:16:58 mail postfix/smtpd[1942]: connect from unknown[192.168.0.5]
Aug 22 02:16:58 mail postfix/smtpd[1942]: warning: unknown[192.168.0.5]: SASL LOGIN authentication failed
Aug 22 02:16:58 mail postfix/smtpd[1942]: disconnect from unknown[192.168.0.5]
Aug 22 02:16:58 mail postfix/smtpd[1942]: connect from unknown[192.168.0.5]
Aug 22 02:16:58 mail postfix/smtpd[1942]: warning: unknown[192.168.0.5]: SASL LOGIN authentication failed
Aug 22 02:16:58 mail postfix/smtpd[1942]: disconnect from unknown[192.168.0.5]
Aug 22 02:17:09 mail postfix/smtpd[1942]: connect from unknown[192.168.0.5]
Aug 22 02:17:09 mail postfix/smtpd[1942]: warning: unknown[192.168.0.5]: SASL LOGIN authentication failed
Aug 22 02:17:09 mail postfix/smtpd[1942]: disconnect from unknown[192.168.0.5]
Aug 22 02:17:10 mail pop3d: Connection, ip=[::ffff:192.168.0.5]
Aug 22 02:17:10 mail pop3d: LOGIN, user=ddd@ttyy.com, ip=[::ffff:192.168.0.5]
Aug 22 02:17:10 mail pop3d: LOGOUT, user=ddd@ttyy.com, ip=[::ffff:192.168.0.5], top=0, retr=0, time=0
Aug 22 02:17:15 mail pop3d: Connection, ip=[::ffff:192.168.0.5]
Aug 22 02:17:15 mail pop3d: LOGIN, user=ddd@ttyy.com, ip=[::ffff:192.168.0.5]
Aug 22 02:17:15 mail pop3d: LOGOUT, user=ddd@ttyy.com, ip=[::ffff:192.168.0.5], top=0, retr=0, time=0
Aug 22 02:17:18 mail pop3d: Connection, ip=[::ffff:192.168.0.5]


 wangpeng18 回复于:2005-08-22 12:44:10

查看maildrop和POSTFIX 工作提示
mail maildrop[11194]: Invalid home directory permissions - world writable.

[root@mail maildrop-1.8.1]# maildrop -V 9 -d qwe@ttyy.com
maildrop: authlib: groupid=1001
maildrop: authlib: userid=1001
maildrop: authlib: logname=qwe@ttyy.com, home=/var/mailbox/, mail=ttyy.com/qwe/
maildrop: Changing to /var/mailbox/
maildrop: signal 0x02
[root@mail maildrop-1.8.1]# cat /var/log/maillog | grep maildrop -A 2
Aug 22 03:29:58 mail maildrop[11194]: Invalid home directory permissions - world writable.
Aug 22 03:35:48 mail postfix/smtpd[11230]: warning: dict_nis_init: NIS domain name not set - NIS lookups disabled
Aug 22 03:35:48 mail postfix/smtpd[11230]: connect from mail[127.0.0.1]
[root@mail maildrop-1.8.1]#


 anstan 回复于:2005-08-22 15:07:38

Invalid home directory permissions - world writable. 
说/var/mailbox的权限不对


 wangpeng18 回复于:2005-08-22 19:45:23

需要 什么权限 已经是 777 了

还有请看看这个 谢谢

发表于: 2005-08-22 10:21    发表主题:       

--------------------------------------------------------------------------------
 
110登陆没有问题 但是使用SMTP 25 发信不可以 
不能验证成功 

Aug 22 02:16:57 mail postfix/smtpd[1942]: warning: unknown[192.168.0.5]: SASL LOGIN authentication failed 
Aug 22 02:16:57 mail postfix/smtpd[1942]: disconnect from unknown[192.168.0.5] 
Aug 22 02:16:58 mail postfix/smtpd[1942]: connect from unknown[192.168.0.5] 
Aug 22 02:16:58 mail postfix/smtpd[1942]: warning: unknown[192.168.0.5]: SASL LOGIN authentication failed 
Aug 22 02:16:58 mail postfix/smtpd[1942]: disconnect from unknown[192.168.0.5] 
Aug 22 02:16:58 mail postfix/smtpd[1942]: connect from unknown[192.168.0.5] 
Aug 22 02:16:58 mail postfix/smtpd[1942]: warning: unknown[192.168.0.5]: SASL LOGIN authentication failed


 ss0616 回复于:2005-08-23 09:54:42

:em02:  :em02: 好贴阿,收藏了。研究一下!


 wangpeng18 回复于:2005-08-23 10:15:02

chmod -R ug+rwx,o-rwx /var/mailbox

不是这样的权限吗?

大家的是多少?


 wangpeng18 回复于:2005-08-23 11:00:43

telnet 25 提示

[root@mail root]# telnet 192.168.0.12 25
Trying 192.168.0.12...
Connected to 192.168.0.12.
Escape character is '^]'.
220 mail.ttyy.com ESMTP "Version not Available"
helo
501 Syntax: HELO hostname


 ilwxfe 回复于:2005-08-25 10:33:23

楼主,更新了这么多问题,能不能把主帖也更新一下??


 minlaulinux 回复于:2005-08-26 19:28:22

请教大虾:
 我该怎么办啊?
Aug 26 18:33:48 mail pop3d: LOGIN: ip=[::ffff:127.0.0.1], command=USER
Aug 26 18:33:54 mail pop3d: LOGIN: ip=[::ffff:127.0.0.1], command=PASS
Aug 26 18:33:54 mail pop3d: LOGIN: ip=[::ffff:127.0.0.1], username=virtualuser@cngnu.com
Aug 26 18:33:54 mail pop3d: LOGIN: ip=[::ffff:127.0.0.1], password=testpw
Aug 26 18:33:54 mail authdaemond: failed to connect to mysql server (server=localhost, userid=mail): Access denied for user 'mail'@'localhost' (using password: YES)
Aug 26 18:33:54 mail pop3d: LOGIN FAILED, user=virtualuser@cngnu.com, ip=[::ffff:127.0.0.1]
Aug 26 18:33:54 mail pop3d: authentication error: Input/output error


 wangpeng18 回复于:2005-08-28 20:39:57

安装amavisd-new-2.3.2时,在测试和启动时,出现下列错误: 
# /usr/local/sbin/amavisd start 
Digest::MD5 version 2.22 required--this is only version 2.20 at /usr/local/sbin/ 
amavisd line 1362. 
BEGIN failed--compilation aborted at /usr/local/sbin/amavisd line 1362. 

是Digest::MD5 版本高了还是低了
如何解决


 wangpeng18 回复于:2005-08-30 15:58:27

[root@mail amavisd-new-2.3.0]# /usr/local/sbin/amavisd debug 
Digest::MD5 version 2.22 required--this is only version 2.20 at /usr/local/sbin/amavisd line 1323. 
BEGIN failed--compilation aborted at /usr/local/sbin/amavisd line 1323. 
[root@mail amavisd-new-2.3.0]# perl -MCPAN -e shell 

cpan shell -- CPAN exploration and modules installation (v1.61) 
ReadLine support available (try 'install Bundle::CPAN') 

cpan>; install Digest::MD5 
CPAN: Storable loaded ok 
Going to read /root/.cpan/Metadata 
 Database was generated on Mon, 29 Aug 2005 03:07:52 GMT 
Running install for module Digest::MD5 
Running make for G/GA/GAAS/Digest-MD5-2.33.tar.gz 
CPAN: Digest::MD5 loaded ok 
CPAN: Compress::Zlib loaded ok 
Checksum for /root/.cpan/sources/authors/id/G/GA/GAAS/Digest-MD5-2.33.tar.gz ok 
Scanning cache /root/.cpan/build for sizes 
Digest-MD5-2.33/ 
Digest-MD5-2.33/t/ 
Digest-MD5-2.33/t/md5-aaa.t 
Digest-MD5-2.33/t/clone.t 
Digest-MD5-2.33/t/badfile.t 
Digest-MD5-2.33/t/utf8.t 
Digest-MD5-2.33/t/bits.t 
Digest-MD5-2.33/t/align.t 
Digest-MD5-2.33/t/files.t 
Digest-MD5-2.33/README 
Digest-MD5-2.33/MANIFEST 
Digest-MD5-2.33/hints/ 
Digest-MD5-2.33/hints/MacOS.pl 
Digest-MD5-2.33/hints/irix_6.pl 
Digest-MD5-2.33/hints/dec_osf.pl 
Digest-MD5-2.33/Changes 
Digest-MD5-2.33/Makefile.PL 
Digest-MD5-2.33/MD5.xs 
Digest-MD5-2.33/typemap 
Digest-MD5-2.33/MD5.pm 
Digest-MD5-2.33/rfc1321.txt 
Removing previously used /root/.cpan/build/Digest-MD5-2.33 

 CPAN.pm: Going to build G/GA/GAAS/Digest-MD5-2.33.tar.gz 

Perl's config says that U32 access must be aligned. 
Checking if your kit is complete... 
Looks good 
Writing Makefile for Digest::MD5 
Makefile:85: *** missing separator.  Stop. 
 /usr/bin/make  -- NOT OK 
Running make test 
 Can't test without successful make 
Running make install 
 make had returned bad status, install seems impossible 

cpan>;


 fei 回复于:2005-09-16 10:05:46

很好。支持。很有用。


 fnaps 回复于:2005-11-05 10:08:52

收下了,最近正在打算学习邮局服务器,正好。呵呵。


 kkxiao 回复于:2005-11-14 14:04:11

人才。頂一個!  我用的FC4,本文所說的軟件包基本都已經預安裝了


 nncity 回复于:2005-11-16 17:40:50

强帖推荐


 vincentzpf 回复于:2005-11-16 20:15:07

好贴子!不过我看了全部的人的发言,发现这个贴子有很多错误大家提出来了。
楼主可不可以更新一下!
anstan :可否把你的更新版贴在后面,大家学习!


 anstan 回复于:2005-11-16 20:52:35

as4+postfix+cyrus-sasl+mysql+postfixadmin+courier-imap+courier-maildrop+squirrelmail+clamav+spamassassin+amavisd-new

转载请注明出处
最后更新日期:2005年11月5日
2004年10左右成稿

我以前那篇文章中密码加密有问题(密码一加密,smtp认证就通不过),所以利用这个周末更新一下。这次sasl密码验证机制改为authdaemond(感谢网友606),并把测试部分单独列出来。很多人问起我的安装环境,我安装linux的时候,只选了开发工具,其他的都没选,还有,这些软件包安装的时候都没有依赖性问题,有的话,我也提出来了。

1.安装 mysql 5.0.15 
# wget http://dev.mysql.com/get/Downloa ... ://mysql.new21.com/
# tar zxvf mysql-5.0.15.tar.gz
# cd cd mysql-5.0.15
# groupadd mysql
# useradd -g mysql mysql 
# CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" 
./configure --prefix=/usr/local/mysql 
--enable-assembler --with-mysqld-ldflags=-all-static --with-charset=gbk
# make
# make install
# cp support-files/my-medium.cnf /etc/my.cnf

设置自启动
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
# chmod 755 /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld

安装完以后要初始化数据库
# cd /usr/local/mysql
# /usr/local/mysql/bin/mysql_install_db --user=mysql
# chown -R root .
# chown -R mysql var
# chgrp -R mysql .

好了,至此mysql安装完毕,你可以这样起动你的mysql服务
# service mysqld start

为了能让系统找到mysql,请运行如下命令
# PATH=$PATH:/usr/local/mysql/bin
# export PATH
# echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
# ldconfig 

2.安装 apache 2.0.55
# wget http://apache.freelamp.com/httpd/httpd-2.0.55.tar.bz2
# tar jxvf httpd-2.0.55.tar.bz2
# cd httpd-2.0.55
# ./configure --prefix=/usr/local/apache
# make
# make install

设置自启动
# cp support/apachectl /etc/init.d/httpd

修改/etc/init.d/httpd
# vi /etc/init.d/httpd(前面几行改成如下样子)
#!/bin/sh 

# Startup script for the Apache Web Server 
# chkconfig: - 85 15 
# description: Apache is a World Wide Web server. It is used to serve  
# HTML files and CGI. 
# processname: httpd 
# pidfile: /usr/local/apache/log/httpd.pid 
# config: /usr/local/apache/conf/httpd.conf

# chkconfig --add httpd
# chmod 755 /etc/init.d/httpd 
# chkconfig httpd on 

创建网页根目录
# mkdir /var/www

修改apache配置文件
# vi /usr/local/apache/conf/httpd.conf
//存放网页的目录,原来为DocumentRoot "",改成:
DocumentRoot "/var/www"
//这句应该和DocumentRoot 的目录保持一致,原来为<Directory "">,改成:
<Directory "/var/www">
//Indexes:当在目录中找不到DirectoryIndex列表中指定的文件就生成当前目录的文件列表
//FollowSymlinks:允许符号链接跟随,访问不在本目录下的文件
Options Indexes FollowSymLinks
//禁止读取.htaccess配置文件的内容
AllowOverride None
//指定先执行Allow(允许)访问规则,再执行Deny(拒绝)访问规则
Order allow,deny
//设置Allow(允许)访问规则,允许所有连接
Allow from all
</Directory>

启动服务
# service httpd start 

3.安装php 4.4.1
# wget http://cn.php.net/get/php-4.4.1.tar.bz2/from/this/mirror
# tar jxvf php-4.4.1.tar.bz2
# cd php-4.4.1
# ./configure 
--prefix=/usr/local/php 
--with-mysql=/usr/local/mysql 
--with-apxs2=/usr/local/apache/bin/apxs
# make
# make install
# cp php.ini-dist /usr/local/php/lib/php.ini

# vi /usr/local/php/lib/php.ini
;default_charset = "iso-8859-1"
在这行下面加一行
default_charset = "gbk"

# vi /usr/local/apache/conf/httpd.conf
找到#AddType application/x-tar .tgz 这行,在下面加两行
AddType application/x-httpd-php .php 
AddType application/x-httpd-php-source .phps
找到下面一行在后面加上index.php,这表示网站的默认页也能够为index.php 
DirectoryIndex index.html index.html.var index.php 
注意:改变了http.conf后,要重启apache服务

4.安装 cyrus-sasl 2.1.21
先关闭as4默认安装的sasl
# mv /usr/lib/sasl /usr/lib/sasl.OFF
# mv /usr/lib/sasl2 /usr/lib/sasl2.OFF

编译安装cyrus-sasl2.1.21
# wget http://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-2.1.21.tar.gz
# tar zxvf cyrus-sasl-2.1.21.tar.gz
# cd cyrus-sasl-2.1.21
# ./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 
--with-authdaemond
# make
# make install

更新lib库
# echo "/usr/local/lib" >> /etc/ld.so.conf
# ldconfig

重要 
# ln -s /usr/local/lib/sasl2 /usr/lib/sasl2


 anstan 回复于:2005-11-16 20:53:26

5.安装postfix 2.2.5
如果你的系统上原来有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

开始安装
# groupadd -g 12345 postfix
# useradd -u 12345 -g 12345 -c postfix -d/dev/null -s/sbin/nologin postfix
# groupadd -g 54321 postdrop
# wget ftp://postfix.cn99.com/postfix/official/postfix-2.2.5.tar.gz
# tar zxvf postfix-2.2.5.tar.gz
# cd postfix-2.2.5
(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

注意:
    本例中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

6.安装postfixadmin 2.1.0
建立apache和maildrop的用户和组
# groupadd vmail -g 1001
# useradd vmail -u 1001 -g 1001 -s/sbin/nologin -d/dev/null

# vi /usr/local/apache/conf/httpd.conf

User nobody
Group #-1
改为
User vmail
Group vmail

# wget http://high5.net/postfixadmin/do ... tfixadmin-2.1.0.tgz
# tar -zxvf postfixadmin-2.1.0.tgz
# mv postfixadmin-2.1.0 /var/www/postfixadmin
更改权限,假定运行apache的用户和组为vmail
# chown -R vmail:vmail /var/www/postfixadmin
# cd /var/www/postfixadmin
# chmod 640 *.php *.css
# cd /var/www/postfixadmin/admin/
# chmod 640 *.php .ht*
# cd /var/www/postfixadmin/images/
# chmod *.png
# cd /var/www/postfixadmin/languages/
# chmod 640 *.lang
# cd /var/www/postfixadmin/templates/
# chmod 640 *.tpl
# cd /var/www/postfixadmin/users/
# chmod 640 *.php

建立mysql表
# cd /var/www/postfixadmin
# mysql -u root < DATABASE_MYSQL.TXT
# cp config.inc.php.sample config.inc.php
# vi config.inc.php
本例中的配置如下:
$CONF['default_language'] = 'cn'; 
$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'postfixadmin';
$CONF['database_name'] = 'postfix';
$CONF['encrypt'] = 'md5crypt';
$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';
$CONF['quota'] = 'YES';
$CONF['quota_multiplier'] = '1024000';

邮箱的存储格式使用domain.ltd/username的形式,所以设置:
$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';

然后打开浏览器,进入postfixadmin的欢迎界面,点击网页上的setup,看看检查是否通过,记得要删除setup.php文件。

# vi /etc/postfix/main.cf
#=====================BASE========================= 
myhostname = www.test.com
mydomain = test.com
myorigin = $mydomain
mydestination = $myhostname localhost localhost.$mydomain
mynetworks = 127.0.0.0/8
inet_interfaces = all

#=====================Vritual Mailbox settings========================= 
virtual_mailbox_base = /var/mailbox
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:1001
virtual_gid_maps = static:1001
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"

建立/var/mailbox并设置权限
# mkdir /var/mailbox 
# chown -R vmail:vmail /var/mailbox
# chmod -R ug+rwx,o-rwx /var/mailbox

建立/etc/postfix/mysql文件夹和MySQL查询配置文件
# mkdir /etc/postfix/mysql
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

2、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'

3、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'

4、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'

配置 /usr/local/lib/sasl2/smtpd.conf
sasl密码验证机制为authdaemond
# vi /usr/local/lib/sasl2/smtpd.conf
pwcheck_method:authdaemond
log_level:3
srp_mda:md5
password_format:crypt
mech_listLAIN LOGIN
authdaemond_path: /usr/local/var/spool/authdaemon/socket


 anstan 回复于:2005-11-16 20:54:14

7.安装Courier-authlib 0.57
新版本的imap不再包含authentication library,必须先安装 Courier authentication library 
# wget http://www.courier-mta.org/beta/ ... 57.20051004.tar.bz2
# tar jxvf courier-authlib-0.57.20051004.tar.bz2
# cd courier-authlib-0.57.20051004
# ./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

重要 
# chmod +x /usr/local/var/spool/authdaemon/

# vi /usr/local/etc/authlib/authdaemonrc
authmodulelist="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_UID_FIELD '1001'
MYSQL_GID_FIELD '1001'
MYSQL_HOME_FIELD '/var/mailbox/'
MYSQL_MAILDIR_FIELD maildir
MYSQL_NAME_FIELD name
MYSQL_QUOTA_FIELD concat(quota,'S')
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的

启动服务
自启动:
# 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

Go to top.

8.安装Courier-imap 4.0.6
# wget http://www.courier-mta.org/beta/ ... .6.20051004.tar.bz2
# tar jxvf courier-imap-4.0.6.20051004.tar.bz2
# cd courier-imap-4.0.6.20051004
# ./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=YES

# vi /usr/local/imap/etc/imapd
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

Go to top.

9.安装Courier-maildrop 2.0.1 
先装pcre
# wget http://optusnet.dl.sourceforge.n ... re/pcre-6.3.tar.bz2
# tar jxvf pcre-6.3.tar.bz2
# cd pcre-6.3
# ./configure
# make
# make install

# wget http://optusnet.dl.sourceforge.n ... ldrop-2.0.1.tar.bz2
# tar jxvf maildrop-2.0.1.tar.bz2
# cd maildrop-2.0.1
# ./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

运行maildrop -v应该有如下提示信息: 
maildrop 2.0.0 Copyright 1998-2005 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/master.cf
maildrop unix - n n - - pipe 
flags=DRhu user=vmail:vmail argv=/usr/local/maildrop/bin/maildrop -w 90 -d ${recipient}

由于maildrop没有建立及删除maildir的功能,因此由脚本实现(是否有什么安全隐患?)
# vi /etc/sudoers 
vmail ALL = NOPASSWD: /usr/sbin/maildirmake.sh , /usr/sbin/maildirdel.sh

新建/usr/sbin/maildirmake.sh文件
# vi /usr/sbin/maildirmake.sh 
#!/bin/bash
set -e
if [ ! -d /var/mailbox/$1 ]
then
mkdir /var/mailbox/$1
fi 
chown -R vmail:vmail /var/mailbox/$1
cd "/var/mailbox/$1"
/usr/local/imap/bin/maildirmake $2
chown -R vmail:vmail /var/mailbox/$1/$2

新建/usr/sbin/maildirdel.sh文件
# vi /usr/sbin/maildirmake.sh 
#!/bin/bash
rm -rf /var/mailbox/$1/$2

# chmod 755 /usr/sbin/maildirmake.sh
# chmod 755 /usr/sbin/maildirdel.sh

更改postfixadmin目录及postfixadmin/admin目录下的create-mailbox.php文件
在这两个文件的$tQuota = $CONF['maxquota'];行后加一行(postfixadmin/admin目录下的大概在200行,postfixadmin目录下的大概在?行):
# vi /var/www/postfixadmin/admin/create-mailbox.php (vi /var/www/postfixadmin/create-mailbox.php) 
system("sudo /usr/sbin/maildirmake.sh $fDomain ".$_POST['fUsername']); 

更改postfixadmin目录及postfixadmin/admin目录下的delete.php文件
在这两个文件的$result = db_query ("SELECT * FROM mailbox WHERE username='$fDelete' AND domain='$fDomain'");行后加几行:
# vi /var/www/postfixadmin/admin/delete.php (vi /var/www/postfixadmin/delete.php) 
$userarray=explode("@",$fDelete);
$user=$userarray[0];
$domain=$userarray[1];
system("sudo /usr/sbin/maildirdel.sh $domain $user");


 anstan 回复于:2005-11-16 20:54:47

10.测试
启动所有服务
# service httpd start
# service mysqld start
# postfix start
# service courier-authlib start
# service courier-imap start

# netstat -ant | grep "LISTEN"
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN
tcp 0 0 :::110 :::* LISTEN
tcp 0 0 :::143 :::* LISTEN
tcp 0 0 :::80 :::* LISTEN

在postfixadmin中建立一测试帐户[email]test@test.com[/email]

测试smtp 
# perl -MMIME::Base64 -e 'print encode_base64("[email]test@test.com[/email]");'
dGVzdEB0ZXN0LmNvbQ==
# perl -MMIME::Base64 -e 'print encode_base64("test");'
dGVzdA==

# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 www.test.com ESMTP "Version not Available"
ehlo www.test.com 
250-www.test.com
250-PIPELINING
250-SIZE 14336000
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250 8BITMIME
auth login
334 VXNlcm5hbWU6
dGVzdEB0ZXN0LmNvbQ==
334 UGFzc3dvcmQ6
dGVzdA==
235 Authentication successful

测试POP3和IMAP
# telnet localhost 110
+OK Hello there 
user [email]test@test.com[/email] 
+OK Password required. 
pass test 
+OK Logged in. 
quit 
+OK bye-bye

测试maildrop
# maildrop -V 9 -d [email]test@test.com[/email]
maildrop: authlib: groupid=1001
maildrop: authlib: userid=1001
maildrop: authlib: logname=test@test.com, home=/var/mailbox/, mail=test.com/test/
maildrop: Changing to /var/mailbox/

ctrl+c退出 

Go to top.

11.webmail 

11.1.安装squirrelmail 1.4.5
下载squirrelmail及中文包
# wget http://keihanna.dl.sourceforge.n ... lmail-1.4.5.tar.bz2
# wget http://optusnet.dl.sourceforge.n ... .5-20050904.tar.bz2
把squirreelmail解压到/var/www目录下。
# tar jxvf squirrelmail-1.4.5.tar.bz2 -C /var/www/
# mv /var/www/squirrelmail-1.4.5/ /var/www/squirrelmail
解压中文包
# tar jxvf zh_CN-1.4.5-20050904.tar.bz2 -C /var/www/squirrelmail/

在配置squirrelmail之前先下载三个插件:
Quota Usage Version 1.3
# wget http://www.squirrelmail.org/coun ... ge-1.3-1.2.7.tar.gz 
Compatibility Version 2.0.2 
# wget http://www.squirrelmail.org/coun ... bility-2.0.2.tar.gz
Change MySQL Password Version 3.2
# wget http://www.squirrelmail.org/coun ... ss-3.2-1.2.8.tar.gz

把这三个插件解压到squirrelmail的plugin目录下
# tar zxvf quota_usage-1.3-1.2.7.tar.gz -C /var/www/squirrelmail/plugins/
# tar zxvf compatibility-2.0.2.tar.gz -C /var/www/squirrelmail/plugins/
# tar zxvf change_mysqlpass-3.2-1.2.8.tar.gz -C /var/www/squirrelmail/plugins/
第一个插件是用来显示邮箱的使用情况的;第二个和第三个插件是用来修改密码的。
如果不想装这些插件,请跳过。

配置Quota Usage
# cd /var/www/squirrelmail/plugins/quota_usage
# cp config.php.sample config.php

配置Change MySQL Password 
# cd /var/www/squirrelmail/plugins/change_mysqlpass
# cp config.php.sample config.php
# vi config.php
更改如下几个变量:
$mysql_database = 'postfix';
$mysql_table = 'mailbox';
$mysql_userid_field = 'username';
$mysql_password_field ='password';
$mysql_manager_id = 'postfix';
$mysql_manager_pw = 'postfix';
$mysql_unixcrypt = 0;
$mysql_MD5crypt = 1;
$use_ssl_for_password_change = 0;

配置squirrelmail
# cd /var/www/squirrelmail
# ./configure
进入10. Languages
把1. Default Language : 的en_US改成zh_CN。
进入8. Plugins,添加这三个插件

# chown -R vmail:vmail /var/www/squirrelmail/data/
# chmod -R 730 /var/www/squirrelmail/data/ 

打开浏览器输入http://192.168.0.5/squirrelmail/,用[email]test@test.com[/email]登陆,你将会在屏幕的左上角看到邮箱的使用情况,你还会看到一条警告信息:
Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /var/www/squirrelmail/plugins/change_mysqlpass/functions.php on line 129
这是由于数据库结构不一致造成的,你只要把functions.php中的129行注释调即可(在行首加//)


 anstan 回复于:2005-11-16 20:55:22

12.安装clamav 0.87
# wget http://optusnet.dl.sourceforge.n ... /clamav-0.87.tar.gz
# tar zxvf clamav-0.87.tar.gz
# cd clamav-0.87
# groupadd clamav
# useradd -g clamav -s/sbin/nologin -d/dev/null clamav 
# ./configure --prefix=/usr/local/clamav --with-dbdir=/usr/local/share/clamav --disable-zlib-vcheck
# make
# make check
# make install

编辑/usr/local/clamav/etc/clamd.conf
# vi /usr/local/clamav/etc/clamd.conf
#Verbose logging with syslog
LogSyslog
LogVerbose
LogFacility LOG_MAIL
LogFile /var/log/clamav/clamd.log
#Change pid file location
PidFile /var/run/clamav/clamd.pid
DatabaseDirectory /usr/local/share/clamav 
#Set the clamav socket
LocalSocket /var/run/clamav/clamd
#Close the connection when this limit is exceeded
StreamMaxLength 10M
#Don't run clamd as root
User amavis
#Newer versions require you to uncomment this
ScanMail
ScanArchive

编辑/usr/local/clamav/etc/freshclam.conf
# vi /usr/local/clamav/etc/freshclam.conf
DatabaseDirectory /usr/local/share/clamav
UpdateLogFile /var/log/clamav/freshclam.log
LogSyslog
LogVerbose
DatabaseOwner amavis
#Check for updates every two hours. That is the official recommendation
Checks 12
DatabaseMirror db.CN.clamav.net
DatabaseMirror database.clamav.net
NotifyClamd

注意:一定要注释掉上面两个文件中Example那行

添加amavis用户和组
# groupadd amavis
# useradd -g amavis -s /sbin/nologin -d /dev/null amavis

创建日志文件夹并设置权限
# mkdir /var/log/clamav
# chmod -R 744 /var/log/clamav
# chown -R amavis:amavis /var/log/clamav

# chown -R amavis.amavis /usr/local/share/clamav
# mkdir /var/run/clamav
# chmod 700 /var/run/clamav
# chown amavis.amavis /var/run/clamav

手动更新病毒库
# /usr/local/clamav/bin/freshclam

启动
# /usr/local/clamav/sbin/clamd

Go to top.

13.安装amavisd-new 2.3.3

# wget http://www.ijs.si/software/amavisd/amavisd-new-2.3.3.tar.gz
# tar zxvf amavisd-new-2.3.3.tar.gz
# cd amavisd-new-2.3.3

# mkdir -p /var/amavis /var/amavis/tmp /var/amavis/var /var/amavis/db
# chown -R amavis:amavis /var/amavis
# chmod -R 750 /var/amavis

# cp amavisd /usr/local/sbin/
# chown root /usr/local/sbin/amavisd
# chmod 755 /usr/local/sbin/amavisd

# cp amavisd.conf /etc/
# chown root /etc/amavisd.conf
# chmod 644 /etc/amavisd.conf

# cp amavisd_init.sh /etc/rc.d/init.d/amavisd
# chmod 744 /etc/rc.d/init.d/amavisd
# chkconfig --add amavisd
# chkconfig amavisd on
# vi /etc/rc.d/init.d/amavisd
prog="/usr/local/sbin/amavisd"

病毒邮件存放目录
# mkdir /var/virusmails
# chown amavis:amavis /var/virusmails
# chmod 750 /var/virusmails

Go to top.

编辑/etc/amavisd.conf,修改下面这几行
# vi /etc/amavisd.conf
$max_servers=8; 
$daemon_user = 'amavis';
$daemon_group = 'amavis';
$mydomain = 'test.com';
$db_home = "$MYHOME/db";
$inet_socket_port = 10024;
$sa_tag_level_deflt = -100; 
$sa_tag2_level_deflt = 6.3; 
$sa_kill_level_deflt = $sa_tag2_level_deflt;
$virus_admin = "virusalert@$mydomain";
$sa_spam_subject_tag = '***SPAM*** ';
$notify_method = $forward_method;
$forward_method = 'smtp:127.0.0.1:10025'; 
$final_virus_destiny = D_DISCARD;
$final_banned_destiny = D_DISCARD;
$final_spam_destiny = D_DISCARD;
['ClamAV-clamd',
  &ask_daemon, ["CONTSCAN {}n", "/var/run/clamav/clamd"],
  qr/bOK$/, qr/bFOUND$/,
  qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],

测试amavis
# /usr/local/sbin/amavisd debug
ERROR: MISSING REQUIRED BASIC MODULES:
Time::HiRes
IO::Wrap
Unix::Syslog
Mail::Field
MIME::Words
Net::Server
BEGIN failed--compilation aborted at /usr/local/sbin/amavisd line 141.
根据出错提示,缺什么装什么,我的LANG变量为en_US.UTF-8
# perl -MCPAN -e shell
cpan> install Time::HiRes
cpan> install IO::Wrap
cpan> install Unix::Syslog
cpan> install Mail::Field
cpan> install Compress::Zlib
cpan> install MIME::Words
cpan> install Net::Server
cpan> install BerkeleyDB
cpan> install Convert::TNEF
cpan> install Convert::UUlib
cpan> install Archive::Tar
cpan> install Archive::Zip
cpan> install HTML:arser
cpan> install DB_File
cpan> install Net:NS (提示是否test, 选择no)
cpan> install Digest::SHA1
cpan> install Mail::SpamAssassin (# export LANG=en_US) 

期间MIME安装会失败,只好手动安装,跳过测试
# cd /root/.cpan/build/MIME-tools-5.418/
# perl Makefile.PL
# make install 

启动
# /usr/local/sbin/amavisd start 或
# service amavisd start 

Go to top.

设置postfix
修改/etc/postfix/main.cf
# vi /etc/postfix/main.cf (加入一行)
content_filter = amavis:127.0.0.1:10024
修改/etc/postfix/master.cf
# vi /etc/postfix/master.cf (在最后加上)
# amavisd-new
amavis unix - - n - 2 smtp
  -o smtp_data_done_timeout=1200
  -o smtp_send_xforward_command=yes
  -o disable_dns_lookups=yes

localhost:10025 inet n - n - - smtpd
  -o content_filter=
  -o local_recipient_maps=
  -o relay_recipient_maps=
  -o mynetworks=127.0.0.0/8
  -o smtpd_helo_restrictions=
  -o smtpd_client_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o strict_rfc821_envelopes=yes
  -o smtpd_error_sleep_time=0
  -o smtpd_soft_error_limit=1001
  -o smtpd_hard_error_limit=1000

重新服务
# service postfix restart 
# service clamd restart 
# service amavisd restart

# netstat -ant | grep LISTEN (应该可以看到这两个端口在监听)
127.0.0.1.10024 *.* 0 0 49152 0 LISTEN
127.0.0.1.10025 *.* 0 0 49152 0 LISTEN

Go to top.

14.安装Spamassassin
前面装amavis的时候已经装好了,如果没装,请按如下方式安装

启动spamd
# /usr/bin/spamd --daemonize --pidfile /var/run/spamd.pid

下载中文垃圾垃圾邮件过滤规则Chinese_rules.cf
# wget -N -P /usr/share/spamassassin www.ccert.edu.cn/spam/sa/Chinese_rules.cf

每次更新Chinese_rules.cf需要重启spamd方法如下
# kill -HUP `cat /var/run/spamd.pid`

自动更新中文垃圾垃圾邮件过滤规则
# vi /etc/crontab (加一行)
0 0 1 * * root wget -N -P /usr/share/spamassassin www.ccert.edu.cn/spam/sa/Chinese_rules.cf;kill -HUP `cat /var/run/spamd.pid`

测试病毒扫描
给该[email]test@test.com[/email]用户发送邮件,包含以下内容:
X5O!P%@AP[4PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
查看日志,如果出现类似如下提示,则表明成功
Nov 6 22:06:20 localhost postfix/smtp[18276]: 9CEB657E22: to=<[email]test@test.com[/email]>, relay=127.0.0.1[127.0.0.1], delay=2, status=sent (250 2.7.1 Ok, discarded, id=18262-01 - VIRUS: Eicar-Test-Signature)
邮件病毒扫描日志将被记录在/var/log/clamav/clamav.log中!

测试垃圾邮件扫描
给[email]test@test.com[/email]用户发送邮件,包含以下内容:
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
查看日志,如果出现类似如下提示,表明成功
Nov 6 22:10:51 localhost amavis[18263]: (18263-01) Blocked SPAM, LOCAL [127.0.0.1] [127.0.0.1] <[email]test@test.com[/email]> -> <[email]test@test.com[/email]>, quarantine: spam-JH2LSCT1MLYg.gz, Message-ID: <1451.192.168.1.10.1131286248.squirrel@192.168.1.21>, mail_id: JH2LSCT1MLYg, Hits: 1005.902, 3591 ms


 anstan 回复于:2005-11-16 20:55:59

15.启动脚本
postfix的启动脚本:
# cat /etc/rc.d/init.d/postfix
=================================================================
#!/bin/bash
#
# mailsys This shell script takes care of starting and stopping Postfix 
# author : xingyu.wang <[email]wxy@cngnu.org[/email]> 2004/1/28
#
# chkconfig: 2345 80 30
# description: Postfix is a Mail Transport Agent, which is the program
# that moves mail from one machine to another.
#
# processname: mailsys
# pidfile: /var/run/postfix.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -f /usr/sbin/postfix ] || exit 0
RETVAL=0
prog="Postfix"

start() {
# Start daemons.
echo -n $"Starting $prog: "
/usr/sbin/postfix start > /dev/null 2>&1 &

RETVAL=$?

if [ $RETVAL -eq 0 ]; then
touch /var/lock/subsys/postfix
success $"$prog start" 
else
failure $"$prog start failure"
fi

echo
return $RETVAL
}

stop() {
# Stop daemons.
echo -n $"Shutting down $prog: "
/usr/sbin/postfix stop > /dev/null 2>&1 & 
RETVAL=$?

if [ $RETVAL -eq 0 ]; then
rm -f /var/lock/subsys/postfix
success $"$prog stop"
else
failure $"$prog stop failure"
fi

echo
return $RETVAL
}

# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
start
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit 1
esac
exit $RETVA

# chmod 755 /etc/rc.d/init.d/postfix
# chkconfig --level 2345 postfix on

clamav的启动脚本
# vi /etc/rc.d/init.d/clamd
=================================================================
#! /bin/bash 

# crond Start/Stop the clam antivirus daemon. 

# chkconfig: 2345 90 60 
# description: clamdis a standard UNIX program that scans for Viruses. 
# processname: clamd 
# config: /usr/local/clamav/etc/clamd.conf 
# pidfile: /var/run/clamav/clamd.pid 

# Source function library. 
. /etc/rc.d/init.d/functions

RETVAL=0 

# See how we were called. 

prog="clamd" 
progdir="/usr/local/clamav/sbin" 

# Source configuration 
if [ -f /etc/sysconfig/$prog ] ; then 
. /etc/sysconfig/$prog 
fi 

start() { 
echo -n $"Starting $prog: " 
daemon $progdir/$prog 
RETVAL=$? 
echo 
[ $RETVAL -eq 0 ] && touch /var/run/clamav/clamd.pid 
return $RETVAL 

stop() { 
echo -n $"Stopping $prog: " 
killproc $prog 
RETVAL=$? 
echo 
[ $RETVAL -eq 0 ] && rm -f /var/run/clamav/clamd.pid 
return $RETVAL 

rhstatus() { 
status clamd 

restart() { 
stop 
start 

reload() { 
echo -n $"Reloading clam daemon configuration: " 
killproc clamd -HUP 
retval=$? 
echo 
return $RETVAL 

case "$1" in 
start) 
start 
;; 
stop) 
stop 
;; 
restart) 
restart 
;; 
reload) 
reload 
;; 
status) 
rhstatus 
;; 
condrestart) 
[ -f /var/lock/subsys/clamd ] && restart || : 
;; 
*) 
echo $"Usage: $0 {start|stop|status|reload|restart|condrestart}" 
exit 1 
esac 

exit 0 

# chmod 755 /etc/rc.d/init.d/clamd
# chkconfig --add clamd
# chkconfig clamd on


 vincentzpf 回复于:2005-11-17 07:50:05

这是anstan好贴子呀!
大家快顶!!!


 aidisi 回复于:2005-11-17 11:01:12

我也配置了一个,不过用的是tomcat,web主要是用javaAPI实现的,可是我不知道怎样在postfix中设置自动回复,定时发送等,盼望赐教。谢谢!


 chinaadvice 回复于:2005-11-21 16:46:57

谢谢老兄,回家好好看看.


 chaif 回复于:2005-11-30 11:06:22

:em12:
太复杂了,配置得一整天,出点问题恐怕半年也想不出所以然来,
还是EXCHANGE简单,半小时搞定,有问题找技术支持,10分钟搞定!


 evegl 回复于:2005-11-30 12:29:11

我在make  sasl2时出现这样的错误提示,老大帮我看看。

gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I../plugins -I../include -I../sasldb -I/usr/local/mysql/include/mysql -Wall -W -g -O2 -MT client.lo -MD -MP -MF .deps/client.Tpo -c client.c  -fPIC -DPIC -o client.lo
client.c:64: error: static declaration of 'global_callbacks' follows non-static declaration
saslint.h:112: error: previous declaration of 'global_callbacks' was here
client.c: In function '_sasl_print_mechanism':
client.c:863: warning: unused parameter 'rock'
make[2]: *** [client.lo] Error 1
make[2]: Leaving directory `/var/tmp/mail/cyrus-sasl-2.1.21/lib'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/var/tmp/mail/cyrus-sasl-2.1.21'
make: *** [all] Error 2


 mxli 回复于:2005-12-01 15:12:20

谢谢老大,一定要顶~~~~~~~~~~


 leiting 回复于:2005-12-01 22:20:07

[root@ab root]# tail /var/log/maillog
Dec  1 11:15:55 localhost postfix/cleanup[29559]: E5A7F23EC6: message-id=<[email]20051201031555.E5A7F23EC6@mail.ab.org[/email]>
Dec  1 11:15:55 localhost postfix/qmgr[29513]: E5A7F23EC6: from=<>, size=2024, nrcpt=1 (queue active)
Dec  1 11:15:55 localhost postfix/qmgr[29513]: 56D9023EC2: removed
Dec  1 11:15:55 localhost postfix/local[29560]: E5A7F23EC6: to=<[email]root@ab.org[/email]>, relay=local, delay=0, status=bounced (can't create user output file. Command output: procmail: Couldn't create "/var/spool/mail/nobody" )
Dec  1 11:15:55 localhost postfix/qmgr[29513]: E5A7F23EC6: removed
Dec  1 11:15:57 localhost postfix/smtpd[29556]: < ab.org[192.192.10.1]: quit
Dec  1 11:15:57 localhost postfix/smtpd[29556]: > ab.org[192.192.10.1]: 221 Bye
Dec  1 11:15:57 localhost postfix/smtpd[29556]: match_hostname: ab.org ~? 192.192.10.0/24
Dec  1 11:15:57 localhost postfix/smtpd[29556]: match_hostaddr: 192.192.10.1 ~? 192.192.10.0/24
Dec  1 11:15:57 localhost postfix/smtpd[29556]: disconnect from ab.org[192.192.10.1]
请问这是什么地方出错?


 mageguoshi 回复于:2005-12-03 23:54:29

引用:原帖由 lishuxi2003 于 2005-8-16 19:20 发表
./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/inclu ... 

我也是,反复./configure ,永不停止!


 alex1101 回复于:2005-12-06 18:24:17

redhat ADS4
安装 cyrus-sasl 2.1.21时出错:
make[2]: Entering directory `/home/PostFix_tools/cyrus-sasl-2.1.21/utils'
/bin/sh ../libtool --mode=link gcc  -Wall -W -g -O2   -o dbconverter-2  dbconverter-2.o ../sasldb/libsasldb.la ../lib/libsasl2.la -ldb-4.2 -lresolv  -lresolv -lresolv  
gcc -Wall -W -g -O2 -o .libs/dbconverter-2 dbconverter-2.o ../sasldb/.libs/libsasldb.al -lresolv -lresolv ../lib/.libs/libsasl2.so -ldl -lresolv -lresolv -lresolv -ldb-4.2 -lresolv -lresolv -lresolv -Wl,--rpath -Wl,/usr/local/lib
[color=Red]../lib/.libs/libsasl2.so: undefined reference to `crypt'[/color]
collect2: ld returned 1 exit status
make[2]: *** [dbconverter-2] Error 1
make[2]: Leaving directory `/home/PostFix_tools/cyrus-sasl-2.1.21/utils'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/PostFix_tools/cyrus-sasl-2.1.21'
make: *** [all] Error 2

我已经将凡是带有crypt的rpm包都安装过了,还是没有编译过去。:(
之前用的是ADS4 UP1没有报这个错,但是也有crypt相关的警告。
望告知!

[ 本帖最后由 alex1101 于 2005-12-6 18:25 编辑 ]


 alex1101 回复于:2005-12-07 10:55:01

在编译时加入LDFLAGS="-lcrypt" ./configure ... 可以make;make install


 aidisi 回复于:2005-12-09 10:45:35

[root@mail13 /]# service amavisd start
Starting amavisd: Error in config file "/etc/amavisd.conf": Can't use string ("test.com") as an ARRAY ref while "strict refs" in use at /etc/amavisd.conf line 68.

$max_servers = 8;            # number of pre-forked children (2..15 is common)
$daemon_user  = 'amavis';     # (no default;  customary: vscan or amavis)
$daemon_group = 'amavis';     # (no default;  customary: vscan or amavis)

$mydomain = 'test.com';   # a convenient default for other settings

不知道上边这句要修改成什么才可以通过。


 vepeta 回复于:2005-12-09 16:51:48

# ./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/
出现以下错误,如何处理?谢谢!
configure: error: --with-authmysql specified but no mysqlclient.so


 mageguoshi 回复于:2005-12-10 14:26:19

学习中。。。。。。。。。。

[ 本帖最后由 mageguoshi 于 2005-12-10 14:43 编辑 ]


 anstan 回复于:2005-12-12 19:25:31

引用:原帖由 vepeta 于 2005-12-9 16:51 发表
# ./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是自己编译的吗?如是的话,要:

# PATH=$PATH:/usr/local/mysql/bin
# export PATH
# echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
# ldconfig


 alex1101 回复于:2005-12-13 09:41:27

这样好像还是不能找到,我是这样解决的:
将/usr/local/mysql/lib/mysql/下的文件copy到/usr/lib/mysql/下


 vepeta 回复于:2005-12-13 14:39:30

引用:原帖由 anstan 于 2005-12-12 19:25 发表

你的mysql是自己编译的吗?如是的话,要:

# PATH=$PATH:/usr/local/mysql/bin
# export PATH
# echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
# ldconfig 

是自己编译了,只是还不行。我先前也看过一些资料,没有解决。


 vepeta 回复于:2005-12-13 14:43:51

引用:原帖由 alex1101 于 2005-12-13 09:41 发表
这样好像还是不能找到,我是这样解决的:
将/usr/local/mysql/lib/mysql/下的文件copy到/usr/lib/mysql/下 

谢谢!这样确实能过去。
但make时发现以下错误,In file included from authmysql.c:18:
authmysql.h:8:19: mysql.h: No such file or directory
authmysql.h:9:20: errmsg.h: No such file or directory
make[2]: *** [authmysql.lo] Error 1
不知道有没有影响?

随后也就在chmod +x /usr/local/var/spool/authdaemon/ 时,报不能访问,没有这个文件

[ 本帖最后由 vepeta 于 2005-12-13 16:04 编辑 ]


 aidisi 回复于:2005-12-13 15:33:04

[root@mail13 /]# service amavisd start
Starting amavisd: Error in config file "/etc/amavisd.conf": Can't use string ("test.com") as an ARRAY ref while "strict refs" in use at /etc/amavisd.conf line 68.

$max_servers = 8;            # number of pre-forked children (2..15 is common)
$daemon_user  = 'amavis';     # (no default;  customary: vscan or amavis)
$daemon_group = 'amavis';     # (no default;  customary: vscan or amavis)

$mydomain = 'test.com';   # a convenient default for other settings

不知道上边这句要修改成什么才可以通过。

我实在局域网中配置的,不知道为什么饱这样的错误,请告诉我错误是什么原因造成的。谢谢!


 winfox 回复于:2005-12-13 17:06:49

大家拿来探讨一下啊!支持!


 aidisi 回复于:2005-12-14 09:15:02

没有认帮我?


 kimer99 回复于:2005-12-15 16:31:03

好,项一下


 vepeta 回复于:2005-12-19 16:35:13

# ./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/
出现以下错误,如何处理?谢谢!
configure: error: --with-authmysql specified but no mysqlclient.so 
重新安装还是出现这样的错误,郁闷了好几天了,还没有解决!希望那位兄弟帮忙解决一下,多谢了!


 dancingpig 回复于:2005-12-19 17:46:32

楼主问个问题

我按照你的做

现在无法通过smtp的认证,pop3的认证也每办法。
现在我在调试smtp认证,看log发现说sasl的认证失败
sql plugin说没有result找到
但是按照sql语句在mysql里完全可以找到。
我打开debug看syslog,语句和参数完全正确就是无法认证,还有啥办法可以调试么?


 wqlx2008 回复于:2005-12-19 19:45:54

要是做個視頻就更加完美!


 anthonyfeng 回复于:2005-12-20 14:31:39

也可以参考此文

http://bbs.chinaunix.net/viewthread.php?tid=672644&extra=page%3D1


 yixin_yj 回复于:2005-12-23 01:08:39

我想问一下,装好postfixadmin之后,怎样登陆postfixadmin的欢迎界面啊?用什么用户名登录访问呢?为什么我访问的时候每次都是告诉我权限不够呢?拜托各位大侠了........


 nvbo 回复于:2005-12-27 13:48:12

请问老是出现如下错误是什么原因引起的,我已经反复检查了好几次,但还是找不出原因,请帮帮我! 
telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Hello there.
user nvbo
+OK Password required.
pass nvbo
-ERR Login failed.


 wadelau 回复于:2006-01-02 09:32:34

很是不错,比较赞!


 dgvri 回复于:2006-01-04 15:48:43

有个问题,好像一直都没有解决呀
在安装postfix时,
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 -lmysqldclient -lz -lm -L/usr/local/lib -lsasl2'
然后make install 出下如下错误:
gcc -Wmissing-prototypes -Wformat -DHAS_MYSQL -I/usr/local/mysql/include/mysql -DUSE_SASL_AUTH -I/usr/local/include/sasl AUXLIBS=-L/usr/local/mysql/lib/mysql -lmysqldclient -lz -lm -L/usr/local/lib -lsasl2 -g -O -I. -DLINUX2 -c argv.c
gcc: AUXLIBS=-L/usr/local/mysql/lib/mysql: No such file or directory
make: *** [argv.o] Error 1
make: *** [update] Error 1
主要应该是这一句:
gcc: AUXLIBS=-L/usr/local/mysql/lib/mysql: No such file or directory
这是为什么,前面看有位朋友问,也没有人解释。


 mageguoshi 回复于:2006-01-09 09:53:42

引用:原帖由 dgvri 于 2006-1-4 15:48 发表
有个问题,好像一直都没有解决呀
在安装postfix时,
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/loca ... 

系统在指定的路径下找不到mysql的库文件啊,你mysql装哪里就指定哪里!


 taotao424 回复于:2006-01-10 09:24:39

我在header_checks直接输入不能生效。。。


 Ericzhao82 回复于:2006-01-11 13:05:48

我参照[url=http://bbs.chinaunix.net/viewthread.php?tid=553326&extra=page%3D1]   [size=6]   [color=blue]《Postfix邮件系统完整版》   [/color] [/size]   前几步都OK、
在编译(Make)cyrus-sasl-2.1.21是出现错误如下:

引用:
allockey.c: In function '__sasldb_internal_list':
allockey.c:197: warning: unused parameter 'rock'
make[2]: *** [allockey.lo] Error 1
make[2]: Leaving directory `/usr/local/src/cyrus-sasl-2.1.21/sasldb'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/local/src/cyrus-sasl-2.1.21'
make: *** [all] Error 2

只有错误代码、没有错误内容提示、实在没办法了
各位能否帮帮忙、看问题出在哪里??谢谢

[url=http://bbs.chinaunix.net/viewthread.php?tid=553326&extra=page%

3D1]Postfix完全篇


 xj_bluesky 回复于:2006-01-17 18:55:42

写的好详细 多谢谢楼主的那么心思


 dgvri 回复于:2006-01-18 12:28:44

照此贴子做,错误多多。


 huanghaojie 回复于:2006-03-03 12:03:35

hello,everyone. If I have time,I will  rewrire an article about postfix, it include mainman and local smtp.


 临风轩主 回复于:2006-03-03 15:31:40

牛人啊!!我要向你们学习!!


 lonelybigboy 回复于:2006-03-07 15:49:24

老大,你这个真是相当详细呀,但有没有在WINDOWS下架设邮件服务器的祥解呀


 yangprc 回复于:2006-03-08 13:42:17

看晕了,有没有基础点的。


 xj_bluesky 回复于:2006-03-12 13:22:48

真的太强了
我公司一直在用网络公司的mailserver 现在想自己架mailserver 万分感谢!


 anson_x 回复于:2006-03-17 12:18:49

学习学习^_^


 1001wp 回复于:2006-03-19 22:43:27

学习,顶一下先


 情生意动 回复于:2006-03-26 23:43:02

老是SMTP认证不过


 victor27077 回复于:2006-03-30 10:26:16

謝謝樓主,樓主辛苦了!


 bqsc 回复于:2006-04-13 13:34:32

一看见这么多就被吓倒了。


 cuisir 回复于:2006-04-15 19:32:21

好东西,可能需要一整天的时间实践操作一下!


 deadcat 回复于:2006-04-23 19:19:38

那个/usr/sbin/maildirmake.sh脚本文件好象有错误

if [ ! -f /var/mailbox/$1 ]
不应该是-f而是-d
if [ ! -d /var/mailbox/$1 ]

因为要判断的目标是文件夹,不然的话只能建立一个目录,以后再建立就会出错
对于我来说是这样,改过来就正常了


 huanghaojie 回复于:2006-06-06 14:20:27

大家有没有发现用courier-imap时,在webmail里左边的目录,那里的格式跟我们平时用的不习惯呀,我以前试图把,但没成功,后来放弃用courier-imap,改用dovecot了,这样就可以改了。


 huanghaojie 回复于:2006-06-06 14:21:36

引用:原帖由 cuisir 于 2006-4-15 19:32 发表
好东西,可能需要一整天的时间实践操作一下! 

你真强,一整天就能搞定了,真是牛人,我花了几个月的时间,现在感觉还是不是那么完美。


 huanghaojie 回复于:2006-06-06 14:25:02

引用:原帖由 情生意动 于 2006-3-26 23:43 发表
老是SMTP认证不过 

这个问题我以前做的时候也经常发生,/usr/local/etc/authlib/authdaemonrc 一定不能出错,我以前一直是这个文件出错,这里不能有空格,好像新版本的postfix就有这样的问题,你有问题可以给我发mail ,[email]weblendar@gmail.com[/email] 不过最近GOOGLE。COM好像有问题。


 huanghaojie 回复于:2006-06-06 14:28:33

来一个改进的。这里没有mailman,还有这里不是dovecot的,
postfix邮件系统

as4+postfix+cyrus-sasl+mysql+postfixadmin+courier-imap+courier-maildrop+squirrelmail+clamav+spamassassin+amavisd-new

转载请注明出处
最后更新日期:2005年11月5日
2004年10左右成稿

1.mysql

2.apache

3.php

4.cyrus-sasl

5.postfix

6.postfixadmin

7.courier-authlib

8.courier-imap

9.courier-maildrop

10.测试

11.webmail
    11.1.squirrelmail

12.clamav

13.amavisd-new

14.spamassassin

15.附:启动脚本

本文用到的软件

    * MySQL 5.0.15
          o 网站:http://www.mysql.com
          o 下载 
    * APACHE 2.0.55
          o 网站:http://www.apache.org
          o 下载 
    * PHP 4.4.1
          o 网站:http://www.php.net
          o 下载 
    * Cyrus-SASL 2.1.21
          o 网站:http://asg.web.cmu.edu/sasl
          o 下载 
    * Postfix 2.2.5
          o 网站:http://www.postfix.org
          o 下载 
    * PostfixAdmin 2.1.0
          o 网站:http://www.postfixadmin.com
          o 下载 
    * Courier-authlib 0.57
          o 网站:http://www.courier-mta.org/authlib
          o 下载 
    * Courier-IMAP 4.0.6
          o 网站:http://www.courier-mta.org/imap
          o 下载 
    * Courier-maildrop 2.0.1
          o 网站:http://www.courier-mta.org/maildrop
          o 下载 
    * SquirrelMail 1.4.5
          o 网站:http://www.squirrelmail.org
          o 下载 
    * Extmail 0.20
          o 网站:http://www.extmail.org
          o 下载 
    * clamav 0.87
          o 网站:http://www.clamav.net
          o 下载 
    * amavisd-new 2.3.3
          o 网站:http://www.ijs.si/software/amavisd
          o 下载 
    * Spamassassin 3.1.0
          o 网站:http://spamassassin.apache.org
          o 下载 

我以前那篇文章中密码加密有问题(密码一加密,smtp认证就通不过),所以下定决心更新一下。这次sasl密码验证机制改为authdaemond(感谢网友606),并把测试部分单独列出来。很多人问起我的安装环境,我安装linux的时候,只选了开发工具,其他的都没选,还有,这些软件包安装的时候都没有依赖性问题,有的话,我也提出来了。

1.安装 mysql 5.0.15
# wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-5.0.15.tar.gz/from/http://mysql.new21.com/
# tar zxvf mysql-5.0.15.tar.gz
# cd cd mysql-5.0.15
# groupadd mysql
# useradd -g mysql mysql
# CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" /
./configure --prefix=/usr/local/mysql /
--enable-assembler --with-mysqld-ldflags=-all-static --with-charset=gbk
# make
# make install
# cp support-files/my-medium.cnf /etc/my.cnf

设置自启动
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
# chmod 755 /etc/rc.d/init.d/mysqld
# chkconfig --add mysqld

安装完以后要初始化数据库
# cd /usr/local/mysql
# /usr/local/mysql/bin/mysql_install_db --user=mysql
# chown -R root .
# chown -R mysql var
# chgrp -R mysql .

好了,至此mysql安装完毕,你可以这样起动你的mysql服务
# service mysqld start

为了能让系统找到mysql,请运行如下命令
# PATH=$PATH:/usr/local/mysql/bin
# export PATH
# echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
# ldconfig

Go to top.

2.安装 apache 2.0.55
# wget http://apache.freelamp.com/httpd/httpd-2.0.55.tar.bz2
# tar jxvf httpd-2.0.55.tar.bz2
# cd httpd-2.0.55
# ./configure --prefix=/usr/local/apache
# make
# make install

设置自启动
# cp support/apachectl /etc/init.d/httpd

修改/etc/init.d/httpd
# vi /etc/init.d/httpd(前面几行改成如下样子)
#!/bin/sh
#
# Startup script for the Apache Web Server
# chkconfig: - 85 15
# description: Apache is a World Wide Web server. It is used to serve /
# HTML files and CGI.
# processname: httpd
# pidfile: /usr/local/apache/log/httpd.pid
# config: /usr/local/apache/conf/httpd.conf

# chkconfig --add httpd
# chmod 755 /etc/init.d/httpd
# chkconfig httpd on

创建网页根目录
# mkdir /var/www

修改apache配置文件
# vi /usr/local/apache/conf/httpd.conf
//存放网页的目录,原来为DocumentRoot "",改成:
DocumentRoot "/var/www"
//这句应该和DocumentRoot 的目录保持一致,原来为<Directory "">,改成:
<Directory "/var/www">
//Indexes:当在目录中找不到DirectoryIndex列表中指定的文件就生成当前目录的文件列表
//FollowSymlinks:允许符号链接跟随,访问不在本目录下的文件
Options Indexes FollowSymLinks
//禁止读取.htaccess配置文件的内容
AllowOverride None
//指定先执行Allow(允许)访问规则,再执行Deny(拒绝)访问规则
Order allow,deny
//设置Allow(允许)访问规则,允许所有连接
Allow from all
</Directory>

启动服务
# service httpd start

Go to top.

3.安装php 4.4.1
# wget http://cn.php.net/get/php-4.4.1.tar.bz2/from/this/mirror
# tar jxvf php-4.4.1.tar.bz2
# cd php-4.4.1
# ./configure /
--prefix=/usr/local/php /
--with-mysql=/usr/local/mysql /
--with-apxs2=/usr/local/apache/bin/apxs
# make
# make install
# cp php.ini-dist /usr/local/php/lib/php.ini

# vi /usr/local/php/lib/php.ini
;default_charset = "iso-8859-1"
在这行下面加一行
default_charset = "gbk"

# vi /usr/local/apache/conf/httpd.conf
找到#AddType application/x-tar .tgz 这行,在下面加两行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
找到下面一行在后面加上index.php,这表示网站的默认页也能够为index.php
DirectoryIndex index.html index.html.var index.php
注意:改变了http.conf后,要重启apache服务

Go to top.

4.安装 cyrus-sasl 2.1.21
先关闭as4默认安装的sasl
# mv /usr/lib/sasl /usr/lib/sasl.OFF
# mv /usr/lib/sasl2 /usr/lib/sasl2.OFF

编译安装cyrus-sasl2.1.21
# wget http://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-2.1.21.tar.gz
# tar zxvf cyrus-sasl-2.1.21.tar.gz
# cd cyrus-sasl-2.1.21
# ./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 /
--with-authdaemond
# make
# make install

更新lib库
# echo "/usr/local/lib" >> /etc/ld.so.conf
# ldconfig

重要
# ln -s /usr/local/lib/sasl2 /usr/lib/sasl2

Go to top.

5.安装postfix 2.2.5
如果你的系统上原来有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

开始安装
# groupadd -g 12345 postfix
# useradd -u 12345 -g 12345 -c postfix -d/dev/null -s/sbin/nologin postfix
# groupadd -g 54321 postdrop
# wget ftp://postfix.cn99.com/postfix/official/postfix-2.2.5.tar.gz
# tar zxvf postfix-2.2.5.tar.gz
# cd postfix-2.2.5
(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

注意:
    本例中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

Go to top.

6.安装postfixadmin 2.1.0
建立apache和maildrop的用户和组
# groupadd vmail -g 1001
# useradd vmail -u 1001 -g 1001 -s/sbin/nologin -d/dev/null

# vi /usr/local/apache/conf/httpd.conf

User nobody
Group #-1
改为
User vmail
Group vmail

# wget http://high5.net/postfixadmin/download.php?file=postfixadmin-2.1.0.tgz
# tar -zxvf postfixadmin-2.1.0.tgz
# mv postfixadmin-2.1.0 /var/www/postfixadmin
更改权限,假定运行apache的用户和组为vmail
# chown -R vmail:vmail /var/www/postfixadmin
# cd /var/www/postfixadmin
# chmod 640 *.php *.css
# cd /var/www/postfixadmin/admin/
# chmod 640 *.php .ht*
# cd /var/www/postfixadmin/images/
# chmod 640 *.png
# cd /var/www/postfixadmin/languages/
# chmod 640 *.lang
# cd /var/www/postfixadmin/templates/
# chmod 640 *.tpl
# cd /var/www/postfixadmin/users/
# chmod 640 *.php

建立mysql表
# cd /var/www/postfixadmin
# mysql -u root < DATABASE_MYSQL.TXT
# cp config.inc.php.sample config.inc.php
# vi config.inc.php
本例中的配置如下:
$CONF['default_language'] = 'cn';
$CONF['database_type'] = 'mysql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'postfixadmin';
$CONF['database_password'] = 'postfixadmin';
$CONF['database_name'] = 'postfix';
$CONF['encrypt'] = 'md5crypt';
$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';
$CONF['quota'] = 'YES';
$CONF['quota_multiplier'] = '1024000';

邮箱的存储格式使用domain.ltd/username的形式,所以设置:
$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';

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

Go to top.

# vi /etc/postfix/main.cf
#=====================BASE=========================
myhostname = www.test.com
mydomain = test.com
myorigin = $mydomain
mydestination = $myhostname localhost localhost.$mydomain
mynetworks = 127.0.0.0/8
inet_interfaces = all

#=====================Vritual Mailbox settings=========================
virtual_mailbox_base = /var/mailbox
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:1001
virtual_gid_maps = static:1001
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"

Go to top.

建立/var/mailbox并设置权限
# mkdir /var/mailbox
# chown -R vmail:vmail /var/mailbox
# chmod -R ug+rwx,o-rwx /var/mailbox

建立/etc/postfix/mysql文件夹和MySQL查询配置文件
# mkdir /etc/postfix/mysql
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

2、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'

3、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'

4、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'

Go to top.

配置 /usr/local/lib/sasl2/smtpd.conf
sasl密码验证机制为authdaemond
# vi /usr/local/lib/sasl2/smtpd.conf
pwcheck_method:authdaemond
log_level:3
srp_mda:md5
password_format:crypt
mech_list:PLAIN LOGIN
authdaemond_path: /usr/local/var/spool/authdaemon/socket

Go to top.

7.安装Courier-authlib 0.57
新版本的imap不再包含authentication library,必须先安装 Courier authentication library
# wget http://www.courier-mta.org/beta/courier-authlib/courier-authlib-0.57.20051004.tar.bz2
# tar jxvf courier-authlib-0.57.20051004.tar.bz2
# cd courier-authlib-0.57.20051004
# ./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

重要
# chmod +x /usr/local/var/spool/authdaemon/

# vi /usr/local/etc/authlib/authdaemonrc
authmodulelist="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_UID_FIELD '1001'
MYSQL_GID_FIELD '1001'
MYSQL_HOME_FIELD '/var/mailbox/'
MYSQL_MAILDIR_FIELD maildir
MYSQL_NAME_FIELD name
MYSQL_QUOTA_FIELD concat(quota,'S')
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的

启动服务
自启动:
# 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

Go to top.


 huanghaojie 回复于:2006-06-06 14:29:45

8.安装Courier-imap 4.0.6
# wget http://www.courier-mta.org/beta/imap/courier-imap-4.0.6.20051004.tar.bz2
# tar jxvf courier-imap-4.0.6.20051004.tar.bz2
# cd courier-imap-4.0.6.20051004
# ./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=YES

# vi /usr/local/imap/etc/imapd
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

Go to top.

9.安装Courier-maildrop 2.0.1
先装pcre
# wget http://optusnet.dl.sourceforge.net/sourceforge/pcre/pcre-6.3.tar.bz2
# tar jxvf pcre-6.3.tar.bz2
# cd pcre-6.3
# ./configure
# make
# make install

# wget http://optusnet.dl.sourceforge.net/sourceforge/courier/maildrop-2.0.1.tar.bz2
# tar jxvf maildrop-2.0.1.tar.bz2
# cd maildrop-2.0.1
# ./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

运行maildrop -v应该有如下提示信息:
maildrop 2.0.0 Copyright 1998-2005 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/master.cf
maildrop unix - n n - - pipe
  flags=DRhu user=vmail:vmail argv=/usr/local/maildrop/bin/maildrop -w 90 -d ${recipient}

##注意这里 flags前面一定要有两个空格。

由于maildrop没有建立及删除maildir的功能,因此由脚本实现(是否有什么安全隐患?)
# vi /etc/sudoers
vmail ALL = NOPASSWD: /usr/sbin/maildirmake.sh , /usr/sbin/maildirdel.sh

新建/usr/sbin/maildirmake.sh文件
# vi /usr/sbin/maildirmake.sh
#!/bin/bash
set -e
if [ ! -d /var/mailbox/$1 ]
then
mkdir /var/mailbox/$1
fi
chown -R vmail:vmail /var/mailbox/$1
cd "/var/mailbox/$1"
/usr/local/imap/bin/maildirmake $2
chown -R vmail:vmail /var/mailbox/$1/$2

新建/usr/sbin/maildirdel.sh文件
# vi /usr/sbin/maildirdel.sh
#!/bin/bash
rm -rf /var/mailbox/$1/$2

# chmod 755 /usr/sbin/maildirmake.sh
# chmod 755 /usr/sbin/maildirdel.sh

更改postfixadmin目录及postfixadmin/admin目录下的create-mailbox.php文件
在这两个文件的$tQuota = $CONF['maxquota'];行后加一行(postfixadmin/admin目录下的大概在200行,postfixadmin目录下的大概在?行):
# vi /var/www/postfixadmin/admin/create-mailbox.php (vi /var/www/postfixadmin/create-mailbox.php)
system("sudo /usr/sbin/maildirmake.sh $fDomain ".$_POST['fUsername']);

更改postfixadmin目录及postfixadmin/admin目录下的delete.php文件
在这两个文件的$result = db_query ("SELECT * FROM mailbox WHERE username='$fDelete' AND domain='$fDomain'");行后加几行:
# vi /var/www/postfixadmin/admin/delete.php (vi /var/www/postfixadmin/delete.php)
$userarray=explode("@",$fDelete);
$user=$userarray[0];
$domain=$userarray[1];
system("sudo /usr/sbin/maildirdel.sh $domain $user");

10.测试
启动所有服务
# service httpd start
# service mysqld start
# postfix start
# service courier-authlib start
# service courier-imap start

# netstat -ant | grep "LISTEN"
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN
tcp 0 0 :::110 :::* LISTEN
tcp 0 0 :::143 :::* LISTEN
tcp 0 0 :::80 :::* LISTEN

在postfixadmin中建立一测试帐户[email]test@test.com[/email]

测试smtp
# perl -MMIME::Base64 -e 'print encode_base64("test/@test.com");'
dGVzdEB0ZXN0LmNvbQ==
# perl -MMIME::Base64 -e 'print encode_base64("test");'
dGVzdA==

# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 www.test.com ESMTP "Version not Available"
ehlo www.test.com
250-www.test.com
250-PIPELINING
250-SIZE 14336000
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250 8BITMIME
auth login
334 VXNlcm5hbWU6
dGVzdEB0ZXN0LmNvbQ==
334 UGFzc3dvcmQ6
dGVzdA==
235 Authentication successful

测试POP3和IMAP
# telnet localhost 110
+OK Hello there
user [email]test@test.com[/email]
+OK Password required.
pass test
+OK Logged in.
quit
+OK bye-bye

测试maildrop
# maildrop -V 9 -d [email]test@test.com[/email]
maildrop: authlib: groupid=1001
maildrop: authlib: userid=1001
maildrop: authlib: logname=test@test.com, home=/var/mailbox/, mail=test.com/test/
maildrop: Changing to /var/mailbox/

ctrl+c退出

Go to top.

11.webmail

11.1.安装squirrelmail 1.4.5
下载squirrelmail及中文包
# wget http://keihanna.dl.sourceforge.net/sourceforge/squirrelmail/squirrelmail-1.4.5.tar.bz2
# wget http://optusnet.dl.sourceforge.net/sourceforge/squirrelmail/zh_CN-1.4.5-20050904.tar.bz2
把squirreelmail解压到/var/www目录下。
# tar jxvf squirrelmail-1.4.5.tar.bz2 -C /var/www/
# mv /var/www/squirrelmail-1.4.5/ /var/www/squirrelmail
解压中文包
# tar jxvf zh_CN-1.4.5-20050904.tar.bz2 -C /var/www/squirrelmail/

在配置squirrelmail之前先下载三个插件:
Quota Usage Version 1.3
# wget http://www.squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Fquota_usage-1.3-1.2.7.tar.gz
Compatibility Version 2.0.2
# wget http://www.squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Fcompatibility-2.0.2.tar.gz
Change MySQL Password Version 3.2
# wget http://www.squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Fchange_mysqlpass-3.2-1.2.8.tar.gz

把这三个插件解压到squirrelmail的plugin目录下
# tar zxvf quota_usage-1.3-1.2.7.tar.gz -C /var/www/squirrelmail/plugins/
# tar zxvf compatibility-2.0.2.tar.gz -C /var/www/squirrelmail/plugins/
# tar zxvf change_mysqlpass-3.2-1.2.8.tar.gz -C /var/www/squirrelmail/plugins/
第一个插件是用来显示邮箱的使用情况的;第二个和第三个插件是用来修改密码的。
如果不想装这些插件,请跳过。

配置Quota Usage
# cd /var/www/squirrelmail/plugins/quota_usage
# cp config.php.sample config.php

配置Change MySQL Password
# cd /var/www/squirrelmail/plugins/change_mysqlpass
# cp config.php.sample config.php
# vi config.php
更改如下几个变量:
$mysql_database = 'postfix';
$mysql_table = 'mailbox';
$mysql_userid_field = 'username';
$mysql_password_field ='password';
$mysql_manager_id = 'postfix';
$mysql_manager_pw = 'postfix';
$mysql_unixcrypt = 0;
$mysql_MD5crypt = 1;
$use_ssl_for_password_change = 0;

配置squirrelmail
# cd /var/www/squirrelmail
# ./configure
进入10. Languages
把1. Default Language : 的en_US改成zh_CN。
进入8. Plugins,添加这三个插件

# chown -R vmail:vmail /var/www/squirrelmail/data/
# chmod -R 730 /var/www/squirrelmail/data/

打开浏览器输入http://192.168.0.5/squirrelmail/,用[email]test@test.com[/email]登陆,你将会在屏幕的左上角看到邮箱的使用情况,你还会看到一条警告信息:
Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /var/www/squirrelmail/plugins/change_mysqlpass/functions.php on line 129
这是由于数据库结构不一致造成的,你只要把functions.php中的129行注释调即可(在行首加//)

Go to top.

12.安装clamav 0.87
# wget http://optusnet.dl.sourceforge.net/sourceforge/clamav/clamav-0.87.tar.gz
# tar zxvf clamav-0.87.tar.gz
# cd clamav-0.87
# groupadd clamav
# useradd -g clamav -s/sbin/nologin -d/dev/null clamav
# ./configure --prefix=/usr/local/clamav --with-dbdir=/usr/local/share/clamav --disable-zlib-vcheck
# make
# make check
# make install

编辑/usr/local/clamav/etc/clamd.conf
# vi /usr/local/clamav/etc/clamd.conf
#Verbose logging with syslog
LogSyslog
LogVerbose
LogFacility LOG_MAIL
LogFile /var/log/clamav/clamd.log
#Change pid file location
PidFile /var/run/clamav/clamd.pid
DatabaseDirectory /usr/local/share/clamav
#Set the clamav socket
LocalSocket /var/run/clamav/clamd
#Close the connection when this limit is exceeded
StreamMaxLength 10M
#Don't run clamd as root
User amavis
#Newer versions require you to uncomment this
ScanMail
ScanArchive

编辑/usr/local/clamav/etc/freshclam.conf
# vi /usr/local/clamav/etc/freshclam.conf
DatabaseDirectory /usr/local/share/clamav
UpdateLogFile /var/log/clamav/freshclam.log
LogSyslog
LogVerbose
DatabaseOwner amavis
#Check for updates every two hours. That is the official recommendation
Checks 12
DatabaseMirror db.CN.clamav.net
DatabaseMirror database.clamav.net
NotifyClamd

注意:一定要注释掉上面两个文件中Example那行

添加amavis用户和组
# groupadd amavis
# useradd -g amavis -s /sbin/nologin -d /dev/null amavis

创建日志文件夹并设置权限
# mkdir /var/log/clamav
# chmod -R 744 /var/log/clamav
# chown -R amavis:amavis /var/log/clamav

# chown -R amavis.amavis /usr/local/share/clamav
# mkdir /var/run/clamav
# chmod 700 /var/run/clamav
# chown amavis.amavis /var/run/clamav

手动更新病毒库
# /usr/local/clamav/bin/freshclam

启动
# /usr/local/clamav/sbin/clamd

Go to top.

13.安装amavisd-new 2.3.3

# wget http://www.ijs.si/software/amavisd/amavisd-new-2.3.3.tar.gz
# tar zxvf amavisd-new-2.3.3.tar.gz
# cd amavisd-new-2.3.3

# mkdir -p /var/amavis /var/amavis/tmp /var/amavis/var /var/amavis/db
# chown -R amavis:amavis /var/amavis
# chmod -R 750 /var/amavis

# cp amavisd /usr/local/sbin/
# chown root /usr/local/sbin/amavisd
# chmod 755 /usr/local/sbin/amavisd

# cp amavisd.conf /etc/
# chown root /etc/amavisd.conf
# chmod 644 /etc/amavisd.conf

# cp amavisd_init.sh /etc/rc.d/init.d/amavisd
# chmod 744 /etc/rc.d/init.d/amavisd
# chkconfig --add amavisd
# chkconfig amavisd on
# vi /etc/rc.d/init.d/amavisd
prog="/usr/local/sbin/amavisd"

病毒邮件存放目录
# mkdir /var/virusmails
# chown amavis:amavis /var/virusmails
# chmod 750 /var/virusmails

Go to top.

编辑/etc/amavisd.conf,修改下面这几行
# vi /etc/amavisd.conf
$max_servers=8;
$daemon_user = 'amavis';
$daemon_group = 'amavis';
$mydomain = 'test.com';
$db_home = "$MYHOME/db";
$inet_socket_port = 10024;
$sa_tag_level_deflt = -100;
$sa_tag2_level_deflt = 6.3;
$sa_kill_level_deflt = $sa_tag2_level_deflt;
$virus_admin = "virusalert/@$mydomain";
$sa_spam_subject_tag = '***SPAM*** ';
$notify_method = $forward_method;
$forward_method = 'smtp:127.0.0.1:10025';
$final_virus_destiny = D_DISCARD;
$final_banned_destiny = D_DISCARD;
$final_spam_destiny = D_DISCARD;
['ClamAV-clamd',
  /&ask_daemon, ["CONTSCAN {}/n", "/var/run/clamav/clamd"],
  qr//bOK$/, qr//bFOUND$/,
  qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],

测试amavis
# /usr/local/sbin/amavisd debug
ERROR: MISSING REQUIRED BASIC MODULES:
Time::HiRes
IO::Wrap
Unix::Syslog
Mail::Field
MIME::Words
Net::Server
BEGIN failed--compilation aborted at /usr/local/sbin/amavisd line 141.
根据出错提示,缺什么装什么,我的LANG变量为en_US.UTF-8
# perl -MCPAN -e shell
cpan> install Time::HiRes
cpan> install IO::Wrap
cpan> install Unix::Syslog
cpan> install Mail::Field
cpan> install Compress::Zlib
cpan> install MIME::Words
cpan> install Net::Server
cpan> install BerkeleyDB
cpan> install Convert::TNEF
cpan> install Convert::UUlib
cpan> install Archive::Tar
cpan> install Archive::Zip
cpan> install HTML::Parser
cpan> install DB_File
cpan> install Net::DNS (提示是否test, 选择no)
cpan> install Digest::SHA1
cpan> install Mail::SpamAssassin (# export LANG=en_US)

期间MIME安装会失败,只好手动安装,跳过测试
# cd /root/.cpan/build/MIME-tools-5.418/
# perl Makefile.PL
# make install

然后再

# /usr/local/sbin/amavisd debug

再根据出错的信息,如出现******Convert/TNEF.pl那就需要再

# perl -MCPAN -e shell
cpan> install Convert::TNEF 

直到所有perl模块安装好。

启动
# /usr/local/sbin/amavisd start 或
# service amavisd start

Go to top.

设置postfix
修改/etc/postfix/main.cf
# vi /etc/postfix/main.cf (加入一行)
content_filter = amavis:127.0.0.1:10024
修改/etc/postfix/master.cf
# vi /etc/postfix/master.cf (在最后加上)
# amavisd-new
amavis unix - - n - 2 smtp
  -o smtp_data_done_timeout=1200
  -o smtp_send_xforward_command=yes
  -o disable_dns_lookups=yes

localhost:10025 inet n - n - - smtpd
  -o content_filter=
  -o local_recipient_maps=
  -o relay_recipient_maps=
  -o mynetworks=127.0.0.0/8
  -o smtpd_helo_restrictions=
  -o smtpd_client_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o strict_rfc821_envelopes=yes
  -o smtpd_error_sleep_time=0
  -o smtpd_soft_error_limit=1001
  -o smtpd_hard_error_limit=1000

重新服务
# service postfix restart
# service clamd restart
# service amavisd restart

# netstat -ant | grep LISTEN (应该可以看到这两个端口在监听)
127.0.0.1.10024 *.* 0 0 49152 0 LISTEN
127.0.0.1.10025 *.* 0 0 49152 0 LISTEN

Go to top.

14.安装Spamassassin
前面装amavis的时候已经装好了,如果没装,请按如下方式安装

启动spamd
# /usr/bin/spamd --daemonize --pidfile /var/run/spamd.pid

下载中文垃圾垃圾邮件过滤规则Chinese_rules.cf
# wget -N -P /usr/share/spamassassin www.ccert.edu.cn/spam/sa/Chinese_rules.cf

每次更新Chinese_rules.cf需要重启spamd方法如下
# kill -HUP `cat /var/run/spamd.pid`

自动更新中文垃圾垃圾邮件过滤规则
# vi /etc/crontab (加一行)
0 0 1 * * root wget -N -P /usr/share/spamassassin www.ccert.edu.cn/spam/sa/Chinese_rules.cf;kill -HUP `cat /var/run/spamd.pid`

测试病毒扫描
给该[email]test@test.com[/email]用户发送邮件,包含以下内容:
X5O!P%@AP[4/PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
查看日志,如果出现类似如下提示,则表明成功
Nov 6 22:06:20 localhost postfix/smtp[18276]: 9CEB657E22: to=<[email]test@test.com[/email]>, relay=127.0.0.1[127.0.0.1], delay=2, status=sent (250 2.7.1 Ok, discarded, id=18262-01 - VIRUS: Eicar-Test-Signature)
邮件病毒扫描日志将被记录在/var/log/clamav/clamav.log中!

测试垃圾邮件扫描
给[email]test@test.com[/email]用户发送邮件,包含以下内容:
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
查看日志,如果出现类似如下提示,表明成功
Nov 6 22:10:51 localhost amavis[18263]: (18263-01) Blocked SPAM, LOCAL [127.0.0.1] [127.0.0.1] <[email]test@test.com[/email]> -> <[email]test@test.com[/email]>, quarantine: spam-JH2LSCT1MLYg.gz, Message-ID: <1451.192.168.1.10.1131286248.squirrel@192.168.1.21>, mail_id: JH2LSCT1MLYg, Hits: 1005.902, 3591 ms

Go to top.

15.启动脚本
postfix的启动脚本:
# cat /etc/rc.d/init.d/postfix
=================================================================
#!/bin/bash
#
# mailsys This shell script takes care of starting and stopping Postfix
# author : xingyu.wang <[email]wxy@cngnu.org[/email]> 2004/1/28
#
# chkconfig: 2345 80 30
# description: Postfix is a Mail Transport Agent, which is the program
# that moves mail from one machine to another.
#
# processname: mailsys
# pidfile: /var/run/postfix.pid
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -f /usr/sbin/postfix ] || exit 0
RETVAL=0
prog="Postfix"

start() {
# Start daemons.
echo -n $"Starting $prog: "
/usr/sbin/postfix start > /dev/null 2>&1 &

RETVAL=$?

if [ $RETVAL -eq 0 ]; then
touch /var/lock/subsys/postfix
success $"$prog start"
else
failure $"$prog start failure"
fi

echo
return $RETVAL
}

stop() {
# Stop daemons.
echo -n $"Shutting down $prog: "
/usr/sbin/postfix stop > /dev/null 2>&1 &
RETVAL=$?

if [ $RETVAL -eq 0 ]; then
rm -f /var/lock/subsys/postfix
success $"$prog stop"
else
failure $"$prog stop failure"
fi

echo
return $RETVAL
}

# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart|reload)
stop
start
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit 1
esac
exit $RETVA

# chmod 755 /etc/rc.d/init.d/postfix
# chkconfig --level 2345 postfix on

clamav的启动脚本
# vi /etc/rc.d/init.d/clamd
=================================================================
#! /bin/bash
#
# crond Start/Stop the clam antivirus daemon.
#
# chkconfig: 2345 90 60
# description: clamdis a standard UNIX program that scans for Viruses.
# processname: clamd
# config: /usr/local/clamav/etc/clamd.conf
# pidfile: /var/run/clamav/clamd.pid

# Source function library.
. /etc/rc.d/init.d/functions

RETVAL=0

# See how we were called.

prog="clamd"
progdir="/usr/local/clamav/sbin"

# Source configuration
if [ -f /etc/sysconfig/$prog ] ; then
. /etc/sysconfig/$prog
fi

start() {
echo -n $"Starting $prog: "
daemon $progdir/$prog
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/run/clamav/clamd.pid
return $RETVAL
}

stop() {
echo -n $"Stopping $prog: "
killproc $prog
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/run/clamav/clamd.pid
return $RETVAL
}

rhstatus() {
status clamd
}

restart() {
stop
start
}

reload() {
echo -n $"Reloading clam daemon configuration: "
killproc clamd -HUP
retval=$?
echo
return $RETVAL
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
reload)
reload
;;
status)
rhstatus
;;
condrestart)
[ -f /var/lock/subsys/clamd ] && restart || :
;;
*)
echo $"Usage: $0 {start|stop|status|reload|restart|condrestart}"
exit 1
esac

exit 0

# chmod 755 /etc/rc.d/init.d/clamd
# chkconfig --add clamd
# chkconfig clamd on

这里是dovecot的东西,如果想用dovecot的东西,请看下面的内容。
配置dovecot1.0 beta3使支持pop3s和imaps
# wget http://www.dovecot.org/releases/dovecot-1.0.beta3.tar.gz
# tar zxvf dovecot-1.0.beta3.tar.gz
# cd dovecot-1.0.beta3
# ./configure --prefix=/usr/local/dovecot --sysconfdir=/usr/local/etc/ --with-mysql --with-ssl=openssl --disable-ipv6
# make
# make install
# cp /usr/local/etc/dovecot/dovecot-example.conf /usr/local/etc/dovecot/dovecot.conf
 
# useradd -s/sbin/nologin -d/dev/null dovecot
 
生成证书(for pop3s and imaps)
用dovecot自带的mkcert.sh脚本生成证书会出错,所以手动生成
先修改dovecot-openssl.cnf,改成你自己的信息,其中Common Name必须填fqdn(Fully Qualified Domain Name)
# openssl req -new -x509 -nodes -config doc/dovecot-openssl.cnf -out /etc/ssl/certs/dovecot.pem -keyout /etc/ssl/private/dovecot.pem -days 3650
 
配置dovecot
 
编辑/usr/local/etc/dovecot.conf
# vi /usr/local/etc/dovecot.conf
protocols = imap imaps pop3 pop3s
listen = *
ssl_cert_file = /etc/ssl/certs/dovecot.pem
ssl_key_file = /etc/ssl/private/dovecot.pem
disable_plaintext_auth = no
default_mail_env = maildir:/var/mailbox/%d/%n
protocol pop3 {
  pop3_uidl_format = %u
}
auth default {
  mechanisms = plain
  passdb sql {
    args = /usr/local/etc/dovecot.passdb.mysql
    }
  userdb prefetch {
  }
}
 
建立/usr/local/etc/dovecot.passdb.mysql文件
# vi /usr/local/etc/dovecot.passdb.mysql
driver = mysql
connect = host=localhost dbname=postfix user=postfix password=postfix
default_pass_scheme = PLAIN
password_query = SELECT  password, maildir as userdb_home, 1001 as userdb_uid, 1001 as userdb_gid FROM mailbox WHERE username = '%u'

[ 本帖最后由 huanghaojie 于 2006-6-6 14:32 编辑 ]


 xiaodixiaodi 回复于:2006-06-15 13:23:39

[root@localhost etc]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 www.test.com ESMTP "Version not Available"
ehlo www.test.com
250-www.test.com
250-PIPELINING
250-SIZE 14336000
250-VRFY
250-ETRN
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250 8BITMIME
auth login
334 VXNlcm5hbWU6
dGVzdEB0ZXN0LmNvbQ==
334 UGFzc3dvcmQ6
dGVzdA==
535 Error: authentication failed

Jun 15 13:20:56 localhost postfix/smtpd[3572]: connect from localhost.localdomai
n[127.0.0.1]
Jun 15 13:22:28 localhost postfix/smtpd[3572]: warning: SASL authentication fail
ure: could not verify password
Jun 15 13:22:28 localhost postfix/smtpd[3572]: warning: localhost.localdomain[12
7.0.0.1]: SASL login authentication failed

请求帮助!谢谢!

[ 本帖最后由 xiaodixiaodi 于 2006-6-15 13:29 编辑 ]


 chinanpt 回复于:2006-06-22 18:35:22

熬了几天几夜,完全按照作者的文章安装的,其结果是telnet localhost 25 没有反映,telnet localhost 110验证失败,真的怀疑此文章的正确性,不知道作者在发表文章之前,有没有认真的客观的验证过分析过,或者只是自己一个试验品而已,其结果也不知对否,我对天发誓,这个东西已经发费了我两个星期的时间,其中通读了《POSTFIX权威指南》,但结果还是失败了,我现在不怀疑我自己的能力,转而怀疑起作者,我忠诚恳请作者,请问,你的文章你自己配置成功过吗?无论成功与否,请您转告诉大家,我不希望大家在此浪费太多的时间,以上只是自己看法,没有恶意攻击之意,因为大家都是想学知识的,都是想把知识学的更好的


 chinanpt 回复于:2006-06-22 18:37:22

熬了几天几夜,完全按照作者的文章安装的,其结果是telnet localhost 25 没有反映,telnet localhost 110验证失败,真的怀疑此文章的正确性,不知道作者在发表文章之前,有没有认真的客观的验证过分析过,或者只是自己一个试验品而已,其结果也不知对否,我对天发誓,这个东西已经发费了我两个星期的时间,其中通读了《POSTFIX权威指南》,但结果还是失败了,我现在不怀疑我自己的能力,转而怀疑起作者,我忠诚恳请作者,请问,你的文章你自己配置成功过吗?无论成功与否,请您转告诉大家,我不希望大家在此浪费太多的时间,以上只是自己看法,没有恶意攻击之意,因为大家都是想学知识的,都是想把知识学的更好的


 权老实 回复于:2006-06-23 09:35:38

[src/error]
gcc -Wmissing-prototypes -Wformat -DHAS_MYSQL -I/usr/local/mysql/include -DUSE_SASL_AUTH -I/usr/local/include/sasl -g -O -I. -I../../include -DLINUX2 -c error.cgcc -Wmissing-prototypes -Wformat -DHAS_MYSQL -I/usr/local/mysql/include -DUSE_SASL_AUTH -I/usr/local/include/sasl -g -O -I. -I../../include -DLINUX2 -o error error.o ../../lib/libmaster.a ../../lib/libglobal.a ../../lib/libutil.a -L/usr/local/mysql/lib -lmysqlclient -lz -lm -L/usr/local/lib -lsasl2 -ldb -lnsl -lresolv/usr/local/mysql/lib/libmysqlclient.a(ssl.o)(.gnu.linkonce.d.__vt_Q25yaSSL7Message+0x8): undefined reference to `__pure_virtual'
/usr/local/mysql/lib/libmysqlclient.a(ssl.o)(.gnu.linkonce.d.__vt_Q25yaSSL7Message+0xc): undefined reference to `__pure_virtual'
/usr/local/mysql/lib/libmysqlclient.a(ssl.o)(.gnu.linkonce.d.__vt_Q25yaSSL7Message+0x10): undefined reference to `__pure_virtual'
/usr/local/mysql/lib/libmysqlclient.a(ssl.o)(.gnu.linkonce.d.__vt_Q25yaSSL7Message+0x14): undefined reference to `__pure_virtual'
/usr/local/mysql/lib/libmysqlclient.a(ssl.o)(.gnu.linkonce.d.__vt_Q25yaSSL7Message+0x18): undefined reference to `__pure_virtual'
/usr/local/mysql/lib/libmysqlclient.a(cert_wrapper.o)(.text+0x53): In function `yaSSL::x509::~x509(void)':
: undefined reference to `__builtin_delete'
/usr/local/mysql/lib/libmysqlclient.a(cert_wrapper.o)(.text+0x275): In function `yaSSL::CertManager::~CertManager(void)':
: undefined reference to `__builtin_delete'
/usr/local/mysql/lib/libmysqlclient.a(template_instnt.o)(.gnu.linkonce.t._._Q25mySTLt4list1ZPQ25yaSSL11SSL_SESSION+0x32): In function `mySTL::list<yaSSL::SSL_SESSION *>::~list(void)':
: undefined reference to `__builtin_delete'
/usr/local/mysql/lib/libmysqlclient.a(template_instnt.o)(.gnu.linkonce.t._._Q25mySTLt4list1ZPQ25yaSSL12input_buffer+0x32): In function `mySTL::list<yaSSL::input_buffer *>::~list(void)':
: undefined reference to `__builtin_delete'
/usr/local/mysql/lib/libmysqlclient.a(template_instnt.o)(.gnu.linkonce.t._._Q25mySTLt4list1ZPQ25yaSSL13output_buffer+0x32): In function `mySTL::list<yaSSL::output_buffer *>::~list(void)':
: undefined reference to `__builtin_delete'
/usr/local/mysql/lib/libmysqlclient.a(template_instnt.o)(.gnu.linkonce.t._._Q25mySTLt4list1ZPUc+0x32): more undefined references to `__builtin_delete' follow
/usr/local/mysql/lib/libmysqlclient.a(template_instnt.o)(.gnu.linkonce.d.__vt_Q25yaSSL13HandShakeBase+0x8): undefined reference to `__pure_virtual'
/usr/local/mysql/lib/libmysqlclient.a(template_instnt.o)(.gnu.linkonce.d.__vt_Q25yaSSL13HandShakeBase+0xc): undefined reference to `__pure_virtual'
/usr/local/mysql/lib/libmysqlclient.a(template_instnt.o)(.gnu.linkonce.d.__vt_Q25yaSSL13HandShakeBase+0x10): undefined reference to `__pure_virtual'
/usr/local/mysql/lib/libmysqlclient.a(template_instnt.o)(.gnu.linkonce.d.__vt_Q25yaSSL13HandShakeBase+0x14): undefined reference to `__pure_virtual'
/usr/local/mysql/lib/libmysqlclient.a(yassl_imp.o)(.text+0x23de): In function `yaSSL::ServerDHParams::~ServerDHParams(void)':
: undefined reference to `__builtin_delete'
/usr/local/mysql/lib/libmysqlclient.a(yassl_imp.o)(.text+0x3e8f): In function `yaSSL::Connection::~Connection(void)':
: undefined reference to `__builtin_delete'
/usr/local/mysql/lib/libmysqlclient.a(yassl_int.o)(.text+0x29ed): In function `yaSSL::SSL_SESSION::~SSL_SESSION(void)':
: undefined reference to `__builtin_delete'
/usr/local/mysql/lib/libmysqlclient.a(yassl_int.o)(.text+0x2b43): In function `yaSSL::Sessions::~Sessions(void)':
: undefined reference to `__builtin_delete'
/usr/local/mysql/lib/libmysqlclient.a(yassl_int.o)(.text+0x2e35): In function `yaSSL::SSL_CTX::~SSL_CTX(void)':
: undefined reference to `__builtin_delete'
/usr/local/mysql/lib/libmysqlclient.a(yassl_int.o)(.text+0x31cc): more undefined references to `__builtin_delete' follow
/usr/local/mysql/lib/libmysqlclient.a(libtaocrypt_la-asn.o)(.gnu.linkonce.d.__vt_Q28TaoCrypt4HASH+0xc): undefined reference to `__pure_virtual'
/usr/local/mysql/lib/libmysqlclient.a(libtaocrypt_la-asn.o)(.gnu.linkonce.d.__vt_Q28TaoCrypt4HASH+0x10): undefined reference to `__pure_virtual'
/usr/local/mysql/lib/libmysqlclient.a(libtaocrypt_la-asn.o)(.gnu.linkonce.d.__vt_Q28TaoCrypt4HASH+0x14): undefined reference to `__pure_virtual'
/usr/local/mysql/lib/libmysqlclient.a(libtaocrypt_la-asn.o)(.gnu.linkonce.d.__vt_Q28TaoCrypt4HASH+0x18): undefined reference to `__pure_virtual'
/usr/local/mysql/lib/libmysqlclient.a(libtaocrypt_la-asn.o)(.gnu.linkonce.d.__vt_Q28TaoCrypt4HASH+0x1c): undefined reference to `__pure_virtual'
/usr/local/mysql/lib/libmysqlclient.a(libtaocrypt_la-asn.o)(.gnu.linkonce.d.__vt_Q28TaoCrypt11BER_Decoder+0xc): more undefined references to `__pure_virtual' follow
/usr/local/mysql/lib/libmysqlclient.a(libtaocrypt_la-asn.o)(.gnu.linkonce.t._._Q28TaoCrypt13DSA_PublicKey+0x9f): In function `TaoCrypt::DSA_PublicKey::~DSA_PublicKey(void)':
: undefined reference to `__builtin_delete'
/usr/local/mysql/lib/libmysqlclient.a(libtaocrypt_la-random.o)(.text+0xf6): In function `TaoCrypt::OS_Seed::~OS_Seed(void)':
: undefined reference to `__builtin_delete'
/usr/local/mysql/lib/libmysqlclient.a(libtaocrypt_la-hash.o)(.gnu.linkonce.d.__vt_Q28TaoCrypt17HASHwithTransform+0x14): undefined reference to `__pure_virtual'
/usr/local/mysql/lib/libmysqlclient.a(libtaocrypt_la-hash.o)(.gnu.linkonce.d.__vt_Q28TaoCrypt17HASHwithTransform+0x18): undefined reference to `__pure_virtual'
/usr/local/mysql/lib/libmysqlclient.a(libtaocrypt_la-hash.o)(.gnu.linkonce.d.__vt_Q28TaoCrypt17HASHwithTransform+0x1c): undefined reference to `__pure_virtual'
/usr/local/mysql/lib/libmysqlclient.a(libtaocrypt_la-hash.o)(.gnu.linkonce.d.__vt_Q28TaoCrypt17HASHwithTransform+0x20): undefined reference to `__pure_virtual'
/usr/local/mysql/lib/libmysqlclient.a(libtaocrypt_la-hash.o)(.gnu.linkonce.d.__vt_Q28TaoCrypt17HASHwithTransform+0x24): undefined reference to `__pure_virtual'
/usr/local/mysql/lib/libmysqlclient.a(libtaocrypt_la-hash.o)(.gnu.linkonce.d.__vt_Q28TaoCrypt17HASHwithTransform+0x28): more undefined references to `__pure_virtual' follow
/usr/local/mysql/lib/libmysqlclient.a(crypto_wrapper.o)(.text+0x10ae): In function `yaSSL::RandomPool::~RandomPool(void)':
: undefined reference to `__builtin_delete'
/usr/local/mysql/lib/libmysqlclient.a(crypto_wrapper.o)(.text+0x192e): In function `yaSSL::Integer::~Integer(void)':
: undefined reference to `__builtin_delete'
/usr/local/mysql/lib/libmysqlclient.a(crypto_wrapper.o)(.text+0x1c36): In function `yaSSL::DiffieHellman::~DiffieHellman(void)':
: undefined reference to `__builtin_delete'
/usr/local/mysql/lib/libmysqlclient.a(crypto_wrapper.o)(.gnu.linkonce.t._._Q35yaSSL3DES7DESImpl+0x26): In function `yaSSL::DES::DESImpl::~DESImpl(void)':
: undefined reference to `__builtin_delete'
/usr/local/mysql/lib/libmysqlclient.a(crypto_wrapper.o)(.gnu.linkonce.t._._Q35yaSSL3AES7AESImpl+0x71): In function `yaSSL::AES::AESImpl::~AESImpl(void)':
: undefined reference to `__builtin_delete'
/usr/local/mysql/lib/libmysqlclient.a(crypto_wrapper.o)(.gnu.linkonce.t._._Q35yaSSL3RSA7RSAImpl+0x6e): more undefined references to `__builtin_delete' follow
/usr/local/mysql/lib/libmysqlclient.a(crypto_wrapper.o)(.gnu.linkonce.d.__vt_Q28TaoCrypt9Mode_BASE+0xc): undefined reference to `__pure_virtual'
/usr/local/mysql/lib/libmysqlclient.a(crypto_wrapper.o)(.gnu.linkonce.d.__vt_Q25yaSSL4Auth+0x8): undefined reference to `__pure_virtual'
/usr/local/mysql/lib/libmysqlclient.a(crypto_wrapper.o)(.gnu.linkonce.d.__vt_Q25yaSSL4Auth+0xc): undefined reference to `__pure_virtual'
/usr/local/mysql/lib/libmysqlclient.a(crypto_wrapper.o)(.gnu.linkonce.d.__vt_Q25yaSSL4Auth+0x10): undefined reference to `__pure_virtual'
/usr/local/mysql/lib/libmysqlclient.a(crypto_wrapper.o)(.gnu.linkonce.d.__vt_Q25yaSSL10BulkCipher+0x8): undefined reference to `__pure_virtual'
/usr/local/mysql/lib/libmysqlclient.a(crypto_wrapper.o)(.gnu.linkonce.d.__vt_Q25yaSSL10BulkCipher+0xc): more undefined references to `__pure_virtual' follow
/usr/local/mysql/lib/libmysqlclient.a(crypto_wrapper.o)(.gnu.linkonce.t._._Q28TaoCrypt14RSA_PrivateKey+0x123): In function `TaoCrypt::RSA_PrivateKey::~RSA_PrivateKey(void)':
: undefined reference to `__builtin_delete'
/usr/local/mysql/lib/libmysqlclient.a(log.o)(.text+0x20): In function `yaSSL::Log::~Log(void)':
: undefined reference to `__builtin_delete'
/usr/local/mysql/lib/libmysqlclient.a(libtaocrypt_la-algebra.o)(.gnu.linkonce.d.__vt_Q28TaoCrypt23AbstractEuclideanDomain+0xc): undefined reference to `__pure_virtual'
/usr/local/mysql/lib/libmysqlclient.a(libtaocrypt_la-algebra.o)(.gnu.linkonce.d.__vt_Q28TaoCrypt23AbstractEuclideanDomain+0x10): undefined reference to `__pure_virtual'
/usr/local/mysql/lib/libmysqlclient.a(libtaocrypt_la-algebra.o)(.gnu.linkonce.d.__vt_Q28TaoCrypt23AbstractEuclideanDomain+0x14): undefined reference to `__pure_virtual'
/usr/local/mysql/lib/libmysqlclient.a(libtaocrypt_la-algebra.o)(.gnu.linkonce.d.__vt_Q28TaoCrypt23AbstractEuclideanDomain+0x18): undefined reference to `__pure_virtual'
/usr/local/mysql/lib/libmysqlclient.a(libtaocrypt_la-algebra.o)(.gnu.linkonce.d.__vt_Q28TaoCrypt23AbstractEuclideanDomain+0x3c): undefined reference to `__pure_virtual'
/usr/local/mysql/lib/libmysqlclient.a(libtaocrypt_la-algebra.o)(.gnu.linkonce.d.__vt_Q28TaoCrypt23AbstractEuclideanDomain+0x40): more undefined references to `__pure_virtual' follow
/usr/local/mysql/lib/libmysqlclient.a(libtaocrypt_la-file.o)(.text+0x64): In function `TaoCrypt::FileSource::~FileSource(void)':
: undefined reference to `__builtin_delete'
/usr/local/mysql/lib/libmysqlclient.a(libtaocrypt_la-file.o)(.text+0x200): In function `TaoCrypt::FileSink::~FileSink(void)':
: undefined reference to `__builtin_delete'
collect2: ld returned 1 exit status
make: *** [error] ???
make: *** [update] ???

编译postfix
哪错了,也不明白、、、、、、、


 anstan 回复于:2006-06-24 22:03:38

引用:原帖由 chinanpt 于 2006-6-22 18:35 发表
熬了几天几夜,完全按照作者的文章安装的,其结果是telnet localhost 25 没有反映,telnet localhost 110验证失败,真的怀疑此文章的正确性,不知道作者在发表文章之前,有没有认真的客观的验证过分析过,或者只是 ... 

很久没来了。不多说什么了。
哪位朋友按照此文章安装成功的,请回帖一下!谢谢!


 xiaodixiaodi 回复于:2006-06-25 21:21:00

我在没装squirrelmail(courier-sqwebmail openwebmail)+clamav+spamassassin+amavisd-new)之前的都安装成功!但是文档中有些东西的确是错的!或没说清楚!经过我详细的,反复的研究配置文件后,还是成功了!能用foxmail在局域网内收发信件,但是,安装spamassassin+amavisd-new之后一启动此防垃圾的东东,邮件就收不到了!只能用mailq看到在队列中,却收不到!很郁闷!做不下去了!


 shixin 回复于:2006-07-04 11:53:19

:P
:P
:d
:D
好东西,收藏

[ 本帖最后由 shixin 于 2006-7-4 11:59 编辑 ]


 feiwupiaoxue 回复于:2006-07-04 11:59:34

哎呀,我的验证怎么通不过,大家帮我看看。
这是maillog:
[root@asiaunix ~]# tail -n 15 /var/log/maillog
Jul  4 11:39:22 asiaunix pop3d: Disconnected, ip=[::ffff:192.168.6.88]
Jul  4 11:39:38 asiaunix pop3d: Connection, ip=[::ffff:192.168.6.88]
Jul  4 11:39:38 asiaunix pop3d: LOGIN FAILED, user=feixue@asiaunix.3322.org, ip=[::ffff:192.168.6.88]
Jul  4 11:39:43 asiaunix pop3d: Disconnected, ip=[::ffff:192.168.6.88]
Jul  4 11:51:03 asiaunix pop3d: Connection, ip=[::ffff:192.168.6.88]
Jul  4 11:51:03 asiaunix pop3d: LOGIN FAILED, user=feixue@asiaunix.3322.org, ip=[::ffff:192.168.6.88]
Jul  4 11:51:08 asiaunix pop3d: Disconnected, ip=[::ffff:192.168.6.88]
Jul  4 11:51:13 asiaunix postfix/postfix-script: refreshing the Postfix mail system
Jul  4 11:51:13 asiaunix postfix/master[3484]: reload configuration /etc/postfix
Jul  4 11:51:16 asiaunix pop3d: Connection, ip=[::ffff:192.168.6.88]
Jul  4 11:51:16 asiaunix pop3d: LOGIN FAILED, user=feixue, ip=[::ffff:192.168.6.88]
Jul  4 11:51:21 asiaunix pop3d: Disconnected, ip=[::ffff:192.168.6.88]
Jul  4 11:51:31 asiaunix pop3d: Connection, ip=[::ffff:192.168.6.88]
Jul  4 11:51:31 asiaunix pop3d: LOGIN FAILED, user=feixue@asiaunix.3322.org, ip=[::ffff:192.168.6.88]
Jul  4 11:51:36 asiaunix pop3d: Disconnected, ip=[::ffff:192.168.6.88]

这是messages:
[root@asiaunix ~]# tail -n 15 /var/log/messages
Jul  4 10:01:01 asiaunix crond(pam_unix)[3994]: session opened for user root by (uid=0)
Jul  4 10:01:01 asiaunix crond(pam_unix)[3994]: session closed for user root
Jul  4 10:09:25 asiaunix smbd[3996]: [2006/07/04 10:09:25, 0] lib/util_sock.c:get_peer_addr(1000)
Jul  4 10:09:25 asiaunix smbd[3996]:   getpeername failed. Error was 传输端点尚未连絺?
Jul  4 10:09:25 asiaunix smbd[3996]: [2006/07/04 10:09:25, 0] lib/util_sock.c:get_peer_addr(1000)
Jul  4 10:09:25 asiaunix smbd[3996]:   getpeername failed. Error was 传输端点尚未连絺?
Jul  4 10:09:25 asiaunix smbd[3996]: [2006/07/04 10:09:25, 0] lib/util_sock.c:write_socket_data(430)
Jul  4 10:09:25 asiaunix smbd[3996]:   write_socket_data: write failure. Error = Connection reset by peer
Jul  4 10:09:25 asiaunix smbd[3996]: [2006/07/04 10:09:25, 0] lib/util_sock.c:write_socket(455)
Jul  4 10:09:25 asiaunix smbd[3996]:   write_socket: Error writing 4 bytes to socket 5: ERRNO = Connection reset by peer
Jul  4 10:09:25 asiaunix smbd[3996]: [2006/07/04 10:09:25, 0] lib/util_sock.c:send_smb(647)
Jul  4 10:09:25 asiaunix smbd[3996]:   Error writing 4 bytes to client. -1. (Connection reset by peer)
Jul  4 11:01:01 asiaunix crond(pam_unix)[4004]: session opened for user root by (uid=0)
Jul  4 11:01:01 asiaunix crond(pam_unix)[4004]: session closed for user root
Jul  4 11:39:05 asiaunix sshd(pam_unix)[4009]: session opened for user root by root(uid=0)

下面的messages应该和postfix验证没有关系的。


 权老实 回复于:2006-07-06 02:41:00

重新用源代码安mysql解决上面问题!!!!
6/7/2006 02:25 
至此centos4.3+postfix+cyrus-sasl+mysql+postfixadmin+courier-imap+courier-maildrop+squirrelmail
已基本正确安装完毕!!!
-----------------------------------------------
简单测试基本通过。略有疑问??????
例如:
[root@localhost init.d]# perl -MMIME::Base64 -e 'print encode_base64("[email]test@cbs.com[/email]");'
dGVzdC5jb20=

[root@localhost init.d]# perl -MMIME::Base64 -e 'print encode_base64("test");'
dGVzdA==
[root@localhost init.d]#  telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 www.test.com ESMTP "Version not Available"
ehlo www.test.com
250-www.test.com
250-PIPELINING
250-SIZE 14336000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250 8BITMIME
auth login
334 VXNlcm5hbWU6
dGVzdC5jb20=
334 UGFzc3dvcmQ6
dGVzdA==
535 Error: authentication failed
^]

telnet> quit
Connection closed.

而用本贴子里的
测试smtp
# perl -MMIME::Base64 -e 'print encode_base64("test/@test.com");'
dGVzdEB0ZXN0LmNvbQ==
# perl -MMIME::Base64 -e 'print encode_base64("test";)'

它生成的用户名dGVzdEB0ZXN0LmNvbQ== 
就能 Authentication successful
奇怪????????哪错了、、、、、、、与我生成的用户名为什么不一致???????
---------------------------------
下一步就是要安防毒,防毒垃圾东东了,
真是感谢各位!!!!!!
好了到点了,该看球了,我猜是葡萄牙赢法国!!(要是点球,则法胜)

[ 本帖最后由 权老实 于 2006-7-6 02:42 编辑 ]


 zhaoxl90911 回复于:2006-07-06 11:29:25

postfix-2.2.10    redhat linux 3
编译的时候出现错误提示,不知道如何解决,请各位大侠帮忙。
[root@mailser postfix-2.2.10]# make
make -f Makefile.in MAKELEVEL= Makefiles
(echo "# Do not edit -- this file documents how Postfix was built for your machine."; /bin/sh makedefs) >makedefs.tmp
: command not found
: command not found
: command not found
: command not found
: command not found
: command not found
: command not found
'akedefs: line 71: syntax error near unexpected token `{
'akedefs: line 71: `error() {
make: *** [Makefiles] Error 2
make: *** [Makefiles] Error 2


 权老实 回复于:2006-07-11 22:17:33

引用:原帖由 xiaodixiaodi 于 2006-6-25 21:21 发表
我在没装squirrelmail(courier-sqwebmail openwebmail)+clamav+spamassassin+amavisd-new)之前的都安装成功!但是文档中有些东西的确是错的!或没说清楚!经过我详细的,反复的研究配置文件后,还是成功了!能用foxmail ... 

都哪错了,能说说吧????


 wenhuaixiang 回复于:2006-07-12 16:30:42

why I get a mistake when I use "mysql -u root < DATABASE_MYSQL.TXT
"
erro:
ERROR 1062 (23000) at line 28: Duplicate entry 'localhost-postfix' for key 1


 forrest.w 回复于:2006-07-20 14:42:09

文章是大体上是没有问题的(我只是说在第十步之前哦)
但是小的错误,应该是输入的错误还是有的,毕竟这么多的安装过程,出错还是难免的。

附件是我自己整理的,pdf格式的,希望对大家有用,哈。

Postfix.pdf


 Linux@初学者 回复于:2006-07-21 15:04:48

好晕哟!


 wanfei 回复于:2006-07-27 13:13:42

看来linux装个WEBmail真是不容易啊。为什么这么难?就算装好了,维护恐怕更难了


 minechina 回复于:2006-08-22 15:15:24

有人在solaris8上成功过吗?


 gdlc 回复于:2006-08-24 15:56:32

好东西。学习啦!


 soochowgreen 回复于:2006-08-26 12:27:07

引用:原帖由 forrest.w 于 2006-7-20 14:42 发表
文章是大体上是没有问题的(我只是说在第十步之前哦)
但是小的错误,应该是输入的错误还是有的,毕竟这么多的安装过程,出错还是难免的。

附件是我自己整理的,pdf格式的,希望对大家有用,哈。 

感谢 forrest.w 的总结整理。
对新手相当有帮助

[ 本帖最后由 soochowgreen 于 2006-8-26 12:28 编辑 ]


 steelyoung 回复于:2006-09-06 21:27:30

按照此教程在RH LINUX AS 3.0上架设postfix服务器,进行不下去了!

1:成功安装apache2、php-4.4.2、源码安装mysql-4.1.7成功;
2:成功安装cyrus-sasl 2.1.21;
3:成功安装了postfix 2.2.3,postfixadmin没有安装,进行到这里就卡住了,网上的教程里说在postfix目录下应有mysql-virtual.cf、mysql_virtual_alias_maps.cf、forward.cf 等配置的cf文件,可我的postfix目录下只有一个main.cf文件,很多其他有关的配置.cf文件都没有,请问是怎么回事啊!哪里出错了!


 mysnopy 回复于:2006-09-14 09:15:45

现在postfix新2.2.1以上的编译参数要修改过了,lz文章里的参数编译的话会有错误的(日志里会有错误的)。应该这样:
make -f Makefile.init makefiles 'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL  -I/usr/local/include/sasl' 'AUXLIBS=-L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm -L/usr/local/lib -lsasl2' 

加一个 -DUSE_CYRUS_SASL


 billypeng 回复于:2006-10-01 18:26:54

我认为使用关系数据库存放用户名没有多大必要,用BerkeleyDB就可以了。


 zhangyan@tq.cn 回复于:2006-10-19 15:19:00

我在telnet localhost 110出现以下错误:
[root@gerry ~]# telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
+OK dovecot ready.
user [email]zhangyan@tq.cn[/email]
+OK
请教是什么原因?
急盼!


 zhangyan@tq.cn 回复于:2006-10-19 15:29:54

我的webmail收发都是正常的,outlook能发不能收,
就是pop3没起来,
maillog日志里也没有错误,
是不是我缺什么东西啊?


 cid901 回复于:2006-10-19 18:26:37

楼主利害,佩服!努力学习中!


 zhangyan@tq.cn 回复于:2006-10-19 21:42:50

Oct 19 20:44:31 gerry postfix/qmgr[2920]: EDDC9E8F: removed
Oct 19 20:44:31 gerry postfix/lmtp[3503]: 2FD62E99: to=<[email]xiaozhang@tq.cn[/email]>, relay=/var/lib/imap/socket/lmtp[/var/lib/imap/socket/lmtp], delay=0, status=bounced (host /var/lib/imap/socket/lmtp[/var/lib/imap/socket/lmtp] said: 550-Mailbox unknown.  Either there is no mailbox associated with this 550-name or you do not have authorization to see it. 550 5.1.1 User unknown (in reply to RCPT TO command))
Oct 19 20:44:31 gerry postfix/qmgr[2920]: 2FD62E99: removed

什么原因?//


 wisage 回复于:2006-10-22 11:44:59

在配置postfixadmin的时候 建立mysql表这一步
mysql -u root < DATABASE_MYSQL.TXT  提示“-bash: mysql: command not found”
mysql我成功安装了呀,前面基本都是按照楼主的配置做的,为什么出现这个问题呢
请各位达人解释一下,谢谢


 hai0088 回复于:2006-11-04 16:28:39

顶一下


 star0395 回复于:2006-11-09 17:02:19

有cyrus-sasl-2.1.20的认证补丁patch-linux的源码包?给我一个,十分感谢! 
[email]yuanjunwei0507@163.com[/email]


 star0395 回复于:2006-11-09 17:03:17

还有为什么我安装后总是提示密码验证通不过呢?是哪里的问题。


 star0395 回复于:2006-11-09 17:29:28

163楼的兄弟有无WORD版的给我一份。[email]yuanjunwei0507@163.com[/email].十分感谢!


 star0395 回复于:2006-11-09 20:14:44

我按照文章做到======》配置 /usr/local/lib/sasl2/smtpd.conf 时有些不解。我的sasl已在之前编译安装。但做到此处无smtpd.conf?此文件是否需要手工创建?若是直接创建我是直接VI的smtpd.conf,内容如下:
vi /usr/lib/sasl2/smtpd.conf
pwcheck_method: auxprop
auxprop_plugin: sql
mech_list: plain login
sql_engine: mysql
sql_hostnames: localhost
sql_user: postfix
sql_passwd: postfix
sql_database: postfix
sql_select: SELECT password FROM mailbox WHERE username='%u@%r' and domain='%r' and active='1'
如我这样做是否正确?
另我在测试smtp时出现这样的提示是否正常?
[root@mail ~]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
ehlo zshswork.com
。。。。。。。。。。。下面无像文章中所提到的。但25号端口也启动。

[ 本帖最后由 star0395 于 2006-11-9 20:23 编辑 ]


 star0395 回复于:2006-11-11 08:29:23

怎么没有人回复呢?自顶一下!


 churchmouse 回复于:2006-11-13 09:55:21

好帖,对我的帮助好大。谢谢好人提供。


 zyangj 回复于:2006-11-19 16:52:19

为什么我检测SMTP的时候会报这个错?

Nov 19 16:35:06 m4122 postfix/smtpd[1444]: SQL engine 'mysql' not supported
Nov 19 16:35:06 m4122 postfix/smtpd[1444]: auxpropfunc error no mechanism available
Nov 19 16:35:06 m4122 postfix/smtpd[1444]: Could not find a dlname line in .la file: libsasl2.la

我按照说明做下来,并且把MYSQL编译到POSTFIX中,并且我发现在/usr/local/mysql/lib下面没有看到MYSQL文件夹,我用的是4.1的MSYQL,是这个版本问题吗?


 sunspot2004 回复于:2006-11-23 09:49:12

研究一下 最近在头痛一个事情


 lingweifeng 回复于:2006-11-30 10:14:25


要顶
必须顶
不得不顶
用尽全力顶
再加上千斤顶
总之把它顶到顶
接着使出葵花宝顶
就算顶到史前也要顶
老子看了会用道德经顶
孔子亲自拜你为师天天顶
秦始皇站在阿房宫上使劲顶
汉高祖挥师杀向东罗马为你顶
吕布抛弃了貂禅而选择了帮你顶
张三丰见了后用太极拳九式全力顶
左冷禅召开武林盟主大会商讨如何顶
西门吹雪从此学会了最强一招剑神一顶
龙剑飞的如来深掌最后一式改为万佛朝顶
陆小凤从此再也不管闲事了而专门来为你顶


 lylzgq 回复于:2006-12-02 17:07:13

收邮件 pop3 是怎么验证.为什么总是用户密码不对. 是不是我数据库里还要建其它的表.除了安装时导入mysql -u root [-p] < DATABASE_MYSQL.TXT.


 lylzgq 回复于:2006-12-05 18:10:25

对这片贴子质疑。验证的地方是不是有些问题。这么多人提问题又没有人回答。随然写的很详细。只能说一声辛苦。但好像大家都没有做成功过。如过有问题。建议就不要加在精华贴里了。


 stormcc 回复于:2006-12-07 16:46:07

我也支持一下,谢谢!


 star0395 回复于:2006-12-09 13:59:10

真的质疑这篇贴子的正确性.我做了三次,一次都未成功过.发贴询问,作者都不回复的.建议不要精华栏里了.


 lylzgq 回复于:2006-12-12 10:35:43

我也这么想。弄了几个星期啦。也没人回复。


 youxin 回复于:2006-12-15 11:28:12

在配置完postfix等文件后telnet localhost 25
附件: 

 

[root@hssyyh ~]# telnet localhost 25 
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
就不动了
日志:
[root@hssyyh hs]# vi /var/log/maillog

Dec 10 15:00:36 hssyyh sendmail[1948]: alias database /etc/aliases rebuilt by root
Dec 10 15:00:36 hssyyh sendmail[1948]: /etc/aliases: 78 aliases, longest 10 bytes,
802 bytes total
Dec 10 15:00:36 hssyyh sendmail[1953]: starting daemon (8.13.1): SMTP+queueing@01:0
0:00
Dec 10 15:00:36 hssyyh sm-msp-queue[1961]: starting daemon (8.13.1): queueing@01:00
:00
Dec 10 17:13:49 hssyyh sendmail[1986]: alias database /etc/aliases rebuilt by root
Dec 10 17:13:49 hssyyh sendmail[1986]: /etc/aliases: 78 aliases, longest 10 bytes,
802 bytes total
Dec 10 17:13:49 hssyyh sendmail[1991]: starting daemon (8.13.1): SMTP+queueing@01:0
0:00
Dec 10 17:13:49 hssyyh sm-msp-queue[1998]: starting daemon (8.13.1): queueing@01:00
:00
Dec 11 04:02:03 hssyyh sendmail[28210]: kBAK23Kq028210: from=root, size=2966, class
=0, nrcpts=1, msgid=<[email]200612102002.kBAK23Kq028210@localhost.loca[/email]ldomain>, relay=root
@localhost
Dec 11 04:02:03 hssyyh sendmail[28212]: kBAK23of028212: from=<[email]root@localhost.loca[/email]ld
omain>, size=3272, class=0, nrcpts=1, msgid=<200612102002.kBAK23Kq028210@localhost.
localdomain>, proto=ESMTP, daemon=MTA, relay=hssyyh [127.0.0.1]
Dec 11 04:02:03 hssyyh sendmail[28210]: kBAK23Kq028210: to=root, ctladdr=root (0/0)
, delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=32966, relay=[127.0.0.1] [127.
0.0.1], dsn=2.0.0, stat=Sent (kBAK23of028212 Message accepted for delivery)
"/var/log/maillog" 1118L, 121798C                     1,1       顶端
Dec 14 17:08:10 hssyyh postfix/smtpd[3902]: fatal: SASL per-process initialization
failed
Dec 14 17:08:11 hssyyh postfix/master[3840]: warning: process /usr/libexec/postfix/
smtpd pid 3902 exit status 1
Dec 14 17:08:11 hssyyh postfix/master[3840]: warning: /usr/libexec/postfix/smtpd: b
ad command startup -- throttling
Dec 14 17:09:11 hssyyh postfix/smtpd[3904]: warning: dict_nis_init: NIS domain name
not set - NIS lookups disabled
Dec 14 17:09:11 hssyyh postfix/smtpd[3904]: warning: unsupported SASL server implem
entation: cyrus
Dec 14 17:09:11 hssyyh postfix/smtpd[3904]: fatal: SASL per-process initialization
failed
Dec 14 17:09:12 hssyyh postfix/master[3840]: warning: process /usr/libexec/postfix/
smtpd pid 3904 exit status 1
Dec 14 17:09:12 hssyyh postfix/master[3840]: warning: /usr/libexec/postfix/smtpd: b
ad command startup -- throttling
Dec 14 17:10:12 hssyyh postfix/smtpd[3906]: warning: dict_nis_init: NIS domain name
not set - NIS lookups disabled
Dec 14 17:10:12 hssyyh postfix/smtpd[3906]: warning: unsupported SASL server implem
entation: cyrus
Dec 14 17:10:12 hssyyh postfix/smtpd[3906]: fatal: SASL per-process initialization
failed
~                                                       
                                          1114,49     底端
Dec 14 17:08:10 hssyyh postfix/smtpd[3902]: warning: unsupported SASL server implem
entation: cyrus
Dec 14 17:08:10 hssyyh postfix/smtpd[3902]: fatal: SASL per-process initialization
failed
Dec 14 17:08:11 hssyyh postfix/master[3840]: warning: process /usr/libexec/postfix/
smtpd pid 3902 exit status 1
Dec 14 17:08:11 hssyyh postfix/master[3840]: warning: /usr/libexec/postfix/smtpd: b
ad command startup -- throttling
Dec 14 17:09:11 hssyyh postfix/smtpd[3904]: warning: dict_nis_init: NIS domain name
not set - NIS lookups disabled
Dec 14 17:09:11 hssyyh postfix/smtpd[3904]: warning: unsupported SASL server implem
entation: cyrus
Dec 14 17:09:11 hssyyh postfix/smtpd[3904]: fatal: SASL per-process initialization
failed
Dec 14 17:09:12 hssyyh postfix/master[3840]: warning: process /usr/libexec/postfix/
smtpd pid 3904 exit status 1
Dec 14 17:09:12 hssyyh postfix/master[3840]: warning: /usr/libexec/postfix/smtpd: b
ad command startup -- throttling
Dec 14 17:10:12 hssyyh postfix/smtpd[3906]: warning: dict_nis_init: NIS domain name
not set - NIS lookups disabled
Dec 14 17:10:12 hssyyh postfix/smtpd[3906]: warning: unsupported SASL server implem
entation: cyrus
Dec 14 17:10:12 hssyyh postfix/smtpd[3906]: fatal: SASL per-process initialization
failed
~                                                       
~                                                       
                                          1114,49     底端
Dec 14 17:08:10 hssyyh postfix/smtpd[3902]: fatal: SASL per-process initialization
failed
Dec 14 17:08:11 hssyyh postfix/master[3840]: warning: process /usr/libexec/postfix/
smtpd pid 3902 exit status 1
Dec 14 17:08:11 hssyyh postfix/master[3840]: warning: /usr/libexec/postfix/smtpd: b
ad command startup -- throttling
Dec 14 17:09:11 hssyyh postfix/smtpd[3904]: warning: dict_nis_init: NIS domain name
not set - NIS lookups disabled
Dec 14 17:09:11 hssyyh postfix/smtpd[3904]: warning: unsupported SASL server implem
entation: cyrus
Dec 14 17:09:11 hssyyh postfix/smtpd[3904]: fatal: SASL per-process initialization 
failed
Dec 14 17:09:12 hssyyh postfix/master[3840]: warning: process /usr/libexec/postfix/
smtpd pid 3904 exit status 1
Dec 14 17:09:12 hssyyh postfix/master[3840]: warning: /usr/libexec/postfix/smtpd: b
ad command startup -- throttling
Dec 14 17:10:12 hssyyh postfix/smtpd[3906]: warning: dict_nis_init: NIS domain name
not set - NIS lookups disabled
Dec 14 17:10:12 hssyyh postfix/smtpd[3906]: warning: unsupported SASL server implem
entation: cyrus
Dec 14 17:10:12 hssyyh postfix/smtpd[3906]: fatal: SASL per-process initialization 
failed
这是smtpd.conf文件
pwcheck_method: authdaemond
log_level: 3
#mech_list: PLAIN LOGIN
#authdaemond_path: /var/spool/authdaemon/socket
log_level:3
srp_mda:md5
password_format:crypt
mech_list:PLAIN LOGIN
authdaemond_path: /usr/local/var/spool/authdaemon/socket

=============
 ldd /usr/libexec/postfix/smtpd
    libmysqlclient.so.15 => /usr/local/mysql/lib/mysql/libmysqlclient.so.15 (0x00111000)
    libm.so.6 => /lib/tls/libm.so.6 (0x00768000)
    libsasl2.so.2 => /usr/local/lib/libsasl2.so.2 (0x009a0000)
    libdb-4.2.so => /lib/tls/i686/libdb-4.2.so (0x00196000)
    libnsl.so.1 => /lib/libnsl.so.1 (0x077a1000)
    libresolv.so.2 => /lib/libresolv.so.2 (0x009e4000)
    libc.so.6 => /lib/tls/libc.so.6 (0x00637000)
    libcrypt.so.1 => /lib/libcrypt.so.1 (0x077b9000)
    libz.so.1 => /usr/lib/libz.so.1 (0x0089e000)
    /lib/ld-linux.so.2 (0x0061e000)
    libdl.so.2 => /lib/libdl.so.2 (0x00762000)
    libpthread.so.0 => /lib/tls/libpthread.so.0 (0x00866000)


 youxin 回复于:2006-12-15 11:32:06

cyrus-sasl的安装已经添加了plain和login

# tar zxvf cyrus-sasl-2.1.22.tar.gz
# cd cyrus-sasl-2.1.22
# ./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 /
--with-authdaemond


 lylzgq 回复于:2006-12-15 13:42:28

就这不知道害死多少人。大概你和我一样没有卸载系统自带的cyrus-sasl 。我想99。9%你是这样的情况。


 youxin 回复于:2006-12-15 13:57:28

我是已经卸载系统自带的cyrus-sasl 的了。


 huifeideluotuo 回复于:2006-12-27 21:57:09

哥们,我向你保证,如果你不参考其他文章,按照这个文章做下去,你肯定成功不了。
因为在这个文章里面有很多作者写错的地方,而且是不容易发现的,我按照这个文章做了n次,n>5都没成功,而且对于新手来说,这么多的配置,只是复制,粘贴肯定成不了。

比如:
# tar zxvf cyrus-sasl-2.1.22.tar.gz
# cd cyrus-sasl-2.1.22
# ./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 /
--with-authdaemond 

1。应该是 --enable-plain
还有那个snmpd.conf 那个文件。

祝你好运!


 tv9 回复于:2007-01-06 14:44:22

总结的很详细,学习


 tv9 回复于:2007-01-06 14:48:01

重要是自己要理解,不要只是copy才行


 @kang 回复于:2007-01-07 09:18:56

對每個步驟自己要明白在做什麼,實現什麼功能,這樣做是為什麼。
用linux做功能完善的mail system,有很多相依賴的軟件包要安裝
你也只好一個一個軟件包的找,又一個一個的裝。對於新手來說不是
一件容易的事,而且安裝過程中會有很多的問題出現,不懂,又只好
google或baidu.......
這裡推薦有興趣的朋友不妨試下用freebsd做mail system,並且用
ports安裝所有軟件包,你將會發現,ports會很好的為你減少很多麻煩。


 steve_lou2 回复于:2007-01-12 13:45:53

谢谢楼主,帮助不小,但是我也有问题,POp3成功,SMTP不成功。
tail -20 /var/log/messages 

Jan 12 13:34:31 dns postfix/smtpd[9234]: SQL engine 'mysql' not supported
Jan 12 13:34:31 dns postfix/smtpd[9234]: auxpropfunc error no mechanism available
Jan 12 13:34:44 dns postfix/smtpd[9303]: SQL engine 'mysql' not supported
Jan 12 13:34:44 dns postfix/smtpd[9303]: auxpropfunc error no mechanism available
Jan 12 13:37:29 dns postfix/smtpd[9364]: SQL engine 'mysql' not supported
Jan 12 13:37:29 dns postfix/smtpd[9364]: auxpropfunc error no mechanism available

安装的时候已经带sql了,真想不通。好多次重新编译了,有类似问题解决的同志吗?说一声,非常感谢。


 okhaoabc123 回复于:2007-01-20 12:02:45

精华贴子啊!我top top top !


 dgvri 回复于:2007-01-22 09:26:45

推荐大家去www.thismail.org上面去看看,有完整的安装包,还有详细的安装过程,比这个实用多了。


 xxd1019 回复于:2007-01-27 16:57:04

感谢楼主。辛苦了。 回去抹点药。小心手肿


 xxd1019 回复于:2007-02-05 16:24:49

Linux像老婆,永远都是免费的,而且很少得病!
Windows像妓女,用的话还得花钱,不小心就得病!

经典!!!!!!!!!!!!!!!!!!!!!!!!!!!


 xxd1019 回复于:2007-02-05 17:00:48

都是些烂贴子。怎么做都做不出来


 gaoshixing 回复于:2007-02-13 10:30:00

真神人啊!看都看累了,要做不知道花多少时间呢?


 lailaier 回复于:2007-06-10 13:30:03

[color=Red]各位老大﹐各位大俠﹐我照著這個帖子做了四次了﹐每次都是卡在裝完Courier-imap以后測試110端口也就是pop3認証這里。我LINSTEN過端口110有起來﹐我查看了mysql的日志也有看到查詢過mysql數據庫﹐并且我也確認了mysql數據庫里的postfix數據庫里也有[email]test@test.com[/email]的用戶。可我每次telnet localhost 110 ﹐輸入用戶及密碼后還是一樣說拒絕登入。用戶密碼保証正確。
有沒有世外高人能幫我想想是哪里出了錯誤﹐我是虛心請教﹐能回帖的回個帖﹐也可以QQ及mail聯系我
QQ:84177295
mail address:lailaier@jianpins.com
恭候您了~~~~﹗﹗﹗[/color]


 cys1688 回复于:2007-06-10 14:58:43

make cyrus-sasl-2.1.21时出现的错误,那位高手顺便解答一下
digestmd5.c: In function `digestmd5_server_mech_step2':
digestmd5.c:2095: warning: dereferencing type-punned pointer will break strict-aliasing rules
digestmd5.c:2112: warning: dereferencing type-punned pointer will break strict-aliasing rules
client.c:863: warning: unused parameter 'rock'
server.c: In function `sasl_setpass':
server.c:152: warning: dereferencing type-punned pointer will break strict-aliasing rules
server.c: In function `sasl_server_start':
server.c:1248: warning: dereferencing type-punned pointer will break strict-aliasing rules
server.c: At top level:
server.c:1914: warning: unused parameter 'rock'
server.c: In function `mysasl_negotiate':
server.c:273: warning: dereferencing type-punned pointer will break strict-aliasing rules
auth_krb5.c: In function `auth_krb5_init':
auth_krb5.c:105: warning: assignment discards qualifiers from pointer target type
auth_krb5.c:106: warning: assignment discards qualifiers from pointer target type
auth_krb5.c: In function `auth_krb5':
auth_krb5.c:404: warning: passing arg 4 of `krb5_get_init_creds_password' discards qualifiers from pointer target type
In file included from auth_pam.c:50:
../config.h:307:1: warning: "PACKAGE" redefined
In file included from mechanisms.h:35,
                 from auth_pam.c:46:
saslauthd.h:166:1: warning: this is the location of the previous definition


 发表:

 发表:
 发表:
 发表:
 发表:
 发表:
 发表:
 发表:
 发表:
 发表:
 发表:

原文链接:http://bbs.chinaunix.net/viewthread.php?tid=553326
转载请注明作者名及原文出处

抱歉!评论已关闭.