一、extmail_solutionz
1、ExtMail Solution 结构
ExtMail Solution 是一个基于优秀开源软件的电子邮件系统解决方案,核心部件包括了Postfix、Amavisd-new、ClamAV、ExtMail、ExtMan、Courier系列软件。是一个功能相对比较齐全的免费电子邮件系统。以下是其主要的特性列表:

主要特性
 
支持SMTP/POP3/HTTP协议
 
支持SMTP认证及ESMTP
 
可支持大容量邮箱(大于1GB)
 
高速Web界面访问邮箱
 
完整的Web管理后台
 
在线服务端病毒过滤
 
内建内容过滤
 
SMTP行为识别垃圾邮件
 
支持大量反垃圾邮件技术
 
图形化邮件日志分析
 
支持别名/多域/域管理员等
 
支持网络磁盘/POP3邮件
 
支持读/写HTML格式邮件
 
支持定制模板及多语言

二、操作系统安装
1、RedHat系统所需组件:
本文档支持RedHat Enterprise 4.x 及CentOS 4.x版本。要注意的是安装系统时,只安装如下的组件:

Web Server:

要注意必须选中httpd-suexec软件包,否则下文的配置将失效。

MYSQL数据库:

注意必须选中mysql-server, libdbi-dbd-mysql, perl-DBD-mysql等模块,否则extmail将无法连接mysql

VIM编辑器:

强烈建议安装vim-enhanced软件包,它支持main.cf彩色高亮语法分析。

其余的Xwindows, 打印,KDE/Gnore, 服务器配置工具,网络工具,开发包等全部都不是必选组件。安装完毕进入操作系统后,为增加系统安全性,建议禁止root直接登陆,并增加一个非root帐户,例如sysadmin。这样无法以root账户直接登陆系统,必须先以sysadmin身份登陆再su到root执行。

2、安装步骤:
略。。。。。。

3、配置SSH:
以root身份登进系统后,增加一个非root帐户,名称为sysadmin,密码按您的需求设置一个即可。接下来我们要禁止root直接登陆。

shell

# vi /etc/ssh/sshd_config

修改以下配置为:

PermitRootLogin no

然后重新启动sshd,这样禁止了root直接登陆。

shell

# /etc/init.d/sshd restart

4、配置SELinux
自从RHEL4/CentOS4以后,系统默认打开了SELinux支持,简单说SELinux就是一个强制性的安全机制,但是它也带来了不少麻烦,为了避免编写烦琐的policy规则,本文档将屏蔽掉SELinux对MySQL及httpd的保护。方法如下:

shell

# setsebool httpd_disable_trans=1

# setsebool mysqld_disable_trans=1

操作完毕后,重新启动mysql及apache,并将如下命令加入/etc/rc.d/rc.local以便服务器启动后能自动生效:

shell

# vi /etc/rc.d/rc.local

加入以下内容:

/usr/sbin/setsebool httpd_disable_trans=1

/usr/sbin/setsebool mysqld_disable_trans=1

/etc/init.d/mysqld restart

/etc/init.d/httpd restart

三、制作_yum_仓库
1、下载软件包
整个系统的安装全过程都要求以root身份执行,如果机器没有访问外部网络的能力,则事先下载好EMOS光盘映像,并上传到服务器。

备注:如果要在CentOS 5.x上面进行配置,请下载EMOS-1.5.ISO,配置方法不变;

shell

# su - root

# cd /root

# wget ftp://www5.extmail.org/emos/EMOS_1.5.iso

2、制作本地 yum 仓库
使用EMOS1.5.ISO光盘制作本地 yum 仓库;

此外,我们假设本次安装默认域是extmail.org,主机名为:mail.extmail.org

安装CentOS光盘中createrepo工具

shell

# rpm -ivh createrepo*

加载EMOS1.5的光盘,请把emos的光盘放到光驱中

shell

# mkdir /mnt/EMOS

# mount /dev/cdrom /mnt/EMOS

# cd /mnt

# createrepo .

3、创建客户端 yum 的定义文件:
shell

# cd /etc/yum.repos.d

# mkdir backup

# mv *.repo ./backup

# vi EMOS.repo

加入以下内容:

[EMOS]

name=EMOS

baseurl=file:///mnt/

enabled=1

gpgcheck=0

重新获取最新的仓库信息:

shell

# yum clean all

# yum list

四、配置mta-postfix
1、安装postfix
安装postfix

shell

# yum install postfix

# rpm -e sendmail

2、配置postfix
shell

# postconf -n > /etc/postfix/main2.cf

# mv /etc/postfix/main.cf /etc/postfix/main.cf.old

# mv /etc/postfix/main2.cf /etc/postfix/main.cf

编辑main.cf:

shell

# vi /etc/postfix/main.cf

增加如下内容:(添加到文件的后面)

# hostname

mynetworks = 127.0.0.1

myhostname = mail.extmail.org

mydestination = $mynetworks $myhostname

# banner

mail_name = Postfix - by extmail.org

smtpd_banner = $myhostname ESMTP $mail_name

# response immediately

smtpd_error_sleep_time = 0s

# Message and return code control

message_size_limit = 5242880

mailbox_size_limit = 5242880

show_user_unknown_table_name = no

# Queue lifetime control

bounce_queue_lifetime = 1d

maximal_queue_lifetime = 1d

设置postfix开机自启:

shell

# chkconfig postfix on

五、配置courier-authlib
1、安装Courier-Authlib
安装以下软件包:

shell

# yum install courier-authlib

# yum install courier-authlib-mysql

编辑/etc/authlib/authmysqlrc文件:

shell

# vi /etc/authlib/authmysqlrc

并将其内容清空,然后增加如下内容:

MYSQL_SERVER            localhost

MYSQL_USERNAME          extmail

MYSQL_PASSWORD          extmail

MYSQL_SOCKET            /var/lib/mysql/mysql.sock

MYSQL_PORT              3306

MYSQL_OPT               0

MYSQL_DATABASE          extmail

MYSQL_USER_TABLE        mailbox

MYSQL_CRYPT_PWFIELD     password

MYSQL_UID_FIELD         uidnumber

MYSQL_GID_FIELD         gidnumber

MYSQL_LOGIN_FIELD       username

MYSQL_HOME_FIELD        homedir

MYSQL_NAME_FIELD        name

MYSQL_MAILDIR_FIELD     maildir

MYSQL_QUOTA_FIELD       quota

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)'

修改authdaemonrc文件

shell

# vi /etc/authlib/authdaemonrc

修改如下内容:

authmodulelist="authmysql"

authmodulelistorig="authmysql"

2、启动courier-authlib:
shell

# service courier-authlib start

如一切正常,命令行将返回如下信息:

Starting Courier authentication services: authdaemond

修改authdaemon socket目录权限

如果该目录权限不正确修改,maildrop及postfix等将无法正确获取用户的信息及密码认证:

shell

# chmod 755 /var/spool/authdaemon/

六、配置maildrop
1、安装maildrop
shell

# yum install maildrop

配置master.cf 为了使Postfix支持Maildrop,必须修改/etc/postfix/master.cf文件,注释掉原来的maildrop的配置内容,并改为:

maildrop   unix        -       n        n        -        -        pipe

flags=DRhu user=vuser argv=maildrop -w 90 -d ${user}@${nexthop} ${recipient} ${user} ${extension} {nexthop}

配置main.cf 由于maildrop不支持一次接收多个收件人,因此必须在main.cf里增加如下参数:

maildrop_destination_recipient_limit = 1

2、测试maildrop对authlib支持
shell

# maildrop -v

看是否出现以下内容:

maildrop 2.0.4 Copyright 1998-2005 Double Precision, Inc.

GDBM extensions enabled.

Courier Authentication Library extension enabled.

Maildir quota extension enabled.

This program is distributed under the terms of the GNU General Public

License. See COPYING for additional information.

注意事项:

1、如需重新编译Maildrop软件包,必须先获得其源码rpm包,并且必须先行安装courier-authlib及其devel软件包,否则编译后的maildrop将无法打开authlib支持。

2、maildrop RPM包安装时,会自动创建vuser用户及vgroup用户组,专门用于邮件的存储,vuser:vgroup的uid/gid都是1000,这与一般的邮件文档中提及用postfix用户存邮件不一样。因为postfix用户的uid一般都低于500,而Suexec模块编译时对UID/GID的要求是要大于500,因此使用postfix用户不能满足要求。其次,如果用Maildrop作为投递代理(MDA),以postfix身份投递的话,会导致postfix MTA错误。

七、配置apache
1、虚拟主机设置
编辑httpd.conf文件:

shell

# vi /etc/httpd/conf/httpd.conf

在最后一行加上:

NameVirtualHost *:80

Include conf/vhost_*.conf

编辑 vhost_extmail.conf

shell

# vi /etc/httpd/conf/vhost_extmail.conf

里面定义虚拟主机的相关内容:

# VirtualHost for ExtMail Solution

<VirtualHost *:80>

ServerName mail.extmail.org

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/

# Suexec config

SuexecUserGroup vuser vgroup

</VirtualHost>

设置apache开机启动

shell

# chkconfig httpd on

八、配置webmail-extmail
1、安装ExtMail
shell

# yum install extsuite-webmail

2、编辑webmail.cf
shell

# cd /var/www/extsuite/extmail

# cp webmail.cf.default webmail.cf

# vi webmail.cf

主要变动的内容见下:

SYS_MYSQL_USER = extmail

SYS_MYSQL_PASS = extmail

SYS_MYSQL_DB = extmail

更新cgi目录权限 由于SuEXEC的需要,必须将extmail的cgi目录修改成vuser:vgroup权限:

shell

# chown -R vuser:vgroup /var/www/extsuite/extmail/cgi/

九、配置管理后台-extman
1、yum安装ExtMan
shell

# yum install extsuite-webman

更新cgi目录权限 由于SuEXEC的需要,必须将extman的cgi目录修改成vuser:vgroup权限:

shell

# chown -R vuser:vgroup /var/www/extsuite/extman/cgi/

链接基本库到Extmail

shell

# mkdir /tmp/extman

# chown -R vuser:vgroup /tmp/extman

# chmod –R 777 /tmp/extman

2、数据库初始化
启动Mysql

shell

# service mysqld start

# chkconfig mysqld on

导入mysql数据库结构及初始化数据,root密码默认为空

shell

# mysql -u root -p < /var/www/extsuite/extman/docs/extmail.sql

# mysql -u root -p < /var/www/extsuite/extman/docs/init.sql

注意事项:

上面命令行中最后一个cd $OLDPWD是返回原始路径(即ExtMail Solution软件包根目录)

由于RedHat发行版中包含了一个叫tmpwatch的工具,该工具会定期扫描/tmp/下的文件,如果这些文件很久都没被使用,将被删除,因此如果后台长期不使用,/tmp/extman目录有可能被tmpwatch删除,所以要么定期登陆后台,要么修改 webman.cf将临时目录修改到另一个地方。此处暂以/tmp/extman默认值为例。

上述导入初始化SQL时,默认的uidnumber/gidnumber都是1000,这和vuser:vgroup 的uid/gid一致,是因为maildrop投递时会从数据库里取uidnumber/gidnumber,而在master.cf里已经定义好了投递时的运行身份(vuser:vgroup),所以这两个字段的内容必须为1000,否则将出现投递错误,例如报0×06等错误。

3、设置虚拟域和虚拟用户的配置文件
shell

# cd /var/www/extsuite/extman/docs

# cp mysql_virtual_alias_maps.cf /etc/postfix/

# cp mysql_virtual_domains_maps.cf /etc/postfix/

# cp mysql_virtual_mailbox_maps.cf /etc/postfix/

# cp mysql_virtual_sender_maps.cf /etc/postfix/

配置main.cf:

shell

# vi /etc/postfix/main.cf

增加以下内容:

# extmail config here

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:

重启postfix :

shell

# service postfix restart

4、测试authlib
在命令行下执行:

shell

# /usr/sbin/authtest -s login postmaster@extmail.org extmail

结果如下:

Authentication succeeded.

Authenticated: postmaster@extmail.org  (uid 1000, gid 1000)

Home Directory: /home/domains/extmail.org/postmaster

Maildir: /home/domains/extmail.org/postmaster/Maildir/

Quota: 104857600S

Encrypted Password: $1$phz1mRrj$3ok6BjeaoJYWDBsEPZb5C0

Cleartext Password: extmail

Options: (none)

这样表明ExtMan的正确安装,数据库也正确导入,courier-authlib能正确连接到mysql数据库最后访问http://mail.extmail.org/extmail/,如无意外,将看到webmail的登陆页,不过此时还没有加正式的用户,所以不能登陆,包括postmaster@extmail.org也不行。必须要登陆到http://mail.extmail.org/extman/ 里增加一个新帐户才能登陆。

ExtMan的默认超级管理员帐户:root@extmail.org,初始密码:extmail*123*,登陆成功后,建议将密码修改,以确保安全。

5、配置图形化日志
启动mailgraph_ext

shell

# /usr/local/mailgraph_ext/mailgraph-init start

启动cmdserver(在后台显示系统信息)

shell

# /var/www/extsuite/extman/daemon/cmdserver --daemon

加入开机自启动:

shell

# 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

使用方法: 等待大约15分钟左右,如果邮件系统有一定的流量,即可登陆到extman里,点“图形日志”即可看到图形化的日志。具体每天,周,月,年的则点击相应的图片进入即可。

转载于:https://blog.51cto.com/liujian/397503

构建RHEL上的extmail相关推荐

  1. linux升级到指定内核版本,如何在CentOS/RHEL上安装或升级新的内核版本

    Linux内核是一个整体的类Unix计算机操作系统内核.通常我们使用的Linux发行版,如Red Hat.Debian.SUSE等,这些都称为Linux的分发版.一个典型的分发版,是由Linux内核, ...

  2. 最佳实践丨构建云上私有池(虚拟IDC)的5种方案详解

    简介:云上私有池系列终篇终于来了,本文将重点介绍构建云上的私有池(虚拟IDC)的多种方案和各自的优缺点,并给出相关的性价比优化建议. 本文作者:阿里云技术专家李雨前 摘要 围绕私有池(虚拟IDC)的价 ...

  3. 如何通过httpd和DVD ISO在RHEL上配置yum本地源

    //译者注:本文翻译原文由红帽知识库 //(https://access.redhat.com/knowledge/solutions/7227)提供. //此符号(//)后面的内容均为译者添加 // ...

  4. 构建地理上分散的网络之4点论证

    客座文章最初由Iwan Price-Evans发表在Snapt的博客上 在比以往任何时候都更加依赖全球连接的世界中,了解数据流量如何在不同节点之间流动或在不同位置之间路由,以及如何设计弹性.性能和合规 ...

  5. 资源不在java项目和构建路径上_编译单元不在Java项目的构建路径上-Maven

    今天,我已经在日食中导入了一个Maven项目.当我尝试自动建议时,当我添加一些代码时,它提示我"编译单元不在Java项目的构建路径上".我没有看到解决此问题的方法,但是都没有解决. ...

  6. 阿里云刘强:无影云电脑构建云上安全办公室

    简介:无影云电脑提供触手可及的算力,在云办公.外企办公.分支机构办公.软件开发.人力外包等场景构建云上安全办公室. 2021年12月21日,阿里云弹性计算年度峰会在上海正式举行,并通过全实景进行直播. ...

  7. 实践分享丨构建云上私有池(虚拟IDC)的5种方案详解

    简介: 云上私有池系列终篇终于来了,本文将重点介绍构建云上的私有池(虚拟IDC)的多种方案和各自的优缺点,并给出相关的性价比优化建议. 本文作者:阿里云技术专家李雨前 摘要 围绕私有池(虚拟IDC)的 ...

  8. 如何在CentOS / RHEL上使用yum命令

    如何使用yum命令通过RHN或Internet更新来修复我的红帽企业Linux/CentOS Linux版本5.x/6.x/7.x服务器? 可以在RHEL V5.x下使用 up2date 命令吗? u ...

  9. 打包node服务端_如何基于NodeJS从零构建线上自动化打包工作流?

    前言 NodeJS在前端领域正扮演着越越重要的地位,它不仅可以让前端工作者使用javascript编写后端代码,还能方便地搭建响应速度快.易于扩展的网络应用.Node.js 使用事件驱动,非阻塞I/O ...

最新文章

  1. 最火的前端开发框架Bootstrap使用教程学习!
  2. 强!分库分表与分布式数据库技术选项分析
  3. ORACLE ROLLUP CUBE
  4. can总线报文是固定的吗_新能源汽车CAN总线Bus Off处理流程
  5. easy bootstrap模板
  6. 什么是*args和**kwargs?
  7. 理想汽车交付失误 油门踩到底速度最高30迈,李想:是我们太蠢了
  8. 2d unity 多物体 射线_24小时入门Unity游戏开发系列教程
  9. openresty lua_package_path指令
  10. C调用Python的崩溃
  11. Java从入门到入土
  12. 计算机专业毕设java选题参考
  13. python爬取微信好友教程_Python爬取微信好友
  14. DDCTF2018-黑盒破解 详细WP
  15. mac chrome更新错误12
  16. Android手机红外开发—点击和长按事件
  17. keil rt-thread link.sct 解析
  18. 技术岗的职业规划_《阿里感悟》- 技术人员的职业规划
  19. npm run serve 报错问题 (npm ERR! code ELIFECYCLE)
  20. QrCodeUtil--二维码工具类

热门文章

  1. python运行错误怎么查找_求助,python的二分法查找,按照视频上的代码写下来,结果运行错误...
  2. 福大计算机国二,福大学子喜获中国大学生计算机设计大赛二三等奖
  3. Ant Design Pro 登录流程以及路由权限设置
  4. iOS基础问答面试题连载-附答案
  5. 构建现代化的命令行工具
  6. Linux下Shell日期的格式
  7. [转]web打印实现方案 Lodop6.034 使用方法总结
  8. 为pony程序添加IACA标记(二)
  9. [转]Linux 的多线程编程的高效开发经验
  10. J2EE 第二阶段项目之编写代码(四)