編者按:本文將詳細說明iredmail 系統(tǒng)部署中的要點問題,希望能夠減少用戶部署該系統(tǒng)的難度。
本系統(tǒng)是在CentOS 7.5 上通過安裝iredmail(基于開源的postfix、dovecot、openldap、round cube 等軟件)郵件系統(tǒng),快速搭建一個支持SMTP、POP3 以及IMAP 等協(xié)議,提供WebMail 和Web 管理界面的郵件系統(tǒng)。
結(jié)合Gnu/Linux的輕量級DNS 服務(wù)器提供的域名服務(wù)功能,以及相應(yīng)的功能插件及配置優(yōu)化,該郵件系統(tǒng)可以很好的替代windows exchange 郵件服務(wù)器,用于企業(yè)內(nèi)部郵件系統(tǒng),并具有更好的安全性以及穩(wěn)定性。
1.CentOS 7 系統(tǒng)配置國內(nèi)yum 源和epel 源首先進入/etc/yum.repos.d/ 目錄下,新建一個repo_bak 目錄,用于保存系統(tǒng)中原來的repo文件。
在CentOS 中配置使用網(wǎng)易和阿里的開源鏡像。
到網(wǎng)易和阿里開源鏡像站點下載系統(tǒng)對應(yīng)版本的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 #
清除系統(tǒng)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 解析文件,內(nèi)容如下:
127.0.0.1 mail.test
使用命令“hostnamectl set-hostname mail.test”將當前主機名修改為“mail.test”。之后重啟系統(tǒng)。
通 過 http://www.iredmail.com/download.html 下載最新發(fā)布的iRedMail,在下載文件目錄下使用命令“tar xjf iRedMail-x.y.z.tar.bz2”解壓縮安裝包,并開始安裝。安裝過程可以通過閱讀官方安裝文檔或者上網(wǎng)搜索相關(guān)文章進行查閱,過程相對簡單,本文不再贅述。安裝過程中可能會出現(xiàn)某些組建包無法下載,需要大家采用技術(shù)手段首先解決路由可達問題,安裝完成。
安裝完成后確?!癷reda pd.service”“iredadmin.service”“ nginx.service”“amavisd.service”“ spamassa ssin.service”的系統(tǒng)服務(wù)為開啟狀態(tài)。
Iredmail 安裝完成后,并沒有像微軟 Exchange 郵件服務(wù)器那樣內(nèi)置集成了域控制器,在沒有理解微軟Exchange 郵件服務(wù)器的域之前,Iredmail 如何在內(nèi)部廣域網(wǎng)內(nèi)和上下級Mail 服務(wù)器進行郵件交換看起來一直是一個無法解決的問題。
其實,微軟Exchange 內(nèi)部集成的域就是一條在DNS服務(wù)器中的MX 記錄,只不過集成到內(nèi)部之后,不容易讓大家看到真相。
在Linux 中使用dnsmas q 輕量級DNS 服務(wù)器完全可以實現(xiàn)微軟Exchange的域功能,并實現(xiàn)郵件服務(wù)器的全區(qū)域轉(zhuǎn)發(fā)能力。通過命令“vi/etc/dnsmasq.conf”編輯dnsmasq 配置文件,并通過添加內(nèi)容“address=/mail.test/10.*.0.10”記錄“mail.test”主機的DNS 信息,之后添加內(nèi)容“mx-host=mail.test,50”記錄該主機對應(yīng)的MX 記錄,最后添加內(nèi)容“ptrrecord=10.0.*.10.in-addr.arpa,mail.test”記錄該主機的DNS 反向解析記錄。
涉及到郵件的轉(zhuǎn)發(fā)和接收,所以該文件中需要包含全區(qū)域內(nèi)的所有E-mail 服務(wù)器都要進行這三條記錄的添加。我們測試中因為全區(qū)域內(nèi)包含6 臺E-mail 服務(wù)器,因此需要增加這六臺服務(wù)器的相關(guān)DNS、mx、DNS 方向解析信息,用戶可根據(jù)自己企業(yè)的實際情況對全區(qū)域內(nèi)涉及到郵件轉(zhuǎn)發(fā)和接收的所有服務(wù)器進行梳理和添加。完成后開啟“dnsmasq.service”服務(wù)。
默 認的Web 標題是roundcube webmail,我們可以添加product_name 屬性,修改成自己的單位標題,使用命令“vi/opt/www/Round Cubemail-1.x.x/config/config.inc.php”修改如下行的單引號中的內(nèi)容:
$config['product_name']='XXXX-電子郵件系統(tǒng)';
刷新網(wǎng)頁后就會看到標題已經(jīng)更新。
先自己制作一個替換圖片,文件名roundcube_logo.png,大小為177*49,背景為透明,將文件保存或上傳至郵件服務(wù)器指定目錄,目錄位置“/opt/www/roundcubemail-1.x.x/skins/larry/images/roundcube_logo.png”,替換后將圖片文件權(quán)限改回原權(quán)限,權(quán)限值“644”刷新網(wǎng)頁就可以看到屬于自己的logo 了。
Web 登錄時可不用輸入郵箱全名,此項功能主要是為了保持用戶使用習慣,減少普通用戶使用繁雜度,在用戶輸入用戶名后,系統(tǒng)自動添加郵件全名,讓郵件系統(tǒng)登錄看起來就像微軟Exchange 那樣,使用命令“vi/opt/www/RoundCubemail-1.x.x/config/config.inc.php”添加或者修改如下行內(nèi)容:
$config['username_domain']="mail.test";
完成后重啟郵件服務(wù)器即可。
因為Iredmail 集成了安全功能組建并默認啟用了灰名單機制進行郵件的安全過濾,可能會造成接收外部郵件需要30 min,需要外部郵箱進行3 次投遞才接收,目的是防止垃圾郵件。
企業(yè)內(nèi)部可以禁用灰名單功能,如需禁止此項功能,需要使用使用命令“#vi/opt/iredapd/settings.py”編輯該文件,找 到plugins=[*****]這一行,刪除其中"greylisting"就可以了。
iredmail 提供大量第三 方webmail 插 件,可 從Roundcube 官網(wǎng)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)
將具有公共任務(wù)的上下文菜單添加到RoundCube的各個部分
(2)全局通訊錄(global addressbook)
將全局通訊簿添加到RoundCube,該插件需要jqueryui(jquery-ui for roundcube) 插件支持,故要同時安裝該插件。
vi/opt/www/iRedAdmin-0.x.x/settings.py
min_passwd_length=8#密碼最小位數(shù),將8 修改為4
max_passwd_length=0#密碼最大位數(shù),無需修改
vi/opt/www/RoundCub email-1.x.x/plugins/password/config.inc.php
$config['password_minimum_length']=8; #密碼最小位數(shù)默認值8,將8修改為4
$config['password_require_nonalpha']=true; #密碼應(yīng)包含字母和標點符號,將true 修改為false
如果你修改了計算機名字或者希望使用自己的信息創(chuàng)建自己的ssl key。
使用iredmail 提供的腳本generate_ssl_keys.sh(位 于/mail/mailinstall/iRedMail-0.x.x.x/tools)
編輯腳本里的你希望修改的相關(guān)信息
# 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}"
執(zhí)行腳本
# bash generate_ssl_keys.sh SSL keys were generated:-/root/certs/iRedMail_CA.pem-/root/private/iRedMail.key
把以前的證書備份一下,把新證書復(fù)制到下面兩個目錄下。
/etc/ssl/private/iRedMail.key
/etc/ssl/certs/iRedMail_CA.pem
如果我們裝完iremdail后,希望修改hostname(FQDN),那么我們需要修改下面相關(guān)的內(nèi)容。
修改hostname in/etc/hostname and/etc/hosts
產(chǎn)生新的證書
修改 hostname in amavis.conf
修改 hostname in dovecotquota-warning.sh
修改 hostname in posfix/main.cf
cp-Rf/etc/var/spool/postfix
要注意的是:以下設(shè)置,僅能讓你iredmail 可以發(fā)送大附件,如果接收郵件服務(wù)器不能接收大附件,則還是無法發(fā)送出去。
郵件客戶端發(fā)送大附件,增加到100 MB。
# postconf-e message_size_limit='104857600'
# postconf-e mailbox_size_limit='104857600'
重啟postfix 服務(wù)
#/etc/init.d/postfix restart
webmail 發(fā)送大附件
(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 服務(wù)
# nginx-s reload
(1)創(chuàng)建用戶表user.txt,3 個字段分別為:用戶名、密碼、顯示名稱,之間使用“,”間隔符,UTF-8 編碼保存。
(2)使用腳本add_user.bh 創(chuàng)建add_user.sql 文件。腳本內(nèi)容如下:
#!/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#用戶表,間隔符","
保存之后執(zhí)行該腳本,將在當前目錄下生成add_user.sql文件。
(3)進入mysql,打 開vmail庫,在mailbox表中批量導(dǎo)入用戶
# mysql-u root-p
mysql[none]> use vmail;
mysql[vmail]> source/path/add_user.sql;
mysql[vmail]> exit
(1)創(chuàng)建公用地址簿文件user_book.txt,4個字段分別為:顯示名稱、郵箱、名、姓,之間使用“,”間隔符,UTF-8編碼保存。
(2)使用腳本add_book.bh創(chuàng)建add_book.sql文件。腳本內(nèi)容如下:
#!/usr/bin/bash
SQL="add_book.sql" #輸出sql文件
UserList=/mail/user_book.txt #郵箱地址表,間隔符","
保存之后執(zhí)行該腳本,將在當前目錄下生成add_book.sql文件。
(3)進入mysql,打 開roundcubemail庫,在contacts表中批量導(dǎo)入公用地址簿
# mysql-u root-p
mysql[none]>use roundcubemail;
mysql[vmail]>source/path/add_book.sql;
mysql[vmail]> exit
在master.cf中加入下列設(shè)置:
如果希望停用郵件殺毒和郵件垃圾掃描的功能,編輯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
sassin 更新服務(wù)計劃任務(wù),防止內(nèi)網(wǎng)部署中定期向管理員發(fā)送更新失敗郵件,并且因為SA 更新失敗帶來的郵件系統(tǒng)崩潰的問題。
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
#注釋掉該行。