Centos 6.2_X86_64 编译安装postfix+amavisd-new+clamav

系统环境

CENTOS6.2 X86-64 并已经使用yum安装配置好LNMP环境

以下是安装所使用的部分软件包

shell>cd /usr/local/src

shell>wget http://jaist.dl.sourceforge.net/project/courier/imap/4.16.0/courier-imap-4.16.0.tar.bz2

shell>wget ftp://ftp.cuhk.edu.hk/pub/packages/mail-server/postfix/official/postfix-2.11.4.tar.gz

shell>wget http://cznic.dl.sourceforge.net/project/courier/authlib/0.66.1/courier-authlib-0.66.1.tar.bz2

shell>wget ftp://ftp.cyrusimap.org/cyrus-sasl/cyrus-sasl-2.1.26.tar.gz

shell>wget ftp://ftp.cuhk.edu.hk/pub/packages/mail-server/postfix/official/postfix-2.11-patch04.gz

shell>wget http://cznic.dl.sourceforge.net/project/courier/courier-unicode/1.1/courier-unicode-1.1.tar.bz2

shell>wget http://jaist.dl.sourceforge.net/project/courier/maildrop/2.8.1/maildrop-2.8.1.tar.bz2

shell>wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.35.tar.bz2

shell>wget ftp://ftp.funet.fi/pub/languages/perl/CPAN/modules/by-module/DBD/DBD-mysql-4.031.tar.gz

shell>wget ftp://ftp.funet.fi/pub/languages/perl/CPAN/modules/by-module/DBI/DBI-1.633.tar.gz

shell>wget http://www.cpan.org/modules/by-module/FCGI/FCGI-0.77.tar.gz

shell>wget http://search.cpan.org/CPAN/authors/id/G/GB/GBJK/FCGI-ProcManager-0.25.tar.gz

shell>wget http://search.cpan.org/CPAN/authors/id/I/IN/INGY/IO-All-0.86.tar.gz

shell>wget http://www.cpan.org/authors/id/M/MH/MHARNISCH/Unix-Syslog-1.1.tar.gz

shell>wget http://www.cpan.org/authors/id/M/MG/MGRABNAR/File-Tail-1.0.tar.gz

shell>wget http://jaist.dl.sourceforge.net/project/clamav/clamav/0.98.6/clamav-0.98.6.tar.gz

shell>wget http://www.ijs.si/software/amavisd/amavisd-new-2.10.1.tar.xz

shell>wget http://www.cpan.org/authors/id/J/JM/JMEHNLE/mail-spf/Mail-SPF-v2.9.0.tar.gz

安装前准备工作

shell>yum -y groupinstall "Development tools"

shell>yum install libtool #安装courier-authlib须要

shell>yum install libtool-ltdl-devel #安装courier-authlib须要

shell>yum install expect #安装courier-authlib须要

shell>yum install gdbm-devel

shell>yum install libidn-devel

shell>yum install mysql-devel

shell>yum -y install db4-devel

创建组

shell>groupadd postfix -g 1000

shell>groupadd postdrop -g 1002

shell>useradd postfix -u 1000 -g postfix -G postdrop

shell>groupadd vmail -g 1001

shell>useradd vmail -u 1001 -g 1001 -M -s /bin/false

配置配置Nginx支持FCGI

shell>yum install perl-ExtUtils-Embed

shell>yum install perl-CGI

shell>cd /usr/local/src/

shell>tar -zxvf FCGI-0.77.tar.gz

shell>cd FCGI-0.77

shell>perl Makefile.PL

shell>make && make install

shell>cd ..

shell>tar -zxvf FCGI-ProcManager-0.25.tar.gz

shell>cd FCGI-ProcManager-0.25

shell>perl Makefile.PL

shell>make && make install

shell>cd ..

shell>tar zxvf IO-All-0.86.tar.gz

shell>cd IO-All-0.86

shell>perl Makefile.PL

shell>make && make install

shell>tar -zxvf Unix-Syslog-1.1.tar.gz

shell>cd Unix-Syslog-1.1

shell>perl Makefile.PL

shell>make && make install

shell>cd ..

shell>tar -zxvf DBD-mysql-4.031.tar.gz

shell>cd DBD-mysql-4.031

shell>perl Makefile.PL

shell>make && make install

shell>cd ..

shell>tar -zxvf DBI-1.633.tar.gz

shell>cd DBI-1.633

shell>perl Makefile.PL

shell>make && make install

卸载系统自带的POSTFIX

shell>rpm -qa |grep postfix

shell>groupadd -g 1000 postfix

shell>useradd -g postfix -u 1000 postfix -s /sbin/nologin

shell>groupadd -g 1002 postdrop

安装courier-authlib

shell>cd /usr/local/src/

shell>tar -jxvf courier-authlib-0.66.1.tar.bz2

shell>cd courier-authlib-0.66.1

shell>./configure    --prefix=/usr/local/courier-authlib --with-mailuser=vmail --with-mailgroup=vmail   --without-stdheaderdir  --without-authpam    --without-authldap    --without-authpwd    --without-authshadow     --without-authpgsql --with-authmysql    --with-redhat    CFLAGS="-march=x86-64 -O2 -fexpensive-optimizations" CXXFLAGS="-march=x86-64 -O2 -fexpensive-optimizations"

shell>make

shell>make install

shell>make install-configure

shell>cd /usr/local/courier-authlib/etc/authlib/

shell>cp authdaemonrc authdaemonrc.back

shell>vi authdaemonrc

authmodulelist="authmysql"

authmodulelistorig="authmysql"

DEBUG_LOGIN=2

修改上面3项,其他的项保持不变。这个修改前2行表示用mysql认证模块;把DEBUG_LOGIN的值有默认的“0”改成“2”的用意是运行postfix时有更多的信息输出,通过生成的日志以帮助排错。

shell>cp authmysqlrc authmysqlrc.back

shell>vi authmysqlrc

MYSQL_SERVER localhost

MYSQL_USERNAME extmail

MYSQL_PASSWORD extmail

MYSQL_DATABASE extmail

MYSQL_SOCKET /var/lib/mysql/mysql.sock

MYSQL_PORT              3306

MYSQL_USER_TABLE mailbox

MYSQL_CRYPT_PWFIELD password  //这里需要注意

#MYSQL_CLEAR_PWFIELD password

DEFAULT_DOMAIN mail.test.com

MYSQL_UID_FIELD ‘1001’

MYSQL_GID_FIELD ‘1001’

MYSQL_LOGIN_FIELD username

MYSQL_HOME_FIELD ‘/var/mailbox/‘

MYSQL_NAME_FIELD name

MYSQL_MAILDIR_FIELD maildir

MYSQL_QUOTA_FIELD concat(quota,‘S‘)

MYSQL_WHERE_CLAUSE active=‘1‘

shell> ln -s /usr/local/courier-authlib/include/* /usr/include/

shell>cp courier-authlib.sysvinit /etc/init.d/courier-authlib

chmod +x /etc/init.d/courier-authlib

chkconfig --add courier-authlib

chkconfig courier-authlib on

service courier-authlib start

安装cyrus-sasl

先卸载系统自带的cyrus-sasl

shell>rpm -e cyrus-sasl

shell>rpm -e --nodeps cyrus-sasl-lib

shell>cd /usr/local/src/

shell>tar -zxvf cyrus-sasl-2.1.26.tar.gz

shell>cd cyrus-sasl-2.1.26

shell>./configure --prefix=/usr/local/sasl2 --disable-sample   --disable-digest --disable-gssapi --disable-anon --enable-plain --enable-login --enable-sql  --with-authdaemond=/usr/local/courier-authlib/var/spool/authdaemon/socket

shell>make

shell>make install

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

shell>ln -s /usr/local/sasl2/lib/sasl2 /usr/lib64/

shell>vi /etc/ld.so.conf

/usr/local/sasl2/lib/

/usr/local/sasl2/lib/sasl2

shell>ldconfig -v

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

pwcheck_method: authdaemond

mech_list: PLAIN LOGIN

log_level: 3

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

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

shell>mkdir -pv /var/state/saslauthd #创建运行时须要的目录

shell>/usr/local/sasl2/sbin/saslauthd -v #查看版本

shell>/usr/local/sasl2/sbin/saslauthd -a shadow pam -d #测试,正常的话不会报错,如果没有报错.crtl+c结束掉进程

shell>/usr/local/sasl2/sbin/saslauthd -a shadow pam

shell>/usr/local/sasl2/sbin/testsaslauthd -u root -p 123456 #正常显示0: OK "Success"表示成功(此处输入的是系统登录账号root 的密码,不是指的MySQL账号密码。否则会提示:

0: NO "authentication failed",同时,注意这里测试不用开启authdaemond(authlib)

shell>echo "/usr/local/sasl2/sbin/saslauthd -a shadow pam" >>/etc/rc.local

下载安装相同版本的VDA补丁,使postfix支持磁盘限额,如果未安装该补丁,POSTFIX配置磁盘限额后启动POSTFIX会报错

shell>tar -zxvf postfix-2.11.4.tar.gz

shell>wget http://vda.sourceforge.net/VDA/postfix-vda-v13-2.11.4.patch

shell>patch -p1 <postfix-vda-v13-2.11.4.patch

安装postfix

shell>cd postfix-2.11.4

shell>mkdir /var/mailbox

shell>chown vmail:vmail /var/mailbox/

shell>make Makefiles ‘CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/local/sasl2/include/sasl‘ ‘AUXLIBS=-L/usr/lib64/mysql -lmysqlclient -lz -lm -L/usr/local/sasl2/lib -lsasl2‘

shell>make

shell>make install #默认回车完成安装

shell>mv /etc/aliases /etc/aliases.old

shell>ln -s /etc/postfix/aliases /etc/aliases

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

shell>/usr/sbin/postconf -a #正常显示 cyrus dovecot

shell>/usr/sbin/postconf -m |grep mysql #正常显示 mysql

安装IMAP,须要先安装courier-unicode,不然会报错

shell>tar -jxvf courier-unicode-1.1.tar.bz2

shell>cd courier-unicode-1.1

shell>./configure

shell>make

shell>make install

安装courier-imap

shell>tar -jxvf courier-imap-4.16.0.tar.bz2

shell>cd courier-imap-4.16.0

shell>./configure --prefix=/usr/local/courier-imap  --with-redhat --enable-unicode=utf-8,iso-8859-1,gb2312,gbk,gb18030 --disable-root-check --with-trashquota --with-dirsync  --with-authmysql --with-authmysql=yes --without-ipv6 CPPFLAGS=‘-I/usr/local/courier-authlib/include‘ COURIERAUTHCONFIG=‘/usr/local/courier-authlib/bin/courierauthconfig‘

shell>make

shell>make install

shell>make install-configure

shell>vi /usr/local/courier-imap/etc/pop3d

POP3DSTART=YES

MAILDIRPATH=/var/mailbox

shell>vi /usr/local/courier-imap/etc/imapd

IMAPDSTART=YES

MAILDIRPATH=/var/mailbox

shell>cp /usr/local/src/courier-imap-4.16.0/packaging/systemd/courier-imap.sysvinit /etc/rc.d/init.d/imapd

shell>chmod +x /etc/rc.d/init.d/imapd

shell>chkconfig --add imapd

shell>chkconfig imapd on

shell>cd /usr/local/courier-imap/share

shell>./mkdhparams

shell>service imapd start

shell>netstat -tnl |egrep "110|143"

安装maildrop

shell>cp /lib64/libpcre.so.0 /lib64/libpcre.so.0-old

shell>rpm -e --nodeps pcre

shell>tar -jxvf pcre-8.35.tar.bz2

shell>cd pcre-8.35

shell>./configure

shell>make

shell>make install

shell>ln -s /usr/local/courier/bin/courierauthconfig /usr/bin/courierauthconfig #这条命令很重要,没有正常执行的话下面测试的时候Courier Authentication不会出现

shell>tar -jxvf maildrop-2.8.1.tar.bz2

shell>cd maildrop-2.8.1

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

shell>make

shell>make install

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

shell>ldconfig -v

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

shell>vi /etc/maildroprc

logfile "/var/log/maildrop.log"

to "$HOME/Maildir"

shell>touch /var/log/maildrop.log

shell>chown vmail:vmail /var/log/maildrop.log

安装配置extmail、extman

shell>mkdir /var/www/extsuite

shell>mount -o username=administrator,password=密码 //192.168.1.103/download /mnt/

shell>cp /mnt/extma* .

shell>tar -zxvf extmail-1.2.tar.gz -C /var/www/extsuite

shell>cd /var/www/extsuite/

shell>mv extmail-1.2/ extmail

shell>cp extsuite/extmail/webmail.cf.default webmail.cf

shell>chown -R vmail:vmail /var/www/extsuite/extmail/

shell>chmow +x R /var/www/extsuite/extmail/cgi

shell>cp nginx.conf nginx.conf-2015-03-26

shell>vi nginx.conf

user  vmail vmail;

worker_processes 8;

#error_log  /usr/local/nginx/logs/nginx_error.log  crit;

error_log  /usr/local/nginx/logs/nginx_error.log  info;

pid        /usr/local/nginx/nginx.pid;

#Specifies the value for maximum file descriptors that can be opened by this process.

worker_rlimit_nofile 51200;

events

{

use epoll;

worker_connections 51200;

}

http

{

include       mime.types;

default_type  application/octet-stream;

#charset  gb2312;

server_names_hash_bucket_size 128;

client_header_buffer_size 32k;

large_client_header_buffers 4 32k;

client_max_body_size 8m;

sendfile on;

tcp_nopush     on;

keepalive_timeout 60;

tcp_nodelay on;

fastcgi_connect_timeout 300;

fastcgi_send_timeout 300;

fastcgi_read_timeout 300;

fastcgi_buffer_size 64k;

fastcgi_buffers 4 64k;

fastcgi_busy_buffers_size 128k;

fastcgi_temp_file_write_size 128k;

gzip on;

gzip_min_length  1k;

gzip_buffers     4 16k;

gzip_http_version 1.0;

gzip_comp_level 2;

gzip_types       text/plain application/x-javascript text/css application/xml;

gzip_vary on;

修改NGINX以及php-fpm所属用户及组为vmail,并修改相应文件属主,php-fpm配置文件www.conf,否则NGINX无法启动

shell>find / -gid 498 -exec chown :vmail {} \; #将所有属组为NGINX的文件的属组修改为vmail

shell>find / -uid 498 -exec chown vmail {} \; #将所有属主为NGINX的文件的属主修改为vmail

shell>cd conf.d/

shell>vi extmail.conf

server

{

listen       80;

server_name  mail.test.com;

index index.html index.htm index.php index.cgi;

root  /var/www/extsuite/extmail/html/;

location  /extmail/cgi/ {

fastcgi_pass  127.0.0.1:12009;

fastcgi_index         index.cgi;

fastcgi_param  SCRIPT_FILENAME   /var/www/extsuite/extmail/cgi/$fastcgi_script_name;

include fastcgi.conf;

}

location   ^~ /extmail/ {

alias  /var/www/extsuite/extmail/html/;

}

location /extman/cgi/ {

fastcgi_pass  127.0.0.1:12009;

fastcgi_index         index.cgi;

fastcgi_param  SCRIPT_FILENAME   /var/www/extsuite/extman/cgi/$fastcgi_script_name;

include fastcgi.conf;

}

location ^~ /extman/ {

alias  /var/www/extsuite/extman/html/;

}

location ^~ /status {

stub_status on;

access_log   off;

allow 192.168.0.0/24;

#deny all;

}

location ~ .*\.(php|php5)?$

{

#fastcgi_pass  unix:/tmp/php-cgi.sock;

fastcgi_pass  127.0.0.1:12009;

fastcgi_index index.cgi;

include fastcgi.conf;

}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

{

expires      30d;

}

location ~ .*\.(js|css)?$

{

expires      1h;

}

}

shell>vi /var/www/extsuite/extmail/dispatch-init

MAXFORK=20

MAXREQS=500

TIMEOUT=300

PORT=12009  #端口号与extmail.conf文件保持一致,

SU_UID=vmail

SU_GID=vmail

shell>tar -zxvf extman-1.1.tar.gz -C /var/www/extsuite

shell>mv extman-1.1/ extman

shell>chown -R vmail:vmail /var/www/extsuite/extman/

shell>mkdir -pv /tmp/extman

shell>chown -R vmail:vmail /tmp/extman/

shell>cd /var/www/extsuite/extman/docs/

shell>cp init.sql init.sql.back

shell>vi init.sql

更改init.sql中extmail.org的名称为自已域名

shell>vi extmail.sql

/*

ExtMail - OSS

License: GPL v2

This is the MySQL database structure for ExtMail System, derive from

Postfixadmin ( http://high5.net/howto/ ) project, and modify to meet

our need, it is compatible with PostfixAdmin MySQL structure and have

some extmail specific attributes and structure

ExtMail have an alternative solution on openLDAP, please check the

extmail.schema (V3) for detail.

You can create the database from the shell with:

mysql -u root [-p] < extmail.sql

*/

/*

Initialize mysql

*/

USE mysql;

/* readonly user & password */

/* clean user if exists */

delete FROM user where User in (‘extmail‘,‘webman‘);

delete FROM db where User in (‘extmail‘,‘webman‘);

INSERT INTO user (Host, User, Password) VALUES (‘localhost‘,‘extmail‘,password(‘extmail‘));

INSERT INTO db (Host, Db, User, Select_priv) VALUES (‘localhost‘,‘extmail‘,‘extmail‘,‘Y‘);

/* extman read/write user & password */

INSERT INTO user (Host, User, Password) VALUES (‘localhost‘,‘webman‘,password(‘webman‘));

INSERT INTO db (Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv) VALUES (‘localhost‘, ‘extmail‘, ‘webman‘, ‘Y‘, ‘Y‘, ‘Y‘, ‘Y‘);

FLUSH PRIVILEGES;

/* readonly user */

GRANT USAGE ON extmail.* TO [email protected];

GRANT SELECT, UPDATE ON extmail.* TO [email protected];

/* read/write user */

GRANT USAGE ON extmail.* TO [email protected];

GRANT SELECT, INSERT, DELETE, UPDATE ON extmail.* TO [email protected];

CREATE DATABASE extmail;

USE extmail;

/* Table structure for table manager */

CREATE TABLE manager (

username varchar(255) NOT NULL default ‘‘,

password varchar(255) NOT NULL default ‘‘,

type varchar(64) NOT NULL default ‘postmaster‘,

uid varchar(255) NOT NULL default ‘‘,

name varchar(255) NOT NULL default ‘‘,

question text NOT NULL default ‘‘,

answer text NOT NULL default ‘‘,

disablepwdchange smallint(1),

createdate datetime NOT NULL default ‘0000-00-00 00:00:00‘,

expiredate DATE NOT NULL default ‘0000-00-00‘,

active tinyint(1) NOT NULL default ‘1‘,

PRIMARY KEY (username)

) ENGINE=MyISAM COMMENT=‘Ext/Webman - Admin Accounts‘;

CREATE TABLE alias (

address varchar(255) NOT NULL default ‘‘,

goto text NOT NULL,

domain varchar(255) NOT NULL default ‘‘,

createdate datetime NOT NULL default ‘0000-00-00 00:00:00‘,

active tinyint(1) NOT NULL default ‘1‘,

PRIMARY KEY (address)

) ENGINE=MyISAM COMMENT=‘ExtMail - Virtual Aliases‘;

CREATE TABLE domain (

domain varchar(255) NOT NULL default ‘‘,

description varchar(255) NOT NULL default ‘‘,

hashdirpath varchar(255) NOT NULL default ‘‘,

maxalias int(10) NOT NULL default ‘0‘,

maxusers int(10) NOT NULL default ‘0‘,

maxquota varchar(16) NOT NULL default ‘0‘,

maxnetdiskquota varchar(16) NOT NULL default ‘0‘,

transport varchar(255) default NULL,

can_signup tinyint(1) NOT NULL default ‘0‘,

default_quota varchar(255) default NULL,

default_netdiskquota varchar(255) default NULL,

default_expire varchar(12) default NULL,

disablesmtpd smallint(1),

disablesmtp smallint(1),

disablewebmail smallint(1),

disablenetdisk smallint(1),

disableimap smallint(1),

disablepop3 smallint(1),

createdate datetime NOT NULL default ‘0000-00-00 00:00:00‘,

expiredate DATE NOT NULL default ‘0000-00-00‘,

active tinyint(1) NOT NULL default ‘1‘,

PRIMARY KEY (domain)

) ENGINE=MyISAM COMMENT=‘ExtMail - Virtual Domains‘;

CREATE TABLE domain_manager (

username varchar(255) NOT NULL default ‘‘,

domain varchar(255) NOT NULL default ‘‘,

createdate datetime NOT NULL default ‘0000-00-00 00:00:00‘,

active tinyint(1) NOT NULL default ‘1‘,

KEY username (username)

) ENGINE=MyISAM COMMENT=‘Ext/Webman - Domain Admins‘;

CREATE TABLE mailbox (

username varchar(255) NOT NULL default ‘‘,

uid varchar(255) NOT NULL default ‘‘,

password varchar(255) NOT NULL default ‘‘,

clearpwd varchar(128) NOT NULL default ‘‘,

name varchar(255) NOT NULL default ‘‘,

mailhost varchar(255) NOT NULL default ‘‘,

maildir varchar(255) NOT NULL default ‘‘,

homedir varchar(255) NOT NULL default ‘‘,

quota varchar(16) NOT NULL default ‘0‘,

netdiskquota varchar(16) NOT NULL default ‘0‘,

domain varchar(255) NOT NULL default ‘‘,

uidnumber int(6) NOT NULL default ‘1000‘,

gidnumber int(6) NOT NULL default ‘1000‘,

createdate datetime NOT NULL default ‘0000-00-00 00:00:00‘,

expiredate DATE NOT NULL default ‘0000-00-00‘,

active smallint(1) NOT NULL default ‘1‘,

disablepwdchange smallint(1),

disablesmtpd smallint(1),

disablesmtp smallint(1),

disablewebmail smallint(1),

disablenetdisk smallint(1),

disableimap smallint(1),

disablepop3 smallint(1),

question text NOT NULL default ‘‘,

answer text NOT NULL default ‘‘,

PRIMARY KEY (username)

) ENGINE=MyISAM COMMENT=‘ExtMail - Virtual Mailboxes‘;

shell>mysql -u root -p <extmail.sql

shell>mysql -u root -p <init.sql

shell>vi extmail/webmail.cf

SYS_USER_LANG = en_US  改为SYS_USER_LANG = zh_CN

SYS_MAILDIR_BASE = /home/domains 右边改为 /var/mailbox

SYS_MYSQL_USER = db_user 右边改为extmail

SYS_MYSQL_PASS = db_pass    右边改为extmail

SYS_AUTHLIB_SOCKET = /usr/local/courier-authlib/var/spool/authdaemon/socket

shell>cd ../../extman/

shell>cp webman.cf.default webman.cf

shell>vi webman.cf

SYS_MAILDIR_BASE = /home/domains 右边改为/var/mailbox

SYS_DEFAULT_UID = 1001

SYS_DEFAULT_GID = 1001

SYS_CAPTCHA_ON = 0          //关闭图形验证码

shell>/var/www/extsuite/extmail/dispatch-init start

shell>service nginx restart

配置postfix

shell> vi /etc/postfix/master.cf

maildrop  unix  -       n       n       -       -       pipe

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

shell> vi /etc/postfix/main.cf

queue_directory = /var/spool/postfix

command_directory = /usr/sbin

daemon_directory = /usr/libexec/postfix

data_directory = /var/lib/postfix

mail_owner = postfix

myhostname = njjnyy.cn

mydomain = njjnyy.cn

myorigin = $mydomain

inet_interfaces = all

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

mydestination =

unknown_local_recipient_reject_code = 550

mynetworks = 192.168.0.0/24,127.0.0.0/8

relay_domains = $mydestination    无

alias_maps = $alias_database 无

defer_transports = 无

mail_spool_directory = /var/spool/mail 无

debug_peer_level = 2

debugger_command =

PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin

ddd $daemon_directory/$process_name $process_id & sleep 5

sendmail_path = /usr/sbin/sendmail

newaliases_path = /usr/bin/newaliases

mailq_path = /usr/bin/mailq

setgid_group = postdrop

html_directory = no

manpage_directory = /usr/local/man

sample_directory = /etc/postfix

readme_directory = no

############################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 = $mydomain

smtpd_sasl_security_options = noanonymous

#smtpd_sasl_application_name = smtpd

smtpd_banner = Welcome to our $myhostname ESMTP,Warning: Version not Available!

#############################SASL-END##############################

#############################Virtual Mailbox Settings################

virtual_mailbox_base = /var/mailbox

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

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

virtual_alias_domains=

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

virtual_uid_maps = static:1001       #vmail

virtual_gid_maps = static:1001       #vmai

virtual_transport = maildrop

maildrop_destination_recipient_limit = 1

maildrop_destination_concurrency_limit = 1

#################################Mailbox END###########################

#################################Quota Settings########################

message_size_limit = 200000000

virtual_mailbox_limit = 20971520

virtual_create_maildirsize = yes

virtual_mailbox_extended = yes

virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql/mysql_virtual_mailbox_limit_maps.cf

virtual_mailbox_limit_override = yes

virtual_maildir_limit_message = Sorry, the user‘s maildir has overdrawn his diskspace quota, please try again later.

virtual_overquota_bounce = yes

################################Quota END############################

################################Amavis Start##########################

content_filter=amavisfeed:[127.0.0.1]:10024

max_use=10

################################Amavis END###########################

测试邮件账号

shell>/usr/local/courier-authlib/sbin/authtest -s smtp [email protected] l123456

正常显示如下:

Authentication succeeded.

Authenticated: [email protected]  (uid 1001, gid 1001)

Home Directory: /var/mailbox/njjnyy.cn/lxb

Maildir: /var/mailbox/njjnyy.cn/lxb/Maildir/

Quota: 5242880S

Encrypted Password: $1$Ynp2/b/r$5DHAdX18fsbJMR98CU.1o/

Cleartext Password: a123456

安装webmail图形化日志

shell>yum install rrdtool

shell>yum install rrdtool-perl

shell>yum install perl-Time-HiRes

shell>cd /usr/local/src/

shell>tar -zxvf File-Tail-1.0.tar.gz

shell>cd  File-Tail-1.0

shell>perl Makefile.PL

shell>make && make install

shell>cp -r /var/www/extsuite/extman/addon/mailgraph_ext /usr/local/

shell>/var/www/extsuite/extman/daemon/cmdserver -d

shell>/usr/local/mailgraph_ext/mailgraph-init start

shell>echo "/var/www/extsuite/extman/daemon/cmdserver -d" >>/etc/rc.local

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

extmail登录界面修改

1 修改文件:/var/www/extsuite/extmail/html/default/index.html

设定默认域名

<TD><INPUT TYPE="text" class="input_n" NAME="domain" value="njjnyy.cn"></TD>

其中的domain和example.com随自己实际情况进行更改。

POP3和SMTP设置信息提示

POP3 <b>:</b>& nbsp;& nbsp;pop3.yourdomain.com<br />

SMTP <b>:</b>& nbsp;& nbsp;smtp.yourdomain.com<br />

技术支持和自愿捐助连接,用<!-- -->注释掉。

<div class=donate> <a href="http://www.extmail.org/support/<%LANG%>/index.html" target="_blank"> <b><%support_link%></b></a> | <img style="vertical-align: middle" src="/extmail/images/donate.png"> <a

2 修改文件:/var/www/extsuite/extmail/webmail.cf

去除免费注册

修改位置:SYS_SHOW_SIGNUP = 1

修改结果:SYS_SHOW_SIGNUP = 0

去掉网络磁盘功能

修改位置:SYS_NETDISK_ON = 1

修改结果:SYS_NETDISK_ON = 0

3 更换logo标志

修改文件:/var/www/extsuite/extmail/html/default/images/logo.gif

修改内容:替换成需要的Logo图片文件

4 修改文件:/var/www/extsuite/extmail/lang/zh_CN

修改位置:

%lang_login = (

meta_title => ‘欢迎使用ExtMail‘

修改位置:

%lang_login = (

intro2 => ‘<b>快速而可靠</b><br />引入索引缓存(Cache)技术和高效核心,WebMail操作疾步如飞‘,

intro3 => ‘<b>多语言同屏读写</b><br />全面支持UTF8,实现同屏读写多国语言,真正做到国际邮、无乱码‘,

intro4 => ‘<b>真正模板化设计</b><br />MVC设计+高速模板引擎,实现了内容数据完全分离,轻松修改模板‘,

intro5 => ‘<b>高性能I/O</b><br />;轻松应付>1GB邮箱/200M附件,远强于流行的各式php webmail‘,

修改位置:

%lang_login = (

wsplash => ‘快速可靠, 高性能I/O

开源MAIL开足马力迈进中...‘,

修改位置:

%lang_login = (

welcome_index => ‘欢迎使用ExtMail!‘

5 修改文件:/var/www/extsuite/extmail/html/default/TOP_BAN.html

注释掉

href="http://www.extmail.org/support/<%LANG%>/about.html"><%about%></a> | <a target=_blank href="http://www.extmail.org/support/<%LANG%>/help.html"><%help%></a></span>

6修改文件:/var/www/extsuite/extmail/html/default/BOTTOM.html

<div id="Bcr">Powered by <%VERSION%> 2006 ExtMail.Org Runtime: <%TIME%><br>

<%extmail_whatis%></div>

上面内容可以根据页面底部的显示信息对比修改。

7 修改文件:/var/www/extsuite/extmail/html/default/welcome.html

去掉项目新闻 注释掉下面内容

<div style="padding-left: 5px;padding-right:5px">

<div class="panelout" id="etnews_div">

<div class="paneltit">&nbsp;ExtMail Project News</div>

<div class="panelin" id="etnews_container">

</div>

</div>

<script type="text/javascript">

etnews_init();

</script>

</div>

8 更换原天气预报代码

更换掉原来的这段代码

<TD  width=230px valign=top style="">

<div class="panelout" id="coolweather_div">

<div class="paneltit">&nbsp;<%weatherinfo%></div>

<div class="panelin" id="coolweather_container">

</div>

<script type="text/javascript">

coolweather_iconspath = ‘/extmail/plugins/coolweather/icons/‘;

coolweather_init();

</script>

</div>

</TD>

<TD width=10px></TD>

新的代码为

<TD  width=230px valign=top style="">

<iframe src="http://www.thinkpage.cn/weather/weather.aspx?c=BU5CI&l=&p=CMA&a=1&u=C&s=1&m=1&x=1&d=3&fc=&bgc=&bc=" frameborder="0" scrolling="no" width="200" height="260" allowTransparency="true">

</iframe>

</TD>

<TD width=10px></TD>

安装CLAMAV杀毒软件

shell>adduser -s /bin/false -c "Amavis User" -d /var/amavis amavis

shell>useradd -s/bin/false -d /dev/null clamav

shell>cd /usr/local/src/

shell>tar zxvf clamav-0.98.6.tar.gz

shell>./configure --prefix=/usr/local/clamav --with-dbdir=/usr/local/share/clamav

shell>make

shell>make install

shell>cp clamd.conf.sample clamd.conf

shell>vi clamd.conf

LogFile /var/log/clamav/clamd.log

LogTime yes

LogFacility LOG_MAIL

LogSyslog yes

LogVerbose yes

PidFile /var/run/clamd.pid

DatabaseDirectory /usr/local/share/clamav

LocalSocket /tmp/clamd.socket

StreamMaxLength 100M

User amavis

ScanMail yes

ScanArchive yes

shell>sed -e  ‘/^#/d‘ -e ‘/^$/d‘ clamd.conf #查看配置文件

shell>cp freshclam.conf.sample freshclam.conf

shell>vi freshclam.conf

DatabaseDirectory /usr/local/share/clamav

UpdateLogFile /var/log/clamav/freshclam.log

LogVerbose yes

LogSyslog yes

LogTime yes

PidFile /var/run/freshclam.pid

DatabaseOwner amavis

DatabaseMirror db.CN.clamav.net

DatabaseMirror database.clamav.net

Checks 12

shell>mkdir /usr/local/share/clamav

shell>mkdir /var/log/clamav

shell>chmod -R 744 /var/log/clamav

shell>chown -R amavis:amavis /var/log/clamav

shell>chown -R amavis.amavis /usr/local/share/clamav

shell>vi /etc/init.d/clamd

#! /bin/bash

#

# crond Start/Stop the clam antivirus daemon.

#

# chkconfig: 2345 90 60

# description: clamdis a standard UNIX program that scans for Viruses.

# processname: clamd

# config: /usr/local/clamav/etc/clamd.conf

# pidfile: /var/run/clamd.pid

# Source function library.

. /etc/init.d/functions

RETVAL=0

# See how we were called.

prog="clamd"

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

# Source configuration

if [ -f /etc/sysconfig/$prog ] ; then

. /etc/sysconfig/$prog

fi

start() {

echo -n $"Starting $prog: "

daemon $progdir/$prog

RETVAL=$?

echo

[ $RETVAL -eq 0 ] && touch /var/run/clamd.pid

return $RETVAL

}

stop() {

echo -n $"Stopping $prog: "

killproc $prog

RETVAL=$?

echo

[ $RETVAL -eq 0 ] && rm -f /var/run/clamd.pid

return $RETVAL

}

rhstatus() {

status clamd

}

restart() {

stop

start

}

reload() {

echo -n $"Reloading clam daemon configuration: "

killproc clamd -HUP

retval=$?

echo

return $RETVAL

}

case "$1" in

start)

start

;;

stop)

stop

;;

restart)

restart

;;

reload)

reload

;;

status)

rhstatus

;;

condrestart)

[ -f /var/lock/subsys/clamd ] && restart || :

;;

*)

echo $"Usage: $0 {start|stop|status|reload|restart|condrestart}"

exit 1

esac

exit 0

shell>chkconfig --add clamd

shell>chkconfig clamd on

shell>service clamd start

shell>/usr/local/clamav/bin/freshclam

安装amavisd-new amavisd-new是一个高性能、可靠的用于连接邮件传输代理和内容检查器之间的接口,例如邮件的病毒扫描、垃圾邮件过滤等等

查看已经安装的perl模块

shell>perldoc -t perllocal | grep "Module"

shell>yum install perl-YAML.noarch

shell>cd /usr/local/src

shell>tar zxvf Mail-SPF-v2.9.0.tar.gz

shell>cd Mail-SPF-v2.9.0

shell>perl Makefile.PL

shell>make && make install

shell>perl -MCPAN -e shell ## 在安装前确定你的系统语言不是UTF-8

cpan> install Archive::Tar

cpan> install Archive::Zip

cpan> install Compress::Zlib

cpan> install Convert::TNEF

cpan> install Convert::UUlib

cpan> install Convert::BinHex

cpan> install MIME::Base64

cpan> install MIME::Parser

cpan> install MIME::Tools

cpan> install Mail::Internet

cpan> install Net::Server

cpan> install Net::LibIDN

cpan> install Net::SMTP

cpan> install Digest::MD5

cpan> install IO::Stringy

cpan> install Time::HiRes

cpan> install Unix::Syslog

cpan> install BerkeleyDB

cpan> install Crypt::OpenSSL::RSA

cpan> install Digest::SHA1

cpan> install DBI

cpan> install DB_File

cpan> install Net::DNS

cpan> install Mail::DKIM::Verifier

cpan> install Mail::SpamAssassin

cpan> install IP::Country

cpan> install URI::_idna

cpan> install Net::IDN::Encode

cpan> install Net::Ident

cpan> install IO::Socket::INET6

cpan> install IO::Socket::SSL

cpan> install NetAddr::IP

cpan> install Net::DNS::Resolver::Programmable

cpan> install installed: Geo::IP

cpan> install Razor2::Client::Agent

cpan> install IO::Socket::IP

cpan> install Encode::Detect

cpan> install Net::Patricia

cpan> install LWP::UserAgent

cpan> install Mail::SPF::Query

cpan> install HTML::Parser

cpan> exit

shell>vi amavisd.sh

#!/bin/bash

tar Jxvf amavisd-new-2.10.1.tar.xz  && cd amavisd*

mkdir -p /var/amavis/tmp /var/amavis/var /var/amavis/db /var/amavis/home

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

cp amavisd_init.sh /etc/init.d/amavisd

chmod 744 /etc/init.d/amavisd

chkconfig --add amavisd

chkconfig amavisd on

shell>./amavisd.sh

vi /etc/amavisd.conf

$max_servers=8;

$daemon_user = ‘amavis‘;

$daemon_group = ‘amavis‘;

$mydomain = ‘njjnyy.cn‘;

$db_home = "$MYHOME/db";

$inet_socket_port = 10024;

$sa_tag_level_deflt = 5.0;

$sa_tag2_level_deflt = 6.2;

$sa_kill_level_deflt = $sa_tag2_level_deflt;

$virus_admin = "[email protected]$mydomain";

$sa_spam_subject_tag = ‘***SPAM*** ‘;

$forward_method = ‘smtp:127.0.0.1:10025‘;

$notify_method = $forward_method;

$final_virus_destiny = D_DISCARD;

$final_banned_destiny = D_DISCARD;

$final_spam_destiny = D_DISCARD;

[‘ClamAV-clamd‘,

\&ask_daemon, ["CONTSCAN {}\n", "/amd.socketmp/clamd.socket"],

qr/\bOK$/m, qr/\bFOUND$/m,

qr/^.*?: (?!Infected Archive)(.*) FOUND$/m ],

自动更新spamassassin clamav

shell>rpm -ivh --nodeps cronie

shell>crontab -e

0 0 * * * /usr/local/bin/sa-update -D --nogpg

0 4 * * * /usr/local/clamav/bin/freshclam  --quiet -l /var/log/clamav/freshclam.log

时间: 2024-11-05 19:36:16

Centos 6.2_X86_64 编译安装postfix+amavisd-new+clamav的相关文章

CentOS 6上编译安装AMP详解

在CentOS 6上编译安装AMP     A:Apache(httpd)     M:MySQL or MariaDB     P:php 目录: 一.准备工作 二.编译安装Apache(httpd) 三.编译安装MariaDB 四.编译安装PHP 编译安装AMP的优点: 根据生产环境灵活定制程序 优化编译参数,提高性能 解决不必要的软件依赖 一.准备工作 1.需要的软件包及版本号: httpd-2.4.27(apr-1.5.2+ apr-util-1.5.4) + MariaDB-5.5.5

httpd2.4在CentOS 6 上编译安装

httpd-2.4 新特性: 1.MPM支持运行为DSO机制,以模块形式按需加载 2.Event MPM生产环境可用 3.支持异步读写机制 4.支持每模块每目录的日志级别定义 5.每请求相关专用配置 6.增强版表达式分析器 7.毫秒级连接时长 8.基于FQDN的虚拟机不在需要NameVirtualHost指令 9.新指令,AllowOverrideList 10.支持用户自定义变量使用 11.更低的内存消耗 httpd-2.4 新模块:     1.mod_proxy_fcgi   支持php 

CentOS 6.5 编译安装httpd2.4安装

CentOS 6.5 编译安装 包下载地址:http://pan.baidu.com/s/1miHrZdQ 密码:p6ny 由于httpd依赖于apr-1.4,apr-util-1.4,所以得安装1.4及以上版本. 首先安装apr和apr-util tar xf apr-1.5.0.tar.bz2 ./configure --prefix=/usr/local/apr make && make install tar xf apr-util-1.5.2.tar.bz2 ./configur

Centos 7.0 编译安装LAMP(Linxu+apache+mysql+php)之源码安装Mysql (二)

mysql 简介: MySQL是一个关系型数据库管理系统,关系数据库将数据保存在不同的表中,这样就增加了速度并提高了灵活性.目前其属于 Oracle 旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件.MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言. 安装环境: 系统: centos 7.0 最小化安装 软件

CentOS 6.5 编译安装 gcc-4.9.1

1.环境在标题中 2.gcc-4.9.1 的编译安装需要系统原来就有一套gcc/g++ 3.使用yum 安装 gcc/g++ 1 yum install gcc 2 yum install gcc-c++ 4.下载gcc-4.9.1 通过WinSCP 上传服务器 5.解压 1 tar xvf gcc-4.9.1.tar.gz 6.下载gcc编译的依赖项,这一步,会启动自动下载,但是在我的机器上下载完一个就停止了,尝试了很多次都这样,不知是不是下载服务器不稳定,还是我本地网络的原因.后来我就改用手

Centos 7.0 编译安装LNMP(Linxu+nginx+mysql+php)之源码安装nginx (一)

nginx简介:       Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日. 其将源代码以类BSD许可证的形式发布,因它的稳定性.丰富的功能集.示例配置文件和低系统资源的消耗而闻名.2011年6月1日,nginx 1.0.4发布. Nginx是一款轻量级的Web 服务器

CentOS源码编译安装MySQL 5.5.15

CentOS源码编译安装MySQL 5.5.15 文章目录 [隐藏] 安装编译工具 下载源码 安装cmake和bison 编译安装MySQL 一些相关设置 安装编译工具 yum install gcc gcc-c++ yum install ncurses-devel 下载源码 mkdir -p /tmp cd /tmp wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.15.tar.gz/from/http://mysql.

centos 7 min 编译安装php5.6+nginx1.7.5 笔记

centos 7 min 编译安装php5.6+nginx1.7.5 笔记 1.安装mysql请参照 centos 7 min 编译安装mysql5.6.20 笔记 2.编译安装php5.6+nginx1.7.5 2.1.安装php5.6.0 首先添加依赖应用 yum install -y gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libpng libpng-dev

编译安装postfix及使用sasl对客户端认证

编译安装postfix 在之前的文章我增提到过,目前linux常用的MTA软件有sendmail,qmail,exim,postfix.虽然目前使用最多的MTA是sendmail,但是sendmail实现的功能远没有postfix功能强大,而且postfix兼容sendmail,执行效率比sendmail更高,也更安全,postfix采用模块化设计.因此,由于具有众多的优点,postfix越来越流行.因此,此章主要是介绍如何使用postfix来搭建一台服务器,并使用sasl来为客户端提供认证功能