开源邮件系统iRadmail内网部署详解

2020-09-19 08:02
网络安全和信息化 2020年9期
关键词:脚本插件开源

编者按:本文将详细说明iredmail 系统部署中的要点问题,希望能够减少用户部署该系统的难度。

本系统是在CentOS 7.5 上通过安装iredmail(基于开源的postfix、dovecot、openldap、round cube 等软件)邮件系统,快速搭建一个支持SMTP、POP3 以及IMAP 等协议,提供WebMail 和Web 管理界面的邮件系统。

结合Gnu/Linux的轻量级DNS 服务器提供的域名服务功能,以及相应的功能插件及配置优化,该邮件系统可以很好的替代windows exchange 邮件服务器,用于企业内部邮件系统,并具有更好的安全性以及稳定性。

基础环境准备

1.CentOS 7 系统配置国内yum 源和epel 源首先进入/etc/yum.repos.d/ 目录下,新建一个repo_bak 目录,用于保存系统中原来的repo文件。

在CentOS 中配置使用网易和阿里的开源镜像。

到网易和阿里开源镜像站点下载系统对应版本的repo 文件。

[root@bogon yum.repos.d]# wget http://mirrors.aliyun.com/repo/Centos-7.repo

[root@bogonyum.repos.d]# wget http://mirrors.163.com/.help/CentOS7-Base-163.repo

[root@bogon yum.repos.d]# ls

Centos-7.repo CentOSBase-163.repo repo.bak

或者手动下载repo 文件并上传到/etc/yum.repos.d/目录

下载阿里开源镜像的epel 源文件 wget-O/etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo #

清除系统yum 缓存并生成新的yum 缓存。

[root@bogonyum.repos.d]# yum clean all

[root@bogonyum.repos.d]# yum makecache

[root@bogonyum.repos.d]# yum repolist enabled

[root@bogonyum.repos.d]# yum repolist all

2.修改主机名

通过命令“vi/etc/hosts”将未来IredMail 需要的主机名“mail.test”修改添加进主机hosts 解析文件,内容如下:

127.0.0.1 mail.test

使用命令“hostnamectl set-hostname mail.test”将当前主机名修改为“mail.test”。之后重启系统。

IredMail 组件安装

通 过 http://www.iredmail.com/download.html 下载最新发布的iRedMail,在下载文件目录下使用命令“tar xjf iRedMail-x.y.z.tar.bz2”解压缩安装包,并开始安装。安装过程可以通过阅读官方安装文档或者上网搜索相关文章进行查阅,过程相对简单,本文不再赘述。安装过程中可能会出现某些组建包无法下载,需要大家采用技术手段首先解决路由可达问题,安装完成。

安装完成后确保“ireda pd.service”“iredadmin.service”“ nginx.service”“amavisd.service”“ spamassa ssin.service”的系统服务为开启状态。

建立MX 记录信息

Iredmail 安装完成后,并没有像微软 Exchange 邮件服务器那样内置集成了域控制器,在没有理解微软Exchange 邮件服务器的域之前,Iredmail 如何在内部广域网内和上下级Mail 服务器进行邮件交换看起来一直是一个无法解决的问题。

其实,微软Exchange 内部集成的域就是一条在DNS服务器中的MX 记录,只不过集成到内部之后,不容易让大家看到真相。

在Linux 中使用dnsmas q 轻量级DNS 服务器完全可以实现微软Exchange的域功能,并实现邮件服务器的全区域转发能力。通过命令“vi/etc/dnsmasq.conf”编辑dnsmasq 配置文件,并通过添加内容“address=/mail.test/10.*.0.10”记录“mail.test”主机的DNS 信息,之后添加内容“mx-host=mail.test,50”记录该主机对应的MX 记录,最后添加内容“ptrrecord=10.0.*.10.in-addr.arpa,mail.test”记录该主机的DNS 反向解析记录。

涉及到邮件的转发和接收,所以该文件中需要包含全区域内的所有E-mail 服务器都要进行这三条记录的添加。我们测试中因为全区域内包含6 台E-mail 服务器,因此需要增加这六台服务器的相关DNS、mx、DNS 方向解析信息,用户可根据自己企业的实际情况对全区域内涉及到邮件转发和接收的所有服务器进行梳理和添加。完成后开启“dnsmasq.service”服务。

邮件系统优化

1.修改Web 标题

默 认的Web 标题是roundcube webmail,我们可以添加product_name 属性,修改成自己的单位标题,使用命令“vi/opt/www/Round Cubemail-1.x.x/config/config.inc.php”修改如下行的单引号中的内容:

$config['product_name']='XXXX-电子邮件系统';

刷新网页后就会看到标题已经更新。

2.替换网站logo

先自己制作一个替换图片,文件名roundcube_logo.png,大小为177*49,背景为透明,将文件保存或上传至邮件服务器指定目录,目录位置“/opt/www/roundcubemail-1.x.x/skins/larry/images/roundcube_logo.png”,替换后将图片文件权限改回原权限,权限值“644”刷新网页就可以看到属于自己的logo 了。

3.配置Web 登录用户名不用输入邮箱全名

Web 登录时可不用输入邮箱全名,此项功能主要是为了保持用户使用习惯,减少普通用户使用繁杂度,在用户输入用户名后,系统自动添加邮件全名,让邮件系统登录看起来就像微软Exchange 那样,使用命令“vi/opt/www/RoundCubemail-1.x.x/config/config.inc.php”添加或者修改如下行内容:

$config['username_domain']="mail.test";

完成后重启邮件服务器即可。

4.禁用灰名单

因为Iredmail 集成了安全功能组建并默认启用了灰名单机制进行邮件的安全过滤,可能会造成接收外部邮件需要30 min,需要外部邮箱进行3 次投递才接收,目的是防止垃圾邮件。

企业内部可以禁用灰名单功能,如需禁止此项功能,需要使用使用命令“#vi/opt/iredapd/settings.py”编辑该文件,找 到plugins=[*****]这一行,删除其中"greylisting"就可以了。

5.加载插件

iredmail 提供大量第三 方webmail 插 件,可 从Roundcube 官网https://pl ugins.roundcube.net/expl ore/popular 下载,下载解压后上传至/opt/www/RoundC ubemail-1.x.x/plugins 目录中,加载插件就在配置文件中修改:

vi/opt/www/RoundCubem ail-1.x.x/config/config.inc.php

$config['plugins']=array(' 插件文件夹名称1','插件文件夹名称2');

例如:$config['plugin s']=array('password','globaladdressbook');

主要加载的插件有:

(1)右键菜单(contextm enu)

将具有公共任务的上下文菜单添加到RoundCube的各个部分

(2)全局通讯录(global addressbook)

将全局通讯簿添加到RoundCube,该插件需要jqueryui(jquery-ui for roundcube) 插件支持,故要同时安装该插件。

6.修 改iRedAdmin 管 理后台相关的密码复杂性配置

vi/opt/www/iRedAdmin-0.x.x/settings.py

min_passwd_length=8#密码最小位数,将8 修改为4

max_passwd_length=0#密码最大位数,无需修改

7.修 改webmail 用户界面密码复杂性配置

vi/opt/www/RoundCub email-1.x.x/plugins/password/config.inc.php

$config['password_minimum_length']=8; #密码最小位数默认值8,将8修改为4

$config['password_require_nonalpha']=true; #密码应包含字母和标点符号,将true 修改为false

8.iredmail 证书更新

如果你修改了计算机名字或者希望使用自己的信息创建自己的ssl key。

使用iredmail 提供的脚本generate_ssl_keys.sh(位 于/mail/mailinstall/iRedMail-0.x.x.x/tools)

编辑脚本里的你希望修改的相关信息

# SSL key.export SSL_CERT_FILE="${ROOTDIR}/certs/ iRedMail _CA.pem" export SSL_KEY_FILE="${ROOTDIR}/private/iRedMail.key" export TLS_COUNTRY='CN' export TLS_STATE='GuangDong' export TLS_CITY='ShenZhen' export TLS_COMPANY="${HOSTNAME}"export TLS_DEPARTMENT='IT'export TLS_HOSTNAME="${HOS TNAME}" export TLS_ADMIN="root@${HOSTNAME}"

执行脚本

# bash generate_ssl_keys.sh SSL keys were generated:-/root/certs/iRedMail_CA.pem-/root/private/iRedMail.key

把以前的证书备份一下,把新证书复制到下面两个目录下。

/etc/ssl/private/iRedMail.key

/etc/ssl/certs/iRedMail_CA.pem

9.如何修改hostname

如果我们装完iremdail后,希望修改hostname(FQDN),那么我们需要修改下面相关的内容。

修改hostname in/etc/hostname and/etc/hosts

产生新的证书

修改 hostname in amavis.conf

修改 hostname in dovecotquota-warning.sh

修改 hostname in posfix/main.cf

cp-Rf/etc/var/spool/postfix

10.支持大附件

要注意的是:以下设置,仅能让你iredmail 可以发送大附件,如果接收邮件服务器不能接收大附件,则还是无法发送出去。

邮件客户端发送大附件,增加到100 MB。

# postconf-e message_size_limit='104857600'

# postconf-e mailbox_size_limit='104857600'

重启postfix 服务

#/etc/init.d/postfix restart

webmail 发送大附件

(1) vi/etc/php.ini

memory_limit=200M;

upload_max_filesize=100M;

post_max_size=100M;

(2)vi/opt/www/Round Cubemail-1.x.x/.htaccess

php_value memory_limit 200M

php_value upload_max_filesize 100M

php_value post_max_size 100M

(3)vi/etc/nginx/nginx.conf

client_max_body_size 100m;

重启nginx 服务

# nginx-s reload

11.批量导入邮件用户

(1)创建用户表user.txt,3 个字段分别为:用户名、密码、显示名称,之间使用“,”间隔符,UTF-8 编码保存。

(2)使用脚本add_user.bh 创建add_user.sql 文件。脚本内容如下:

#!/usr/bin/bash

SQL="add_user.sql" #输出sql 文件

DOMAIN="siaj.tl" # 域名

STORAGE_BASE_DIRECTOR Y="/mail/vmail1" #iRedmai l 安装路径

STORAGE_BASE="$(dirna me ${STORAGE_BASE_DIRECTO RY})" #"/mail"

STORAGE_NODE="$(basename${STORAGE_BASE_DIRECTORY})"#"vmail1"

DEFAULT_QUOTA='5120' #邮箱容量,单位M

DEFAULT_PASSWD='1234'#默认密码,MD5 加密

MAILBOX_FORMAT='Maildir'

MAILDIR_STYLE='hashed' #hashed,normal.

DATE="$(date+%Y.%m.%d.%H.%M.%S)"

UserList=/mail/user.txt#用户表,间隔符","

保存之后执行该脚本,将在当前目录下生成add_user.sql文件。

(3)进入mysql,打 开vmail库,在mailbox表中批量导入用户

# mysql-u root-p

mysql[none]> use vmail;

mysql[vmail]> source/path/add_user.sql;

mysql[vmail]> exit

12.批量导入公用地址簿

(1)创建公用地址簿文件user_book.txt,4个字段分别为:显示名称、邮箱、名、姓,之间使用“,”间隔符,UTF-8编码保存。

(2)使用脚本add_book.bh创建add_book.sql文件。脚本内容如下:

#!/usr/bin/bash

SQL="add_book.sql" #输出sql文件

UserList=/mail/user_book.txt #邮箱地址表,间隔符","

保存之后执行该脚本,将在当前目录下生成add_book.sql文件。

(3)进入mysql,打 开roundcubemail库,在contacts表中批量导入公用地址簿

# mysql-u root-p

mysql[none]>use roundcubemail;

mysql[vmail]>source/path/add_book.sql;

mysql[vmail]> exit

13.开启SMTPS SSL功能,发送邮件使用465端口

在master.cf中加入下列设置:

14.禁 用Amavisd +ClamAV+SpamAssassin

如果希望停用邮件杀毒和邮件垃圾扫描的功能,编辑postfix配置文件,注释掉以下行:

(1) vi

/etc/postfix/main.cf

# content_filter=s mtp-amavis:[127.0.0.1]:1 0024

# receive_override_options=no_address_mappings # <-it's ok if you don't have this line

(2) vi/etc/postfix/master.cf

#-o content_filter=

smtp-amavis:[127.0.0.1]:10026

(3)service postfix restart

15.关闭clamav、spamas

sassin 更新服务计划任务,防止内网部署中定期向管理员发送更新失败邮件,并且因为SA 更新失败带来的邮件系统崩溃的问题。

cd/etc/cron.d

vim clamav-update

# 0 */3 * * *root/usr/share/clamav/freshclam-sleep

#注释掉该行。

vim sa-update

# 10 4 * * * root/usr/share/spamassassin/sa-update.cron 2>&1 | tee-a/var/log/sa-update.log

#注释掉该行。

猜你喜欢
脚本插件开源
酒驾
基于CTK插件框架的太赫兹人体安检系统软件设计
自编插件完善App Inventor与乐高机器人通信
五毛钱能买多少头牛
2019开源杰出贡献奖
基于OSGi的军用指挥软件插件机制研究
自动推送与网站匹配的脚本
基于jQUerY的自定义插件开发
大家说:开源、人工智能及创新
开源中国开源世界高峰论坛圆桌会议纵论开源与互联网+创新2.0