原创:在RHEL 4 上配置全功能的Postfix 服务器

红薯 发布于 2009/05/05 16:55
阅读 606
收藏 0

在RHEL 4 上配置全功能的Postfix 服务器

文档版本:0.2
文档日志:
2005-12-17 至 12-20 初稿完成,首次公开

作者:Tony Feng
邮件:[email]tonyfeng@yahoo.com[/email]

简介
本文讲述在安装了Redhat Enterprice AS 4 U2的PC上,配置一台Postfix邮件服务器的过程。实现虚拟域、虚拟用户、POP3、POP3S、SMTP、SMTPS、IMAP、IMAPS、防毒、防SPAM、网页邮件功能。



涉及的软件
1. Redhat Enterprice AS 4 U2
2. Mysql
系统自带
用于存储虚拟域、虚拟用户等信息。
3. Apache
系统自带
运行网页邮件SquirrelMail和PostfixAdmin时使用。
4. PHP
系统自带
运行网页邮件SquirrelMail和PostfixAdmin时使用。
5. Cyrus-sasl
系统自带
实现带验证的SMTP时使用。
6. Courier authentication library
从http://www.courier-mta.org/ 下载
实现带验证的SMTP时使用。
7. Postfix
从http://postfix.org 下载
一个MTA,虽然RHEL 4 自带Postfix,但因为其不支持SSL及Mysql,所以我们需要自行编译。
8. PostfixAdmin
从http://postfixadmin.com/ 下载
虚拟域、虚拟用户等信息是放在Mysql内的,安装PostfixAdmin后,就可以用浏览器管理这些信息。
9. SquirrelMail
系统自带
一个基于IMAP的Webmail客户端。
10. Dovecot
系统自带
提供POP3,POP3S,IMAP,IMAPS功能。
11. F-prot
从http://www.f-prot.com 下载,Linux workstation 版个人使用是免费的
提供杀毒功能,据闻速度和病毒库比开源的Clamav好。
12. SpamAssassin
系统自带
提供过滤垃圾邮件功能。
13. MailScanner
从http://www.sng.ecs.soton.ac.uk/mailscanner/ 下载
Postfix 是使用MailScanner 调用f-prot 与SpamAssassin,或者其它调用方法效率更好,但MailScanner配置比较直观,且最近拿了一个大奖 http://www.linuxawards.co.uk/content/view/26/42/ 。



配置过程
1. 基本软件安装
安装RHEL 4 U2,使用默认安装,语系为简体中文。关闭SE Linux,配置网卡,使其能访问Internet。进入X window,开始->系统设置->添加/删除应用程序,安装上文中提及“系统自带”的软件,包括:
万维网服务器:mysql & php 相关的
邮件服务器:SquirrelMail perl-cyrus
SQL 数据库:全部。
下载其它需要的软件。

2. 配置PostfixAdmin、Mysql、Apache
[root@localhost tmp]# tar xzf postfixadmin-2.1.0.tgz 
[root@localhost tmp]# mv postfixadmin-2.1.0 /var/www/html/pa
[root@localhost tmp]# service mysqld start
[root@localhost tmp]# mysql -uroot < /var/www/html/pa/DATABASE_MYSQL.TXT 
[root@localhost tmp]# cp /var/www/html/pa/config.inc.php.sample  /var/www/html/pa/config.inc.php
[root@localhost tmp]# service httpd start

打开浏览器访问 http://localhost/pa,然后按提示增加两个虚拟域名d1.com 和 d2.com,增加两个虚拟用户[email]a@d1.com[/email],[email]b@d2.com[/email]。

设置Mysql和Apache自动启动
[root@localhost tmp]# chkconfig --level 35 mysqld on
[root@localhost tmp]# chkconfig --level 35 httpd on

3. 编译、配置Postfix
先删除sendmail
[root@localhost tmp]# rpm –e sendmail –nodeps
[root@localhost tmp]# groupadd postfix
[root@localhost tmp]# groupadd postdrop
[root@localhost tmp]#useradd postfix -g postfix -c "Postfix user" -d /dev/null -s /sbin/nologin
[root@localhost tmp]# tar xzf postfix-2.2.7.tar.gz 
[root@localhost tmp]# cd postfix-2.2.7
[root@localhost postfix-2.2.7]# make -f Makefile.init makefiles 'CCARGS=-DHAS_MYSQL -I/usr/include/mysql -DUSE_TLS -DUSE_SASL_AUTH -I/usr/include/sasl' 'AUXLIBS=-L/usr/lib/mysql -lmysqlclient -lz -lm -L/usr/lib -lssl -lcrypto -lsasl2' 
[root@localhost postfix-2.2.7]# make
[root@localhost postfix-2.2.7]# make install
注:“make install”命令后的所有问题都直接敲回车键即可。

编辑/etc/postfix/main.cf 为以下内容
#=====================BASE=========================
myhostname = mail.d1.com
mydomain = d1.com
myorigin = $mydomain
mydestination = $myhostname localhost localhost.$mydomain
mynetworks = 192.168.1.0/24 127.0.0.0/8
inet_interfaces = all
#=====================Vritual Mailbox settings=========================
virtual_mailbox_base = /var/spool/mail
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:501
virtual_gid_maps = static:502
virtual_transport = virtual
maildrop_destination_recipient_limit = 1
maildrop_destination_concurrency_limit = 1
#====================QUOTA========================
message_size_limit = 14336000
virtual_mailbox_limit = 20971520
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cf
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please try again later.
virtual_overquota_bounce = yes
#====================SASL========================
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_invalid_hostname,reject_non_fqdn_hostname,reject_unknown_sender_domain,reject_non_fqdn_sender,reject_non_fqdn_recipient,reject_unknown_recipient_domain,reject_unauth_pipelining,reject_unauth_destination,permit
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_sasl_application_name = smtpd
smtpd_banner=$myhostname ESMTP "Version not Available"

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

编辑/etc/postfix/ mysql_virtual_alias_maps.cf 为以下内容
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = alias
select_field = goto
where_field = address

编辑/etc/postfix/ mysql_virtual_domains_maps.cf 为以下内容
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = domain
select_field = description
where_field = domain

编辑/etc/postfix/ mysql_virtual_mailbox_limit_maps.cf 为以下内容
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = mailbox
select_field = quota
where_field = username

编辑/etc/postfix/ mysql_virtual_mailbox_maps.cf 为以下内容
user = postfix
password = postfix
hosts = localhost
dbname = postfix
table = mailbox
select_field = maildir
where_field = username



4. 配置SMTP 认证
编辑 /usr/lib/sasl2/smtpd.conf 为以下内容
pwcheck_method: authdaemond 
log_level: 3
mech_list: plain login
authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket

安装Courier authentication library
[root@localhost tmp]# tar jxf courier-authlib-0.58.tar.bz2 
[root@localhost tmp]# cd courier-authlib-0.58
[root@localhost courier-authlib-0.58]# ./configure --prefix=/usr/local/courier-authlib --without-authpam --without-authldap --without-authpwd --without-authshadow --without-authvchkpw --without-authpgsql  --with-authmysql --with-mysql-libs=/usr/lib/mysql --with-mysql-includes=/usr/include/mysql --with-redhat  --with-authmysqlrc=/usr/local/courier-authlib/etc/authmysqlrc  --with-authdaemonrc=/usr/local/courier-authlib/etc/authdaemonrc CFLAGS="-march=i686 -O2 -fexpensive-optimizations" CXXFLAGS="-march=i686 -O2 -fexpensive-optimizations"
[root@localhost courier-authlib-0.58]# make
[root@localhost courier-authlib-0.58]# make install
[root@localhost courier-authlib-0.58]# chmod 755 /usr/local/courier-authlib/var/spool/authdaemon
[root@localhost courier-authlib-0.58]# cp /usr/local/courier-authlib/etc/authdaemonrc.dist /usr/local/courier-authlib/etc/authdaemonrc

修改/usr/local/courier-authlib/etc/authdaemonrc 文件
authmodulelist="authmysql"
authmodulelistorig="authmysql"
daemons=10

编辑/usr/local/courier-authlib/etc/authmysqlrc 为以下内容,其中501,502 为postfix 用户的UID和GID。
MYSQL_SERVER         localhost
MYSQL_USERNAME       postfix
MYSQL_PASSWORD       postfix
MYSQL_SOCKET         /var/lib/mysql/mysql.sock
MYSQL_DATABASE       postfix
MYSQL_USER_TABLE     mailbox
MYSQL_CRYPT_PWFIELD   password
MYSQL_UID_FIELD       '501'
MYSQL_GID_FIELD       '502'
MYSQL_LOGIN_FIELD     username
MYSQL_HOME_FIELD     concat('/var/spool/mail/',maildir)
MYSQL_MAILDIR_FIELD   concat('/var/spool/mail/',maildir)
MYSQL_NAME_FIELD     name

# cp courier-authlib.sysvinit /etc/init.d/courier-authlib
# chmod 755 /etc/init.d/courier-authlib
# chkconfig --add courier-authlib
# chkconfig --level 35 courier-authlib on
手动启动服务:
# service courier-authlib start

此时你已经拥有一台带验证的SMTP 服务器,用Outlook 、Foxmail测试一下吧,用户名采用[email]usename@domainName.com[/email] 形式。



加载中
返回顶部
顶部