您的位置:首页 > 大数据 > 人工智能

FreeBSD7.0+postfix+sasl2+mysql+maildrop+ExtMan+Mailman+ClamAv完全安装

2009-07-14 22:27 387 查看
FreeBSD7.0+postfix+sasl2+mysql+maildrop+ExtMan+Mailman+ClamAv完全安装Mailman
, postfix
, ClamAv
, ExtMan
, maildrop

FreeBSD7.0+postfix+sasl2+mysql+maildrop+ExtMan+Mailman+ClamAv完全安装

本文参考了http://www.extmail.org/docs/extmail_solution_free
bsd
/

整个邮件解决方案由如下软件组成:

功能模块 内容 备注

操作系统
(OS) FreeBSD FreeBSD是一个优秀的unix操作系统,基于宽松的BSD协议

邮件传输代理(MTA) Postfix 使用2.4.x,ports中的postfix已经是最新的2.4版

数据库
/目录服务 mysql 5.0 可选MySQL或其他mysql ,本文以mysql 5.0为蓝本

邮件投递代理(MDA) maildrop 2.0.x 支持过滤和强大功能

Web帐户管理后台 ExtMan-0.2.3 支持无限域名、无限用户

POP3 服务器 Courier-IMAP 支持pop3/pop3s/imap/imaps,功能强大,可根据需要选择

WebMail 系统 ExtMail-1.0.3 支持多语言、全部模板化,功能基本齐全

防病毒软件(Anti-Virus) ClamAV 0.92 最热门的开源杀毒软件

内容过滤器 Amavisd-new 2.5.x Content-Filter软件,支持与clamav/sa的挂接

内容级别的反垃圾邮件工具 SpamAssassin 著名的SA,可以支持大量规则,但速度较慢

SMTP认证
库 Cyrus SASL 2.1x 标准的SASL实现库,可以支持Courier authlib

其他数据认证库 Courier Authlib 0.60 authlib是maildrop, courier-imap等服务的关键部件

日志分析及显示 mailgraph_ext 在ExtMan中已经包含了

Web 服务器 Apache 2.2.x 最新版的apache
服务器,默认支持ssl模块

maillist软件 Mailman2.1.x 功能强大的邮件列表软件,支持基于web
的管理

操作系统安装

操作系统的安装建议参考FreeBSD Handbook,在此仅给出链接,以避免不必要的重复劳动:

英文版

http://www.freebsd.org/doc/en_US
... ndbook/install.html

中文版

http://cnsnap.cn.freebsd.org/doc
... ndbook/install.html

安装时的注意事项

1,磁盘分区

由于是邮件系统
,相关的日志和queue都会保存在var分区内,因此var分区要有足够的空间。以一块硬盘73G/内存3G的服务器为例,可做如下分区:

/ 512m

swap 4096m

/var 5g

/tmp 512m

/usr 8g(尽量保证有10G左右)

/home 50g(剩下所有的空间)

2,软件包
的选择

我们的邮件系统是要对外服务的,所以尽可能少的选择软件包,安装时建议选择Minimal,然后进入Custom选择doc,info,man,src即可。

配置

1,编辑/etc/rc.conf确保有如下内容:

sshd_enable="YES"

named_enable="YES"

sendmail_enable="NONE"

编辑/etc/resolv.conf确保第一条nameserver
记录是127.0.0.1,这样本地DNS缓存才有效,类似如下:

domain xxxxx.cn

nameserver 127.0.0.1

nameserver 202.106.0.20

然后执行如下命令:

/etc/rc.d/named start

2,根据硬件的配置重新编译内核
,编译内核的办法参考FreeBSD Handbook,这里只给出链接:

英文版

http://www.freebsd.org/doc/en_US
... k/kernelconfig.html

中文版

http://cnsnap.cn.freebsd.org/doc
... k/kernelconfig.html

编译后系统的性能将得到较大的提升.

更新ports

根据你的情况执行

cvsup -gL2 /usr/share/examples/cvsup/ports-supfile -h cvsup.freebsdchina.org

或者

portsnap fetch && portsnap update

下载配置包

基本假定

整个系统的安装全过程都要求以root身份执行。并能够访问Internet。

安装前的准备

增加一个存储邮件的帐号和组(vmail)

执行如下命令

pw group add vmail -g 1000

pw user add vmail -u 1000 -g 1000 -s /sbin/nologin -d /dev/null

给test用户创建路径

需要一个测试帐号test@xxxxx.cn
,需要准备该账号的路径。

mkdir -p /home/domains/xxxxx.cn/test/Maildir/new

mkdir -p /home/domains/xxxxx.cn/test/Maildir/cur

mkdir -p /home/domains/xxxxx.cn/test/Maildir/tmp

chown -R vmail:vmail /home/domains/

chm
od -R 700 /home/domains/

ExtMan的安装

由于在安装过程中要使用ExtMan里面带的文件,因此在此先安装ExtMan。安装时根据个人需要选择MySQL或者mysql支持。

cd /usr/ports/mail/extman/ && make install clean

安装时选择mysql

安装mysql

cd /usr/ports/database
s/mysql50-server/
&& makeWITH_CHARSET=gbk WITH_XCHARSET=all
WITH_PROC_SCOPE_PTH=yesBUILD_OPTIMIZED=yes BUILD_STATIC=yes
SKIP_DNS_CHECK=yesWITHOUT_INNODB=yes install clean

编辑/etc/rc.conf

ee /etc/rc.conf

mysql_enable="YES"

复制 MySQL 配置文件

cp /usr/local/share/mysql/my-small.cnf /usr/local/etc/my.cnf

ee /usr/local/etc/my.cnf

在[mysqld]组中加入下面的内容,部分内容看来如下

[mysqld]

bind_address=127.0.0.1

将mysql端口绑定到127.0.0.1主要因为该服务器只为本站提供服务,为了增加安全性
,所以这样做。

启动 mysql-server

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

cp /usr/local/etc/rc.d/mysql-server /usr/local/etc/rc.d/mysql.sh

/usr/local/etc/rc.d/mysql-server start

修改root用户的密码

/usr/local/bin/mysqladmin -u root -p password

Enter password:

安装 openssl

cd /usr/ports/security/openssl/ && make install clean

安装配置文件

cp /usr/local/openssl/openssl.cnf.sample /usr/local/openssl/openssl.cnf

安装配置courier-imap POP3/IMAP

Courier-IMAP是一个提供POP3、IMAP服务的程序,能够很方便的配置使其支持加密协议POP3s、IMAPs。并良好的支持Maildir。

Courier-imap的安装

安装时选择(如果你使用MySQL认证,则选择AUTH_MYSQL):

OPENSSL

TRASHQUOTA

AUTH_MYSQL

cd /usr/ports/mail/courier-imap/ && make install clean

安装时选择 TRASHQUOTA AUTH_MYSQL

Authlib的配置

mv /usr/local/etc/authlib/authdaemonrc /usr/local/etc/authlib/authdaemonrc.bak

编辑/usr/local/etc/authlib/authdaemonrc文件,内容类似如下:

authmodulelist="authmysql"

authmodulelistorig="authmysql"

version="authdaemond.mysql"

daemons=5

authdaemonvar=/var/run/authdaemond

subsystem=mail

DEBUG_LOGIN=0

DEFAULTOPTIONS="wbnodsn=1"

LOGGEROPTS=""

增加/var/run/authdaemond的执行权限,在FreeBSD系统下,其他用户默认没有执行权限

chmod +x /var/run/authdaemond

mv /usr/local/etc/authlib/authmysqlrc /usr/local/etc/authlib/authmysqlrc.bak

编辑/usr/local/etc/authlib/authmysqlrc文件,内容类似如下:

MYSQL_SERVER localhost

MYSQL_USERNAME extmail

MYSQL_PASSWORD extmail

MYSQL_PORT 0

MYSQL_OPT 0

MYSQL_DATABASE extmail

MYSQL_SELECT_CLAUSE SELECT username,password,"",uidnumber,gidnumber,/

CONCAT('/home/domains/',homedir), /

CONCAT('/home/domains/',maildir), /

quota, /

name /

FROM mailbox /

WHERE username = '$(local_part)@$(domain)'

配置支持POP3s

拷贝一份配置文件

cp /usr/local/etc/courier-imap/pop3d.cnf.dist /usr/local/etc/courier-imap/pop3d.cnf

编辑/usr/local/etc/courier-imap/pop3d.cnf文件,类似如下:

RANDFILE = /usr/local/share/courier-imap/pop3d.rand

[ req ]

default_bits = 1024

encrypt_key = yes

distingui
shed_name = req_dn

x509_extensions = cert_type

prompt = no

[ req_dn ]

C=CN

ST=BJ

L=Bei Jing

O=Extmail

OU=Extmail

CN=xxxxx.cn

emailAddress=ppabc@qq.com

[ cert_type ]

nsCertType = server

执行如下命令产生供POP3s使用的证书

/usr/local/sbin/mkpop3dcert

配置支持IMAPs

拷贝一份配置文件

cp /usr/local/etc/courier-imap/imapd.cnf.dist /usr/local/etc/courier-imap/imapd.cnf

编辑/usr/local/etc/courier-imap/imapd.cnf文件,类似如下:

RANDFILE = /usr/local/share/courier-imap/imapd.rand

[ req ]

default_bits = 1024

encrypt_key = yes

distinguished_name = req_dn

x509_extensions = cert_type

prompt = no

[ req_dn ]

C=CN

ST=BJ

L=Bei Jing

O=Extmail

OU=Extmail

CN=xxxxx.cn

emailAddress=ppabc@qq.com

[ cert_type ]

nsCertType = server

执行如下命令产生供IMAP使用的证书

/usr/local/sbin/mkimapdcert

配置自动启动

编辑/etc/rc.conf文件,添加如下行:

courier_authdaemond_enable="YES"

courier_imap_pop3d_enable="YES"

courier_imap_imapd_enable="YES"

courier_imap_pop3d_ssl_enable="YES"

courier_imap_imapd_ssl_enable="YES"

这5行的作用分别是在开机时:启动authdaemond,启动pop3d,启动imapd,启动pop3d-ssl,启动imapd-ssl。也可以使用命令行来控制这些进程的启动或者停止。

/usr/local/etc/rc.d/courier-authdaemond start/stop

/usr/local/etc/rc.d/courier-imap-pop3d start/stop

/usr/local/etc/rc.d/courier-imap-imapd start/stop

/usr/local/etc/rc.d/courier-imap-pop3d-ssl start/stop

/usr/local/etc/rc.d/courier-imap-imapd-ssl start/stop

Postfix的安装和配置-MTA

MTA在邮件系统中处于非常重要的位置,他负责接收其他人给你发的信,并且负责把你的信转发到目的地。选择一个靠谱的MTA对建立邮件来说意义重大,因此
我们使用Postfix!!:-)。另外MTA部分在邮件系统中的开发难度是最高的,起到的作用也是最大的,因此我们也常拿MTA的名字来称呼自己的邮件
系统,比如:我常说我的邮件系统是Postfix。

安装postfix

安装时选择(如果你使用MySQL验证,可以选择MYSQL):

PCRE

SASL2

TLS

MYSQL

VDA

TEST

cd /usr/ports/mail/postfix/ && make install clean

安装时选择PCRE SASL2 TLS MYSQL VDA TEST

配置postfix

编辑/etc/rc.conf,增加如下一行

postfix_enable="YES"

编辑/etc/alias
es,确保有如下一行

postfix: root

替换掉系统带的sendmail程序

mv /usr/sbin/sendmail /usr/sbin/sendmail.bak

cp /usr/local/sbin/sendmail /usr/sbin/sendmail

编辑/etc/periodic.conf,加入如下内容,禁掉sendmail的自动维护。

daily_clean_hoststat_enable="NO"

daily_status_mail_rejects_enable="NO"

daily_status_include_submit_mailq="NO"

daily_submit_queuerun="NO"

执行如下命令

/usr/local/sbin/postalias /etc/aliases

chown postfix:postfix /etc/opiekeys

/usr/local/sbin/postconf -e 'mydomain = xxxxx.cn'

/usr/local/sbin/postconf -e 'myhostname = mail.xxxxx.cn'

/usr/local/sbin/postconf -e 'myorigin = $mydomain'

/usr/local/sbin/postconf -e 'virtual_mailbox_base = /home/domains'

/usr/local/sbin/postconf -e 'virtual_uid_maps=static:1000'

/usr/local/sbin/postconf -e 'virtual_gid_maps=static:1000'

执行如下命令对查询表进行配置

cp /usr/local/www/extman/docs/mysql_virtual_* /usr/local/etc/postfix/

/usr/local/sbin/postconf -e 'virtual_alias_maps = $alias_maps, mysql:/usr/local/etc/postfix/mysql_virtual_alias_maps.cf'

/usr/local/sbin/postconf -e 'virtual_mailbox_maps = mysql:/usr/local/etc/postfix/mysql_virtual_mailbox_maps.cf'

/usr/local/sbin/postconf -e 'virtual_mailbox_domains = mysql:/usr/local/etc/postfix/mysql_virtual_domains_maps.cf'

SMTP认证设置

编辑/usr/local/lib/sasl2/smtpd.conf

pwcheck_method:authdaemond

log_level:3

mech_listLAIN LOGIN

authdaemond_path:/var/run/authdaemond/socket

对postfix做如下配置使支持smtp认证

/usr/local/sbin/postconf -e 'smtpd_sasl_auth_enable=yes'

/usr/local/sbin/postconf -e 'broken_sasl_auth_clients = yes'

/usr/local/sbin/postconf -e 'smtpd_sasl_local_domain = $myhostname'

postfix反垃圾设置

此处的反垃圾邮件只是在MTA级的一些预防垃圾邮件的设置,可根据实际情况以及自己的需要进行调整。

/usr/local/sbin/postconf -e 'smtpd_helo_required=yes'

/usr/local/sbin/postconf -e 'smtpd_delay_reject=yes'

/usr/local/sbin/postconf -e 'disable_vrfy_command=yes'

/usr/local/sbin/postconf -e 'smtpd_client_restrictions = check_client_access hash:/usr/local/etc/postfix/client_access'

/usr/local/sbin/postconf
-e'smtpd_helo_restrictions=reject_invalid_hostname,check_helo_accesshash:/usr/local/etc/postfix/helo_access'

/usr/local/sbin/postconf -e 'smtpd_sender_restrictions
=reject_non_fqdn_sender,
reject_unknown_sender_domain,check_sender_access
hash:/usr/local/etc/postfix/sender_access'

/usr/local/sbin/postconf
-e'smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,
reject_unauth_destination,reject_non_fqdn_recipient,
reject_unknown_recipient_domain'

/usr/local/sbin/postconf -e 'smtpd_data_restrictions=reject_unauth_pipelining'

/usr/local/sbin/postconf -e 'header_checks = regexp:/usr/local/etc/postfix/head_checks'

/usr/local/sbin/postconf -e 'body_checks = regexp:/usr/local/etc/postfix/body_checks'

touch /usr/local/etc/postfix/head_checks

touch /usr/local/etc/postfix/body_checks

touch /usr/local/etc/postfix/client_access

touch /usr/local/etc/postfix/sender_access

touch /usr/local/etc/postfix/helo_access

/usr/local/sbin/postmap /usr/local/etc/postfix/head_checks

/usr/local/sbin/postmap /usr/local/etc/postfix/body_checks

/usr/local/sbin/postmap /usr/local/etc/postfix/client_access

/usr/local/sbin/postmap /usr/local/etc/postfix/sender_access

/usr/local/sbin/postmap /usr/local/etc/postfix/helo_access

TLS设置

生成证书,在这里默认私钥的访问密码为123qwe98,请根据自己的情况决定,以后可能会用得到。

mkdir -p /usr/local/etc/postfix/certs/CA

cd /usr/local/etc/postfix/certs/CA

mkdir certs crl newcerts private

echo "01" > serial

touch index.txt

cp /usr/local/openssl/openssl.cnf .

编辑openssl.cnf,确认dir参数的值是/usr/local/etc/postfix/certs/CA。然后继续执行如下命令,并根据情况输入信息。输入信息类似如下:

Country Name (2 letter code) [AU]:CN

State or Province Name (full name) [Some-State]:BJ

Locality Name (eg, city) []:Bei Jing

Organization Name (eg, company) [Internet Widgits Pty Ltd]:Extmail

Organizational Unit Name (eg, section) []:extmail

Common Name (eg, YOUR name) []:xxxxx.cn

Email Address []:ppabc@qq.com

命令如下:

openssl req -new -x509 -keyout private/cakey.pem -out cacert.pem -days 3650 -config openssl.cnf

openssl req -nodes -new -x509 -keyout mykey.pem -out myreq.pem -days 3650 -config openssl.cnf

openssl x509 -x509toreq -in myreq.pem -signkey mykey.pem -out tmp.pem

openssl ca -config openssl.cnf -policy policy_anything -out mycert.pem -infiles tmp.pem

rm tmp.pem

cp cacert.pem /usr/local/etc/postfix/certs/

cp mycert.pem /usr/local/etc/postfix/certs/

cp mykey.pem /usr/local/etc/postfix/certs/

cd /usr/local/etc/postfix/certs/

chown root:wheel cacert.pem mycert.pem

chown root:postfix mykey.pem

chmod 755 cacert.pem

chmod 644 mycert.pem

chmod 440 mykey.pem

ln -s cacert.pem `openssl x509 -noout -hash < cacert.pem `.0

配置postfix支持TLS

/usr/local/sbin/postconf -e 'smtpd_use_tls=yes'

/usr/local/sbin/postconf -e 'smtpd_tls_auth_only=no'

/usr/local/sbin/postconf -e 'smtp_tls_CAfile = /usr/local/etc/postfix/certs/cacert.pem'

/usr/local/sbin/postconf -e 'smtp_tls_cert_file = /usr/local/etc/postfix/certs/mycert.pem'

/usr/local/sbin/postconf -e 'smtp_tls_key_file = /usr/local/etc/postfix/certs/mykey.pem'

/usr/local/sbin/postconf -e 'smtpd_tls_CAfile=/usr/local/etc/postfix/certs/cacert.pem'

/usr/local/sbin/postconf -e 'smtpd_tls_cert_file=/usr/local/etc/postfix/certs/mycert.pem'

/usr/local/sbin/postconf -e 'smtpd_tls_key_file=/usr/local/etc/postfix/certs/mykey.pem'

/usr/local/sbin/postconf -e 'smtpd_tls_received_header=yes'

/usr/local/sbin/postconf -e 'smtpd_tls_loglevel=3'

/usr/local/sbin/postconf -e 'smtpd_starttls_timeout=60s'

/usr/local/etc/postfix/master.cf
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: