码迷,mamicode.com
首页 > 其他好文 > 详细

企业级mail服务器 Extmail 搭建

时间:2016-01-13 08:14:04      阅读:425      评论:0      收藏:0      [点我收藏+]

标签:服务器 extmail

邮件服务器

MUA 邮件用户代理 (Mail User Agent)  如foxmail outlook
MDA邮件投递代理(MAIL DELIVERY AGENT)如dovecot
MTA 邮件传输代理 (Mail Transfer Agent)如postfix  sendmail
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议, 它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。

企业级E-mail服务器 ExtMail

技术分享

图片:mail.jpg[删除]


技术分享

图片:dd.jpg[删除]


操作系统(OS) RHEL5U3 RHEL 5 update 3
邮件传输代理(MTA) Postfix 2.5.3 使用最新版本2.5.3
数据库/目录服务 MySQL 5.0  可选openLDAP或NetScape LDAP,本文以MySQL为蓝本
邮件投递代理(MDA) maildrop 2.0.x 支持过滤和强大功能
Web帐户管理后台 ExtMan 0.2.5 支持无限域名、无限用户
POP3 服务器 Courier-IMAP 对于大部分企业而言完全足够
WebMail 系统 ExtMail 1.1 支持多语言、全部模板化,功能基本齐全
SMTP认证库 Cyrus SASL  标准的SASL实现库,可以支持Courier authlib
其他数据认证库 Courier Authlib 0.60 authlib是maildrop, courier-imap等服务的关键部件
日志分析及显示 mailgraph_ext 在ExtMan中已经包含了
Web 服务器 Apache 2.x OS

配置流程

1. 安装postfix
service sendmail stop
yum install httpd-devel bind bind-chroot caching-nameserver
卸载不支持mysql认证的postfix
rpm -e postfix
安装postfix
yum install postfix-2.6.2-5hzq.i386.rpm
查看是否支持mysql认证
postconf -m
修改postfix配置文件
vim /etc/postfix/main.cf
75行 myhostname = mail.up.com
83行 mydomain = up.com
113行 inet_interfaces = all
260行 mynetworks = 192.168.0.0/24, 127.0.0.0/8
启动postfix
service postfix restart

2. 安装courier-authlib
使用authlib登陆验证.这样可以不用管后台用户数据是用什么方式存储的.比方说
MySQL/LDAP
yum install courier-authlib
yum install courier-authlib-mysql
修改配置文件:
设置使用的认证方式
cd /etc/authlib/authdaemonrc
27行 authmodulelist="authmysql"
34行 authmodulelistorig="authmysql"
数据库配置,设置连接地址、查询方式等
vim /etc/authlib/authmysqlrc    
26行 MYSQL_SERVER            localhost        mysql数据库服务器位置
27行 MYSQL_USERNAME                extmail          数据库管理员帐户
28行 MYSQL_PASSWORD               extmail          数据库管理员帐户密码
49行 MYSQL_SOCKET            /var/lib/mysql/mysql.sock    mysql.sock文件位置
56行 MYSQL_PORT                       3306             mysql端口
68行 MYSQL_DATABASE               extmail          虚拟用户数据库
83行 MYSQL_USER_TABLE           mailbox          从mailbox表获得邮件帐户的信息
92行 MYSQL_CRYPT_PWFIELD    password         从pssword字段获得帐户密码
113行 MYSQL_UID_FIELD             uidnumber        从uidnumber字段获得映射的本地用户UID
119行 MYSQL_GID_FIELD             gidnumber        从gidnumber字段获得映射的本地组GID
128行 MYSQL_LOGIN_FIELD        username       从username字段获得帐户名称(带@后缀)
133行 MYSQL_HOME_FIELD      concat(‘/var/mailbox/‘,homedir) 合并用户宿主目录完整路径
150行 MYSQL_MAILDIR_FIELD    concat(‘/var/mailbox/‘,maildir) 合并用户完整邮件存储路径
启动courier-authlib    
service courier-authlib start
创建邮箱目录
mkdir /var/mailbox

3. 安装courier-imap
yum install courier-imap
ExtMail目前还没有正式支持IMAP协议,因此需要屏蔽IMAP,只提供pop3服务。
而就目前的使用情况来看,IMAP使用的非常少,绝大部分OutLook/Foxmail用户都习惯使用POP3而非IMAP。
vi /usr/lib/courier-imap/etc/imapd
414行
IMAPDSTART=NO
vi /usr/lib/courier-imap/etc/imapd-ssl
75行
IMAPDSSLSTART=NO
重新启动courier-imap
service courier-imap start

4. 安装maildrop
maildrop是一个使用C++编写的用来代替本地MDA的带有过滤功能邮件投递代理,
是courier邮件系统组件之一,我们在此将使用maildrop来代替postfix自带的MDA。
yum install maildrop
为了使Postfix支持Maildrop,必须修改/etc/postfix/master.cf文件:
vim /etc/postfix/master.cf
63行
maildrop   unix        -       n        n        -        -       pipe
后边添加 最前边加两个空格
  flags=DRhu user=vuser argv=maildrop -w 90 -d ${user}@${nexthop}${recipient} ${user} ${extension} {nexthop}
配置vim /etc/postfix/main.cf
由于maildrop不支持一次接收多个收件人,因此必须在main.cf里增加如下参数:
maildrop_destination_recipient_limit = 1
maildrop -v   测试
检查安装结果,请确保有"Courier Authentication Library extension enabled."一句出现:
maildrop RPM包安装时,会自动创建vuser用户及vgroup用户组,
专门用于邮件的存储,vuser:vgroup的uid/gid都是1000
修改邮箱目录属性:755
chown vuser.vgroup /var/mailbox -R

5. 安装cyrus-sasl
yum install cyrus-sasl
开启postfix的smtp认证
vim /etc/postfix/main.cf
最后添加
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
让postfix支持虚拟用户,紫色部分用于不同域名之间收发邮件
别名的查询表位置
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
邮件域的查询表位置
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
邮箱的查询表位置
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_transport = maildrop
#local_recipient_maps = (注释去掉) 206行
编辑smtpd.conf文件,让虚拟用户到mysql数据库认证
vim /usr/lib/sasl2/smtpd.conf 复制以下内容
pwcheck_method: authdaemond
log_level: 3
mech_list: PLAIN LOGIN
authdaemond_path:/var/spool/authdaemon/socket
修改authdaemon socket目录权限
如果该目录权限不正确修改,maildrop及postfix等将无法正确获取用户的信息及密码认证:
chmod -R 777 /var/spool/authdaemon/
启动服务
service saslauthd start

6. 安装ExtMail和extman
安装用户使用页面
yum install extsuite-webmail
cd /var/www/extsuite/extmail
cp webmail.cf.default webmail.cf
vi webmail.cf
语言选项,可改作:
74行 SYS_USER_LANG = zh_CN
此处即为您在前文所设置的用户邮件的存放目录,可改作:
124行 SYS_MAILDIR_BASE = /var/mailbox/
136行 SYS_MYSQL_USER = extmail
137行 SYS_MYSQL_PASS = extmail
138行 SYS_MYSQL_DB = extmail
chown -R vuser:vgroup /var/www/extsuite/extmail/cgi/

安装后台管理页面
yum install extsuite-webman
vim /var/www/extsuite/extman/webman.cf
此处即为您在前文所设置的用户邮件的存放目录,可改作:
12行 SYS_MAILDIR_BASE = /var/mailbox
21行 SYS_CAPTCHA_ON = 0   //  不需要认证码
mkdir /tmp/extman              //   缓存目录
chown vuser.vgroup /tmp/extman
设置虚拟域和虚拟用户的配置文件
cp /var/www/extsuite/extman/docs/mysql_virtual_*.cf /etc/postfix/
chown -R vuser:vgroup /var/www/extsuite/extman/cgi/
导入mysql数据库结构及初始化数据
cd /var/www/extsuite/extman/docs
extman套件中提供的用于创建数据库和初始化数据库的sql脚本
mysql -u root -p <extmail.sql
mysql -u root -p <init.sql
extmail.sql 脚本进行的操作
           创建 extmail 库,及该库中的一些表
           创建用户 extmail@localhost, 密码为 extmail
           创建用户 webman@localhost,密码为 extman
init.sql脚本进行的操作
           添加虚拟邮件域 extmail.org 的记录
           创建用户 root@extmail.org,密码为 extmail*123*
           创建用户 postmaster@extmail.org,密码为 extmail
用户 extmail@localhost 对数据库extmail中的表拥有“SELECT”、“UPDATE”的权限
用户 webman@localhost” 对数据库extmail中的表拥有“SELECT”、“INSERT”、“DELETE”、  “UPDATE”权限
用户 root@extmail.org       作为该邮件域的管理帐户;
用户 postmaster@extmail.org  作为该邮件域内的基本邮件用户
测试authlib认证:
/usr/sbin/authtest -s login postmaster@extmail.org extmail
Authentication succeeded.
Authenticated: postmaster@extmail.org  (uid 1000, gid 1000)
Home Directory: /var/mailbox/extmail.org/postmaster
           Maildir: /var/mailbox/extmail.org/postmaster/Maildir/
           Quota: (none)
Encrypted Password: $1$phz1mRrj$3ok6BjeaoJYWDBsEPZb5C0
Cleartext Password: extmail
           Options: (none)
这样表明ExtMan的正确安装,数据库也正确导入,courier-authlib能正确连接到mysql数据库
Maildir: (none) 错误 是 /etc/authlib/authmysqlrc 文件问题


修改apache主配置文件 启用web页面访问
vim /etc/httpd/conf/httpd.conf 添加如下内容
NameVirtualHost *:80
<VirtualHost *:80>
ServerName mail.server.com    // 邮件服务器域名
DocumentRoot /var/www/extsuite/extmail/html/
ScriptAlias /extmail/cgi/ /var/www/extsuite/extmail/cgi/
Alias /extmail /var/www/extsuite/extmail/html/
ScriptAlias /extman/cgi/ /var/www/extsuite/extman/cgi/
Alias /extman /var/www/extsuite/extman/html/
SuexecUserGroup vuser vgroup
</VirtualHost>


重启apache服务
service httpd restart

7. 访问及测试
http://mail.lx.com/extman
选择管理即可登入extman进行后台管理了。
默认管理帐号为:root@extmail.org
默认管理密码为:extmail*123*
登录成功后创建虚拟域和虚拟用户
使用telnet登录25和110端口进行测试
测试发送邮件
telnet localhost 25
ehlo localhost
auth login
其它终端运行以下
perl -MMIME::Base64 -e ‘print encode_base64("kkk\@server.com");‘

计算出加密用户 a2trQHNlcnZlci5jb20=

perl -MMIME::Base64 -e ‘print encode_base64("111");‘
计算出加密密码 MTEx
或者用
printf "kkk@server.com" |openssl base64
a2trQHNlcnZlci5jb20=
printf "111" | openssl base64
MTEx
mail from:kkk@server.com
rcpt to:aaa@server.com
data
blablablaba
.
quit
测试接收邮件
telnet localhost 110
user aaa@server.com
pass aaa

list
retr 1
dele 1
quit
测试maildrop,输出如下:
echo "test mail" | maildrop -V 10 -d kkk@server.com
maildrop: authlib: groupid=1000
maildrop: authlib: userid=1000
maildrop: authlib: logname=kkk@server.com, home=/var/mailbox/lx.com/kkk,
mail=/var/mailbox/lx.com/abc/Maildir/
maildrop: Changing to /var/mailbox/lx.com/abc
Message start at 0 bytes, envelope sender=kkk@server.com
maildrop: Attempting .mailfilter
maildrop: Delivery complete.
如果发信提示:
SMTP rcpt error: 5.1.1 : Recipient address rejected: User unknown in local recipient table
请在/etc/postfix/main.cf里面确保存在下面配置
206行 local_recipient_maps =

如果发送邮件成功,但是无法接收邮件,请注释掉下面三项:
#mydestination

8. extman图形日志:
/usr/local/mailgraph_ext/mailgraph-init start
/var/www/extsuite/extman/daemon/cmdserver --daemon
开机自启动:
echo “/usr/local/mailgraph_ext/mailgraph-init start” >> /etc/rc.d/rc.local
echo “/var/www/extsuite/extman/daemon/cmdserver -v -d” >> /etc/rc.d/rc.local  


本文出自 “小郑技术博客” 博客,请务必保留此出处http://ko178.blog.51cto.com/220419/1734416

企业级mail服务器 Extmail 搭建

标签:服务器 extmail

原文地址:http://ko178.blog.51cto.com/220419/1734416

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!