Chinaunix

标题: RHEL4上安装基于postfix的全功能邮件服务器(全部使用目前最新源码包构建) [打印本页]

作者: marion    时间: 2007-09-06 18:31
标题: RHEL4上安装基于postfix的全功能邮件服务器(全部使用目前最新源码包构建)
本文凝聚了作者不少的安装经验,写出来供各位同仁参考指正,也为自己留一个“备份”,以便以后安装时作为参照!
安装过程中借鉴了不少google出来的文章,是你们先行的足迹为作者今天的成功打下了基础,在此先行谢过!
转载请注明出处:http://marion.cublog.cn


所用软件包:(本文中,以下软件包都将在/usr/local/src中存放)

Postfix-2.4.5
Mysql-5.0.45
Sasl-2.1.22
DB-4.5.20
Openssl-0.98e
httpd-2.2.4
Php-5.2.3
courier-authlib-0.59.3
courier-imap-4.1.3
Extmail-1.0.2
Extman-0.2.2
maildrop-2.0.4
clamav-0.91.2
amavisd-new
SpamAssassin-3.2.3

系统逻辑结构



前提:开始前请确保您已经配置好指向此邮件服务器MX记录及其它DNS设置;本示例中的域名为benet.org,邮件服务器FQDN为mail.benet.org,IP地址为192.168.1.6;同时,如果您的服务器事先已经安装了sendmail,请卸载之;

一、安装mysql-5.0.45

#groupadd mysql
#useradd -g mysql -s /bin/false -M mysql
#tar zxvf mysql-5.0.45.tar.gz
#cd mysql-5.0.45

#./configure
--prefix=/usr/local/mysql
--enable-thread-safe-client
--enable-local-infile
--with-charset=gbk
--with-extra-charset=all
--with-low-memory
#make
#make install
#cp support-files/my-medium.cnf  /etc/my.cnf
#cd  /usr/local/mysql
#chown -R mysql .
#chgrp -R mysql .
#bin/mysql_install_db --user=mysql
#chown -R root .
#chown -R mysql var
#bin/mysqld_safe --user=mysql &

#cd  /usr/local/src/mysql-5.0.45     (这里的目录指的是原压缩包解压后的目录)
#cp  support-files/mysql.server  /etc/rc.d/init.d/mysqld
#chmod  700  /etc/rc.d/init.d/mysqld
加入自动启动服务队列:
#chkconfig --add mysqld
#chkconfig  --level  345  mysqld  on

测试
#/usr/local/mysql/bin/mysqladmin  ping
#/usr/local/mysql/bin/mysqladmin  version
#/usr/local/mysql/bin/mysql

添加root密码
#/usr/local/mysql/bin/mysqladmin -uroot -p 旧密码 password 新密码
说明:此时mysql的root用户的密码为空

配置库文件搜索路径
# echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
# ldconfig -v

添加/usr/local/mysql/bin到环境变量PATH中
#export PATH=$PATH:/usr/local/mysql/bin


二、安装openssl-0.9.8e

# tar zxvf openssl-0.9.8e.tar.gz
# cd openssl-0.9.8e
# ./config shared zlib
# make
# make test
# make install
# mv /usr/bin/openssl /usr/bin/openssl.OFF
# mv /usr/include/openssl /usr/include/openssl.OFF
# rm /usr/lib/libssl.so
# ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
# ln -s /usr/local/ssl/include/openssl /usr/include/openssl
# ln -sv /usr/local/ssl/lib/libssl.so.0.9.8  /usr/lib/libssl.so

配置库文件搜索路径
# echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
# ldconfig -v

检测安装结果
# openssl version
OpenSSL 0.9.8e 23 Feb 2007


三、安装sasl-2.1.22

#tar zxvf cyrus-sasl-2.1.22.tar.gz
#cd cyrus-sasl-2.1.22
#./configure --prefix=/usr/local/sasl2            (注意使用续行符)
--disable-gssapi
--disable-anon
--disable-sample
--disable-digest
--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=/usr/local/courier-authlib/var/spool/authdaemon/socket
#make
#make install

关闭原有的sasl:
# mv /usr/lib/libsasl2.a  /usr/lib/libsasl2.a.OFF
# mv /usr/lib/libsasl2.la  /usr/lib/libsasl2.la.OFF
# mv /usr/lib/libsasl2.so.2.0.19  /usr/lib/libsasl2.so.2.0.19.OFF
# mv /usr/lib/sasl2  /usr/lib/sasl2.OFF
# rm /usr/lib/libsasl2.so
# rm /usr/lib/libsasl2.so.2

# ln -sv /usr/local/sasl2/lib/*  /usr/lib

postfix 2.3以后的版本会分别在/usr/local/lib和/usr/local/include中搜索sasl库文件及头文件,故还须将其链接至此目录中:
# ln -sv /usr/local/sasl2/lib/*  /usr/local/lib
# ln -sv /usr/local/sasl2/include/sasl/*  /usr/local/include

创建运行时需要的目录并调试启动
# mkdir -pv /var/state/saslauthd      
# /usr/local/sasl2/sbin/saslauthd  -a  shadow  pam  -d

启动并测试
# /usr/local/sasl2/sbin/saslauthd -a shadow pam
# /usr/local/sasl2/sbin/testsaslauthd -u root -p root用户密码

配置库文件搜索路径
# echo "/usr/local/sasl2/lib" >> /etc/ld.so.conf
# echo "/usr/local/sasl2/lib/sasl2" >> /etc/ld.so.conf
# ldconfig -v

开机自动启动
# echo "/usr/local/sasl2/sbin/saslauthd -a shadow pam">>/etc/rc.local


四、安装BerkeleyDB

#tar zxvf db-4.5.20.tar.gz
#cd db-4.5.20/build_unix
#../dist/configure --prefix=/usr/local/BerkeleyDB
#make
#make install

修改相应的头文件指向
# mv  /usr/include/db4  /usr/inculde/db4.OFF
# rm  /usr/include/db_cxx.h
# rm  /usr/include/db.h
# rm  /usr/include/db_185.h
# ln -sv /usr/local/BerkeleyDB/include  /usr/include/db4
# ln -sv /usr/local/BerkeleyDB/include/db.h  /usr/include/db.h
# ln -sv /usr/local/BerkeleyDB/include/db_cxx.h  /usr/include/db_cxx.h

配置库文件搜索路径
# echo "/usr/local/BerkeleyDB/lib" >> /etc/ld.so.conf
# ldconfig –v

五、安装httpd-2.2.4

#tar jxvf httpd-2.2.4.tar.bz2
#cd httpd-2.2.4
#./configure
--prefix=/usr/local/apache
--sysconfdir=/etc/httpd
--enable-so
--enable-ssl
--with-ssl=/usr/local/ssl
--enable-track-vars
--enable-rewrite
--with-zlib
--enable-mods-shared=most  
--enable-suexec                      (后面extmail切换”运行时用户”时要用到)
--with-suexec-caller=daemon  
#make
#make install

#echo "/usr/local/apache/bin/apachectl start" >> /etc/rc.local(系统启动时服务自动启动)

六、安装php-5.2.3

# tar -zvxf php-5.2.3.tar.gz
# mkdir -p /usr/local/php
# cd php-5.2.3
# ./configure --prefix=/usr/local/php              
  --with-apxs2=/usr/local/apache/bin/apxs
  --with-mysql=/usr/local/mysql
  --with-mysqli=/usr/local/mysql/bin/mysql_config
  --with-xml
  --with-png
  --with-jpeg
  --with-zlib
  --with-freetype
  --with-gd  
  --enable-track-vars  
  --enable-mbstring=all
# make
# make install
# cp php.ini-dist  /usr/local/php/lib/php.ini

注:编辑apache配置文件httpd.conf,以apache支持php
# vi /etc/httpd/httpd.conf
1、添加如下二行
  AddType application/x-httpd-php  .php
  AddType application/x-httpd-php-source  .phps

2、定位至DirectoryIndex index.html
  修改为:
   DirectoryIndex  index.php  index.html

3、按照使用习惯,这里将网站根目录指定到/var/www:
找到DocumentRoot “/usr/local/apache/htdocs”
修改为:DocumentRoot “/var/www”(后文中我们还会注释掉此行,以启用虚拟主机)

找到<Directory “/usr/local/apache/htdocs”>
修改为:<Directory “/var/www”>

说明:这个对本文来说并非是不可少的。

七、安装Postfix-2.4.5

1.安装
#groupadd -g 2525 postfix
#useradd -g postfix -u 2525 -s /sbin/nologin -M postfix
#groupadd -g 2526 postdrop
#useradd -g postdrop -u 2526 -s /bin/false -M postdrop

#tar zxvf postfix-2.4.5.tar.gz
#cd postfix-2.4.5
#make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/local/sasl2/include/sasl -I/usr/local/BerkeleyDB/include  -DUSE_TLS -I/usr/local/ssl/include/openssl ' 'AUXLIBS=-L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm -L/usr/local/sasl2/lib -lsasl2 -L/usr/local/BerkeleyDB/lib -L/usr/local/ssl/lib -lssl -lcrypto'
#make
#make install

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

  install_root: [/] /
  tempdir: [/usr/local/src/ postfix-2.4.5] /tmp
  config_directory: [/etc/postfix] /etc/postfix
  daemon_directory: [/usr/libexec/postfix] /usr/local/postfix/libexec
  command_directory: [/usr/sbin] /usr/local/postfix/sbin
  queue_directory: [/var/spool/postfix]
  sendmail_path: [/usr/sbin/sendmail]
  newaliases_path: [/usr/bin/newaliases]
  mailq_path: [/usr/bin/mailq]
  mail_owner: [postfix]
  setgid_group: [postdrop]   
    html_directory: [no] /var/www/postfix_html
    manpages: [/usr/local/man] /usr/local/postfix/man   
    readme_directory: [no]

说明:这里的postfix将安装在独立的目录/usr/local/postfix中,目的是为了方便管理;您亦可以采用默认安装的方式,可能这样使用起来会更为方便些;

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

2.进行一些基本配置,测试启动postfix并进行发信
#vi /etc/postfix/main.cf
修改以下几项为您需要的配置
myhostname = mail.benet.org
myorigin = benet.org
mydomain = benet.org
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 192.168.1.0/24, 127.0.0.0/8

说明:
myorigin参数用来指明发件人所在的域名;
mydestination参数指定postfix接收邮件时收件人的域名,即您的postfix系统要接收到哪个域名的邮件;
myhostname 参数指定运行postfix邮件系统的主机的主机名,默认情况下,其值被设定为本地机器名;
mydomain参数指定您的域名,默认情况下,postfix将myhostname的第一部分删除而作为mydomain的值;
mynetworks 参数指定你所在的网络的网络地址,postfix系统根据其值来区别用户是远程的还是本地的,如果是本地网络用户则允许其访问;
inet_interfaces 参数指定postfix系统监听的网络接口;

注意:
1、在postfix的配置文件中,参数行和注释行是不能处在同一行中的;
2、任何一个参数的值都不需要加引号,否则,引号将会被当作参数值的一部分来使用;
3、每修改参数及其值后执行 postfix reload 即可令其生效;但若修改了inet_interfaces,则需重新启动postfix;
4、如果一个参数的值有多个,可以将它们放在不同的行中,只需要在其后的每个行前多置一个空格即可;postfix会把第一个字符为空格或tab的文本行视为上一行的延续;

启动postfix
/usr/local/postfix/sbin/postfix  start

连接postfix,验正服务启动状况:
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 mail.benet.org ESMTP Postfix
ehlo mail.benet.org
250-mail.benet.org
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from:root@benet.org
250 2.1.0 Ok
rcpt to:redhat@benet.org
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
subject:Mail test!
Mail test!!!
.
250 2.0.0 Ok: queued as AB94A1A561
quit
221 2.0.0 Bye
Connection closed by foreign host.

切换到redhat用户进行收信:
# su - redhat
$ mail
Mail version 8.1 6/6/93.  Type ? for help.
"/var/spool/mail/redhat": 1 message 1 new
>N  1 root@benet.org        Wed Sep  5 10:59  15/488   "Mail test!"
&

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

使用以下命令验正postfix是否支持cyrus风格的sasl认证,如果您的输出为以下结果,则是支持的:
# /usr/local/postfix/sbin/postconf  -a
cyrus
dovecot

#vi /etc/postfix/main.cf
添加以下内容:
############################CYRUS-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
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_sasl_application_name = smtpd
smtpd_banner = Welcome to our $myhostname ESMTP,Warning: Version not Available!

#vi /usr/local/lib/sasl2/smtpd.conf
添加如下内容:
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN

让postfix重新加载配置文件
#/usr/local/postfix/sbin/postfix reload

# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 Welcome to our mail.benet.org ESMTP,Warning: Version not Available!
ehlo mail.benet.org
250-mail.benet.org
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN               (请确保您的输出以类似两行)
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN


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

1、编辑/etc/postfix/main.cf,添加如下内容:
########################Virtual Mailbox Settings########################
virtual_mailbox_base = /var/mailbox
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_alias_domains =
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_uid_maps = static:2525
virtual_gid_maps = static:2525
virtual_transport = virtual
maildrop_destination_recipient_limit = 1
maildrop_destination_concurrency_limit = 1
##########################QUOTA Settings########################
message_size_limit = 14336000
virtual_mailbox_limit = 20971520
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please Tidy your mailbox and try again later.
virtual_overquota_bounce = yes

2、添加为支持虚拟域和虚拟用户所用到的配置文件

编辑/etc/postfix/mysql_virtual_alias_maps.cf ,添加如下内容:
user = extmail
password = extmail
hosts = localhost
dbname = extmail
table = alias
select_field = goto
where_field = address

编辑/etc/postfix/mysql_virtual_domains_maps.cf ,添加如下内容:
user = extmail
password = extmail
hosts = localhost
dbname = extmail
table = domain
select_field = description
where_field = domain

编辑/etc/postfix/mysql_virtual_mailbox_limit_maps.cf ,添加如下内容:
user = extmail
password = extmail
hosts = localhost
dbname = extmail
table = mailbox
select_field = quota
where_field = username

编辑/etc/postfix/mysql_virtual_mailbox_maps.cf ,添加如下内容:
user = extmail
password = extmail
hosts = localhost
dbname = extmail
table = mailbox
select_field = maildir
where_field = username


说明:
1、这里用到的数据库及用户的建立可以后文中的extmail说明部分来实现,您可以参照那一部分来理解这里指定的数据库及其用户名等;
2、以上新建文件亦可以从extman安装文件中获得,您也可以由此不用手动输入;
3、虚拟用户邮箱目录我这里沿用了/var/mailbox,你可以指定为别的目录,比如常见到的/var/spool/mail,或者/home/domains等;但如果这里做了修改,请在后文中用到时作了相应的修改;

十、安装Courier authentication library

# tar jxvf courier-authlib-0.59.3.tar.bz2
# cd courier-authlib-0.59.3
#./configure
    --prefix=/usr/local/courier-authlib
    --sysconfdir=/etc
    --without-authpam
    --without-authldap
    --without-authpwd
    --without-authshadow
    --without-authvchkpw
    --without-authpgsql
    --with-authmysql
    --with-mysql-libs=/usr/local/mysql/lib/mysql
    --with-mysql-includes=/usr/local/mysql/include/mysql
    --with-redhat
    --with-authmysqlrc=/etc/authmysqlrc
    --with-authdaemonrc=/etc/authdaemonrc
    CFLAGS="-march=i686 -O2 -fexpensive-optimizations"  
    CXXFLAGS="-march=i686 -O2 -fexpensive-optimizations"
# make
# make install

# chmod 755 /usr/local/courier-authlib/var/spool/authdaemon
# cp /etc/authdaemonrc.dist  /etc/authdaemonrc
# cp /etc/authmysqlrc.dist  /etc/authmysqlrc

修改/etc/authdaemonrc 文件
authmodulelist="authmysql"
authmodulelistorig="authmysql"
daemons=10

编辑/etc/authmysqlrc 为以下内容,其中2525,2525 为postfix 用户的UID和GID。
MYSQL_SERVER localhost
MYSQL_PORT 3306                   (指定你的mysql监听的端口,这里使用默认的3306)
MYSQL_USERNAME  extmail      (这时为后文要用的数据库的所有者的用户名)
MYSQL_PASSWORD extmail        (密码)
MYSQL_SOCKET  /tmp/mysql.sock
MYSQL_DATABASE  extmail
MYSQL_USER_TABLE  mailbox
MYSQL_CRYPT_PWFIELD  password
MYSQL_UID_FIELD  '2525'
MYSQL_GID_FIELD  '2525'
MYSQL_LOGIN_FIELD  username
MYSQL_HOME_FIELD  concat('/var/mailbox/',homedir)
MYSQL_NAME_FIELD  name
MYSQL_MAILDIR_FIELD  concat('/var/mailbox/',maildir)

# cp courier-authlib.sysvinit /etc/init.d/courier-authlib
# chmod 755 /etc/init.d/courier-authlib
# chkconfig --add courier-authlib
# chkconfig --level 2345 courier-authlib on

#echo "/usr/local/courier-authlib/lib/courier-authlib" >> /etc/ld.so.conf
# ldconfig -v
# service courier-authlib start   (启动服务)

十一、安装Courier-IMAP

# tar jxvf courier-imap-4.1.3.tar.bz2
# cd courier-imap-4.1.3
./configure
  --prefix=/usr/local/courier-imap
  --with-redhat
  --enable-unicode
  --disable-root-check
  --with-trashquota
  --without-ipv6
  CPPFLAGS='-I/usr/local/ssl/include/openssl  -I/usr/local/courier-authlib/include'   
  LDFLAGS='-L/usr/local/courier-authlib/lib/courier-authlib'  
  COURIERAUTHCONFIG='/usr/local/courier-authlib/bin/courierauthconfig'
# make
# make install

# cp /usr/local/courier-imap/etc/imapd.dist /usr/local/courier-imap/etc/imapd
# cp /usr/local/courier-imap/etc/imapd-ssl.dist /usr/local/courier-imap/etc/imapd-ssl
# cp /usr/local/courier-imap/etc/pop3d.dist /usr/local/courier-imap/etc/pop3d
# cp /usr/local/courier-imap/etc/pop3d-ssl.dist /usr/local/courier-imap/etc/pop3d-ssl

配置Courier-IMAP,为用户提供pop3服务:
vi /usr/local/courier-imap/etc/pop3d
POP3DSTART=YES

注:如果你想为用户提供IMAP服务,则需在"/usr/local/courier-imap/etc/imapd"文件中设置"IMAPDSTART=yes";其它类同;

新建虚拟用户邮箱所在的目录,并将其权限赋予postfix用户:
#mkdir –pv /var/mailbox
#chown –R postfix /var/mailbox

#cp courier-imap.sysvinit /etc/rc.d/init.d/courier-imapd
#chmod 755 /etc/rc.d/init.d/courier-imapd
#chkconfig --add courier-imapd
#chkconfig --level 2345 courier-imapd on
#service courier-imapd start

接下来重新配置SMTP 认证,编辑 /usr/local/lib/sasl2/smtpd.conf ,确保其为以下内容:
pwcheck_method: authdaemond
log_level: 3
mech_list:PLAIN LOGIN
authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket

[ 本帖最后由 marion 于 2008-7-19 16:17 编辑 ]
作者: marion    时间: 2007-09-06 18:32
2008年7月30号:更正笔误一处;

十二、安装Extmail-1.0.2

1、安装
# tar zxvf extmail-1.0.2.tar.gz
# mkdir -pv /var/www/extsuite
# mv extmail-1.0.2 /var/www/extsuite/extmail
# cp /var/www/extsuite/extmail/webmail.cf.default  /var/www/extsuite/extmail/webmail.cf

2、修改主配置文件
#vi /var/www/extsuite/extmail/webmail.cf

部分修改选项的说明:

SYS_MESSAGE_SIZE_LIMIT = 5242880
用户可以发送的最大邮件

SYS_USER_LANG = en_US
语言选项,可改作:
SYS_USER_LANG = zh_CN

SYS_MAILDIR_BASE = /home/domains
此处即为您在前文所设置的用户邮件的存放目录,可改作:
SYS_MAILDIR_BASE = /var/mailbox

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


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

SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
连接数据库的sock文件位置,这里修改为:
SYS_MYSQL_SOCKET = /tmp/mysql.sock


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

SYS_AUTHLIB_SOCKET = /var/spool/authdaemon/socket
此句用来指明authdaemo socket文件的位置,这里修改为:
SYS_AUTHLIB_SOCKET = /usr/local/courier-authlib/var/spool/authdaemon/socket


3、apache相关配置

由于extmail要进行本地邮件的投递操作,故必须将运行apache服务器用户的身份修改为您的邮件投递代理的用户;本例中打开了apache服务器的suexec功能,故使用以下方法来实现虚拟主机运行身份的指定。此例中的MDA为postfix自带,因此将指定为postfix用户:
<VirtualHost *:80>
ServerName mail.benet.org
DocumentRoot /var/www/extsuite/extmail/html/
ScriptAlias /extmail/cgi /var/www/extsuite/extmail/cgi
Alias /extmail /var/www/extsuite/extmail/html
SuexecUserGroup postfix postfix
</VirtualHost>

修改 cgi执行文件属主为apache运行身份用户:
# chown -R postfix.postfix /var/www/extsuite/extmail/cgi/

如果您没有打开apache服务器的suexec功能,也可以使用以下方法解决:
# vi /etc/httpd/httpd.conf
User postfix
Group postfix

<VirtualHost *:80>
ServerName mail.benet.org
DocumentRoot /var/www/extsuite/extmail/html/
ScriptAlias /extmail/cgi /var/www/extsuite/extmail/cgi
Alias /extmail /var/www/extsuite/extmail/html
</VirtualHost>

4、依赖关系的解决

extmail将会用到perl的DBD::Mysql和Unix::syslogd功能,您可以去http://search.cpan.org搜索下载原码包进行安装。
# tar zxvf Unix-Syslog-0.100.tar.gz
# cd Unix-Syslog-0.100
# perl Makefile.PL
# make
# make install

DBD-Mysql目前最新的版本为DBD-mysql-4.005,但它和系统中的perl结合使用时会造成extmail无法正常使用,因此我们采用3的版本:
# tar zxvf DBD-mysql-3.0002_4.tar.gz  
# cd cd DBD-mysql-3.0002_4
# perl Makefile.PL   (此步骤中如果出现类同Can't exec "mysql_config": No such file or directory at Makefile.PL line 76.的错误是因为您的mysql的bin目录没有输出至$PATH环境变量)
# make
# make install

十三、安装Extman-0.2.2

1、安装及基本配置

#tar zxvf  extman-0.2.2.tar.gz
# mv extman-0.2.2 /var/www/extsuite/extman

修改配置文件以符合本例的需要:
# vi /var/www/extsuite/extman/webman.cf

SYS_MAILDIR_BASE = /home/domains
此处即为您在前文所设置的用户邮件的存放目录,可改作:
SYS_MAILDIR_BASE = /var/mailbox

SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
此处修改为:
SYS_MYSQL_SOCKET = /tmp/mysql.sock

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

# cd /var/www/extsuite/extman/docs
# mysql -u root -p <extmail.sql
# mysql -u root -p <init.sql

修改cgi目录的属主:
# chown -R postfix.postfix /var/www/extsuite/extman/cgi/

如果extman访问数据库权限不足的话,可采用以下命令将新生成的数据库赋予webman用户具有所有权限:
mysql> GRANT all privileges on extmail.* TO webman@localhost IDENTIFIED BY 'webman';
mysql> GRANT all privileges on extmail.* TO webman@127.0.0.1 IDENTIFIED BY 'webman';

在apache的主配置文件中Extmail的虚拟主机部分,添加如下两行:
ScriptAlias /extman/cgi /var/www/extsuite/extman/cgi
Alias /extman /var/www/extsuite/extman/html

创建其运行时所需的临时目录,并修改其相应的权限:
#mkdir  -pv  /tmp/extman
#chown postfix.postfix  /tmp/extman


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

选择管理即可登入extman进行后台管理了。默认管理帐号为:root@extmail.org  密码为:extmail*123*

说明:
(1) 如果您安装后无法正常显示校验码,安装perl-GD模块会解决这个问题。如果想简单,您可以到以下地址下载适合您的平台的rpm包,安装即可:  http://dries.ulyssis.org/rpm/packages/perl-GD/info.html
(2) extman-0.2.2自带了图形化显示日志的功能;此功能需要rrdtool的支持,您需要安装此些模块才可能正常显示图形日志。

2、(新增2007.9.18)配置Mailgraph_ext,使用Extman的图形日志:

接下来安装图形日志的运行所需要的软件包Time::HiRes、File::Tail和rrdtool,其中前两个包您可以去http://search.cpan.org搜索并下载获得,后一个包您可以到 http://oss.oetiker.ch/rrdtool/pub/?M=D下载获得; 注意安装顺序不能改换。

安装Time::HiRes
#tar zxvf Time-HiRes-1.9707.tar.gz
#cd Time-HiRes-1.9707
#perl Makefile.PL
#make
#make test
#make install

安装File::Tail
#tar zxvf File-Tail-0.99.3.tar.gz
#cd File-Tail-0.99.3
#perl Makefile
#make
#make test
#make install

安装rrdtool-1.2.23
#tar zxvf rrdtool-1.2.23.tar.gz
#cd rrdtool-1.2.23
#./configure --prefix=/usr/local/rrdtool
#make
#make install

创建必要的符号链接(Extman会到这些路径下找相关的库文件)
#ln -sv /usr/local/rrdtool/lib/perl/5.8.5/i386-linux-thread-multi/auto/RRDs/RRDs.so   /usr/lib/perl5/5.8.5/i386-linux-thread-multi/
#ln -sv /usr/local/rrdtool/lib/perl/5.8.5/RRDp.pm   /usr/lib/perl5/5.8.5
#ln -sv /usr/local/rrdtool/lib/perl/5.8.5/i386-linux-thread-multi/RRDs.pm   /usr/lib/perl5/5.8.5

复制mailgraph_ext到/usr/local,并启动之
# cp -r /var/www/extsuite/extman/addon/mailgraph_ext  /usr/local  
# / usr/local/mailgraph_ext/mailgraph-init  start
# /usr/local/mailgraph_ext/qmonitor-init  start

添加到自动启动队列
echo "/usr/local/mailgraph_ext/mailgraph-init start" >> /etc/rc.local
echo "/usr/local/mailgraph_ext/qmonitor-init start" >> /etc/rc.local

好了,接下来您就可以到extman的后台查看图表日志了。效果如下图:



注意:安装以上软件所之前,请确保您的系统已经安装了tcl、tcl-devel、libart和libart-devel等相关的软件包;

新续部分(2007.9.16)

十四、安装maildrop-2.0.4

maildrop是一个使用C++编写的用来代替本地MDA的带有过滤功能邮件投递代理,是courier邮件系统组件之一。它从标准输入接受信息并投递到用户邮箱;maildrop既可以将邮件投递到mailboxes格式邮箱,亦可以将其投递到maildirs格式邮箱。同时,maildrop可以从文件中读取入站邮件过滤指示,并由此决定是将邮件送入用户邮箱或者转发到其它地址等。和procmail不同的是,maildrop使用结构化的过滤语言,因此,邮件系统管理员可以开发自己的过滤规则并应用其中。

我们在此将使用maildrop来代替postfix自带的MDA,并以此为基础扩展后文的邮件杀毒和反垃圾邮件功能的调用;在此可能会修改前文中的许多设置,请确保您的设置也做了相应的修改。

1、安装

将courier-authlib的头文件及库文件链接至/usr目录(编译maildrop时会到此目录下找此些相关的文件):
# ln -sv /usr/local/courier-authlib/bin/courierauthconfig   /usr/bin
# ln -sv /usr/local/courier-authlib/include/*   /usr/include

maildrop需要pcre的支持,因此,接下来将首先安装pcre
# tar jxvf pcre-7.3.tar.bz2
# cd pcre-7.3
# ./configure
# make
# make check
# make install

# groupadd -g 1001 vmail
# useradd -g vmail -u 1001 -M -s /sbin/nologin vmail
# tar jxvf maildrop-2.0.4.tar.bz2
# cd maildrop-2.0.4
# ./configure
    --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

检查安装结果,请确保有"Courier Authentication Library extension enabled."一句出现:
# maildrop -v
maildrop 2.0.4 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.


2、新建其配置文件/etc/maildroprc文件,首先指定maildrop的日志记录位置:
# vi /etc/maildroprc
添加:
logfile "/var/log/maildrop.log"

# touch /var/log/maildrop.log
# chown vmail.vmail /var/log/maildrop.log

3、配置Postfix

编辑master.cf
# vi /etc/postfix/master.cf
启用如下两行
maildrop  unix  -       n       n       -       -       pipe
   flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}

注意:定义transport的时候,即如上两行中的第二行,其参数行必须以空格开头,否则会出错。

编辑main.cf
# vi /etc/postfix/main.cf
virtual_transport = virtual
修改为:
virtual_transport = maildrop

将下面两项指定的UID和GID作相应的修改:
virtual_uid_maps = static:2525
virtual_gid_maps = static:2525
修改为:
virtual_uid_maps = static:1001
virtual_gid_maps = static:1001


4、编辑/etc/authmysqlrc

# vi /etc/authmysqrc
MYSQL_UID_FIELD  '2525'
MYSQL_GID_FIELD  '2525'
更改为:
MYSQL_UID_FIELD  '1001'
MYSQL_GID_FIELD  '1001'

注意:没有此处的修改,maildrop可能会报告 “signal 0x06”的错误报告。

5、编辑/etc/httpd/httpd.conf,修改运行用户:

如果启用了suexec的功能,则将虚拟主机中指定的
SuexecUserGroup postfix postfix
修改为:
SuexecUserGroup vmail vmail

如果没有使用上面的功能,则修改User和Group指令后的用户为vmail
将前文中的如下项
User postfix
Group postfix
修改为:
User vmail
Group vmail

6、将用户邮件所在的目录/var/mailbox和extman的临时目录/tmp/extman的属主和属组指定为vmail
#chown -R vmail.vmail /var/mailbox
#chown -R vmail.vmail /tmp/extman


接下来重新启动postfix和apache,进行发信测试后,如果日志中的记录类同以下项,则安装成功

Sep 16 12:04:43 Ixor postfix/pipe[14266]: 46B491A5CB: to=<marion@test.com>, relay=maildrop, delay=2306, delays=2306/0.04/0/0.07, dsn=2.0.0, status=sent (delivered via maildrop service)

[ 本帖最后由 marion 于 2008-7-30 11:21 编辑 ]
作者: marion    时间: 2007-09-06 18:34
接下来安装反病毒和反垃圾邮件的相关组件clamav、amavisd和SpamAssassin

ClamAV是一个unix系统平台上的开源反病毒工具,它是特地为在邮件网关上进行邮件扫描而设计的。整套软件提供了许多的实用工具,包括一个可伸缩和可升级的多线程守护进程、一个命令行扫描工具和病毒库自动升级工具。

SpamAssassin 是目前最好的、最流行的开源反垃圾邮件软件之一。它是一个邮件过滤器,使用了多种反垃圾邮件技术,如:文本分析、贝叶斯过滤、DNS黑名单和分布式协同过滤数据库等。

amavisd-new是一个连接MTA和内容检测工具(诸如病毒扫描工具和SpamAssassin)的高性能接口程序,使用perl语言写成。它一般通过SMTP、ESMTP或者LMTP和MTA进行通讯,当然也可以借助于其它外部程序进行。同postfix(MTA)协同工作时表现尤佳。当它呼叫SpamAssassin进行内容过滤时,对于一封邮件只需要呼叫一次,而不管这封邮件将发往多少个收件人;同时,它亦会尽力保证实现每一位收件人的偏好设置,如接收/拒绝,检测/不检测,垃圾邮件级别等;它还会在邮件头部分插入spam相关信息。

十五、安装clamav-0.91.2

最新的clamav-0.91.2需要zlib-1.2.2以上的版本的支持,而RHEL4上的版本为zlib-1.2.1,因此您需要先升级zlib

1、安装zlib-1.2.3

#tar zvxf zlib-1.2.3.tar.gz
#cd zlib-1.2.3
#./configure --prefix=/usr --shared
#make
#make test

2、安装clamav-0.91.2

添加ClamAV运行所需的组和用户:
#groupadd clamav
#useradd -g clamav -s /sbin/nologin -M clamav

添加配合amavisd-new使用的用户amavis
#groupadd amavis
#useradd -g amavis -s /sbin/nologin -M amavis

#tar zxvf clamav-0.91.2.tar.gz
#cd clamav-0.91.2
#./configure --prefix=/usr/local/clamav --with-dbdir=/usr/local/clamav/share --sysconfdir=/etc/clamav
#make
#make check
#make install

3、配置Clam AntiVirus:

编辑主配置文件:
#vi /etc/clamav/clamd.conf

注释掉第八行的Example,如下:
# Example

找到如下行
#LogFile /tmp/clamd.log
#PidFile /var/run/clamd.pid
LocalSocket /tmp/clamd.socket
#DatabaseDirectory /var/lib/clamav
#User clamav
修改为:
LogFile /var/log/clamav/clamd.log
PidFile /var/run/clamav/clamd.pid
LocalSocket /var/run/clamav/clamd.socket
DatabaseDirectory /usr/local/clamav/share
User amavis

启用以下选项
LogSyslog yes
LogFacility LOG_MAIL
LogVerbose yes
StreamMaxLength 20M  (后面的数值应该与邮件服务器允许的最大附件值相一致)


编辑更新进程的配置文件
#vi /etc/clamav/freshclam.conf

注释掉Example,如下:
# Example

找到如下行
#DatabaseDirectory /var/lib/clamav
#UpdateLogFile /var/log/freshclam.log
PidFile /var/run/freshclam.pid
分别修改为:
DatabaseDirectory /usr/local/clamav/share
UpdateLogFile /var/log/clamav/freshclam.log
PidFile /var/run/clamav/freshclam.pid

启用以下选项:
DatabaseMirror db.XY.clamav.net  (这里也可以把XY改成您的国家代码来实现,比如,我们用cn来代替)
LogSyslog yes
LogFacility LOG_MAIL
LogVerbose yes

4、建立日志所在的目录、进程与socket所在的目录,并让它属于clamav用户:

# mkdir -v /var/log/clamav
# chown -R amavis.amavis /var/log/clamav
# mkdir -v /var/run/clamav
# chmod 700 /var/run/clamav
# chown -R amavis.amavis /var/run/clamav

建立freshlog的日志文件
#touch  /var/log/clamav/freshclam.log
#chown  clamav.clamav  /var/log/clamav/freshclam.log

5、配置crontab,让Clam AntiVirus每小时检测一次新的病毒库:

# crontab -e
添加:
37 * * * * /usr/local/clamav/bin/freshclam

6、配置库文件搜索路径:

# echo “/usr/local/clamav/lib” >> /etc/ls.so.conf
# ldconfig -v

7、配置clamav开机自动启动

# cp contrib/init/RedHat/clamd  /etc/rc.d/init.d/clamd
# cp contrib/init/RedHat/clamav-milter  /etc/rc.d/init.d/clamav-milter
# chkconfig --add clamd
# chkconfig --add clamav-milter
# chkconfig --level 2345 clamd on
# chkconfig --level 2345 clamav-milter on

编辑/etc/rc.d/init.d/clamd,将服务进程的路径指向刚才的安装目录
#vi /etc/rc.d/init.d/clamd
找到如下行
progdir="/usr/local/sbin"
修改为:
progdir="/usr/local/clamav/sbin"

启动clamd
#service clamd start

十六、安装Spamassassin-3.2.3    (2007.9.19新增)

1、依赖关系的解决,安装Spamassassin需要很多perl模块的支持,以下是所需模块列表及安装方法;

必须的软件包:
Digest::SHA1
HTML::Parser
Net::DNS
LWP (aka libwww-perl)
HTTP::Date
IO::Zlib
Archive::Tar

可选的软件包,其中有些后面的amavisd也有可能会用到:
MIME::Base64
DB_File
Net::SMTP
Mail::SPF
IP::Country::Fast
Net::Ident
IO::Socket::INET6
IO::Socket::SSL
Compress::Zlib
Time::HiRes
Mail::DKIM
Mail::DomainKeys
DBI *and* DBD driver/modules
Encode::Detect
Apache::Test
Razor2

推荐使用CPAN自动安装(你的主机要能连上Internet),它能够自动下载安装,并能解决安装过程中的依赖关系。您可以使用类同的以下的命令来进行安装:
#perl -MCPAN -e shell
cpan> install Digest::SHA1
………………

如果您的主机无法直接连接到Internet,您也可以到http://search.cpan.org上搜索下载所需要的软件包,而后使用类同的下列命令安装:

#tar zxvf 软件包.tar.gz
#cd 软件包
#perl Makefile.PL
#make
#make test
#make install
说明:某些软件包安装的过程中可能需要已经列出的其它软件包的支持(可以先尝试安装Spamassassin,然后按提示补充所需软件包),请安照提示自行调整安装顺序。另外,其中有个软件包安装过程中可能要求声明环境变量LC_ALL,此时,可输入如下命令,并重新进行软件包的编译安装即可。
#export LC_ALL=C

2、安装Spamassassin-3.2.3

#tar jxvf Mail-SpamAssassin-3.2.3.tar.bz2
#cd Mail-SpamAssassin-3.2.3
#perl Makefile.PL
#make
#make check
#make istall

3、编辑主配置文件/etc/mail/spamassassin/local.cf

required_hits 10.0
rewrite_subject 1
required_score 5.0
rewrite_header Subject *****SPAM*****
report_safe     1
use_bayes       1
bayes_auto_learn        1
skip_rbl_checks         1
use_razor2      0
use_pyzor       0
ok_locales      all


4、测试spamassassin

#spamassassin -t < sample-nonspam.txt > nonspam.out
#spamassassin -t < sample-spam.txt > spam.out

查看测试结果:

#less nonspam.out
#less spam.out

5、检查配置文件

#spamassassin -d --lint

6、启动进程,并将其加入到自动启动队列

#/usr/bin/spamd -d
#echo "/usr/bin/spamd -d" >> /etc/rc.local

十七、安装amavisd-new-2.5.2

1、依赖关系的解决

以下为官方声明所必须的软件包列表,你可以采用类同安装Spamassassin一节中的perl模块的安装方法进行安装

Archive::Zip   (Archive-Zip-x.xx) (1.14 or later should be used!)
Compress::Zlib (Compress-Zlib-x.xx) (1.35 or later)
Convert::TNEF  (Convert-TNEF-x.xx)
Convert::UUlib (Convert-UUlib-x.xxx) (1.08 or later, stick to new versions!)
MIME::Base64   (MIME-Base64-x.xx)
MIME::Parser   (MIME-Tools-x.xxxx) (latest version from CPAN - currently 5.420)
Mail::Internet (MailTools-1.58 or later have workarounds for Perl 5.8.0 bugs)
Net::Server    (Net-Server-x.xx) (version 0.88 finally does setuid right)
Digest::MD5    (Digest-MD5-x.xx) (2.22 or later)
IO::Stringy    (IO-stringy-x.xxx)
Time::HiRes    (Time-HiRes-x.xx) (use 1.49 or later, older can cause problems)
Unix::Syslog   (Unix-Syslog-x.xxx)
BerkeleyDB     with bdb library 3.2 or later (4.2 or later preferred)

2、安装amavisd-new-2.5.2

创建运行时目录,并赋予amavis用户(前文中所建)
# mkdir -pv /var/amavis/{tmp,var,db,home}
# chown -R amavis:amavis /var/amavis
#chmod -R 750 /var/amavis

#tar zxvf amavisd-new-2.5.2.tar.gz
#cd amavisd-new-2.5.2

拷贝服务端至$PATH中指定的目录,推荐拷贝至/usr/local/sbin:
#cp amavisd /usr/local/sbin/
#chown root /usr/local/sbin/amavisd
#chmod 755  /usr/local/sbin/amavisd

拷贝主配置文件至/etc,并修改相应的权限:
#cp amavisd.conf /etc
# chown root:amavis /etc/amavisd.conf
# chmod 640 /etc/amavisd.conf

创建amavisd运行中所需要的隔离区域:
# mkdir -v /var/virusmails
# chown amavis:amavis /var/virusmails/
# chmod 750 /var/virusmails/

3、编辑主配置文件
#vi /etc/amavisd.conf

确保您的如下选项的值如下文所示:
$daemon_user  = 'amavis';
$daemon_group = 'amavis';
$mydomain = 'benet.org'; (此处可更改为您集体的域)

$virus_admin               = "postmaster\@$mydomain";  
$mailfrom_notify_admin     = "postmaster\@$mydomain";  
$mailfrom_notify_recip     = "postmaster\@$mydomain";  
$mailfrom_notify_spamadmin = "postmaster\@$mydomain";
$mailfrom_to_quarantine = '';

virus_admin_maps => ["postmaster\@$mydomain"]    (指定报告病毒和垃圾邮件时发送系统邮件的用户身份)
spam_admin_maps  => ["postmaster\@$mydomain"]

启用ClamAV,(大概在第355行)去掉如下行前的注释符:
#['ClamAV-clamd',
#     \&ask_daemon, ["CONTSCAN {}\n", "/var/run/clamav/clamd"],
#    qr/\bOK$/, qr/\bFOUND$/,
#      qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
#     ['Mail::ClamAV', \&ask_clamav, "*", [0], [1], qr/^INFECTED: (.+)/],

并将如上行中的/var/run/clamav/clamd修改为:/var/run/clamav/clamd.socket

4、测试启动

#/usr/local/sbin/amavisd

您也可以按如下命令调试启动
#/usr/local/sbin/amavisd debug


5、修改postfix的配置,让它能调用amavisd,以实现病毒及垃圾邮件的过滤

#vi /etc/postfix/master.cf
在文末添加如下内容:

# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
#
amavisfeed unix    -       -       n       -       2     smtp
    -o smtp_data_done_timeout=1200
    -o smtp_send_xforward_command=yes
    -o disable_dns_lookups=yes
    -o max_use=20
#
127.0.0.1:10025 inet n    -       n       -       -     smtpd
    -o content_filter=
    -o smtpd_delay_reject=no
    -o smtpd_client_restrictions=permit_mynetworks,reject
    -o smtpd_helo_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o smtpd_data_restrictions=reject_unauth_pipelining
    -o smtpd_end_of_data_restrictions=
    -o smtpd_restriction_classes=
    -o mynetworks=127.0.0.0/8
    -o smtpd_error_sleep_time=0
    -o smtpd_soft_error_limit=1001
    -o smtpd_hard_error_limit=1000
    -o smtpd_client_connection_count_limit=0
    -o smtpd_client_connection_rate_limit=0
    -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks,no_milters
    -o local_header_rewrite_clients=

说明:注意每行“-o”前的空格;


#vi /etc/postifx/main.cf
在文末添加如下行:
content_filter=amavisfeed:[127.0.0.1]:10024

4、让postfix重新加载主配置文件,并查看启动情况

# postfix reload && tail -f /var/log/maillog

5、查看amavisd是否在监听10024端口,并测试服务启动情况:

# telnet localhost 10024
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 [127.0.0.1] ESMTP amavisd-new service ready
EHLO localhost
250-[127.0.0.1]
250-VRFY
250-PIPELINING
250-SIZE
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 XFORWARD NAME ADDR PROTO HELO
Quit  
221 2.0.0 [127.0.0.1] amavisd-new closing transmission channel
Connection closed by foreign host.

6、postfix重新加载配置文件后将授权并激活"127.0.0.1:10025"端口,一个正常的服务连接应该类同下面所示:

# telnet localhost 10025
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 Welcome to our mail.benet.org ESMTP,Warning: Version not Available
EHLO localhost
250-mail.benet.org
250-PIPELINING
250-SIZE 14336000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
QUIT
221 2.0.0 Bye
Connection closed by foreign host.

7、通过amavisd测试发信

]# telnet localhost 10024
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 [127.0.0.1] ESMTP amavisd-new service ready
HELO localhost
250 [127.0.0.1]
MAIL FROM:<>
250 2.1.0 Sender <> OK
RCPT TO:<postmaster>
250 2.1.5 Recipient <postmaster> OK
DATA
354 End data with <CR><LF>.<CR><LF>
From:Anti-Virus tester
To: MailServer Admin
Subject:amavisd test!
amavisd test!!
.
250 2.0.0 Ok: queued as 263FC1A609
quit
221 2.0.0 [127.0.0.1] amavisd-new closing transmission channel
Connection closed by foreign host.

接下来使用root用户测试收信
# mail
Mail version 8.1 6/6/93.  Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N  1 Anti-Virus tester     Wed Sep 19 01:19  23/798   "amavisd test!"
& 1
Message 1:
From MAILER-DAEMON  Wed Sep 19 01:19:16 2007
X-Original-To: postmaster
Delivered-To: postmaster@benet.org
X-Quarantine-ID: <3gmvpc8RxPtn>
X-Virus-Scanned: amavisd-new at benet.org
X-Amavis-Alert: BAD HEADER, MIME error: error: unexpected end of header
From:Anti-Virus tester
To: MailServer Admin
Subject:amavisd test!
Date: Wed, 19 Sep 2007 01:19:15 +0800 (CST)

amavisd test!!
&

十八、测试使用反病毒及反垃圾模块

1、病毒邮件发送测试

登录extmail,发送带有病毒附件的邮件(病毒样本文件后文附有),查看发送情况:

# tail  -3  /var/log/clamav/clamd.log
  1. Reading databases from /usr/local/clamav/share
  2. Database correctly reloaded (148100 signatures)
  3. /var/amavis/tmp/amavis-20070918T225935-28502/parts/p002: Trojan.Downloader.Delf-747 FOUN
复制代码


#tail -15 /var/log/maillog
  1. Sep 18 23:36:40 mail postfix/pickup[28925]: 8C1681A609: uid=1001 from=<[email]marion@test.com[/email]>
  2. Sep 18 23:36:40 mail postfix/cleanup[29002]: 8C1681A609: message-id=<[email]20070918153640.8C1681A609@mail.benet.org[/email]>
  3. Sep 18 23:36:40 mail postfix/qmgr[28924]: 8C1681A609: from=<[email]marion@test.com[/email]>, size=83658, nrcpt=1 (queue active)
  4. Sep 18 23:36:43 mail clamd[28473]: /var/amavis/tmp/amavis-20070918T225935-28502/parts/p002: Trojan.Downloader.Delf-747 FOUND
  5. Sep 18 23:36:44 mail postfix/smtpd[29011]: connect from mail[127.0.0.1]
  6. Sep 18 23:36:44 mail postfix/smtpd[29011]: CDF9B1A602: client=mail[127.0.0.1]
  7. Sep 18 23:36:44 mail postfix/cleanup[29002]: CDF9B1A602: message-id=<[email]VA7mnx1DHavOWC@mail.benet.org[/email]>
  8. Sep 18 23:36:44 mail postfix/smtpd[29011]: disconnect from mail[127.0.0.1]
  9. Sep 18 23:36:44 mail postfix/qmgr[28924]: CDF9B1A602: from=<[email]postmaster@benet.org[/email]>, size=2230, nrcpt=1 (queue active)
  10. Sep 18 23:36:44 mail amavis[28502]: (28502-05) Blocked INFECTED (Trojan.Downloader.Delf-747), <[email]marion@test.com[/email]> -> <[email]marion@test.com[/email]>, quarantine: virus-7mnx1DHavOWC, Message-ID: <[email]20070918153640.8C1681A609@mail.benet.org[/email]>, mail_id: 7mnx1DHavOWC, Hits: -, size: 83658, 4203 ms
  11. Sep 18 23:36:45 mail postfix/smtp[29006]: 8C1681A609: to=<[email]marion@test.com[/email]>, relay=127.0.0.1[127.0.0.1]:10024, delay=4.7, delays=0.42/0.05/0.12/4.1, dsn=2.7.0, status=sent (250 2.7.0 Ok, discarded, id=28502-05 - VIRUS: Trojan.Downloader.Delf-747)
  12. Sep 18 23:36:45 mail postfix/qmgr[28924]: 8C1681A609: removed
  13. Sep 18 23:36:45 mail postfix/local[29014]: CDF9B1A602: to=<[email]root@benet.org[/email]>, orig_to=<[email]postmaster@benet.org[/email]>, relay=local, delay=0.28, delays=0.12/0.09/0/0.07, dsn=2.0.0, status=sent (delivered to mailbox)
  14. Sep 18 23:36:45 mail postfix/qmgr[28924]: CDF9B1A602: removed
复制代码


说明:此附件中带有特洛伊病毒,请不要作为危害别人之用,而对于您的操作不慎而给您带来的后果,作者不负任何责任;病毒样本如下:
soe.rar (58.95 KB, 下载次数: 1238)

2、垃圾邮件测试

登录extmail,新建一封邮件,拷贝以下内容作为邮件正文,并查看发送情况:

This is the GTUBE, the
        Generic
        Test for
        Unsolicited
        Bulk
        Email

If your spam filter supports it, the GTUBE provides a test by which you
can verify that the filter is installed correctly and is detecting incoming
spam. You can send yourself a test mail containing the following string of
characters (in upper case and with no white spaces and line breaks):

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

查看发送结果:
#tail -15 /var/log/maillog
  1. Sep 19 00:04:07 mail spamd[29060]: logger: removing stderr method
  2. Sep 19 00:04:11 mail spamd[29062]: rules: meta test FM_DDDD_TIMES_2 has dependency 'FH_HOST_EQ_D_D_D_D' with a zero score
  3. Sep 19 00:04:11 mail spamd[29062]: rules: meta test FM_SEX_HOSTDDDD has dependency 'FH_HOST_EQ_D_D_D_D' with a zero score
  4. Sep 19 00:04:11 mail spamd[29062]: rules: meta test HS_PHARMA_1 has dependency 'HS_SUBJ_ONLINE_PHARMACEUTICAL' with a zero score
  5. Sep 19 00:04:11 mail spamd[29062]: spamd: server started on port 783/tcp (running version 3.2.3)
  6. Sep 19 00:04:12 mail spamd[29062]: spamd: server pid: 29062
  7. Sep 19 00:04:12 mail spamd[29062]: spamd: server successfully spawned child process, pid 29064
  8. Sep 19 00:04:12 mail spamd[29062]: spamd: server successfully spawned child process, pid 29065
  9. Sep 19 00:04:12 mail spamd[29062]: prefork: child states: II
  10. Sep 19 00:06:44 mail postfix/pickup[28925]: E37651A60E: uid=1001 from=<[email]marion@test.com[/email]>
  11. Sep 19 00:06:44 mail postfix/cleanup[29073]: E37651A60E: message-id=<[email]20070918160643.E37651A60E@mail.benet.org[/email]>
  12. Sep 19 00:06:45 mail postfix/qmgr[28924]: E37651A60E: from=<[email]marion@test.com[/email]>, size=1041, nrcpt=1 (queue active)
  13. Sep 19 00:07:01 mail amavis[28502]: (28502-06) Blocked SPAM, <[email]marion@test.com[/email]> -> <[email]marion@test.com[/email]>, quarantine: spam-7ui+Zpn7-M00.gz, Message-ID: <[email]20070918160643.E37651A60E@mail.benet.org[/email]>, mail_id: 7ui+Zpn7-M00, Hits: 1004.576, size: 1040, 12805 ms
  14. Sep 19 00:07:01 mail postfix/smtp[29079]: E37651A60E: to=<[email]marion@test.com[/email]>, relay=127.0.0.1[127.0.0.1]:10024, delay=18, delays=1.8/1.5/4.9/9.9, dsn=2.5.0, status=sent (250 2.5.0 Ok, id=28502-06, DISCARD(bounce.suppressed))
  15. Sep 19 00:07:01 mail postfix/qmgr[28924]: E37651A60E: removed
复制代码


待续……

:好消息:在518、519、520、523、524楼,柳拂风朋友对本文做了大量扩充,建议朋友们参照!

在701、702楼,zenglingping朋友对本文做了不少的扩充,建议朋友们参照。

[ 本帖最后由 marion 于 2008-7-23 10:13 编辑 ]
作者: liwei6998    时间: 2007-09-07 16:00
高人,非常感谢,真诚期待未完的部分!!!
作者: marion    时间: 2007-09-11 15:12
杀毒和防垃圾邮件的处理模块正测试添加中……
作者: xiaoqi8866    时间: 2007-09-12 11:03
好  顶!!!
作者: kexen    时间: 2007-09-12 14:58
嗯,是的,建议挂上Mcafee或者clamav 反垃圾邮件当然考虑用用hzq老大的spamlock啦
作者: swh01    时间: 2007-09-12 15:33
顶起来
作者: marion    时间: 2007-09-13 09:51
嗯,KEXEN兄,请教hzqbbc的spamlock您是否在使用?效果想来应该不错吧?
作者: flash520    时间: 2007-09-13 13:23
以上的方法在CentOS5上面适用吗?
作者: marion    时间: 2007-09-13 14:21
适用于CentOS5,我已经在上面搭建了一个出来……
作者: liheng    时间: 2007-09-14 09:18
SYS_MAILDIR_BASE = /home/domains
此处即为您在前文所设置的用户邮件的存放目录,可改作:
SYS_MAILDIR_BASE = /var/www/mail

这里是不是应该设置为 /var/spool/mail ?
SYS_MYSQL_USER = db_user
SYS_MYSQL_PASS = db_pass
以上两句句用来设置连接数据库服务器所使用用户名、密码和邮件服务器用到的数据库,这里修改为:
SYS_MYSQL_USER = postfix
SYS_MYSQL_PASS = 123456

这个 user 与 pass 的值是不是随便设就可以的?

[ 本帖最后由 liheng 于 2007-9-14 09:23 编辑 ]
作者: marion    时间: 2007-09-14 09:46
回楼上的兄弟,你提出的正是本文中的错误。谢了。
那个的确应该是/var/spool/mail

还有,那个用户名和密码应该分别是extmail和extmail,这是修改过程中的遗留问题!
作者: liheng    时间: 2007-09-14 18:49
marion 老兄,能不能帮我看一下,我的是什么问题
http://bbs.chinaunix.net/viewthr ... page%3D1#pid7353077
为了这个问题,都弄了半个月啦,抓狂啊
作者: marion    时间: 2007-09-14 23:31
标题: 回复 #14 liheng 的帖子
MYSQL_USERNAME          extamail
这个是你写文档时错的,还是本来就错了?

virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
这个好像跟你后文建立文件时指定的路径不同;

另外,我大略的看了一遍你的安装文档,也没有看出什么漏洞出来。建议你去看看:
1、本地域是否跟虚拟域重名了;
2、我不知道你的虚拟域是如何建立的,如果是通过extman的话,建议去看看postfix用户对/var/mailbox是否有完全访问权限;

希望对你有所帮助,也欢迎你再来帖子讨论修改后的结果。
作者: liheng    时间: 2007-09-15 08:47
MYSQL_USERNAME          extamail
这个是你写文档时错的,还是本来就错了?

这个是输入时错误,后来改过来了

virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
这个好像跟你后文建立文件时指定的路径不同;

这个问题我还真没有发现,谢谢 marion 兄为我指出来。
有个问题我不太明白
本地域是否是指 mydomain 所指定的参数?
我在 extman 中是新建了一个域名为 test.com 的,不会是这两个有冲突吧?还请 marion 为我解惑,谢谢啦
作者: liheng    时间: 2007-09-15 09:53
SYS_MYSQL_USER = webman
SYS_MYSQL_PASS = webman
SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
说明部分见Extmail安装部分,此处可修改为:
YS_MYSQL_USER = extmail
SYS_MYSQL_PASS = extmail
SYS_MYSQL_SOCKET = /tmp/mysql.sock

又是我的一点错误,这里我没有改成 extmail,刚刚又检查了一下,我将 /etc/postfix/main.cf 中的mydomain 和 myorigin 参数注释掉了,可以用 web  收发邮件,但在outlook 上依然不能收发邮件,而且很奇怪的是 telnet localhost 25 & telnet localhost 110  都不通过
作者: dnnljexk    时间: 2007-09-15 11:24
可以说明一下每个包的作用吗???
作者: marion    时间: 2007-09-15 18:17
……本地域是否是指 mydomain 所指定的参数?
我在 extman 中是新建了一个域名为 test.com 的, ...


你的猜测是正确的;当二者同时存在时,所有的信将被发往本地系统的相应的用户了……
作者: marion    时间: 2007-09-15 18:20
……我将 /etc/postfix/main.cf 中的mydomain 和 myorigin 参数注释掉了,可以用 web  收发邮件,但在outlook 上依然不能收发邮件,而且很奇怪的是  ...


不知道你是否为outlook启用了使用认证的功能,如果没有的话,我想,问题应该就在这里了;如果已经启用,仍不能发信,那你把使用outlook连接后不成功的日志部分发上来,我帮你看看。希望对你有所帮助……
作者: liheng    时间: 2007-09-17 00:14
Sep 16 23:23:04 redhat postfix/local[16201]: 2F5253F9B2: to=<postmaster@test.com>, orig_to=<postmaster>, relay=local, delay=301, delays=300/0.15/0/0.13, dsn=4.3.0, status=deferred (alias database unavailable)
Sep 16 23:28:04 redhat postfix/qmgr[16185]: 4C1DE3F565: from=<double-bounce@mail.test.com>, size=694, nrcpt=1 (queue active)

Sep 16 23:28:04 redhat postfix/qmgr[16185]: 2F5253F9B2: from=<double-bounce@mail.test.com>, size=721, nrcpt=1 (queue active)

Sep 16 23:28:04 redhat postfix/trivial-rewrite[16212]: warning: do not list domain test.com in BOTH mydestination and virtual_mailbox_domains
Sep 16 23:28:04 redhat postfix/local[16215]: warning: lookup owner-postmaster, NIS domain test, map mail.aliases: internal yp server or client error
Sep 16 23:28:04 redhat postfix/local[16214]: warning: lookup owner-postmaster, NIS domain test, map mail.aliases: internal yp server or client error
Sep 16 23:28:04 redhat postfix/local[16215]: 2F5253F9B2: to=<postmaster@test.com>, orig_to=<postmaster>, relay=local, delay=601, delays=600/0.1/0/0.1, dsn=4.3.0, status=deferred (alias database unavailable)
Sep 16 23:28:04 redhat postfix/local[16214]: 4C1DE3F565: to=<postmaster@mail.test.com>, orig_to=<postmaster>, relay=local, delay=1017, delays=1016/0.13/0/0.16, dsn=4.3.0, status=deferred (alias database unavailable)
Sep 16 23:28:38 redhat postfix/postfix-script[16225]: refreshing the Postfix mail system
Sep 16 23:28:38 redhat postfix/master[15903]: reload configuration /etc/postfix

telnet localhost 25  成功,
telnet localhost 110 失败,提示 chdir maildir failed
在 extmail 上不能可以发邮件,但不能收。
在 outlook 上不能收发邮件,在 outlook 上无论是开启认证和不开启 论证都不行
作者: liheng    时间: 2007-09-17 00:15
还请 marion 兄帮小弟看一下,谢谢啦
作者: liheng    时间: 2007-09-17 00:16
哦,对了,配置完全是按照你所提供的方法做的,所以配置文件我就不贴了。
作者: liheng    时间: 2007-09-17 00:36
而且我用 mailq 命令查看邮件队列,可以看到队列里有邮件,就是没有发出去,郁闷。
作者: marion    时间: 2007-09-17 10:18
Sep 16 23:28:04 redhat postfix/local[16214]: 4C1DE3F565: to=<postmaster@mail.test.com>, orig_to=<postmaster>, relay=local, delay=1017, delays=1016/0.13/0/0.16, dsn=4.3.0, status=deferred (alias database unavailable)
Sep 16 23:28:38 redhat postfix/postfix-script[16225]: refreshing the Postfix mail system
Sep 16 23:28:38 redhat postfix/master[15903]: reload configuration /etc/postfix

别名文件找不到,你是否执行了newaliases命令?
或者查看一下你指定的路径是否正确。
作者: marion    时间: 2007-09-17 10:21
telnet localhost 110 失败,提示 chdir maildir failed
这个应该是你的设置没有权限访问邮箱所在的目录,请检查一下你指定的访问者,以及权限设置。

在 extmail 上不能可以发邮件,但不能收。
这个原因跟上述问题应该是同一个原因造成的。你应该把邮箱目录的所有者指定为httpd服务的运行者或者使用suexec,建议你再认真看一下文档,并渐次排查问题。
作者: liheng    时间: 2007-09-17 14:27
newaliases 命令是执行了的,也产生了aliases.db 文件
邮箱所在的目录的属主是 用户 postfix
作者: marion    时间: 2007-09-17 15:02
请确信邮箱目录内的文件也属于postfix用户,同时也应该再去检查一下你的别名文件的设置,包括用户别名和域别名文件。
作者: liheng    时间: 2007-09-17 15:08
Sep 17 14:22:49 redhat postfix/smtpd[3369]: connect from unknown[192.168.0.145]
Sep 17 14:22:49 redhat postfix/smtpd[3369]: warning: unknown[192.168.0.145]: SASL LOGIN authentication failed: authentication failure
Sep 17 14:22:49 redhat postfix/smtpd[3369]: lost connection after AUTH from unknown[192.168.0.145]
Sep 17 14:22:49 redhat postfix/smtpd[3369]: disconnect from unknown[192.168.0.145]
Sep 17 14:22:49 redhat postfix/smtpd[3369]: connect from unknown[192.168.0.145]
Sep 17 14:22:49 redhat postfix/smtpd[3369]: warning: unknown[192.168.0.145]: SASL LOGIN authentication failed: authentication failure
Sep 17 14:22:49 redhat postfix/smtpd[3369]: lost connection after AUTH from unknown[192.168.0.145]
Sep 17 14:22:49 redhat postfix/smtpd[3369]: disconnect from unknown[192.168.0.145]
Sep 17 14:22:49 redhat postfix/smtpd[3369]: connect from unknown[192.168.0.145]
Sep 17 14:22:49 redhat postfix/smtpd[3369]: warning: unknown[192.168.0.145]: SASL LOGIN authentication failed: authentication failure
Sep 17 14:22:49 redhat postfix/smtpd[3369]: lost connection after AUTH from unknown[192.168.0.145]
Sep 17 14:22:49 redhat postfix/smtpd[3369]: disconnect from unknown[192.168.0.145]
Sep 17 14:22:49 redhat postfix/smtpd[3369]: connect from unknown[192.168.0.145]
Sep 17 14:22:49 redhat postfix/smtpd[3369]: warning: unknown[192.168.0.145]: SASL LOGIN authentication failed: authentication failure
Sep 17 14:22:49 redhat postfix/smtpd[3369]: lost connection after AUTH from unknown[192.168.0.145]
Sep 17 14:22:49 redhat postfix/smtpd[3369]: disconnect from unknown[192.168.0.145]
Sep 17 14:24:40 redhat postfix/qmgr[3270]: 6A5613F588: from=<test@test.com>, size=506, nrcpt=1 (queue active)
Sep 17 14:24:40 redhat postfix/trivial-rewrite[3378]: warning: do not list domain test.com in BOTH mydestination and virtual_mailbox_domains
Sep 17 14:24:40 redhat postfix/local[3380]: warning: lookup bob, NIS domain test, map mail.aliases: internal yp server or client error
Sep 17 14:24:40 redhat postfix/local[3380]: 6A5613F588: to=<bob@test.com>, relay=local, delay=526, delays=526/0.1/0/0.06, dsn=4.3.0, status=deferred (alias database unavailable)

又仔细看了一下,还是没有发现什么问题?
作者: liheng    时间: 2007-09-17 15:09
邮箱目录内的所有文件都属于 postfix
作者: liheng    时间: 2007-09-17 15:30
marion 兄,已经可以实现 web 收发邮件,只是还不能够用 outlook 收发邮件
作者: liheng    时间: 2007-09-17 15:46
marion 兄,我将 /etc/postfix/main.cf 文件内的 mydestination 和 mynetworks 两个参数注释掉后,瑞在可以用 outlook 发邮件,但是却不能收,outlook 错误提示:

[ 本帖最后由 liheng 于 2007-9-17 15:53 编辑 ]

3.JPG (43.55 KB, 下载次数: 243)

3.JPG

作者: liheng    时间: 2007-09-17 15:51
看来还是 chdir maildir failed 的问题。
但我的服务器上,邮件存放目录确实是存在 maildir 的,之前我用 postfixadmin 做的时候,怎么样都没法生成 maildir 格式的路径, postfixadmin 生成的路径格式是:/var/mailbox/test.com/test/ (注: /var/mailbox 是指定的邮箱存放目录)
我现在用 extmail 生成的 maildir 格式是:/var/mailbox/test.com/test/Maildir
之前用 postfixadmin 提示是 chdir maildir failed 错误,我就认了,因为确实没有生成指定的格式,但我现在用 extmail 生成了指定的格式,为什么还会提示这样的错误呢?郁闷,
而且 邮箱存放目录下的文件所有者都是 postfix ,权限都是600,有写的权限应该来说就可以了吧

[ 本帖最后由 liheng 于 2007-9-17 15:52 编辑 ]
作者: marion    时间: 2007-09-17 16:01
do not list domain test.com in BOTH mydestination and virtual_mailbox_domains
这里说无论是本地域还是虚拟域都找不到你指向的test.com,请检查配置。

SASL LOGIN authentication failed: authentication failure
这里说你的SASL_LOGIN认证失败,请检查sasl的安装,以及postfix中指定的认证选项。

alias database unavailable
这里说找不到别名文件,请检查你的配置文件中别名文件的指向,以及它们是否存在。

这些都是问题……
作者: marion    时间: 2007-09-17 16:10
再使用outlook发信一次,把相关日志发上来。

这里的问题不是认证没有通过的话,就应该还是权限的问题。再去看看courier-imap的相关设置。
作者: liheng    时间: 2007-09-17 16:39
do not list domain test.com in BOTH mydestination and virtual_mailbox_domains
这里说无论是本地域还是虚拟域都找不到你指向的test.com,请检查配置。
这个问题已经解决,将 mydestination 注释或设置为空即可,见:http://www.extmail.org/forum/vie ... peid%3D1&page=1
SASL LOGIN authentication failed: authentication failure
这里说你的SASL_LOGIN认证失败,请检查sasl的安装,以及postfix中指定的认证选项。
应该不存在 sasl 验证的问题,因为我 telnet localhost 25 成功,而且在 outlook 里发信成功,我是勾了我的服务器发送需要验证这一项的。
alias database unavailable
这里说找不到别名文件,请检查你的配置文件中别名文件的指向,以及它们是否存在。
这个应该还是虚拟域与本地域相冲突导致,我的机器名与 /etc/postfix/main.cf 文件里的 myhostname 设置的不一样,可能是这个引起的。
作者: liheng    时间: 2007-09-17 16:45
Sep 17 16:04:56 redhat pop3d: chdir Maildir: No such file or directory
Sep 17 16:04:57 redhat pop3d: Connection, ip=[192.168.0.145]
Sep 17 16:04:57 redhat pop3d: chdir Maildir: No such file or directory
Sep 17 16:17:40 redhat postfix/smtpd[4481]: connect from unknown[192.168.0.145]
Sep 17 16:17:40 redhat postfix/smtpd[4481]: 434823F583: client=unknown[192.168.0.145], sasl_method=LOGIN, sasl_username=test@test.com
Sep 17 16:17:40 redhat postfix/cleanup[4488]: 434823F583: message-id=<007101c7f906$8135b890$9100a8c0@xp>
Sep 17 16:17:40 redhat postfix/qmgr[4275]: 434823F583: from=<test@test.com>, size=1395, nrcpt=1 (queue active)
Sep 17 16:17:40 redhat postfix/smtpd[4481]: disconnect from unknown[192.168.0.145]
Sep 17 16:17:40 redhat postfix/virtual[4490]: 434823F583: to=<test@test.com>, relay=virtual, delay=0.22, delays=0.15/0.05/0/0.02, dsn=2.0.0, status=sent (delivered to maildir)
Sep 17 16:17:40 redhat postfix/qmgr[4275]: 434823F583: removed

我刚刚在 outlook 发邮件的 maillog,
我在 outlook 收邮件的时候,就提示:
Sep 17 16:04:56 redhat pop3d: chdir Maildir: No such file or directory
Sep 17 16:04:57 redhat pop3d: Connection, ip=[192.168.0.145]
Sep 17 16:04:57 redhat pop3d: chdir Maildir: No such file or directory
Sep 17 16:17:40 redhat postfix/smtpd[4481]: connect from unknown[192.168.0.145]

作者: marion    时间: 2007-09-17 17:07
如果使用webmail可以收发邮件,但outlook就能发却不能收,这应该是没有道理的。
不知道有没有其他人遇到过这样的情况。我这里只能凭猜测了。

你把mydestination和myorigion的值启用并改为其它域名试试……

另外,如果你的系统中的确有test用户的话,也建议先关闭他。
作者: liheng    时间: 2007-09-17 17:18
不行,在 outlook 里一接受邮件,就会弹出一个对话框,要输入用户名和密码
看来我还遇到了一个大问题,这很好
作者: liheng    时间: 2007-09-17 17:19
另,我的系统中压根就不存在  test 这个用户
作者: marion    时间: 2007-09-17 17:29
先说明,这不是什么大问题,可能仅仅是你某个设置的问题。这是一个有些繁杂的系统,中间可能会因为输入不慎等各种情况而出现许多难以预料的问题。希望你对整个安装过程以及所涉及到的操作是理解的。

建议认真查看一下认证模块是否正常,尤其是courier-imap能否正常使用认证功能。个人觉得问题应该在于SASL的认证模块。
作者: liheng    时间: 2007-09-17 17:30
是啊,我也觉得很奇怪,为什么 web 收发没有任何问题,而 outlook 就是不行呢?
作者: liheng    时间: 2007-09-17 22:33
marion 兄,我可能已经找到 chdri maildir failed 错误的原因啦
可能是我更改 /usr/local/courier-authlib/etc/authlib/authmysqlrc 文件有空格引起,我消除这个错误,再测试,现在的错误是:
Sep 17 22:06:45 redhat pop3d: authentication error: Input/output error
Sep 17 22:06:47 redhat pop3d: Connection, ip=[192.168.0.145]
Sep 17 22:06:47 redhat pop3d: LOGIN FAILED, user=test@test.com, ip=[192.168.0.145]
Sep 17 22:06:47 redhat pop3d: authentication error: Input/output error
Sep 17 22:06:47 redhat pop3d: Connection, ip=[192.168.0.145]
Sep 17 22:06:47 redhat pop3d: LOGIN FAILED, user=test@test.com, ip=[192.168.0.145]
Sep 17 22:06:47 redhat pop3d: authentication error: Input/output error
Sep 17 22:06:48 redhat pop3d: Connection, ip=[192.168.0.145]
Sep 17 22:06:48 redhat pop3d: LOGIN FAILED, user=test@yoyo.com, ip=[192.168.0.145]
Sep 17 22:06:48 redhat pop3d: authentication error: Input/output error

作者: liheng    时间: 2007-09-17 22:46
marion 老兄,我终于找到问题了,
成功啦,成功啦,现在终于可以在 outlook 上收发邮件了
作者: marion    时间: 2007-09-17 22:54
祝贺你!

说出你的问题和解决办法,供后来者参考吧。
作者: liheng    时间: 2007-09-17 23:19
其实问题的根源很简单,就是出在 authmysqlrc 文件里头,这个文件要求还真严格,一点空格都不能有,就因为有一个空格,导致无法识别 maildir,
1.出现authentication error: Input/output error错误的时候
估计是查询mysql时,authdaemond出错了。具体要打开authdaemonrc里的:

DEBUG_LOGIN=2    原来默认是0

然后看看/var/log/message或/var/log/maillog 在认证失败时有什么提示。根据提示去检查问题到底出在哪儿
后面的问题就好解决了
作者: liheng    时间: 2007-09-18 00:20
非常感谢 marion 老兄一直以来对我的热心帮助,没有你的热心帮助,我想我没有这么快找到问题,谢谢
作者: titus0719    时间: 2007-09-18 12:09
标题: extman登录界面无法显示校验码
我安装的extman登录界面无法显示校验码,应该怎么处理呢?
作者: marion    时间: 2007-09-18 12:50
校验码需要perl-GD模块的支持。

如果想简单,到这里下一个适合你的系统平台的perl-GD包,而后安装即可。
http://dries.ulyssis.org/rpm/packages/perl-GD/info.html

如下:


[ 本帖最后由 marion 于 2007-9-18 13:00 编辑 ]
作者: liheng    时间: 2007-09-18 15:50
Sep 18 15:39:55 test pop3d: Connection, ip=[192.168.101.224]
Sep 18 15:39:55 test authdaemond: received auth request, service=pop3, authtype=login

Sep 18 15:39:55 test authdaemond: authmysql: trying this module
Sep 18 15:39:55 test authdaemond: SQL query: SELECT username, password, "", '503', '503', '/var/mailbox/', concat('/var/mailbox/',Maildir), "", name, "" FROM mailbox WHERE username = "test"

Sep 18 15:39:55 test pop3d: LOGIN FAILED, user=test, ip=[192.168.101.224]
Sep 18 15:39:55 test authdaemond: zero rows returned
Sep 18 15:39:55 test authdaemond: no password available to compare
Sep 18 15:39:55 test authdaemond: authmysql: REJECT - try next module
Sep 18 15:39: authdaemond: FAIL, all modules rejected
Sep 18 15:40:00 test pop3d: Disconnected, ip=[192.168.101.224

这个问题怎么解决?不想重新装。

[ 本帖最后由 liheng 于 2007-9-18 15:55 编辑 ]
作者: liheng    时间: 2007-09-18 15:54
原帖由 titus0719 于 2007-9-18 12:09 发表
我安装的extman登录界面无法显示校验码,应该怎么处理呢?

最简单的方法,不要校验码,听说那个核验码还比较麻烦,我就将它去掉了,
在 webman.cf 将 SYS_CAPTCHA_ON=0 即可,记得要重启 Apache 哦
作者: marion    时间: 2007-09-18 18:30
Sep 18 15:39:55 test pop3d: LOGIN FAILED, user=test, ip=[192.168.101.224]

恐怕是这儿的问题,你尝试指定全名,即形如“user@domain.ltd”试试。
作者: marion    时间: 2007-09-18 19:12
原帖由 liheng 于 2007-9-18 15:54 发表

最简单的方法,不要校验码,听说那个核验码还比较麻烦,我就将它去掉了,
在 webman.cf 将 SYS_CAPTCHA_ON=0 即可,记得要重启 Apache 哦


如果在实际使用中,这个决非上策。其实,即便是修改这个,也用不着重启apache的,刷新一下页面就OK了。

[ 本帖最后由 marion 于 2007-9-18 21:04 编辑 ]
作者: liheng    时间: 2007-09-18 23:11
原帖由 marion 于 2007-9-18 18:30 发表
Sep 18 15:39:55 test pop3d: LOGIN FAILED, user=test, ip=[192.168.101.224]

恐怕是这儿的问题,你尝试指定全名,即形如“user@domain.ltd”试试。

marion 兄,我猜想也是这里的问题,刚开始还没反映过来,还没想明白应该在哪里改。刚刚终于想通了。
事后经过确认确实也是这里的问题,
解决方法:
在 outlook 里的帐号名写全(test@test.com)就OK了,marion 兄,你真棒
作者: liheng    时间: 2007-09-18 23:13
顺便现问一下 marion 兄,那有没有办法,不用写全也行的呢?
作者: marion    时间: 2007-09-19 01:15
终于写完了,可以长出一口气了!

我会不断的修正和完善此文,欢迎各位继续测试使用和点评!
作者: loveflag    时间: 2007-09-19 16:10
标题: 赞楼主一个
楼主,什么也不说了。 潜心搜藏研究。

绝对是网络上最新,最全面的中文架设邮件服务器的笔记了。

赞楼主一个
作者: loveflag    时间: 2007-09-20 12:34
标题: CentOS 5.0 安装问题求教。
[root@localhost init.d]# service postfix restart
关闭 postfix:                                             [确定]
启动 postfix:                                             [确定]
[root@localhost init.d]# telnet localhost  25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
Connection closed by foreign host.
[root@localhost init.d]#
[root@localhost init.d]# vim /etc/postfix/main.cf

myhostname = mail.loveflag.cn
myorigin = loveflag.cn
mydomain = loveflag.cn
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
mynetworks = 192.168.0.249/24, 127.0.0.0/8

为何?25端口没有连上呢?
作者: marion    时间: 2007-09-20 13:24
mynetworks = 192.168.0.249/24

这一个写作这样,恐怕不太合适吧。

另,你应该把相关日志的内容发上来。
作者: loveflag    时间: 2007-09-20 14:15
标题: 回复 #59 marion 的帖子
楼主,我是新手。能否告诉我下,把哪里的日志帖上来。   我的网络环境是内网。
作者: marion    时间: 2007-09-20 14:18
原帖由 loveflag 于 2007-9-20 14:15 发表
楼主,我是新手。能否告诉我下,把哪里的日志帖上来。   我的网络环境是内网。


重新telnet 25号端口一次,而后把/var/log/maillog日志的最新出现的内容贴上来,可以借鉴以下命令:

#tail -20 /var/log/mail
作者: loveflag    时间: 2007-09-20 14:26
标题: 回复 #61 marion 的帖子
[root@localhost ~]# telnet 127.0.0.1 25
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
220 mail.loveflag.cn ESMTP Postfix
ehlo mail.loveflag.cn
250-mail.loveflag.cn
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
mail from:root@loveflag.cn
250 2.1.0 Ok
rcpt to:pieradmin@loveflag.cn
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
subject:Mail test!
Mail test!@!!!
.
250 2.0.0 Ok: queued as 1F2E1145CA0
quit
221 2.0.0 Bye
Connection closed by foreign host.
[root@localhost ~]#
作者: marion    时间: 2007-09-20 15:24
这个表示已经发送了,你再检查一下日志看一下结果
作者: zhushuyun    时间: 2007-09-21 13:53
标题: 回复 #1 marion 的帖子
好全面的东西,  好呀 收下了  谢谢了!
作者: marion    时间: 2007-09-24 21:35
本来近日想把SSL应用的部分加上,看来要等几天了,被snort的项目的耽搁了。仍然待续吧 ……
作者: liwei6998    时间: 2007-09-25 16:09
marion ,高手,牛人,向marion  表示由衷的感谢!!!
作者: marion    时间: 2007-09-26 22:12
楼上的兄弟,多承谬赞,共同学习吧……
作者: 惠繪洋    时间: 2007-09-27 13:55
請教樓主..
我跟著做暫時還沒有出現什麼大錯誤. 先謝過.
但現在我有一個問題想請問, 我這台機並沒有一個固定域名的. 如你的 benet.org, 我現在整個環境都是在內網完成的. 而在裝到 extmail, 我就把 extmail 的httpd.conf 設定如下:


  1. <VirtualHost *:80>
  2. ServerName mail.xxx.com
  3. ServerAlias 192.168.0.191
  4. DocumentRoot /var/www/extsuite/extmail/html/
  5. ScriptAlias /webmail/cgi /var/www/extsuite/extmail/cgi
  6. Alias /webmail /var/www/extsuite/extmail/html
  7. </VirtualHost>
复制代码


但當輸入 http://192.168.0.191/webmail/ 時, 就出現

  1. 403 Forbidden
  2. You don't have permission to access / on this server.
复制代码


這台服務器日後會在內網運行, 以port forward 在firewall 後運作的. 請指教.
謝謝.

[ 本帖最后由 惠繪洋 于 2007-9-27 13:59 编辑 ]
作者: Intranet    时间: 2007-09-27 15:31
有没有这些软件打包下载?

CentOS 5 安装的时候都装哪些包?
作者: fuleru    时间: 2007-09-27 16:03
标题: 回复 #1 marion 的帖子
我在编译courier-imap遇到了些问题,请问是什么原因?

Making all in tcpd
make[2]: Entering directory `/root/postfix/courier-imap-4.1.3/tcpd'
make  all-am
make[3]: Entering directory `/root/postfix/courier-imap-4.1.3/tcpd'
Linking couriertls
./.libs/libcouriertls.a(libcouriertls.o)(.text+0xd52): In function `tls_create':
/root/postfix/courier-imap-4.1.3/tcpd/libcouriertls.c:590: undefined reference to `SSL_CTX_sess_set_new_cb'
./.libs/libcouriertls.a(libcouriertls.o)(.text+0xd63):/root/postfix/courier-imap-4.1.3/tcpd/libcouriertls.c:591: undefined reference to `SSL_CTX_sess_set_get_cb'
./.libs/libcouriertls.a(libcouriertls.o)(.text+0xd74):/root/postfix/courier-imap-4.1.3/tcpd/libcouriertls.c:592: undefined reference to `SSL_CTX_sess_set_remove_cb'
collect2: ld returned 1 exit status
make[3]: *** [couriertls] Error 1
make[3]: Leaving directory `/root/postfix/courier-imap-4.1.3/tcpd'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/root/postfix/courier-imap-4.1.3/tcpd'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/postfix/courier-imap-4.1.3'
make: *** [all] Error 2

这与ssl有关么?
作者: marion    时间: 2007-09-27 17:52
回fuleru,
你的问题应该是因为编译安装的openssl的头文件链接指定问题。默认情况下,courier-imap编译时到/usr/include下查找openssl的头文件,你检查一下并确保新装的openssl头文件的链接是指向的新版本应该可以解决这个问题。

[ 本帖最后由 marion 于 2007-9-27 17:58 编辑 ]
作者: marion    时间: 2007-09-27 17:58
标题: 回复 #68 惠繪洋 的帖子
这个问题应该是apache目录访问权限的问题,请确保你的apache主配置文件中开放了对/var/www目录的访问权限。你可以通过更改DocumentRoot指令后,及<Directory "/var/www">来实现;
作者: 惠繪洋    时间: 2007-09-28 12:27
原帖由 marion 于 2007-9-27 17:58 发表
这个问题应该是apache目录访问权限的问题,请确保你的apache主配置文件中开放了对/var/www目录的访问权限。你可以通过更改DocumentRoot指令后,及来实现;


謝謝.
對. apache 的設定我弄傻了... 現在可以了...

但又有一事想請教. 我在 extman 內新建了一個domain, 在內也加入了user
用extmail 登入, 再寄信給自己時, 就發現不能收信.

查了 maillog 如下:

  1. Sep 28 12:34:54 mail extmail[1957]: user=<[email]danny@mydomain.org[/email]>, client=192.168.80.182, module=login, status=loginok
  2. Sep 28 12:37:04 mail extmail[1965]: user=<[email]danny@mydomain.org[/email]>, client=192.168.80.182, module=login, status=loginok
  3. Sep 28 12:38:27 mail postfix/pickup[1681]: D00A5FA12: uid=2525 from=<[email]danny@mydomain.org[/email]>
  4. Sep 28 12:38:27 mail postfix/cleanup[1994]: D00A5FA12: message-id=<[email]20070928043827.D00A5FA12@mydomain.org[/email]>
  5. Sep 28 12:38:28 mail postfix/qmgr[1682]: D00A5FA12: from=<[email]danny@mydomain.org[/email]>, size=504, nrcpt=1 (queue active)
  6. Sep 28 12:38:28 mail postfix/trivial-rewrite[1996]: warning: do not list domain mydomain.org in BOTH mydestination and virtual_mailbox_domains
  7. Sep 28 12:38:28 mail postfix/local[1999]: warning: dict_nis_init: NIS domain name not set - NIS lookups disabled
  8. Sep 28 12:38:30 mail postfix/local[1999]: D00A5FA12: to=<[email]danny@mydomain.org[/email]>, relay=local, delay=2.5, delays=0.48/0.47/0/1.6, dsn=5.1.1, status=bounced (unknown user: "danny")
  9. Sep 28 12:38:30 mail postfix/cleanup[1994]: 246CBFA17: message-id=<[email]20070928043830.246CBFA17@mydomain.org[/email]>
  10. Sep 28 12:38:30 mail postfix/qmgr[1682]: 246CBFA17: from=<>, size=2240, nrcpt=1 (queue active)
  11. Sep 28 12:38:30 mail postfix/trivial-rewrite[1996]: warning: do not list domain mydomain.org in BOTH mydestination and virtual_mailbox_domains
  12. Sep 28 12:38:30 mail postfix/bounce[2000]: D00A5FA12: sender non-delivery notification: 246CBFA17
  13. Sep 28 12:38:30 mail postfix/qmgr[1682]: D00A5FA12: removed
  14. Sep 28 12:38:30 mail postfix/local[1999]: 246CBFA17: to=<[email]danny@mydomain.org[/email]>, relay=local, delay=0.02, delays=0.01/0/0/0.01, dsn=5.1.1, status=bounced (unknown user: "danny")
  15. Sep 28 12:38:30 mail postfix/qmgr[1682]: 246CBFA17: removed
  16. Sep 28 12:42:09 mail postfix/smtpd[2013]: warning: dict_nis_init: NIS domain name not set - NIS lookups disabled
  17. Sep 28 12:42:09 mail postfix/smtpd[2013]: connect from localhost[127.0.0.1]
  18. Sep 28 12:43:06 mail postfix/trivial-rewrite[2015]: warning: do not list domain mydomain.org in BOTH mydestination and virtual_mailbox_domains
  19. Sep 28 12:43:14 mail postfix/smtpd[2013]: NOQUEUE: reject: RCPT from localhost[127.0.0.1]: 550 5.1.1 <[email]danny@mydomain.org[/email]>: Recipient address rejected: User unknown in local recipient table; from=<[email]danny@mydomain.org[/email]> to=<[email]danny@mydomain.org[/email]> proto=ESMTP helo=<mydomain.org>
  20. Sep 28 12:46:54 mail postfix/smtpd[2013]: disconnect from localhost[127.0.0.1]
复制代码



再用 telnet localhost 25 查看

  1. root@mail:/var/spool/mail# telnet localhost 25
  2. Trying 127.0.0.1...
  3. Connected to localhost.
  4. Escape character is '^]'.
  5. 220 Welcome to our mydomain.org ESMTP,Warning: Version not Available!
  6. ehlo mydomain.org
  7. 250-mydomain.org
  8. 250-PIPELINING
  9. 250-SIZE 14336000
  10. 250-VRFY
  11. 250-ETRN
  12. 250-AUTH LOGIN PLAIN
  13. 250-AUTH=LOGIN PLAIN
  14. 250-ENHANCEDSTATUSCODES
  15. 250-8BITMIME
  16. 250 DSN
  17. mail from:danny@mydomain.org
  18. 250 2.1.0 Ok
  19. rcpt to:danny@mydomain.org
  20. 550 5.1.1 <[email]danny@mydomain.org[/email]>: Recipient address rejected: User unknown in local recipient table
复制代码


請問這是什麼原因做成的呢. 請指教. 謝謝.

[ 本帖最后由 惠繪洋 于 2007-9-28 12:48 编辑 ]
作者: marion    时间: 2007-09-28 14:59
标题: 回复 #73 惠繪洋 的帖子
Sep 28 12:38:30 mail postfix/trivial-rewrite[1996]: warning: do not list domain mydomain.org in BOTH mydestination and virtual_mailbox_domains
……
550 5.1.1 <danny@mydomain.org>: Recipient address rejected: User unknown in local recipient

以上这些应该表明错误的原因是你的postfix配置对于访问mysql数据库不正确而不能检索到相关域的信息造成的;或者你的extman建立的域名没能正确写入数据库也未可知,但前者的可能性更大,请检查一下main.cf文件中设定的对mysql访问的部分。

当然,做这些假设的前提是你的数据库本身配置是正确的。

[ 本帖最后由 marion 于 2007-9-28 15:00 编辑 ]
作者: 惠繪洋    时间: 2007-09-28 17:16
以上这些应该表明错误的原因是你的postfix配置对于访问mysql数据库不正确而不能检索到相关域的信息造成的;或者你的extman建立的域名没能正确写入数据库也未可知,但前者的可能性更大,请检查一下main.cf文件中设定的对mysql访问的部分。

当然,做这些假设的前提是你的数据库本身配置是正确的。


謝謝你的指示, 我檢查了 mysql, extmail 內已經有我所開啟的 email address, 所有東西都在, 應該extman 已經正確地和mysql 聯繫.
我也用 extmail 登入 mysql 也可以.
我再查看 postfix 的 /etc/postfix/main.cf 的設置. 由於網域不方便公開, 所以只好用 mydomain.org 代替.

  1. queue_directory = /var/spool/postfix
  2. command_directory = /usr/local/postfix/sbin
  3. daemon_directory = /usr/local/postfix/libexec
  4. mail_owner = postfix
  5. myhostname = mail.mydomain.org
  6. mydomain = mydomain.org
  7. myorigin = mydomain.org
  8. inet_interfaces = all
  9. #mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
  10. unknown_local_recipient_reject_code = 550
  11. debug_peer_level = 2
  12. debugger_command =
  13.          PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
  14.          xxgdb $daemon_directory/$process_name $process_id & sleep 5
  15. sendmail_path = /usr/sbin/sendmail
  16. newaliases_path = /usr/bin/newaliases
  17. mailq_path = /usr/bin/mailq
  18. setgid_group = postdrop
  19. html_directory = /var/www/html/postfix_html
  20. manpage_directory = /usr/local/postfix/man
  21. sample_directory = /etc/postfix
  22. readme_directory = no
  23. broken_sasl_auth_clients = yes
  24. 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
  25. smtpd_sasl_auth_enable = yes
  26. smtpd_sasl_local_domain = $myhostname
  27. smtpd_sasl_security_options = noanonymous
  28. smtpd_sasl_application_name = smtpd
  29. smtpd_banner = Welcome to our $myhostname ESMTP,Warning: Version not Available!
  30. virtual_mailbox_base = /var/mailbox
  31. virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
  32. virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
  33. virtual_alias_domains =
  34. virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
  35. virtual_uid_maps = static:2525
  36. virtual_gid_maps = static:2525
  37. virtual_transport = virtual
  38. maildrop_destination_recipient_limit = 1
  39. maildrop_destination_concurrency_limit = 1
  40. message_size_limit = 14336000
  41. virtual_mailbox_limit = 20971520
  42. virtual_create_maildirsize = yes
  43. virtual_mailbox_extended = yes
  44. virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
  45. virtual_mailbox_limit_override = yes
  46. virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please Tidy your mailbox and try again later.
  47. virtual_overquota_bounce = yes
复制代码


我也查看過

  1. /etc/postfix/mysql_virtual_alias_maps.cf
  2. /etc/postfix/mysql_virtual_domains_maps.cf
  3. /etc/postfix/mysql_virtual_mailbox_limit_maps.cf
  4. /etc/postfix/mysql_virtual_mailbox_maps.cf
复制代码


入邊的 mysql user, pass, db, table 都正確呢...

但當中發現了一個問題. 在 main.cf 內 virtual_mailbox_base 是指向 /var/mailbox, 但真實的的是 /var/spool/mail 內呢... 這需要更正嗎??

查看了好幾編都找不出問題.. 請樓主幫忙幫忙.. 謝謝你.
作者: marion    时间: 2007-09-28 21:25
标题: 回复 #75 惠繪洋 的帖子
嗯,应该就是这里的问题了;
让它们统一起来即可,改成哪个由你自己决定。
作者: marion    时间: 2007-10-01 15:19
标题: 回复 #77 cnhawk386 的帖子
这里所提到的UID和GID,应该是MDA用户的;在前面使用的postfix自带的MDA,故此指定为2525;后面使用了maildrop这个MDA,因此,把其改为了VMAIL用户的UID和GID。

后面的那个确如你所料,第一个和第三个是MYSQL中的字段名;
作者: MYSQLER    时间: 2007-10-02 14:17
如果有各个安装包的地址是不是更方便一些
作者: Intranet    时间: 2007-10-03 13:01

  1. [root@mail /]# cp support-files/my-medium.cnf  /etc/my.cnf
  2. cp: cannot stat `support-files/my-medium.cnf': No such file or directory
复制代码


  1. [root@mail mysql-5.0.45]# cp  support/mysql.server  /etc/rc.d/init.d/mysqld
  2. cp: cannot stat `support/mysql.server': No such file or directory

复制代码


是下的mysql版本不对吗?

目录下的文件就这些:




[ 本帖最后由 Intranet 于 2007-10-3 13:05 编辑 ]

q.jpg (51.84 KB, 下载次数: 140)

q.jpg

作者: Intranet    时间: 2007-10-03 13:20
为什么出错。

停在那里就不动了。。

[ 本帖最后由 Intranet 于 2007-10-3 13:22 编辑 ]

q.jpg.jpg (57.35 KB, 下载次数: 135)

q.jpg.jpg

作者: marion    时间: 2007-10-03 22:26
标题: 回复 #81 Intranet 的帖子
这个不是什么错误,只是调试启动而已;你可以Ctrl+C退出后去掉"-d"选项后重新启动即可。
作者: bigbomb    时间: 2007-10-05 16:02
标题: 不管能不能实现,我顶
不知道这个版本能不能在机器上真正实现得了,不管怎地,lz的辛勤劳动值得称颂,我顶
作者: marion    时间: 2007-10-05 17:30
标题: 回复 #83 bigbomb 的帖子
我这里有个服务器已经在Internet上用了……
作者: willl32    时间: 2007-10-06 19:52
很详细啊! 我准备把sendmail改成postfix,正需要这个文章。谢谢楼主兄弟!
作者: ypxns    时间: 2007-10-07 10:01
marion兄,我参照你的文档,在进行POSTFIX验证的时候出现了问题,你能不能帮我看一下!谢谢了!!
http://bbs.chinaunix.net/thread-998862-1-1.html
作者: zdyldy    时间: 2007-10-08 09:31
courier-imap-4.1.3.tar.bz2



这个软件包在哪下载啊,

可以把其它的软件包地址都发到上面么?


在网上好多搜不到啊,谢谢了。
作者: zdyldy    时间: 2007-10-08 09:46
十一、安装Courier-IMAP

# tar jxvf courier-imap-4.1.3.tar.bz2
# cd courier-imap-4.1.3
./configure
  --prefix=/usr/local/courier-imap
  --with-redhat
  --enable-unicode
  --disable-root-check
  --with-trashquota
  --without-ipv6


请问  --without-ipv6    是什么意思。现在我用的是IP-V4啊,我该怎么写。
作者: marion    时间: 2007-10-08 10:48
标题: 回复 #88 zdyldy 的帖子
那个选项是指示你的编译不使用ipv6,如果你没有使用ipv6,加上此选项就可以。
作者: zdyldy    时间: 2007-10-08 12:28
courier-imap-4.1.3
Postfix-2.4.5
Mysql-5.0.45
Sasl-2.1.22
clamav-0.91.2
amavisd-new
SpamAssassin-3.2.3

按照你的帖子,可不可以只安装上面7个,下面8个不安装呢,如果可以是不是要做一些改动呢。还有麻烦告诉这些软件包的下载地址好么,我在网上搜不到啊。



DB-4.5.20
Openssl-0.98e
httpd-2.2.4
Php-5.2.3
courier-authlib-0.59.3
Extmail-1.0.2
Extman-0.2.2
maildrop-2.0.4
作者: zdyldy    时间: 2007-10-08 13:06
[root@localhost servers]# cd courier-imap-4.1.0
[root@localhost courier-imap-4.1.0]# ./configure --prefix=/usr/local/courier-imap --with-redhat --enable-unicode --disable-root-check --with-trashquota --without-ipv6 CPPFLAGS='-I/usr/local/ssl/include/openssl -I/usr/local/courier-authlib/include' LDFLAGS='-L/usr/local/courier-authlib/lib/courier-authlib' COURIERAUTHCONFIG='/usr/local/courier-authlib/bin/courierauthconfig'
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking for gawk... (cached) gawk
checking for a BSD-compatible install... /usr/bin/install -c
checking whether ln -s works... yes
checking whether make sets $(MAKE)... (cached) yes
checking for perl5... no
checking for perl... /usr/bin/perl
checking for sysconftool...... ././sysconftool
checking build system type... i686-redhat-linux-gnu
checking host system type... i686-redhat-linux-gnu
checking for a sed that does not truncate output... /bin/sed
checking for egrep... grep -E
checking for ld used by gcc... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking for /usr/bin/ld option to reload object files... -r
checking for BSD-compatible nm... /usr/bin/nm -B
checking how to recognise dependent libraries... pass_all
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking dlfcn.h usability... yes
checking dlfcn.h presence... yes
checking for dlfcn.h... yes
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... gcc3
checking how to run the C++ preprocessor... g++ -E
checking for g77... g77
checking whether we are using the GNU Fortran 77 compiler... yes
checking whether g77 accepts -g... yes
checking the maximum length of command line arguments... 32768
checking command to parse /usr/bin/nm -B output from gcc object... ok
checking for objdir... .libs
checking for ar... ar
checking for ranlib... ranlib
checking for strip... strip
checking if gcc static flag  works... yes
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fPIC
checking if gcc PIC flag -fPIC works... yes
checking if gcc supports -c -o file.o... yes
checking whether the gcc linker (/usr/bin/ld) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking for shl_load... no
checking for shl_load in -ldld... no
checking for dlopen... no
checking for dlopen in -ldl... yes
checking whether a program can dlopen itself... yes
checking whether a statically linked program can dlopen itself... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
configure: creating libtool
appending configuration tag "CXX" to libtool
checking for ld used by g++... /usr/bin/ld
checking if the linker (/usr/bin/ld) is GNU ld... yes
checking whether the g++ linker (/usr/bin/ld) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC
checking if g++ PIC flag -fPIC works... yes
checking if g++ supports -c -o file.o... yes
checking whether the g++ linker (/usr/bin/ld) supports shared libraries... yes
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking for shl_load... (cached) no
checking for shl_load in -ldld... (cached) no
checking for dlopen... (cached) no
checking for dlopen in -ldl... (cached) yes
checking whether a program can dlopen itself... (cached) yes
checking whether a statically linked program can dlopen itself... (cached) yes
appending configuration tag "F77" to libtool
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for g77 option to produce PIC... -fPIC
checking if g77 PIC flag -fPIC works... yes
checking if g77 supports -c -o file.o... yes
checking whether the g77 linker (/usr/bin/ld) supports shared libraries... yes
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking for env... /bin/env
checking for courierauthconfig... /usr/local/courier-authlib/bin/courierauthconfig
./configure: line 20078: /usr/local/courier-authlib/bin/courierauthconfig: No such file or directory
./configure: line 20078: test: =: unary operator expected
./configure: line 20085: /usr/local/courier-authlib/bin/courierauthconfig: No such file or directory
[root@localhost courier-imap-4.1.0]# make
make: *** 没有指明目标并且找不到 makefile。 停止。
[root@localhost courier-imap-4.1.0]#

您好,我没找到4.1.3 ,只在网上找到了4.1.0,当我按照你的步骤执行 ./configure 后,再执行make  的时候出现上面的提示,是怎么回事啊。
作者: fish007    时间: 2007-10-09 08:43
原帖由 marion 于 2007-9-6 18:31 发表
本文凝聚了作者不少的安装经验,写出来供各位同仁参考指正,也为自己留一个“备份”,以便以后安装时作为参照!
安装过程中借鉴了不少google出来的文章,是你们先行的足迹为作者今天的成功打下了基础,在此先行 ...


你好,我在用以下命令对courier-authlib-0.5.93进行configure时,进入了循环,无休止地进行下去,不知是何原因,望解答.
./configure
    --prefix=/usr/local/courier-authlib
    --sysconfdir=/etc
    --without-authpam
    --without-authldap
    --without-authpwd
    --without-authshadow
    --without-authvchkpw
    --without-authpgsql
    --with-authmysql
    --with-mysql-libs=/usr/local/mysql/lib/mysql
    --with-mysql-includes=/usr/local/mysql/inculde/mysql
    --with-redhat
    --with-authmysqlrc=/etc/authmysqlrc
    --with-authdaemonrc=/etc/authdaemonrc
    CFLAGS="-march=i686 -O2 -fexpensive-optimizations"  
    CXXFLAGS="-march=i686 -O2 -fexpensive-optimizations"
作者: fish007    时间: 2007-10-09 08:49
原帖由 fish007 于 2007-10-9 08:43 发表


你好,我在用以下命令对courier-authlib-0.5.93进行configure时,进入了循环,无休止地进行下去,不知是何原因,望解答.
./configure
    --prefix=/usr/local/courier-authlib
    --sysconfdir=/etc ...

是0.59.3
作者: Intranet    时间: 2007-10-09 15:49
DBD-Mysql目前最新的版本为DBD-mysql-4.005,但它和系统中的perl结合使用时会造成extmail无法正常使用,因此我们采用3的版本:
# tar zxvf DBD-mysql-3.0002_4.tar.gz  
# cd cd DBD-mysql-3.0002_4
# perl Makefile.PL   (此步骤中如果出现类同Can't exec "mysql_config": No such file or directory at Makefile.PL line 76.的错误是因为您的mysql的bin目录没有输出至$PATH环境变量)



...又出错了~~~

CentOS 5下面..

post.jpg (80.97 KB, 下载次数: 135)

post.jpg

作者: Intranet    时间: 2007-10-09 16:17
原帖由 zdyldy 于 2007-10-8 09:31 发表
courier-imap-4.1.3.tar.bz2



这个软件包在哪下载啊,

可以把其它的软件包地址都发到上面么?


在网上好多搜不到啊,谢谢了。



安装包我这里都有,,,但还是没有安装成功...在CentOS 5上.

ftp1.callleo.cn
user&passwd:cu
作者: liheng    时间: 2007-10-09 17:59
marion  兄,我是在安装 maildrop 后发生这样的错误
Oct  9 13:29:50 bv-diannao-004 maildrop[13037]: Temporary authentication failure.
Oct  9 13:29:50 bv-diannao-004 postfix/pipe[13036]: 45DFE11CEE5: to=<test@test.com>, relay=maildrop, delay=0.25, delays=0.1/0.05/0/0.1, dsn=4.3.0, status=deferred (temporary failure. Command output: ERR: authdaemon: s_connect() failed: Permission denied /usr/local/bin/maildrop: Temporary authentication failure.

邮件可以发出去,但却接受不了。
Oct  9 17:23:36 bv-diannao-004 pop3d: authentication error: Input/output error
Oct  9 17:23:36 bv-diannao-004 authdaemond: failed to connect to mysql server (server=localhost, userid=extmail..): Access denied for user 'extmail..'@'localhost' (using password: YES)
Oct  9 17:23:36 bv-diannao-004 authdaemond: authmysql: TEMPFAIL - no more modules will be tried

不知道是哪里设置错误了,我也弄不清楚怎么会显示这个,操作步骤与你所写的相同
(server=localhost, userid=extmail..): Access denied for user 'extmail..'@'localhost'

怎么会成这个样子?
还请 marion 指点一二
作者: marion    时间: 2007-10-09 20:56
标题: 回复 #91 zdyldy 的帖子
checking for courierauthconfig... /usr/local/courier-authlib/bin/courierauthconfig
./configure: line 20078: /usr/local/courier-authlib/bin/courierauthconfig: No such file or directory
./configure: line 20078: test: =: unary operator expected
./configure: line 20085: /usr/local/courier-authlib/bin/courierauthconfig: No such file or directory

以上几句表明你指向的/usr/local/courier-authlib/bin/courierauthconfig路径不对,或者是文件不存在。请确信你的courier-authlib已经正确安装,并将以下项的值改为其所在你的系统中的路径:
COURIERAUTHCONFIG='/usr/local/courier-authlib/bin/courierauthconfig'
作者: marion    时间: 2007-10-09 21:00
标题: 回复 #92 fish007 的帖子
不知道你所所谓的无休止大概run了多长时间,或者能不能提供更多的信息过来。不过,如果你的硬件体系不是i686的话,最好将如下两个选项去掉:
CFLAGS="-march=i686 -O2 -fexpensive-optimizations"  
CXXFLAGS="-march=i686 -O2 -fexpensive-optimizations"
作者: marion    时间: 2007-10-09 21:05
标题: 回复 #94 Intranet 的帖子
CentOS5的安装光盘上找到并安装 perl-DBI 这个rpm包应该可以解决这个问题……
作者: marion    时间: 2007-10-09 21:11
标题: 回复 #96 liheng 的帖子
Oct  9 17:23:36 bv-diannao-004 authdaemond: failed to connect to mysql server (server=localhost, userid=extmail..): Access denied for user 'extmail..'@'localhost' (using password: YES)

这里表明你所指定的extmail无法正常访问mysql数据库,你可以去查看一下authmysqlrc文件中的相关设置是否正确,即确保你的extmail用户以权限访问mysql;

如果仍然无法通过验正,你打开authdaemon的相关日志选项,并将登录后的报错信息发上来,我帮你排查一下。
作者: marion    时间: 2007-10-09 21:16
安装包我这里都有,,,但还是没有安装成功...在CentOS 5上.

ftp1.callleo.cn
user&passwd:cu


谢兄之高义,我正为难怎么把这些软件包共享出来呢,因为下地址我也没有记录,如果一个个的去重新找一遍也不是件小的工程……




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2