邮件服务器搭建.doc_第1页
邮件服务器搭建.doc_第2页
邮件服务器搭建.doc_第3页
邮件服务器搭建.doc_第4页
邮件服务器搭建.doc_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

搭建邮件服务器大纲一、mail 协议二、mail 组件三、mail 工作原理(两种对比)四、安装前的准备工作五、安装并配置LAMP环境六、安装并配置postfixadmin七、安装并配置phpmyadmin八、配置postfix邮件发送代理九、安装并配置dovecot邮件检索代理十、测试SMTP与POP3服务十一、安装并配置WebMail(Roundcubemail)十二、安装并配置病毒扫描与垃圾邮件过滤十三、安装并配置managesieve插件十四、常见问题分析注:系统,CentOS 6.4 X86_64 。软件,全部都是RPM包,有兴趣的博友可以尝试一下全部源码包安装!(所安装的主要软件如下,LAMP+Postfix+Dovecot+PostfixAdmin+Roundcubemail+Amavisd-new+ClamAV+SpamAssassin+Managesieve) 软件包下载一、mail 协议mail使用的协议有,协议名称协议类型端口号smtptcp25pop3tcp110smtpstcp465pop3stcp995imaptcp143imapstcp993二、mail 组件1.MTA:mail transfer agent 邮件传输代理常见软件,12345Exchange(微软)Sendmail 开源的软件 目前有50%的邮件服务器使用这个软件Postfix 现在用的挺多Qmail 昙花一现Exim(英国剑桥大学开发的)2.MRA:mail retravial agent 邮件检索代理常见软件,12courier-imap:pop3,imap4,imaps,pop3s (俄罗斯开发)dovecot (主流)3.MDA:mail delivery agent 邮件投递代理常见软件,12procmail (postfix默认)maildrop (功能强大,效率高)4.MUA:mail user agent 邮件用户代理常见软件,1234outlook expressFoxmailpine(linux)mutt(linux,经常用到的)5.Mailbox 信箱123mailboxmaildir (主流)两者的主要区别,mailbox是把所有邮件放在同一个文件中,maildir把每个用户的邮件都单独存放三、mail 工作原理1.常规架构如下图,各组件具体说明(1).常用的客户端12Mail Client:outlook,foxmail等Web Browser:IE,Firefox,Chrome等(2).Postfix,最常用的MTA,我们通过postfix来发送邮件(3).Dovecot,最常用的MRA,我们通过dovecot来收发邮件(4).amavisd-new,可以理解成一个代理,Postfix把邮件交给他,他负责联系杀毒和反垃圾(5).SpamAssassin,防垃圾邮件,是邮件系统的基本功能,SpamAssassin,是最有名的,尤其是和Amavisd ClamAV结合起来,这是一个经得起考虑的组合(6).ClamAV,对邮件进行病毒扫描(7).Cyrus-SASL,认证函数库(8).Courier-Authlib,调用mysql数据库进行认证(9).WebMail,通过浏览器来管理收发邮件(10).OpenLDAP或MySQL,虚拟用户或虚拟域的存放数据库(11).Maildir或Mailbox,用来存放用户邮件,两者的区别在于maildir为每个用户单独存放邮件,mailbox是所有邮件都存放在同一文件(12).phpLDAPadmin,管理LDAP工具,用来管理虚拟用户与虚拟域2.具体工作流程(1). 当邮件通过outlook或foxmail发送到服务器的25端口,postfix接受连接,它会做一些基本检查发送者是否在黑名单或者实时黑名单,如果在黑名单,马上拒绝是否是授权用户,是授权可以进行转发接收者是否是服务器的用户,在这里postfix调用Cyrus-SASL认证函数库,并通过Courier-Authlib去mysql数据中验证用户,如果不是,马上拒绝如果我们启用了灰名单,会进行判断是否会拒绝邮件或者接收(2).postfix 把邮件通过10024端口交给amavis来处理,注意amavis,只会检查邮件而不会丢弃或者拒绝邮件(如上图)(3).amavis调用SpamAssassin检查邮件是否是spam,如果SpamAssassin认为邮件是垃圾邮件,会给邮件打上标记spam(如下图)(注:大家会看到,只会给邮件打上spam标记,我们还是可以收到这个邮件的)(4).amavis调用ClamAV,看邮件是否含有病毒(5).amavis把检查完的邮件,通过10025端口重新把邮件交回给postfix(6).postfix把邮件交给LDA(local delivery agent),LDA是负责本地邮件投放到用户的邮箱,postfix默认使用 procmail 投递邮件(我们也可以使用其它投递代理如,maildrop)到 用户的邮箱并以maildir的方式存放在硬盘上(7).用户使用邮件客户端,通过pop3或imap协议进行连接并管理邮件,webmail 是通过imap的方式来读取或管理邮件总结,从上面的工作流程我们可以看到用Cyrus-SASL,Courier-authlib,Maildrop太麻烦了。一大堆组件,邮件系统本来就很杂。我以能简单则简单的原则进行了精简而且效率更高,Dovecot目前已经实现了SASL,而且Dovecot的SASL能够自动CACHE查询结果,这个是比较好的。并且Dovecot还可以当LDA使用。而Postfix也支持Dovecot的SASL验证。Postfix可以直接使用Dovecot的后台认证,不需要分开配置。(如果使用Courier,我们必须安装配置额外的认证软件,比如Saslauthd,配置这个,会是一个恶梦,如果出现问题,很难排错),并且Dovecot,可以很方便实现磁盘配额的功能。Dovecot作为Courier的可替换组件,Dovecot在磁盘读写量上比Courier减少25%左右,内存占用也比Courier节省10%到70%不等。好了,说了这么多下面我们来看一下,我们的精简架构!3.精简架构经过与上面的对比我们明显看到简单了许多,嘿嘿!下面我们说一下具体的工作流程,(1).当邮件发送到服务器的25端口,postfix接受连接,它会做一些基本检查发送者是否在黑名单或者实时黑名单,如果在黑名单,马上拒绝是否是授权用户,是授权用户可以进行转发接收者是否是服务器的用户,Postfix通Dovecot提供的SASL进行认证,如果不是,马上拒绝如果我们启用了灰名单,会进行判断是否会拒绝邮件或者接收(2).postfix 把邮件通过10024端口交给amavis来处理,注意amavis,只会检查邮件而不会丢弃或者拒绝邮件(3).amavis调用SpamAssassin检查邮件是否是spam,如果SpamAssassin认为邮件是垃圾邮件,会给邮件打上标记spam(同上)(4).amavis调用ClamAV,看邮件是否含有病毒(5).amavis把检查完的邮件,通过10025端口重新把邮件交回给postfix(6).postfix把邮件交给LDA(local delivery agent),LDA是负责本地邮件投放到用户的邮箱,(我们这里使用dovecot提供的LDA功能,而不是postfix提供的LDA)邮件会进入用户的邮箱,Dovecot会执行用户设置的filter,也就是Dovecot通过调用Sieve,放到相关的文件夹(7).Dovecot 把邮件以maildir的方式存放在硬盘上。(8).用户使用邮件客户端,通过pop3或imap协议进行连接。Webmail(RoundCubeMail),是通过imap的方式来读取邮件。总结,经过上面的简单说明你应该知道整个邮件系统的工作流程了,下面我们将完整的搭建这套企业级的邮件系统!_四、安装前的准备工作1.关闭防火墙与SELinux12345678910111213141516171819202122rootmail # service iptables stopiptables:清除防火墙规则: 确定iptables:将链设置为政策 ACCEPT:filter 确定iptables:正在卸载模块: 确定rootmail # service ip6tables stopip6tables:清除防火墙规则: 确定ip6tables:将 chains 设置为 ACCEPT 策略:filter 确定:正在卸载模块: 确定rootmail # chkconfig iptables offrootmail # chkconfig ip6tables offrootmail # vim /etc/selinux/config# This file controls the state of SELinux on the system.# SELINUX= can take one of these three values:# enforcing - SELinux security policy is enforced.# permissive - SELinux prints warnings instead of enforcing.# disabled - No SELinux policy is loaded.SELINUX=disabled# SELINUXTYPE= can take one of these two values:# targeted - Targeted processes are protected,# mls - Multi Level Security protection.SELINUXTYPE=targetedrootmail # reboot2.修改主机名1234rootmail # vim /etc/sysconfig/networkNETWORKING=yesHOSTNAME=rootmail # reboot3.下载并安装yum源(1).163的yum源(2).rpmforge软件仓库1234rootmail # wget /.help/CentOS6-Base-163.reporootmail # wget /rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpmrootmail # lsanaconda-ks.cfg CentOS6-Base-163.repo install.log install.log.syslog rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm(3).备份原有的yum源12345678rootmail # cd /etc/yum.repos.d/rootmail yum.repos.d# lsCentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.reporootmail yum.repos.d# mkdir backuprootmail yum.repos.d# mv CentOS-* backup/rootmail yum.repos.d# lsbackuprootmail yum.repos.d#(4). 增加新的yum源1234567891011121314rootmail # cp CentOS6-Base-163.repo /etc/yum.repos.d/rootmail # rpm -ivh rpmforge-release-0.5.2-2.el6.rf.x86_64.rpmwarning: rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 6b8d79e6: NOKEYPreparing. # 100% 1:rpmforge-release # 100%rootmail # ll /etc/yum.repos.d/总用量 24drwxr-xr-x 2 root root 4096 7月 10 22:00 backup-rw-r-r- 1 root root 2006 7月 10 22:01 CentOS6-Base-163.repo-rw-r-r- 1 root root 739 11月 13 2010 mirrors-rpmforge-rw-r-r- 1 root root 717 11月 13 2010 mirrors-rpmforge-extras-rw-r-r- 1 root root 728 11月 13 2010 mirrors-rpmforge-testing-rw-r-r- 1 root root 1113 11月 13 2010 rpmforge.reporootmail #(5).清理yum缓存并更新系统123456rootmail # yum clean allLoaded plugins: fastestmirrorCleaning repos: base extras rpmforge updatesCleaning up EverythingCleaning up list of fastest mirrorsrootmail # yum update4.创建一个vmail用户,用作管理虚拟邮箱的文件夹1useradd -u 2000 -d /var/vmail -m -s /sbin/nologin vmail五、安装并配置LAMP环境说明:最新的PostfixAdmin2.3.6+Roundcubemail0.92的PHP环境要求是最低是PHP5.2,我这里RPM安装的是5.3.31.安装LAMP环境1rootmail #yum -y install httpd mysql mysql-devel mysql-server php php-pecl-Fileinfo php-mcrypt php-devel php-mysql php-common php-mbstring php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc pcre pcre-devel2.整合Apache与PHP123456789rootmail # vim /etc/httpd/conf/httpd.conf#增加下面现行AddType application/x-httpd-php .php #apache解析php程序PHPIniDir /etc/php.ini #指定php.ini配置文件路径#修改这一行增加index.phpDirectoryIndex index.php index.html index.html.var#修改apache运行的用户和组User vmailGroup vmail3.测试12345678910111213141516171819rootmail # vim /var/www/html/index.phprootmail # service httpd start正在启动 httpd:httpd: Could not reliably determine the servers fully qualified domain name, using for ServerName 确定rootmail #注:会有个警告rootmail # vim /etc/httpd/conf/httpd.conf#增加一行ServerName localhost:80rootmail # service httpd restart #重新启动不会再有警告停止 httpd: 确定正在启动 httpd: 确定rootmail html# chkconfig httpd on #加入开机自启动rootmail html# chkconfig httpd -listhttpd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭rootmail html#测试效果如下,看到这个图说明LAMP环境安装成功了,嘿嘿!顺便可以看一下imap这个很重要,嘿嘿!六、安装并配置postfixadmin1.查看所需软件1234567891011rootmail # ll总用量 12804-rw-. 1 root root 970 6月 20 05:03 anaconda-ks.cfg-rw-r-r- 1 root root 2006 9月 1 2011 CentOS6-Base-163.repo-rw-r-r-. 1 root root 15709 6月 20 05:03 install.log-rw-r-r-. 1 root root 4178 6月 20 05:01 install.log.syslog-rw-r-r- 1 root root 7728693 7月 7 18:48 phpMyAdmin--all-languages.zip-rw-r-r- 1 root root 1597001 7月 7 12:56 postfixadmin-2.3.6.tar.gz-rw-r-r- 1 root root 3735505 7月 7 12:57 roundcubemail-0.9.2.tar.gz-rw-r-r- 1 root root 12700 11月 13 2010 rpmforge-release-0.5.2-2.el6.rf.x86_64.rpmrootmail #2.解压并修改文件名12345678rootmail # tar xf postfixadmin-2.3.6.tar.gz -C /var/www/html/rootmail # cd /var/www/html/rootmail html# lsindex.php postfixadmin-2.3.6rootmail html# mv postfixadmin-2.3.6 postfixadminrootmail html# lsindex.php postfixadminrootmail html#3.配置并测试123456789101112131415161718192021222324rootmail html# cd postfixadmin/#修改前先备份一下配置文件rootmail postfixadmin# cp config.inc.php config.inc.php.bakrootmail postfixadmin# cp setup.php setup.php.bakrootmail postfixadmin# vim config.inc.php#找到下面几行并修改$CONFconfigured = true;$CONFdatabase_type = mysql;$CONFdatabase_host = localhost;$CONFdatabase_user = postfix;$CONFdatabase_password = postfix;$CONFdatabase_name = postfix;$CONFadmin_email = ;$CONFencrypt = dovecot:CRAM-MD5;$CONFdovecotpw = /usr/bin/doveadm pw;$CONFdomain_path = YES;$CONFdomain_in_mailbox = NO;$CONFaliases = 1000;$CONFmailboxes = 1000;$CONFmaxquota = 1000;$CONFfetchmail = NO;$CONFquota = YES;$CONFused_quotas = YES;$CONFnew_quota_table = YES;4.为postfixadmin创建Mysql数据库与权限123456789rootmail html# service mysqld startrootmail html# chkconfig mysqld on #加入开机自启动rootmail html# chkconfig mysqld -listmysqld 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭rootmail html#rootmail # mysqlmysql create database postfix;mysql grant all on postfix.* to postfixlocalhost identified by postfix;mysql flush privileges;测试一下能不能登录,1234567891011121314151617181920rootmail html# mysql -upostfix -ppostfixWelcome to the MySQL monitor. Commands end with ; or g.Your MySQL connection id is 3Server version: 5.1.69 Source distributionCopyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type help; or h for help. Type c to clear the current input statement.mysql show databases;+-+| Database |+-+| information_schema | postfix | test |+-+3 rows in set (0.00 sec)mysql测试成功可能登录!5.修改所有者与所有组123456rootmail html# chown -R vmail.vmail postfixadmin/rootmail html# ll总用量 8-rw-r-r- 1 root root 18 7月 10 22:18 index.phpdrwxrwxr-x 14 vmail vmail 4096 7月 10 22:57 postfixadminrootmail html#6.具体配置过程如下图(1).87/postfixadmin/setup.php注:检查PHP环境,并初始化数据库(2).创建设置密码并修改配置文件(我这里的密码是123456)rootmail postfixadmin# vim config.inc.php $CONFsetup_password = 6471f6462d427bf547c07fb2a08fdecf:09a43f16792234050d298b7d0333c101d4bbd48e;(3) .创建管理员密码先输入你刚才设置的密码,我这里是123456,然后输入管理员邮箱,我管理员密码!问题:cant proc_open /usr/bin/doveadm pw答案:必须打开php的proc_open函数支持出现错误,说没有dovecotpw,是因为我们还没安装dovecot,我们这里先来安装一下dovecot,后面再进行配置!12345rootmail postfixadmin# yum install -y dovecot dovecot-devel dovecot-mysqlrootmail postfixadmin# chkconfig dovecot on #加入开机自启动rootmail postfixadmin# chkconfig dovecot -listdovecot 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭rootmail postfixadmin#我们再来设置一下管理员的账户与密码,(我这里设置是 密码:admin)看这次设置成功,下面我们管理账户登录一下7.postfxiadmin不能自动创建目录,所以我们得增加自动建立目录的功能(1).建立创建虚拟邮箱脚本,脚本名称 /usr/local/bin/maildir-creation.sh,脚本内容如下:rootmail #vim /usr/local/bin/maildir-creation.sh#!/bin/bash#HOME_DIR=/var/vmailUSER_NAME=vmailGROUP_NAME=vmailif ! -d $HOME_DIR/$1 ; then mkdir $HOME_DIR/$1 chown -R $USER_NAME.$GROUP_NAME $HOME_DIR/$1fimkdir $HOME_DIR/$1/$2chown -R $USER_NAME.$GROUP_NAME $HOME_DIR/$1/$2(2).建立删除虚拟邮箱脚本,脚本名称 /usr/local/bin/maildir-deletion.sh ,脚本内容如下:1234567891011121314151617181920rootmail #vim /usr/local/bin/maildir-deletion.sh#!/bin/bash# vmta ALL = NOPASSWD: /usr/local/bin/maildir-deletion.sh#if $# -ne 2 ; then exit 127fiDOMAIN=$1USER=$2HOME_DIR=/var/vmailUSER_DIR=$HOME_DIR/$DOMAIN/$USERTRASH_DIR=$HOME_DIR/deleted-maildirsDATE=date +%Y%m%d_%H%M%Sif ! -d $TRASH_DIR/$DOMAIN ; then mkdir -p $TRASH_DIR/$DOMAINfiif -d $USER_DIR ; then mv $USER_DIR $TRASH_DIR/$DOMAIN/$USER-$DATEfi8.建立删除目录 12rootmail # mkdir /var/vmail/deleted-maildirsrootmail # chown -R vmail.vmail /var/vmail/deleted-maildirs/9.赋予脚本可执行权限 12rootmail # chmod 750 /usr/local/bin/maildir-*rootmail # chown vmail.vmail /usr/local/bin/maildir-*10.配置sudo1234567rootmail #vim /etc/sudoers#在 /etc/sudoers 最后增加两行vmail ALL = NOPASSWD: /usr/local/bin/maildir-creation.shvmail ALL = NOPASSWD: /usr/local/bin/maildir-deletion.sh#在/etc/sudoers 注释掉下面内容#Defaults requiretty:wq! #由于这个文件是只读的,所以得强制保存并退出11.修改postfixadmin的相关文件1234567891011121314rootmail # cd /var/www/html/postfixadmin/rootmail postfixadmin# vim create-mailbox.php修改create-mailbox.php 文件,229行内容应该是:db_log ($SESSID_USERNAME, $fDomain, create_mailbox, $fUsername);在该行前面增加下面一行,system(sudo /usr/local/bin/maildir-creation.sh $fDomain .$_POSTfUsername);rootmail postfixadmin# vim delete.php修改delete.php 文件,146行内容应该是,db_log ($SESSID_USERNAME, $fDomain, delete_mailbox, $fDelete);在该行下面增加下面4行,$userarray=explode(,$fDelete);$user=$userarray0;$domain=$userarray1;system(sudo /usr/local/bin/maildir-deletion.sh $domain $user);好了至此postfixadmin配置全部完成,_七、安装并配置phpmyadmin1.解压并重命令123456789rootmail # unzip phpMyAdmin--all-languages.ziprootmail # mv phpMyAdmin--all-languages /var/www/html/rootmail # cd /var/www/html/rootmail html# lsindex.php phpMyAdmin--all-languages postfixadminrootmail html# mv phpMyAdmin--all-languages phpmyadminrootmail html# lsindex.php phpmyadmin postfixadminrootmail html#2.修改配置文件123rootmail html# cd phpmyadmin/rootmail phpmyadmin# cp config.sample.inc.php config.inc.php rootmail phpmyadmin#3.给phpmyadmin授权1234mysql grant all on *.* to rootlocalhost identified by 123456;Query OK, 0 rows affected (0.03 sec)mysql flush privileges;Query OK, 0 rows affected (0.01 sec)4.测试好了,登录成功,现在我们就可以用phpmyadmin来管理mysql数据库了,嘿嘿!八、配置postfix邮件发送代理注:Postfix用CentOS6.4系统自带的,因为CentOS6.4里面的postfix包已经支持mysql1.查看postfix版本12rootmail postfixadmin# rpm -qa | grep postfixpostfix-2.6.6-2.2.el6_1.x86_642.配置postfix12345678910111213141516171819202122232425rootmail # vim /etc/postfix/main.cf#基本配置myhostname = mydomain = myorigin = $mydomaininet_interfaces = allmynetworks_style = hostmynetworks = 192.168.18/24, /8#虚拟域名配置virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cfvirtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cfvirtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf# Additional for quota supportvirtual_create_maildirsize = yesvirtual_mailbox_extended = yesvirtual_mailbox_limit_maps = mysql:/etc/postfix/mysql_virtual_mailbox_limit_maps.cfvirtual_mailbox_limit_override = yesvirtual_maildir_limit_message = Sorry, this user has exceeded their disk space quota, pleasetry again later.virtual_overquota_bounce = yes#Specify the user/group that owns the mail folders. Im not sure if this is strictly necessary when using Dovecots LDA.virtual_uid_maps = static:2000virtual_gid_maps = static:2000#Specifies which tables proxymap can read: /postconf.5.html#proxy_read_mapsproxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_mapsrootmail # postconf #检查配置文件是否有错误3.创建Mysql脚本(注意用户名和密码、DBNAME,我这里全是postfix) (1).创建/etc/postfix/mysql_virtual_domains_maps.cf文件12345678rootmail # vim /etc/postfix/mysql_virtual_domains_maps.cfuser = postfixpassword = postfix#如果不能连接使用hosts = localhostdbname = postfixquery = SELECT domain FROM domain WHERE domain=%s AND active = 1#optional query to use when relaying for backup MX#query = SELECT domain FROM domain WHERE domain=%s AND backupmx = 0 AND active = 1(2).创建/etc/postfix/mysql_virtual_alias_maps.cf文件123456rootmail #

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论