源码安装postfix extmail邮件系统

系统和软件

Centos 5.5

httpd-2.2.17.tar.gz

mysql-5.1.53.tar.gz

php-5.3.3.tar.gz

cyrus-courier-authlib-0.63.0.tar.bz2

courier-imap-4.6.0.tar.bz2

sasl-2.1.23.tar.gz

maildrop-2.5.2.tar.bz2

postfix-2.7.2.tar.gz

clamav-0.96.5.tar.gz

amavisd-new-2.6.4.tar.gz

Mail-SpamAssassin-3.3.1.tar.gz

pcre-8.01.tar.bz2

extmail-1.2.tar.gz

extman-1.1.tar.gz

 

1.系统安装

定制选择开发包和开发工具,其它可不安装

禁用Firewall和SELinux

2.创建src目录,然后上传源码包到此目录下

mkdir src
cd src

3.时间同步
yum install ntp -y
与国家授时中心同步时间
ntpdate 210.72.145.44
写入BIOS
hwclock -w

4安装 mysql
groupadd mysql
useradd -g mysql mysql
tar zxvf mysql-5.1.53.tar.gz
cd mysql-5.1.53
可以通过查看INSTALL-SOURCE内容来了解如何安装
配置参数
./configure --prefix=/usr/local/mysql --enable-thread-safe-client --enable-local-infile --with-charset=gbk --with-extra-

charsets=all --with-low-memory
make
make install
创建mysql配置文件
cp support-files/my-medium.cnf /etc/my.cnf
设置mysql自启动
cp support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod 755 /etc/rc.d/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
初始化数据库
cd /usr/local/mysql
chown -R mysql:mysql .
bin/mysql_install_db --user=mysql
chown -R root .
chown -R mysql var
后台启动
bin/mysqld_safe --user=mysql &
查看是否启动
netstat -ant

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN

配置库文件搜索路径
echo "/usr/local/mysql/lib/mysql" >> /etc/ld.so.conf
ldconfig
查看
ldconfig -v
添加环境变量
PATH=$PATH:/usr/local/mysql/bin
export PATH

 

5安装apache
cd /root/src/
tar zxvf httpd-2.2.17.tar.gz
cd httpd-2.2.17
配置参数
./configure --prefix=/usr/local/httpd --with-mysql=/usr/local/mysql --enable-so --enable-track-vars --enable-rewrite --with-

zlib --enable-mods-shared=all --enable-suexec --with-suexec-caller=daemon --with-suexec-docroot=/var/www
make
make install

编辑httpd.conf
vi /usr/local/httpd/conf/httpd.conf
将网站根目录指定到/var/www
#DocumentRoot "/usr/local/httpd/htdocs"
DocumentRoot "/var/www"

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
   # Deny from all
    allow from all
</Directory>

#<Directory "/usr/local/httpd/htdocs">

<Directory "/var/www">

创建目录
mkdir /var/www
设置httpd自启动
echo "/usr/local/httpd/bin/apachectl start " >> /etc/rc.local

启动
/usr/local/httpd/bin/apachectl start
测试httpd是否正常
netstat -ant
tcp        0      0 :::80                       :::*                        LISTEN
6安装PHP
cd /root/src/
tar zxvf php-5.3.3.tar.gz
cd php-5.3.3 
配置参数
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/httpd/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

enable-track-vars 为启动cookie的get/post等追踪功能
报错
configure: error: libpng.(a|so) not found.
安装
yum install libpng-devel

Notice: Following unknown configure options were used:

--with-xml
--with-png
--with-jpeg
--with-freetype
--enable-track-vars
--with-libxml-dir=
--with-png-dir=
--with-jpeg-dir
--with-freetype-dir
make
make install

configure: error: libpng.(a|so) not found.
yum install libpng-devel
yum install freetype-devel

./configure --prefix=/usr/local/php --with-apxs2=/usr/local/httpd/bin/apxs --with-mysql=/usr/local/mysql --with-

mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-png-dir --with-jpeg-dir --with-zlib --with-freetype-dir --

with-gd  --enable-mbstring=all
make
make install
创建PHP配置文件
cp php.ini-production  /usr/local/php/lib/php.ini
编辑httpd.conf 支持php
vi /usr/local/httpd/conf/httpd.conf
添加如下两行
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

echo "AddType application/x-httpd-php .php" >> /usr/local/httpd/conf/httpd.conf
echo "AddType application/x-httpd-php-source .phps" >> /usr/local/httpd/conf/httpd.conf

设置请求目录时寻找的资源列表
DirectoryIndex index.html
DirectoryIndex index.html index.php

测试php
echo "<?php phpinfo() ?>" > /var/www/info.php
/usr/local/httpd/bin/apachectl restart

打开浏览器查看

7安装courier-authlib
cd /root/src/
添加vusr用户和vgroup组
groupadd -g 1000 vgroup
useradd -g 1000 -u 1000 -M -s /bin/false vuser

yum install expect
tar jxvf courier-authlib-0.63.0.tar.bz2
cd courier-authlib-0.63.0
./configure --prefix=/usr/local/courier-authlib --without-stdheaderdir --sysconfdir=/etc --without-authuserdb --without-

authpam --without-authldap --without-authpwd --without-authshadow --without-authvchkpw --without-authpgsql --without-

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

--with-redhat --with-mailuser=vuser --with-mailgroup=vgroup
make
make install
make install-migrate
make install-configure
更新lib库文件搜索路径
echo "/usr/local/courier-authlib/lib/courier-authlib" >> /etc/ld.so.conf
ldconfig
ldconfig -v
cd /etc/authlib/
修改authdaemonrc文件
vi authdaemonrc

authmodulelist="authmysql authpipe"
authmodulelist="authmysql"

authmodulelistorig="authmysql authpipe"
authmodulelistorig="authmysql"

daemons=5
daemons=10

DEBUG_LOGIN=0
DEBUG_LOGIN=2

编辑authmysqlrc文件
vi authmysqlrc
MYSQL_SERVER            localhost
MYSQL_USERNAME          extmail
MYSQL_PASSWORD          extmail
MYSQL_SOCKET            /tmp/mysql.sock
MYSQL_PORT              3306
MYSQL_OPT               0
MYSQL_DATABASE          extmail
MYSQL_USER_TABLE        mailbox
MYSQL_CRYPT_PWFIELD     password
MYSQL_UID_FIELD         '1000'
MYSQL_GID_FIELD         '1000'
MYSQL_LOGIN_FIELD       username
MYSQL_HOME_FIELD        concat("/var/mailbox/",homedir)
MYSQL_NAME_FIELD        name
MYSQL_MAILDIR_FIELD     concat("/var/mailbox/",maildir)

设置courier-authlib开机自启动

cp /root/src/courier-authlib-0.63.0/courier-authlib.sysvinit /etc/rc.d/init.d/courier-authlib

chmod 755 /etc/rc.d/init.d/courier-authlib
chkconfig --add courier-authlib
chkconfig courier-authlib on
service courier-authlib start

 

8安装courier-imap
cd /root/src/
tar jxvf courier-imap-4.6.0.tar.bz2
cd courier-imap-4.6.0
配置参数
./configure --prefix=/usr/local/courier-imap --with-redhat --enable-unicode --disable-root-check --with-trashquota --without

-ipv6 COURIERAUTHCONFIG='/usr/local/courier-authlib/bin/courierauthconfig'
make
make install
make install-configure
提供POP3服务
vi /usr/local/courier-imap/etc/pop3d
POP3DSTART=NO
POP3DSTART=YES
设置courier-imap开机自启动
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 courier-imapd on
service courier-imapd start
查看
netstat -ant
tcp        0      0 0.0.0.0:110                 0.0.0.0:*                   LISTEN

9安装cyrus-sasl
cd /root/src/
删除系统自带的cyrus-sasl
rpm -qa | grep cyrus-sasl | xargs rpm -e --nodeps
rm -rf /usr/lib/sasl
rm -rf /usr/lib/sasl2
tar zxvf cyrus-sasl-2.1.23.tar.gz
cd cyrus-sasl-2.1.23
配置参数
./configure --enable-plain --enable-cram --enable-digest --enable-login --enable-sql --disable-anon --disable-ntlm --disable-

gssapi --disable-krb4 --disable-otp --disable-srp --disable-srp-setpass --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 --prefix=/usr/local/cyrus-sasl
make
make install
配置库文件搜索路径
ln -s /usr/local/cyrus-sasl/lib/sasl2 /usr/lib/sasl2
echo "/usr/local/cyrus-sasl/lib" >> /etc/ld.so.conf
ldconfig
ldconfig -v
创建smtpd.conf文件
vi /usr/local/cyrus-sasl/lib/sasl2/smtpd.conf

pwcheck_method: authdaemond
log_level: 3
mech_list: PLAIN LOGIN
authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket

Postfix:Sql_select option missing问题解决
vi /usr/local/cyrus-sasl/lib/sasl2/smtpd.conf
添加
allow_plaintext: true
auxprop_plugin: mysql
sql_hostnames: localhost
sql_user: extmail
sql_passwd: extmail
sql_database: extmail
sql_select: select password from mailbox where username='%u'

~

10安装postfix
cd /root/src/
卸载sendmail
/etc/init.d/sendmail stop
rpm -qa | grep sendmail | xargs rpm -e --nodeps
tar zxvf postfix-2.7.2.tar.gz
cd postfix-2.7.2
========================================================
make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include/mysql -DUSE_CYRUS_SASL -DUSE_SASL_AUTH -

I/usr/local/include/sasl''AUXLIBS=-L/usr/local/mysql/lib/mysql -lmysqlclient -lm -lz -L/usr/local/lib -lsasl2'
make
===========================================================

groupadd -g 105 postfix
useradd -g postfix -u 105 -s /sbin/nologin -M postfix
grooupadd -g 106 postdrop
useradd -g postdrop -u 106 -s /sbin/nologin -M postdrop

make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/local/cyrus-

sasl/include/sasl' 'AUXLIBS=-L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm -L/usr/local/cyrus-sasl/lib -lsasl2'
make
make install
tempdir: [/root/src/postfix-2.7.2] /tmp

11安装pcre
cd /root/src/
tar jxvf pcre-8.01.tar.bz2
cd pcre-8.01
./configure
make
make install

12安装maildrop
cd /root/src/
tar jxvf maildrop-2.5.2.tar.bz2
cd maildrop-2.5.2
ln -s /usr/local/courier-authlib/bin/courierauthconfig  /usr/bin/courierauthconfig
配置参数
./configure --enable-sendmail=/usr/sbin/sendmail --enable-trusted-users='root vuser' --enable-syslog=1 --enable-maildirquota

--enable-maildrop-uid=1000 --enable-maildrop-gid=1000 --with-trashquota --with-dirsync --prefix=/usr/local/maildrop
make
make install
cp /usr/local/maildrop/bin/maildrop  /usr/bin/

检测
maildrop -v
maildrop 2.5.2 Copyright 1998-2005 Double Precision, Inc.
GDBM/DB extensions enabled.
Courier Authentication Library extension enabled.****这一行
Maildir quota extension are now always enabled.
This program is distributed under the terms of the GNU General Public
License. See COPYING for additional information.
创建maildroprc
vi /etc/maildroprc
-----------------------------------
logfile "/var/log/maildrop.log"
to "$HOME/Maildir"
--------------------------------
logfile "/var/mailbox/maildrop.log"
to "$HOME/Maildir"

touch /var/log/maildrop.log
chown vuser.vgroup /var/log/maildrop.log

检测
maildrop -V 9 -d wellpan@96090.com

生成别名二进制文件
newaliases
修改main.cf 文件


修改master.cf 文件

设置postfix开机自启
postfix start
echo "postfix start" >> /etc/rc.local

检测postfix启动是否正常
netstat -ant
tcp        0      0 0.0.0.0:25                  0.0.0.0:*                   LISTEN

13extmail依赖关系

perl -MCPAN -e shell
Are you ready for manual configuration? [yes] no

vi /usr/lib/perl5/5.8.8/CPAN/Config.pm
'urllist' => [],
'urllist' => [q[http://mirrors.163.com/cpan/ ]] ,

http://www.cpan.org/ 查找镜像

如要重新配置CPAN,可先进入CPAN,然后在CPAN命令行(即CPAN>)键入以下指令:

CPAN>o conf init

安装DBD::Mysql 数据库驱动
cpan DBD:mysql
安装Unix-Syslog
cpan Unix::Syslog

14安装extmail
cd /root/src
tar zxvf extmail-1.2.tar.gz
mkdir /var/www/extsuite
mv extmail-1.2 /var/www/extsuite/extmail
cd /var/www/extsuite/extmail/
创建webmail.cf文件
cp webmail.cf.default webmail.cf
vi webmail.cf
--------------------------------
SYS_MAILDIR_BASE = /home/domains
SYS_MAILDIR_BASE = /var/mailbox
--------------------------------
SYS_MYSQL_USER = db_user
SYS_MYSQL_PASS = db_pass
SYS_MYSQL_DB = extmail
SYS_MYSQL_HOST = localhost
SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
SYS_MYSQL_USER = extmail
SYS_MYSQL_PASS = extmail
SYS_MYSQL_DB = extmail
SYS_MYSQL_HOST = localhost
SYS_MYSQL_SOCKET = /tmp/mysql.sock
---------------------------------------
SYS_AUTHLIB_SOCKET = /var/spool/authdaemon/socket
SYS_AUTHLIB_SOCKET = /usr/local/courier-authlib/var/spool/authdaemon/socket

配置虚拟主机
vi /usr/local/httpd/conf/httpd.conf
Include conf/extra/httpd-vhosts.conf 去掉注释

vi  /usr/local/httpd/conf/extra/httpd-vhosts.conf
NameVirtualHost 192.168.15.124:80

<VirtualHost 192.168.15.124:80>
    DocumentRoot "/var/www/extsuite/extmail/html/"
    ServerName  mail.96090.com
    ScriptAlias /extmail/cgi/  /var/www/extsuite/extmail/cgi/
    Alias /extmail/  /var/www/extsuite/extmail/html/
    ScriptAlias /extman/cgi/  /var/www/extsuite/extman/cgi/
    Alias /extman/  /var/www/extsuite/extman/html/
    SuexecUserGroup vuser vgroup
  <Directory "/var/www/extsuite/">
   Options FollowSymLinks
   Allowoverride none
   Order allow,deny
   Allow from all
  </Directory>
  </VirtualHost>

/usr/local/httpd/bin/apachectl restart
chown -R vuser:vgroup /var/www/extsuite/extmail/cgi/

15extman 安装
extman 依赖关系
安装gd-2.0.35.tar.bz2
cd /root/src/
tar jxvf gd-2.0.35.tar.bz2
cd gd-2.0.35
./configure --with-png --with-freetype --with-jpeg --with-zlib --with-fontconfig
make
make install

cpan GD
cpan Time::HiRes
cpan File::Tail

yum install pango-devel

安装rrdtool
cd /root/src/
tar zxvf rrdtool-1.4.4.tar.gz
cd rrdtool-1.4.4
./configure --prefix=/usr/local/rrdtool --enable-perl-site-install=/usr/lib/perl5
make
make install

cd /root/src/
tar zxvf extman-1.1.tar.gz
mv extman-1.1 /var/www/extsuite/extman
cd /var/www/extsuite/extman
cp webman.cf.default webman.cf
vi webman.cf
-----------------------------------------
YS_MAILDIR_BASE = /home/domains
SYS_MAILDIR_BASE = /var/mailbox
--------------------------------------------
SYS_MYSQL_SOCKET = /var/lib/mysql/mysql.sock
SYS_MYSQL_SOCKET = /tmp/mysql.sock

建立extmail数据库
cd docs/
vi init.sql
:%s/extmail.org/96090.com/g
/usr/local/mysql/bin/mysql -u root -p < extmail.sql
/usr/local/mysql/bin/mysql -u root -p < init.sql
chown -R vuser:vgroup /var/www/extsuite/extman/cgi/
创建运行时需要的临时目录
mkdir /tmp/extman
mkdir /var/mailbox
chown -R vuser:vgroup /tmp/extman
chown -R vuser:vgroup /var/mailbox

配置postfix虚拟域
cp mysql_virtual_* /etc/postfix/

配置extman图形日志
cd /var/www/extsuite/extman/addon/
cp -r mailgraph_ext /usr/local/

配置extman图形监控
cpan Time::HiRes
cpan File::Tail

/usr/local/mailgraph_ext/mailgraph-init start
echo "/usr/local/mailgraph_ext/mailgraph-init start" >> /etc/rc.local

启动cmdserver(在后台显示系统信息)
/var/www/extsuite/extman/daemon/cmdserver --daemon
添加开机起动
echo "/var/www/extsuite/extman/daemon/cmdserver -v -d" >> /etc/rc.d/rc.local

系统控制 服务状态 都是叉
extman/daemon/cmd_plugin/linux-cmd里相关路径
my $web_init = '/etc/init.d/httpd';
my $mta_init = '/etc/init.d/postfix';
my $fcgi_init = '/var/www/extsuite/extmail/dispatch-init';
my $slockd_init = '/usr/local/slockd/slockd-init';
my $dspam_init = '/etc/init.d/dspamd';
my $mysql_init = '/etc/init.d/mysqld';
my $ldap_init = '/etc/init.d/ldap';
修改成对应的路径

安装SpamAssassin
cd /root/src/
tar zxvf Mail-SpamAssassin-3.3.1.tar.gz
cd Mail-SpamAssassin-3.3.1
perl Makefile.PL
REQUIRED module missing: Digest::SHA
REQUIRED module missing: HTML::Parser
REQUIRED module missing: Net::DNS
REQUIRED module missing: NetAddr::IP
REQUIRED module missing: Archive::Tar
REQUIRED module missing: IO::Zlib
optional module missing: Digest::SHA
optional module missing: Mail::SPF
optional module missing: IP::Country
optional module missing: Razor2
optional module missing: Net::Ident
optional module missing: IO::Socket::INET6
optional module missing: IO::Socket::SSL
optional module missing: Compress::Zlib
optional module missing: Mail::DKIM
optional module missing: LWP::UserAgent
optional module missing: HTTP::Date
optional module missing: Encode::Detect

cpan Digest::SHA
|
|
cpan Encode::Detect

关于cpan Mail::SPF
Prereq 'v0.002.1' for 'Net::DNS::Resolver::Programmable' is not supported by Module::Build::Compat

cpan Net::DNS::Resolver::Programmable
cpan Error
perl -MCPAN -e "get(Mail::SPF)"
cd /root/.cpan/build/Mail-SPF-v2.007/
perl Build.PL
./Build
./Build test
./Build installdeps before
./Build install

关于Razor2
cpan Razor2::Client::Agent

perl Makefile.PL
make
make install

wget -N -P /usr/share/spamassassin www.ccert.edu.cn/spam/sa/Chinese_rules.cf

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

测试spamassassin
spamassassin -t < sample-nonspam.txt > nonspam.out
spamassassin -t < sample-spam.txt > spam.out
查看测试结果:
less nonspam.out
less spam.out
检查配置文件
spamassassin -d --lint
Apr  2 03:37:01.120 [3272] warn: config: failed to parse line, skipping, in "/etc/mail/spamassassin/local.cf": rewrite_subject 1
Apr  2 03:37:01.296 [3272] warn: lint: 1 issues detected, please rerun with debug enabled for more information
正常没有输出 

查看

ps -aux | grep spamd

 

安装clamav
groupadd clamav
useradd -g clamav -s /sbin/nologin -M clamav
groupadd amavis
useradd -g amavis -s /sbin/nologin -M amavis

cd /root/src
tar zxvf clamav-0.96.5.tar.gz
cd clamav-0.96.5
./configure --prefix=/usr/local/clamav --with-dbdir=/usr/local/share/clamav --sysconfdir=/usr/local/clamav/etc --disable-zlib

-vcheck

make
make install

建立日志所在的目录、进程与socket所在的目录,并让它属于clamav用户
#!/bin/bash
# create directory for clamav
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

cd /usr/local/clamav/etc

vi clamd.conf
LogFile /var/log/clamav/clamd.log
LogSyslog yes
LogFacility LOG_MAIL
LogVerbose yes
PidFile /var/run/clamav/clamd.pid
DatabaseDirectory /usr/local/share/clamav
LocalSocket /var/run/clamav/clamd.socket
StreamMaxLength 20M
User amavis
ScanELF yes
ScanPDF yes
ScanMail yes
PhishingSignatures yes

vi freshclam.conf
DatabaseDirectory /usr/local/share/clamav
UpdateLogFile /var/log/clamav/freshclam.log
LogVerbose yes
LogSyslog yes
LogFacility LOG_MAIL
PidFile /var/run/freshclam.pid
DatabaseOwner amavis
DatabaseMirror db.CN.clamav.net
DatabaseMirror database.clamav.net
DatabaseMirror database.clamav.net

/usr/local/clamav/bin/freshclam  手动更新

crontab -e 定时更新
00 23 * * * /usr/local/clamav/bin/freshclam

配置库文件搜索路径
echo "/usr/local/clamav/lib" >> /etc/ld.so.conf
ldconfig
ldconfig -v
启动
/usr/local/clamav/sbin/clamd start
配置clamav开机启动
echo "/usr/local/clamav/sbin/clamd start" >> /etc/rc.local

安装amavisd-new
创建运行时需要的目录

cd /root/src/
tar zxvf amavisd-new-2.6.4.tar.gz
cd amavisd-new-2.6.4
#!/bin/bash
cd /root/postfix/amavisd-new-2.6.4
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

vi /etc/amavisd.conf
$daemon_user = 'amavis';
$daemon_group = 'amavis';
$mydomain = 'ctt.cnn';
$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"],

? DetectPUA yes     //去掉前面的注释  此版本没有
启用ClamAV,(大概在第363行)修改如下5行:
['ClamAV-clamd',
/&ask_daemon, ["CONTSCAN {}/n", "/var/run/clamav/clamd.socket"],
qr//bOK$/, qr//bFOUND$/,
qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ],
['Mail::ClamAV', /&ask_clamav, "*", [0], [1], qr/^INFECTED: (.+)/],

测试启动amavisd
/usr/local/sbin/amavisd debug
IO::Stringy
  MIME::Words
  MIME::Head
  MIME::Body
  MIME::Entity
  MIME::Parser
  MIME::Decoder
  MIME::Decoder::Base64
  MIME::Decoder::Binary
  MIME::Decoder::QuotedPrint
  MIME::Decoder::NBit
  MIME::Decoder::UU
  MIME::Decoder::Gzip64
  Net::Server
  Net::Server::PreFork

cpan IO::Stringy
cpan MIME::Words
cpan Net::Server
安装 Convert::BinHex
tar zxvf Convert-BinHex-1.119.tar.gz
cd Convert-BinHex-1.119
perl Makefile.PL
make
make install

cpan BerkeleyDB
cpan Convert::TNEF
cpan Convert::UUlib
cpan Archive::Zip

/usr/local/sbin/amavisd debug

开机启动
cp amavisd_init.sh  /etc/rc.d/init.d/amavisd
chmod +x /etc/rc.d/init.d/amavisd

vi /etc/rc.d/init.d/amavisd
#prog="/usr/sbin/amavisd"
prog="/usr/local/sbin/amavisd"

chkconfig --add amavisd

chkconfig --levels 345 amavisd on
service amavisd start

修改master.cf
vi /etc/postfix/master.cf

smtp-amavis unix    -    -    n    -    3    smtp
    -o smtp_data_done_timeout=1200
    -o smtp_send_xforward_command=yes
    -o disable_dns_lookups=yes
    -o max_use=10

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

修改main.cf
vi /etc/postfix/main.cf
# Content-Filter
content_filter = smtp-amavis:[127.0.0.1]:10024
receive_override_options = no_address_mappings

定制webmail页面

SYS_SHOW_SIGNUP =
# 首页“注册免费邮箱”的按钮显示开关;1为显示,0为关闭;
关闭 注册免费邮箱
vi /var/www/extsuite/extmail/webmail.cf
SYS_SHOW_SIGNUP =0

<!--    -->注释

 

main.cf文件内容

command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
html_directory = no
mail_owner = postfix
mailq_path = /usr/bin/mailq
manpage_directory = /usr/local/man
newaliases_path = /usr/bin/newaliases
queue_directory = /var/spool/postfix
readme_directory = no
sample_directory = /etc/postfix
sendmail_path = /usr/sbin/sendmail
setgid_group = postdrop

unknown_local_recipient_reject_code = 550

##############################BASE################################
myhostname = mail.96090.com
mydomain = 96090.com
mydestination = $myhostname, localhost.$mydomain, localhost
local_recipient_maps =
inet_interfaces = all
myorigin = $mydomain
mynetworks = 192.168.15.0/24 127.0.0.1

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

#######################################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:1000
virtual_gid_maps = static:1000
virtual_transport = maildrop
maildrop_destination_recipient_limit = 1
maildrop_destination_concurrency_limit = 1

# Content-Filter
content_filter = smtp-amavis:[127.0.0.1]:10024
receive_override_options = no_address_mappings

 

master.cf文件内容

[root@mail ~]# more /etc/postfix/master.cf | sed -n '/^#/!p'


smtp      inet  n       -       n       -       -       smtpd
pickup    fifo  n       -       n       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
qmgr      fifo  n       -       n       300     1       qmgr
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       bounce
verify    unix  -       -       n       -       1       verify
flush     unix  n       -       n       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       -       proxymap
smtp      unix  -       -       n       -       -       smtp
relay     unix  -       -       n       -       -       smtp
        -o smtp_fallback_relay=
showq     unix  n       -       n       -       -       showq
error     unix  -       -       n       -       -       error
retry     unix  -       -       n       -       -       error
discard   unix  -       -       n       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
scache    unix  -       -       n       -       1       scache
maildrop  unix  -       n       n       -       -       pipe
  flags=DRhu user=vuser argv=/usr/bin/maildrop -d ${recipient}

smtp-amavis unix    -    -    n    -    3    smtp
    -o smtp_data_done_timeout=1200
    -o smtp_send_xforward_command=yes
    -o disable_dns_lookups=yes
    -o max_use=10

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

 image

设置本机防火墙

#!/bin/bash
INIF="eth0"
iptables -F
iptables -X
iptables -Z
iptables -P INPUT   DROP
iptables -P OUTPUT  ACCEPT
iptables -P FORWARD ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

#allow some types of ICMP
AICMP="0 3 3/4 4 11 12 14 16 18"
  for tyicmp in $AICMP
  do
        iptables -A INPUT -i $INIF -p icmp --icmp-type $tyicmp -j ACCEPT
  done
#allow some servers in
iptables -A INPUT -p TCP -i $INIF --dport  25  --sport 1024:65534 -j ACCEPT     # SMTP
iptables -A INPUT -p TCP -i $INIF --dport  110  --sport 1024:65534 -j ACCEPT     # POP3
iptables -A INPUT -p TCP -i $INIF --dport  80  --sport 1024:65534 -j ACCEPT     # WWW

iptables -A INPUT -p TCP -i $INIF --dport  22  --sport 1024:65534 -j ACCEPT     # ssh

#iptables.all
#iptables -A INPUT       -i $INIF -s 140.116.44.253 -j ACCEPT
#iptables.deny
#iptables -A INPUT        -i $INIF -s 140.116.44.125  -j DROP

开机执行

echo "/usr/local/src/iptables.sh " >> /etc/rc.local

备份数据库和邮件

创建备份目录

mkdir –p /var/data_bk/mysqlbk

mkdir –p /var/data_bk/mailbk

备份脚本

#!/bin/bash
BackupPath=/var/data_bk
Mysql_bk_dir=$BackupPath/mysqlbk
Mail_bk_dir=$BackupPath/mailbk
LogFile=$BackupPath/backuplog
MailBoxDir=/var/mailbox

####################################################################
# define mysql variables                                                     #
####################################################################
NewFile="$Mysql_bk_dir"/extmail$(date +%Y%m%d).tgz
DumpFile="$Mysql_bk_dir"/extmail$(date +%Y%m%d).sql
OldFile="$Mysql_bk_dir"/extmail$(date +%Y%m%d --date='5 days ago').tgz
DbUser=root
DbPasswd=*******
DbName=extmail
####################################################################
#   mysql backup proccess                                                 #
####################################################################
echo "-------------------------------------------" >> $LogFile
echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile
echo "--------------------------" >> $LogFile
#Delete Old File
if [ -f $OldFile ]
then
   rm -f $OldFile >> $LogFile 2>&1
   echo "[$OldFile]Delete Old File Success!" >> $LogFile
else
   echo "[$OldFile]No Old Backup File!" >> $LogFile
fi

if [ -f $NewFile ]
then
   echo "[$NewFile]The Backup File is exists,Can't Backup!" >> $LogFile
else
cd $Mysql_bk_dir
/usr/local/mysql/bin/mysqldump -u $DbUser -p$DbPasswd --opt $DbName > $DumpFile
    tar czf $NewFile extmail$(date +%Y%m%d).sql >> $LogFile 2>&1
    echo "[$NewFile]Backup Success!" >> $LogFile
    rm -rf $DumpFile
fi

######################################################################
#     backup mail's user directories and files                                     #
######################################################################
MailFileBk=$Mail_bk_dir/mail$(date +%Y%m%d).tgz
OldMailFileBk=$Mail_bk_dir/mail$(date +%Y%m%d --date='14 days ago').tgz

if [ -f $OldMailFileBk ]
then
   rm -rf $OldMailFileBk
fi

if [  -f $MailFileBk ]
   then
   echo "[$MailFileBk]The Backup File is exists,Can't Backup!" >> $LogFile
   else
   cd $Mail_bk_dir
   tar czf $MailFileBk mailbox  >> $LogFile 2>&1
fi

echo "-------------------------------------------" >> $LogFile

添加执行计划

crontab –e

00 01 * * * /usr/local/src/data_backup.sh

 

问题

web可以接收发送邮件
smtp 不可以发送邮件
pop3 可以接收邮件

warning: SASL authentication failure: cannot connect to Courier authdaemond: Permission denied

执行

chmod +x /usr/local/courier-authlib/var/spool/authdaemon

参考
http://wenku.baidu.com/view/a2543c170b4e767f5acfce1f.html
http://124.232.150.96/post/16/
http://sery.blog.51cto.com/10037/45500
http://www.postfixvirtual.net/mysqlinstall.html
http://wiki.extmail.org/extmail_solution_for_linux_centos-5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值