簡易筆記-使用docker安裝iredmail

iredmail 是一個很強大的軟件,看文件開發者應該是大陸人,很牛!

我12年前就開始用這個軟件, 而且現在還在用!

雖說免費版不支持微軟的AD, 但很多小公司本來就沒有這些配置, 所以沒差.

目前這系統現在已經很穩定很成熟, 非常很適合小公司使用, 大推薦,

而且最近我才發現一位應該是俄羅斯人有持續提供docker安裝方式. https://hub.docker.com/r/lejmr/iredmail , 又更方便了.

以下是我安裝的心得, 有空會持續更新

1. 用volume的方式與docker建立對應, 方便以後備份升級
2. 與官網建議的不同,我移除灰名單模組,這東西又愛又恨,愛的是擋廣告很猛,恨的是要對方重發信,常常被使用者罵收信很慢.
3. 安裝後, 輸入 https://ip:8443/iredadmin  就可以用postmaster@<網域> 登入, 接下來就可以新增網域,或是使用者.
4. 輸入https://ip:8443/mail , 或是 https://ip:8443/sogo 
   使用者登入@<網域>  就可以收發信了
5. 使用管理者也可以收信, 最初系統自行發送的三封信很重要, 例如要dns設定DKIM之類的
6. 我有將/etc/letsencrypt 對應到iRedMal,打算用來取代自簽的證書
docker volume create iredmail_mysql
docker volume create iredmail_vmail
docker volume create iredmail_clamav
docker volume create iredmail_log
docker volume create iredmail_postfix_conf
docker volume create iredmail_amavisd_conf
docker run -p 8443:443 -p 110:110 -p 25:25 -p 587:587 -p 143:143 -p 993:993 -p 995:995 \
            -h <主機名稱(含網域),hostname.domain> \
            -d --restart always \
            -e "MYSQL_ROOT_PASSWORD=password" \
            -e "SOGO_WORKERS=1" \
            -e "TZ=Asia/Taipei" \
            -e "POSTMASTER_PASSWORD={PLAIN}password" \
            -e "IREDAPD_PLUGINS=['reject_null_sender', 'reject_sender_login_mismatch', 'throttle', 'amavisd_wblist', 'sql_alias_access_policy']" \
            -v iredmail_mysql:/var/lib/mysql \
            -v iredmail_vmail:/var/vmail \
            -v iredmail_clamav:/var/lib/clamav \
            -v iredmail_log:/var/log \
            -v iredmail_postfix_conf:/etc/postfix \
            -v iredmail_amavisd_conf:/etc/amavisd \
            -v /etc/letsencrypt:/etc/letsencrypt \
            -v /etc/letsencrypt/live/<主機網域>/privkey.pem:/etc/ssl/private/iRedMail.key \
            -v /etc/letsencrypt/live/<主機網域>/fullchain.pem:/etc/pki/tls/certs/iRedMail.crt \
            --name=iredmail lejmr/iredmail:mysql-latest

經過試用一個月, 有一個目前無法解決的問題,就是重開docker時,dovecot或mysql會殘留舊的pid,造成dovecot與mysql啟動失敗的狀況, 此時只能手動刪除 /var/run/dovecot/master.pd or /var/lib/mysql/mysql.sock 等檔案, 然後再切換目錄到/services 找出重啟的shell scripts ,才能解決問題

好消息是官方也著手進行iredmail docker官方版 https://hub.docker.com/r/iredmail/mariadb
目前還是beta狀態,不適合正式上戰場,但我很期待 - 2020/05/06

如何安裝php加解密套件 ionCube

php網站開發商為了保護自己的程式, 常常使用ionCube這個套件將程式加密,

因此咖啡偶拿到廠商的程式, 需要安裝ionCube解開執行:

1 下載並解開
wget http://downloads3.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz

2 複製與php對應版本之so或是dll檔案
例如php是5.6
cp ioncube_loader_lin_5.6.so /usr/lib64/php/modules/

3. php.ini新增一筆
zend_extension = /usr/lib64/php/modules/ioncube_loader_lin_5.6.so

4. 檢查是否成功

php -m

mysql(mariadb) java 連線設定(connection string)

每次都會忘記, 因此寫下來

 
jdbc:mysql://localhost:3306/database?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8

有時候透過別人寫好的web設定界面, 會造成寫入xml錯誤 , 因此要注意所搭配系統是否使用xml當作設定檔.

例如&useUnicode=true ,寫到xml會出現  &amp;amp;useUnicode=true

請將多餘的amp;移除,只要留下 &amp;useUnicode=true 即可

mysql(mariadb)新增資料庫(UTF-8)與使用者權限

每次都會忘記, 而且之前一點都不在意把使用者與root權限分開,但資安還是要顧著.

MariaDB>CREATE DATABASE 資料庫名稱 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

新增使用者,密碼與權限

MariaDB> create database 資料庫名稱;
MariaDB> create user 使用者帳號@localhost identified by '使用者登入密碼';
MariaDB> grant all privileges on 資料庫名稱.* to 使用者帳號@localhost;
MariaDB> flush privileges;
MariaDB> quit

docker環境建立須知

本篇文章提供建立docker環境時, 所需要的步驟以及注意事項!

往後本站使用docker安裝之相關教學文件, 亦以本篇為基礎建設文章.

安裝docke所建議之母體作業系統為 CentOS 7.x , 以及 apache httpd 2.4.x 網站反向代理伺服器!

(1) 10002_(CentOS)如何安裝docker套件.txt

(2) 10007_(CentOS)如何取得LetsEncrypt加密證書.txt

(3) 10004_(CentOS)apache httpd代理內部伺服器(proxy).txt

(4) 10012_(Docker)如何安裝mariadb資料庫.txt