LINUX下邮件服务器

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

邮件服务器搭建

 

############分割线 编译安装Mysql,启动控制Mysql##########
1、卸载已安装的mysql的RPM包
编译安装mysql前,首先查看系统中是否已安装mysql服务器软件:
[root@server01 /]# rpm -qa | grep mysql
[root@server01 /]# rpm -e mysql-server
[root@server01 /]# rpm -e mysql-connector-odbc
[root@server01 /]# rpm -e libdbi-dbd-mysql
[root@server01 /]# rpm -e mysql --nodeps
删除RPM包创建的mysql账号
[root@server01 /]# userdel -r mysql
2、释放MySQL软件包
为了避免发生冲突,建议先卸载掉系统自带的mysql相关软件包
[root@server01 tool]# tar -zxvf mysql-5.0.56.tar.gz 
3、添加MySQL用户和组,用于运行和维护mysql服务
[root@server01 tool]# useradd -M -s /sbin/nologin mysql
 -M 选项表示不建立用户宿主目录、
 -s 选项表示指定用户的shell
4、编译前的预配置
[root@server01 mysql-5.0.56]# ./configure --prefix=/usr/local/mysql
5、编译并安装
[root@server01 mysql-5.0.56]# make && make install
6、建立mysql配置文件
在展开的源码包目录中的support-files文件夹下,提供了多个MySQL服务器的配置样例文件,分别适用于不同负载的数据库服务器。一般选择my-medium.cnf文件即可,该配置文件适用于中等负载的数据库,可以满足大多数企业的应用需求
[root@server01 mysql-5.0.56]# cp support-files/my-medium.cnf /etc/my.cnf
7、初始化mysql数据库
以mysql用户的身份执行mysql_install_db脚本,对MySQL数据库进行初始化
[root@server01 mysql-5.0.56]# cd /usr/local/mysql/bin/
[root@server01 bin]# ./mysql_install_db --user=mysql
会在/usr/local/mysql下产生var目录,并在var目录下创建2个默认数据库mysql和test;
8、调整mysql目录权限
修改相关目录的所有权,以便mysql用户可以读写数据库
调整/usr/loca/mysql目录的权限:
[root@server01 local]# ls -ld /usr/local/mysql/
[root@server01 local]# chown -R root.mysql /usr/local/mysql
[root@server01 local]# ls -ld /usr/local/mysql/
调整/usr/local/mysql/var目录的权限:
[root@server01 local]# chown -R mysql /usr/local/mysql/var/
[root@server01 local]# ls -ld /usr/local/mysql/var
9、调整lib库路径
由于Mysql安装到了非标准的路径中。所以还需要将MySQL的库文件路径“/usr/local/mysql/lib/mysql”?加入到系统的库文件搜索路径中,以便在用到时能够自动搜索到。增加库文件搜索路径可以通过修改“/etc/ld.so.conf”文件实现
[root@server01 local]# vi /etc/ld.so.conf
添加路径:
/usr/local/mysql/lib/mysql
[root@server01 local]# ldconfig
10、Mysql的启动控制
(1) 使用mysqld_safe脚本安全启动服务
[root@server01 local]# /usr/local/mysql/bin/mysqld_safe --user=mysql &
(2) 设置MySQL程序的执行路径,主要是为了在执行mysql管理工具时方便
方法一:修改配置文件/etc/profile,使配置永久生效
[root@server01 local]# vi /etc/profile
添加:
PATH=$PATH:/usr/local/mysql/bin
[root@server01 local]# source /etc/profile
方法二:执行export命令,使配置仅当前生效
[root@server01 local]#export PATH=$PATH:/usr/local/mysql/bin
(3) 将Mysql添加为系统服务,主要是为了mysql服务启动的方便
[root@server01 local]# cd /tool/mysql-5.0.56
[root@server01 mysql-5.0.56]# cp support-files/mysql.server /etc/init.d/mysqld
[root@server01 mysql-5.0.56]# chmod +x /etc/init.d/mysqld 
[root@server01 mysql-5.0.56]# chkconfig --add mysqld
[root@server01 mysql-5.0.56]# chkconfig mysqld on
这样也就可以使用service mysqld start/restart/stop来对mysql服务进行管理了!

#######分割线 停用/卸载sendmail服务,以避免冲突###########
1、查看当前系统是否安装sendmail
[root@server01 /]# rpm -qa | grep sendmail

2、为了避免与要安装的postfix冲突,可以停用sendmail或卸载
停用方法:
[root@server01 /]# service sendmail stop
[root@server01 /]# chkconfig --level 35 sendmail off
卸载方法:
[root@server01 /]# rpm -e sendmail-cf
[root@server01 /]# rpm -e sendmail --nodeps

3、查看系统是否安装postfix的rpm包
[root@server01 /]# rpm -qa | grep postfix
确认系统没有安装postfix服务器软件包

############分割线 编译安装postfix及vda补丁包##########
1、创建运行邮件系统的用户账号postfix及用户组postfix和postdrop
[root@server01 /]# groupadd -g 1200 postdrop
[root@server01 /]# groupadd -g 1000 postfix
[root@server01 /]# useradd -M -u 1000 -g postfix -G postdrop -s /sbin/nologin postfix
2、解压释放postfix源码包、合并VGA补丁
[root@server01 tools]# tar zxvf postfix-2.4.6.tar.gz 
[root@server01 tools]# gunzip postfix-2.4.6-vda-ng.patch.gz 
[root@server01 tools]# cd postfix-2.4.6
[root@server01 postfix-2.4.6]# patch -p1 < ../postfix-2.4.6-vda-ng.patch 
3、产生postfix编译前的makefiles配置文件
由于实验案例的需要,在这里不能使用rpm包安装的postfix,因为rpm安装的postfix默认不支持mysql。
说明:在编译前需要使用“make maekfiles”命令调整编译参数,以便Postfix支持SASL认证和查询MySQL数据库。
[root@server01 postfix-2.4.6]# make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include/mysql -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl' 'AUXLIBS=-L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm -L/usr/lib/sasl2 -lsasl2'
---------------------------------------------------------------------------------------------------
编译参数CCARGS和AUXLIBS的作用如下:
CCARGS参数:为编译器提供额外的参数。“-I”选项指出标准的额外头文件的存放目录。
AUXLIBS参数:指出位于标准位置之外的额外函数库。如果需要链接SASL、MySQL或任何附加的函数库,而且他们不是存在标准位置(/usr/lib目录),则必须在AUXLIBS参数中指出这些函数库的路径。
---------------------------------------------------------------------------------------------------
4、编译和编译安装
[root@server01 postfix-2.4.6]# make && make install
安装过程需要设置一些安装参数,接受默认设置即可,直接持续回车完成安装。
5、postfix安装后的主要目录和配置文件
----------------------------------------------------
配置文件目录:/etc/postfix/
服务程序目录:/usr/libexec/postfix/
邮件队列目录:/var/spool/postfix/*
邮件管理程序目录:/usr/sbin/*
master主程序的配置文件:/etc/postfix/master.cf
postfix服务的配置文件:/etc/postfix/main.cf
记录了postfix服务的邮件传递等过程信息:/var/log/maillog
-----------------------------------------------------
6、使用postconf工具简化postfix配置文件main.cf,只保留与默认配置不同的参数,提高易读性和可编辑性
[root@server01 /]# cd /etc/postfix/
[root@server01 postfix]# postconf -n > main2.cf
[root@server01 postfix]# mv main.cf main.cf.bak
[root@server01 postfix]# mv main2.cf main.cf
7、启动postfix服务
[root@server01 postfix]# postfix start
查看服务启动后打开的端口:
[root@server01 postfix]# netstat -antp | grep 25
###############分割线 配置DNS服务器,创建相应的资源记录###
1、在对应的区域数据库文件中增加MX记录:
mail    IN A            192.168.1.102
@       IN MX 10                mail.benet.com.
2、测试mx记录
[root@server01 postfix]# nslookup
> set type=mx
> benet.com
Server:         192.168.1.102
Address:        192.168.1.102#53

benet.com       mail exchanger = 10 mail.benet.com.
###################分割线 构建postfix电子邮件系统###########
1、配置postfix,调整运行参数
[root@server01 postfix]# vi /etc/postfix/main.cf
增加如下参数:
inet_interfaces=192.168.1.102,127.0.0.1
myhostname=mail.benet.com
mydomain=benet.com
myorigin=$mydomain
mydestination=$mydomain,$myhostname
home_mailbox=Maildir/

执行命令产生别名数据库文件aliases.db
[root@server01 ~]# newaliases 
[root@server01 ~]# ls /etc/aliases.db
否则会导致smtpd程序启动失败!
2、重新加载配置
[root@server01 postfix]# postfix reload
3、建立邮件用户,通过telnet方法发送电子邮件测试
[root@server01 postfix]# useradd -s /sbin/nologin mail01
[root@server01 postfix]# passwd mail01
[root@server01 postfix]# useradd -s /sbin/nologin mail02
[root@server01 postfix]# passwd mail02

[root@server01 /]# telnet 127.0.0.1 25
SMTP常用命令字:
HELO localhost   宣告客户端主机地址
MAIL FROM:       发件人地址
RCPT TO:         收件人地址
DATA             邮件数据
QUIT             退出
################分割线 构建dovecot服务器###########################
1、卸载当前系统已安装的dovecot的rpm包
[root@server01 tools]# rpm -e dovecot
2、编译安装dovecot服务器软件包
[root@server01 tools]# useradd -M -s /sbin/nologin dovecot
[root@server01 tools]# tar zxvf dovecot-1.1.4.tar.gz

[root@server01 tools]# cd dovecot-1.1.4
[root@server01 dovecot-1.1.4]# ./configure --sysconfdir=/etc --with-mysql

[root@server01 dovecot-1.1.4]# make && make install
2、配置dovecot的运行参数
从dovecot的模板配置文件生成简单配置文件
[root@server01 dovecot-1.1.4]# cp /etc/dovecot-example.conf /etc/dovecot.conf

[root@server01 dovecot-1.1.4]# vi /etc/dovecot.conf 
修改以下配置参数:(建议通过查找的方式配置以下各项)
protocols = imap pop3
ssl_disable = yes
disable_plaintext_auth = no
mail_location = maildir:~/Maildir
3、创建dovecot的PAM认证文件
[root@server01 dovecot-1.1.4]# vi /etc/pam.d/dovecot
auth    required        pam_nologin.so
auth    include         system-auth
account include         system-auth
session include         system-auth
4、启动dovecot服务
[root@server01 dovecot-1.1.4]# dovecot -c /etc/dovecot.conf 
查看dovecot服务开启的端口:
[root@server01 dovecot-1.1.4]# netstat -antp | grep dovecot
5、pop3邮件测试
[root@server01 dovecot-1.1.4]# telnet localhost 110
6、在windows客户端使用OE连接邮件系统发送电子邮件测试
############分割线 添加Webmail邮件界面###########################
准备条件:
apache服务器已经安装并配置好,支持php!
这里的配置环境是apache编译安装的,安装路径为:/usr/local/apache

1、解压squirremail软件包
[root@server01 tools]# tar jxvf squirrelmail-1.4.13.tar.bz2
[root@server01 tools]# mv squirrelmail-1.4.13 /usr/local/apache2/htdocs/webmail
[root@server01 webmail]# cd /usr/local/apache2/htdocs/webmail/
把squirremail的中文补丁包解压出来
[root@server01 webmail]# tar -jxvf /tools/zh_CN-1.4.13-20071220.tar.bz2 
2、创建及调整数据目录、附件目录
[root@server01 webmail]# mkdir -p attach data
[root@server01 webmail]# chown -R daemon:daemon attach/ data/
[root@server01 webmail]# chmod 730 attach/
3、创建并修改squirremail的配置文件
[root@server01 webmail]# cp config/config_default.php config/config.php
[root@server01 webmail]# vim config/config.php 
修改如下:(如果查找起来比较麻烦,可以查找)
$squirrelmail_default_language = 'zh_CN';
$domain = 'benet.com';
$smtpServerAddress = 'localhost';
$default_charset = 'zh_CN.UTF-8';
$imap_server_type = 'dovecot';
$data_dir = '/usr/local/apache2/htdocs/webmail/data';
$attachment_dir = '/usr/local/apache2/htdocs/webmail/attach';
4、通过客户端浏览器访问测试
http://mail.benet.com/webmail/
#################分割线 添加SMTP的用户认证 ###########################
1、查看系统是否已安装cyrus sasl认证组件
[root@server01 /]# rpm -qa | grep cyrus
在这里如果是rpm安装的,也可以直接使用
2、设置cyrus sasl函数库
[root@server01 /]# vi /usr/lib/sasl2/smtpd.conf 
添加参数:
pwcheck_method: saslauthd
3、启动saslauthd服务
[root@server01 /]# service saslauthd start
4、修改postfix主配置文件main.cf
添加sasl认证相关的参数:
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
mynetworks = 127.0.0.1
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
5、测试SMTP发信认证
在这里测试的方式最好是有2台邮件系统的环境。
测试可以通过smtp命令字测试,也可以通过邮件客户端软件测试。
#################分割线 设置用户别名与邮件群组###########################
1、修改postfix主配置文件,使用/etc/aliases文件作为数据查询表
[root@server01 /]# vi /etc/postfix/main.cf
添加参数:
alias_maps = hash:/etc/aliases
2、修改/etc/aliases配置文件
--配置别名
--配置邮件群发
--配置邮件转发
3、生成查询数据库
[root@server01 /]# newaliases 
4、使用客户端访问测试
#################分割线 设置邮件大小、邮箱空间限制###########################
邮件大小限制:
message_size_limit

邮箱空间大小限制:
mailbox_size_limit
 针对Mailbox邮箱、系统用户,缺省值为50MB
virtual_mailbox_limit
 针对使用虚拟用户的情况,缺省值为50MB
quota磁盘配额功能
 针对使用Linux系统用户作为邮件账号的情况
##############分割线 配置Postfix虚拟用户支持###########################
1、下载并对extman邮件管理工具解包
[root@www mail]# tar zxvf extman-0.2.5.tar.gz 
2、导入extman的SQL脚本文件
[root@www docs]# pwd
/tool/mail/extman-0.2.5/docs
[root@www docs]# mysql -u root -p < extmail.sql
[root@www docs]# mysql -u root -p < init.sql
3、修改postfix配置文件main.cf,添加支持虚拟用户的参数
[root@www /]# vi /etc/postfix/main.cf
添加如下参数:
#mydestination = $mydomain,$myhostname        //注释掉此参数
virtual_mailbox_base = /mailbox
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_uid_maps = static:1000
virtual_gid_maps = static:1000
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_application_name = smtpd
4、建立虚拟用户映射表文件
[root@www docs]# pwd
/tool/mail/extman-0.2.5/docs
把已存在的样例模板文件复制到/etc/postfix目录下:
[root@www docs]# cp mysql_virtual_* /etc/postfix/
5、为虚拟用户设置SMTP发信认证
需要安装courier-authlib应用程序才能提供对位于mysql数据库中的邮件虚拟用户的验证
[root@www mail]# tar jxvf courier-authlib-0.60.2.tar.bz2
[root@www mail]# cd courier-authlib-0.60.2
[root@www courier-authlib-0.60.2]# ./configure --prefix=/usr/local/courier-authlib --without-stdheaderdir --with-authmysql --with-redhat --with-mysql-libs=/usr/local/mysql/lib/mysql --with-mysql-include=/usr/local/mysql/include/mysql
[root@www courier-authlib-0.60.2]# make && make install
[root@www courier-authlib-0.60.2]# make install-configure
6、修改courier-authlib相关配置,并启动服务
[root@www /]# vi /etc/ld.so.conf
增加路径:
/usr/local/courier-authlib/lib/courier-authlib
[root@www /]# ldconfig
7、修改authdaemonrc主配置文件,仅保留authmysql认证方式,去掉其他方式
[root@www /]# cd /usr/local/courier-authlib/etc/authlib/
[root@www authlib]# cp authdaemonrc authdaemonrc.bak
[root@www authlib]# vim authdaemonrc
修改认证模块,如下:
authmodulelist="authmysql"
authmodulelistorig="authmysql"
[root@www authlib]# chmod -R 755 /usr/local/courier-authlib/var/spool/authdaemon/
8、修改配置文件authmysqlrc,设置如何向mysql数据库查询信息
[root@www authlib]# cp authmysqlrc authmysqlrc.bak
[root@www authlib]# vim authmysqlrc
修改如下参数的值:
MYSQL_SERVER            127.0.0.1
MYSQL_USERNAME   extmail
MYSQL_PASSWORD   extmail
MYSQL_SOCKET   /tmp/mysql.sock
MYSQL_DATABASE   extmail
MYSQL_USER_TABLE   mailbox
……
MYSQL_HOME_FIELD  concat('/mailbox/',homedir) 
……
MYSQL_MAILDIR_FIELD  concat('/mailbox/',maildir)
[root@www authlib]# chown daemon.daemon authmysqlrc
9、复制courier-authlib脚本,并启动courier-authlib服务
[root@www courier-authlib-0.60.2]# cd /tool/mail/courier-authlib-0.60.2
[root@www courier-authlib-0.60.2]# cp courier-authlib.sysvinit /etc/init.d/courier-authlib
[root@www courier-authlib-0.60.2]# chmod 755 /etc/rc.d/init.d/courier-authlib
[root@www courier-authlib-0.60.2]# chkconfig --level 35 courier-authlib on
[root@www courier-authlib-0.60.2]# service courier-authlib start
10、修改cyrus sasl设置,更改认证方式
[root@www /]# vi /usr/lib/sasl2/smtpd.conf 
修改为:
pwcheck_method:authdaemond
authdaemond_path:/usr/local/courier-authlib/var/spool/authdaemon/socket
调整socked目录的权限:
[root@www /]# chmod -R 755 /usr/local/courier-authlib/var/spool/authdaemon/
11、重新启动courier-authlib服务
[root@www /]# service courier-authlib restart
12、配置dovecot,调整邮件存储位置及其他参数
[root@www /]# vim /etc/dovecot.conf 
添加并修改参数如下:
mail_location = maildir:/mailbox/%d/%n/Maildir
auth default {
  mechanisms = plain
  passdb sql {
     args = /etc/dovecot-mysql.conf
  }
  userdb sql {
     args = /etc/dovecot-mysql.conf
  }
}
13、设置配置文件/etc/dovecot-mysql.conf
[root@www /]# cd /etc
[root@www etc]# touch dovecot-mysql.conf
[root@www etc]# vi dovecot-mysql.conf
添加并设置参数如下:
driver = mysql
connect = host=localhost dbname=extmail user=extmail password=extmail
default_pass_scheme = CRYPT
password_query = SELECT username AS user,password AS password FROM mailbox WH
ERE username = '%u'
user_query = SELECT maildir,uidnumber AS uid,gidnumber AS gid FROM mailbox WH
ERE username = '%u'
14、建立虚拟用户的邮箱目录
[root@www /]# mkdir -p /mailbox/extmail.org/postmaster/Maildir/
[root@www /]# cd /mailbox/extmail.org/postmaster/Maildir/
[root@www Maildir]# chown -R postfix:postfix /maibox/
[root@www Maildir]# killall dovecot
[root@www Maildir]# dovecot
15、测试对虚拟用户的SMTP发信认证
获得虚拟“用户postmaster@extmail.org密码extmail”的加密的字符串
有2种方法可以获取:
方法一:
[root@www authlib]# printf "postmaster@extmail.org" | openssl base64
[root@www authlib]# printf "extmail" | openssl base64
方法二:
[root@www authlib]# perl -e 'use MIME::Base64; print encode_base64("postmaster@extmail.org")'
[root@www authlib]# perl -e 'use MIME::Base64; print encode_base64("extmail")'
测试:
[root@www authlib]# telnet localhost 25
##############分割线 Extmail邮件使用及管理平台Extman###########################
1、编译安装相关的perl依赖包
[root@www /]# rpm -qa | grep Unix
[root@www /]# rpm -qa | grep DBI
perl-DBI-1.52-2.el5
[root@www /]# rpm -qa | grep DBD
perl-DBD-MySQL-3.0007-2.el5

卸载RPM安装的perl-DBD-MySQL
[root@www /]# rpm -e perl-DBD-MySQL
##安装Unix-Syslog-1.1.tar.gz
[root@www mail]# tar zxvf Unix-Syslog-1.1.tar.gz 
[root@www mail]# cd Unix-Syslog-1.1
[root@www Unix-Syslog-1.1]# perl Makefile.PL 
[root@www Unix-Syslog-1.1]# make && make install

##安装DBI-1.607.tar.gz 
[root@www mail]# tar zxvf DBI-1.607.tar.gz 
[root@www mail]# cd DBI-1.607
[root@www DBI-1.607]# perl Makefile.PL 
[root@www DBI-1.607]# make && make install

##安装DBD-mysql-4.011.tar.gz  
[root@www mail]# tar zxvf DBD-mysql-4.011.tar.gz 
[root@www mail]# cd DBD-mysql-4.011
[root@www DBD-mysql-4.011]# perl Makefile.PL
[root@www DBD-mysql-4.011]# make && make install
2、编译安装apache,修改apache配置文件httpd.conf
##查看当前系统是否存在rpm的http,如果存在则卸载
[root@www /]# rpm -qa | grep httpd
##释放apache软件包
[root@www tool]# tar zxvf httpd-2.2.9.tar.gz 
##编译前的预配置
[root@www tool]# cd httpd-2.2.9
[root@www httpd-2.2.9]# ./configure --prefix=/usr/local/apache --with-mysql=/usr/local/mysql --enable-so --enable-rewrite --enable-track-vars --enable-cgi --with-zlib --enable-mods-shared=all --enable-suexec --with-suexec-caller=daemon --with-suexec-docroot=/usr/local/apache/htdocs
##编译并安装
[root@www httpd-2.2.9]# make && make install
##查看apache是否安装完成
[root@www httpd-2.2.9]# ls /usr/local/apache/
##配置apache,并启动httpd服务
修改httpd.conf配置文件:
Listen 192.168.100.2:80
ServerName 192.168.100.2:80
DirectoryIndex index.html index.cgi
去掉以下3个配置参数的注释:
Include conf/extra/httpd-languages.conf
Include conf/extra/httpd-info.conf
Include conf/extra/httpd-vhosts.conf

配置httpd基于域名的虚拟主机:
[root@www /]# vim /usr/local/apache/conf/extra/httpd-vhosts.conf 
创建虚拟主机:
NameVirtualHost 192.168.100.2
<VirtualHost 192.168.100.2:80>
    DocumentRoot "/usr/local/apache/htdocs/"
    ServerName www.jkw.net
</virtualhost>

<VirtualHost 192.168.100.2:80>
    DocumentRoot "/usr/local/apache/htdocs/extmail/html/"
    ServerName mail.jkw.net
    scriptalias /extmail/cgi/ "/usr/local/apache/htdocs/extmail/cgi/"
    alias /extmail /usr/local/apache/htdocs/extmail/html
    suexecusergroup postfix postfix
</VirtualHost>
启动apache服务器:
[root@www /]# /usr/local/apache/bin/apachectl start
##设置apache服务开机启动
[root@www /]# echo "/usr/local/apache/bin/apachectl start" >> /etc/rc.d/rc.local
3、安装并配置extmail套件
[root@www mail]# tar zxvf extmail-1.0.5.tar.gz -C /usr/local/apache/htdocs/
[root@www mail]# cd /usr/local/apache/htdocs/
[root@www htdocs]# mv extmail-1.0.5/ extmail
[root@www htdocs]# cd extmail/
[root@www extmail]# chown -R postfix:postfix cgi
4、建立webmail.cf配置文件
[root@www extmail]# cp webmail.cf.default webmail.cf
[root@www extmail]# vim webmail.cf
修改以下参数的值:
SYS_USER_LANG = zh_CN
SYS_USER_CHARSET = gb2312
SYS_CONFIG = /usr/local/apache/htdocs/extmail/
SYS_LANGDIR = /usr/local/apache/htdocs/extmail/lang
SYS_TEMPLDIR = /usr/local/apache/htdocs/extmail/html
SYS_MAILDIR_BASE = /mailbox
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 = /usr/local/courier-authlib/var/spool/authdaemon/socket
SYS_G_ABOOK_FILE_PATH = /usr/local/apache/htdocs/extmail/globabook.cf
5、访问测试
http://mail.jkw.net/extmail/cgi/
6、部署extman web管理界面
##安装perl支持软件包GD、file-tail及rrdtool绘图引擎工具
[root@www mail]# tar zxvf GD-2.41.tar.gz 
[root@www mail]# tar zxvf File-Tail-0.99.3.tar.gz 
[root@www mail]# tar -zxvf gd-2.0.33.tar.gz 
[root@www mail]# cd gd-2.0.33
[root@www gd-2.0.33]#  ./configure
[root@www gd-2.0.33]#  make && make install
[root@www mail]# cd ../GD-2.41
[root@www GD-2.41]# perl Makefile.PL 
[root@www GD-2.41]# make && make install
[root@www GD-2.41]# cd ../File-Tail-0.99.3
[root@www File-Tail-0.99.3]# perl Makefile.PL
[root@www File-Tail-0.99.3]# make && make install
[root@www File-Tail-0.99.3]# cd ..
[root@www mail]# rpm -ivh rrdtool-1.2.23-3.el5.i386.rpm 
[root@www mail]# rpm -ivh rrdtool-perl-1.2.23-3.el5.i386.rpm 
7、安装并配置extman套件
[root@www mail]# tar zxvf extman-0.2.5.tar.gz -C /usr/local/apache/htdocs/
[root@www mail]# cd /usr/local/apache/htdocs/
[root@www htdocs]# mv extman-0.2.5/ extman
[root@www htdocs]# cd extman/
[root@www extman]# chown -R postfix.postfix cgi
[root@www extman]# mkdir /tmp/extman
[root@www extman]# chown -R postfix.postfix /tmp/extman/
[root@www extman]# vi webman.cf 
修改参数如下:
SYS_CONFIG = /usr/local/apache/htdocs/extman/
SYS_LANGDIR = /usr/local/apache/htdocs/extman/lang
SYS_TEMPLDIR = /usr/local/apache/htdocs/extman/html
SYS_MAILDIR_BASE = /mailbox
SYS_SESS_DIR = /tmp/extman/
SYS_MYSQL_USER = webman
SYS_MYSQL_PASS = webman
SYS_MYSQL_DB = extmail
SYS_MYSQL_HOST = localhost
SYS_MYSQL_SOCKET = /tmp/mysql.sock
修改httpd.conf配置文件,添加extman的相关设置:
[root@www extman]# vi /usr/local/apache/conf/extra/httpd-vhosts.conf 
<VirtualHost 192.168.100.2:80>
    DocumentRoot "/usr/local/apache/htdocs/extmail/html/"
    ServerName mail.jkw.net
    scriptalias /extmail/cgi/ "/usr/local/apache/htdocs/extmail/cgi/"
    alias /extmail /usr/local/apache/htdocs/extmail/html
    scriptalias /extman/cgi/ "/usr/local/apache/htdocs/extman/cgi/"
    alias /extman /usr/local/apache/htdocs/extman/html
    suexecusergroup postfix postfix
</VirtualHost>
重新启动apache服务:
[root@www extman]# /usr/local/apache/bin/apachectl restart
8、使用客户端登陆extmail邮件系统
http://mail.jkw.net/extmail
可以使用:
用户名:postmaster@extmail.org
密码:extmail
域名:extmail.org
登陆收发电子邮件进行测试!!!!
9、使用客户端登陆extman管理界面
http://mail.jkw.net/extman/
可以使用:
用户名:root@extmail.org
密码:extmail*123*
登陆管理extman邮件系统。
10、查看邮件系统的图形化日志信息
启用 mailgraph_ext 图形日志插件
[root@www html]# ln -sf /usr/local/apache/htdocs/extman/addon/mailgraph_ext/mailgraph-init /usr/sbin/
[root@www html]# ln -sf /usr/local/apache/htdocs/extman/addon/mailgraph_ext/qmonitor-init /usr/sbin/
[root@www html]# cd /usr/local/apache/htdocs/extman/addon/mailgraph_ext/
[root@www mailgraph_ext]# mkdir /usr/local/mailgraph_ext
[root@www mailgraph_ext]# cp mailgraph_ext.pl qmonitor.pl /usr/local/mailgraph_ext/
[root@www mailgraph_ext]# mailgraph-init start
[root@www mailgraph_ext]# qmonitor-init start
[root@www mailgraph_ext]# echo "/usr/sbin/mailgraph-init start" >> /etc/rc.d/rc.local 
[root@www mailgraph_ext]# echo "/usr/sbin/qmonitor-init start" >> /etc/rc.d/rc.local 
设置完成后就可以通过extman管理界面中的"图形日志"链接查看邮件系统的图形化日志信息。
说明:如果这里日志无法查看,可以回头检查之前的组件安装及上面的配置是否正确。
##########分割线 基于邮件地址的过滤###########################
通过配置postfix主配置文件/etc/main.cf可以实现邮件过滤的功能。
----------------------------------------------------------------
根据客户端的主机名/地址过滤   smtpd_client_restrictions
根据HELO主机名地址过滤        smtpd_helo_required
                              smtpd_helo_restrictions
根据发件人的地址过滤          smtpd_sender_login_maps
                              smtpd_sender_restrictions
根据收件人的地址过滤          smtpd_recipient_restrictions
----------------------------------------------------------------
应用示例1:根据主机名/地址过滤
[root@mail ~]# vi /etc/postfix/access
……
192.168.100      REJECT
192.168.100.1    OK
jkw.net       REJECT
[root@localhost ~]# postmap  /etc/postfix/access
[root@mail ~]# vi /etc/postfix/main.cf
……
smtpd_client_restrictions = check_client_access hash:/etc/postfix/access
示例测试需要的虚拟域、虚拟邮件用户、客户端需要自己创建,并测试过滤是否有效。

应用示例2:根据HELO宣告的地址过滤
[root@mail ~]# vi /etc/postfix/main.cf
……
smtpd_helo_required = yes
smtpd_helo_restrictions =  reject_invalid_hostname

应用示例3:根据发件人地址过滤
[root@mail ~]# vi /etc/postfix/main.cf
……
smtpd_sender_login_maps =
  mysql:/etc/postfix/mysql_virtual_sender_maps.cf,
  mysql:/etc/postfix/mysql_virtual_alias_maps.cf
smtpd_sender_restrictions =permit_mynetworks,reject_sender_login_mismatch, reject_non_fqdn_sender, reject_unknown_sender_domain, 
  check_sender_access hash:/etc/postfix/sender_access

[root@mail ~]# vi /etc/postfix/sender_access
……
ads@xxxx.com??????????REJECT
marketing@???????????REJECT
fake.jkw.net   ???????   REJECT
[root@mail ~]# postmap /etc/postfix/sender_access

应用示例4:根据收件人地址过滤
[root@mail ~]# vi /etc/postfix/main.cf
……
smtpd_recipient_restrictions =
  permit_mynetworks,                     //允许本邮件系统发出的邮件
  permit_sasl_authenticated,             //允许通过sasl认证的用户作为发件人
  reject_unauth_destination,             //收件人地址域不包括在Postfix授权网络内时拒绝
  reject_non_fqdn_recipient,             //收件人地址域不属于合法FQDN时拒绝
  reject_unknown_recipient_domain        //收件人地址域未知或不存在时拒绝
###########分割线 邮件内容过滤及防病毒###########################
1、安装MailScanner调度工具
[root@www mail]# tar zxvf MailScanner-4.75.11-1.rpm.tar.gz 
[root@www mail]# cd MailScanner-4.75.11-1
[root@www MailScanner-4.75.11-1]# ./install.sh 
说明:
mailscanner的安装会提示需要安装多个perl软件包,可以挂载光盘查找安装即可!
需要大概25分钟时间,较长,需要耐心!
2、修改配置文件/etc/MailScanner/MailScanner.conf 
[root@mail ~]# vi /etc/MailScanner/MailScanner.conf           
……
Run As User = postfix                          
Run As Group = postfix
Incoming Queue Dir = /var/spool/postfix/hold
Outgoing Queue Dir = /var/spool/postfix/incoming
MTA = postfix
Required SpamAssassin Score = 7
High SpamAssassin Score = 10
Spam Actions = deliver header "X-Spam-Status: Yes"
High Scoring Spam Actions = delete forward spam@extmail.org
3、配置postfix支持调用MailScanner
[root@mail ~]# vi /etc/postfix/main.cf
……
header_checks = regexp:/etc/postfix/header_checks
4、调整过滤队列目录,启动MailScanner服务
[root@mail ~]# vi /etc/postfix/header_checks
/^Received:/  HOLD
[root@mail ~]# cd /var/spool/MailScanner/
[root@mail MailScanner]# chown -R postfix.postfix  incoming
[root@mail MailScanner]# chown -R postfix.postfix quarantine
[root@mail MailScanner]# service MailScanner start
5、安装 SpamAssassin 过滤器
从RHEL5光盘中查找安装即可,包括存在依赖关系的相关perl软件包
启动 spamassassin 服务
 service spamassassin start
6、安装 F-Prot 病毒扫描工具
[root@www mail]# tar zxvf fp-Linux-i686-ws.tar.gz 
[root@www mail]# cd f-prot/
[root@www f-prot]# ./install-f-prot.pl
7、按照书上给出的测试方法进行邮件内容过滤和防病毒机制的测试!










本文转自 帅枫小明 51CTO博客,原文链接:http://blog.51cto.com/576642026/458471,如需转载请自行联系原作者
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
存储 关系型数据库 MySQL
|
Java Linux 网络安全
Linux CentOS7搭建邮件服务器并用Foxmail和Java代码发送邮件(下)
Linux CentOS7搭建邮件服务器并用Foxmail和Java代码发送邮件(下)
624 0
|
域名解析 Java Linux
Linux CentOS7搭建邮件服务器并用Foxmail和Java代码发送邮件(上)
Linux CentOS7搭建邮件服务器并用Foxmail和Java代码发送邮件(上)
723 0
|
测试技术 Linux 数据安全/隐私保护
Linux系统分别调用不同邮件服务器465端口发送短信
环境:centos7.2 python2.7.6 简介:通过编写的Python 脚本实现调用不同的邮件服务器465 端口发送短信。共四个。 脚本内容如下,具体内容不做介绍,主要是讲解如何通过该脚本实现上述需求。
5529 1
|
存储 网络协议 Linux
Linux服务器---邮件服务器dovecot
安装dovecot        Dovecot是CentOS系统中著名的POP3/IMAP服务器实现。POP3/IMAP是从邮件服务器中读取邮件时使用的协议,POP3将邮件全部从服务器中拖取下来;IMAP则每次从服务器获取邮件名等关键信息,要读某封邮件时,才从服务器下载。
1313 0