容器化(Docker)部署poste.io私有郵局

在若大的互聯網,我們都會通過郵箱注冊各種各樣的賬號,但是很多時候隻有一個主郵箱有著諸多不便,所以我們希望,最好是一個平台對應一個email,且無限製。

我在找了很多可以私有部署的郵局之後,最終選擇了poste.io,隻看中了一個點,輕量化部署,1G內存完全足矣,而且部署方便,也就意味著遷移方便。

環境

下麵我將在HostHatch的VPS上麵部署,配置如下:

1 核
2 GB RAM

請注意,一定要確保你的VPS商家開放了25端口,否則搭建不成功,一般發工單都可以解除限製

  • 係統

我將采用CentOS 8的係統

$ cat /etc/redhat-release
CentOS Linux release 8.3.2011
$ uname -a
Linux localhost.localdomain 4.18.0-240.15.1.el8_3.x86_64 #1 SMP Mon Mar 1 17:16:16 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

docker和docker-componse安裝請參考Install Docker Engine on CentOSInstall Docker Compose

運行poste.io

  • 創建poste.io運行目錄
$ mkdir -p deploy/mail
$ cd deploy/mail
  • 創建數據存放目錄
$ mkdir data
  • 創建docker-compose.yml配置文件
$ vim docker-compose.yml
version: "3.8"

services:
  mail:
    image: analogic/poste.io
    restart: always
    hostname: mail.ansheng.me
    ports:
     - "25:25"
     - "172.17.0.1:8080:8080"
     #- "4433:4433"
     - "110:110"
     - "143:143"
     - "465:465"
     - "587:587"
     - "993:993"
     - "995:995"
    environment:
     - TZ=Asia/Shanghai
     - DISABLE_CLAMAV=TRUE
     - DISABLE_RSPAMD=TRUE
     - HTTPS=OFF
     - HTTP_PORT=8080
     #- HTTPS_PORT=4433
    volumes:
     - ./data:/data

由於https是在NGINX上麵配置的,所以poste.io隻運行80端口且綁定在172.17.0.1:8080這個docker的host地址。

下麵兩個配置是關閉反垃圾郵件的功能,實測可以節省很多內存

- DISABLE_CLAMAV=TRUE
- DISABLE_RSPAMD=TRUE

在部署中,HTTPS我們在NGINX中上麵配置,為了可以共用80和443,至於那些選項是什麽意思,可以參考Getting started,官方文檔會有說明。

  • 運行
$ docker-compose up -d
  • 查看日誌
$ docker-compose logs -f
# 當出現下麵的提示表示啟動完成
......
mail_1  | [cont-init.d] done.
mail_1  | [services.d] starting services
mail_1  |
mail_1  |
mail_1  |  Poste.io administration available at https://172.30.0.2:443 or http://172.30.0.2:8080
mail_1  |
mail_1  |
mail_1  | [services.d] done.

配置DNS解析

官方文檔請參考Configuring DNS,我的域名是放在Cloudflare的,首先我們需要加一條A記錄,如下:

1

增加imappopsmtp記錄

2

增加MXSPFDMARC

3

其實我都已經加好了,所以我隻是截圖把配置發出來,按照上麵的配置對照著來就可以

配置Nginx

  • 安裝
$ dnf install nginx -y
  • 添加配置
$ vim /etc/nginx/conf.d/mail.ansheng.me.conf
server {
    listen 80;
    server_name mail.ansheng.me;

    if ($host = mail.ansheng.me) {
        return 301 https://$host$request_uri;
    }
    return 404;
}

server {
    listen 443 ssl http2;
    server_name   mail.ansheng.me;

    ssl_certificate "/etc/nginx/ssl/mail.pem";
    ssl_certificate_key "/etc/nginx/ssl/mail.key";

    index index.html;

    location / {
        proxy_pass http://172.17.0.1:8080/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 43200000;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_buffering off;
    }
}

我將SSL證書放在了/etc/nginx/ssl/這個目錄下

  • 啟動並設置開機啟動
$ systemctl enable --now nginx

瀏覽器訪問https://mail.ansheng.me/,會讓你配置管理員的賬號和密碼,做對應的設置就可以

4

配置

登陸後台的麵板大概長這樣

5

  • TLS

選擇左側欄的System settings -> TLS certificate,我們需要上傳ssl證書到poste.io,否則客戶端TLS無法使用

6

  • DKIM

為了防止進入垃圾箱,我們需要添加DKIM的配置,找到Virtual domains -> mail.ansheng.me請選擇自己的域名 -> 點擊create new key

8

9

在到DNS裏麵添加以下記錄

10

  • 收發件測試

配置完成之後我們可以退出登錄,然後登陸https://mail.ansheng.me/webmail/,發送一封郵件到其他郵箱測試是否可以收到

7

打開Gmail,很快就會收到郵件,有可能會進垃圾箱,可能解析還沒生效

11

然後我們回複郵件看是否能收到

12

可以收到回複

13

  • 客戶端

如果你需要配置客戶端,例如通過Gmail、Foxmail這些第三方的,請參考Example client settings,注意host和端口,我在iOS上麵的Gmail已經配置成功,可以收發郵件,正常使用。

結尾

  • 端口說明
端口 描述
25 SMTP – mostly processing incoming mails
110 POP3 – standard protocol for accessing mailbox, STARTTLS is required before client auth
143 IMAP – standard protocol for accessing mailbox, STARTTLS is required before client auth
465 SMTPS – Legacy SMTPs port
587 MSA – SMTP port used primarily for email clients after STARTTLS and auth
993 IMAPS – alternative port for IMAP encrypted since connection
995 POP3S – encrypted POP3 since connections

 

相關說明:

1、VIP會員無限製任意下載,免積分。立即前往開通>>

2、下載積分可通過日常 簽到綁定郵箱 以及 積分兌換 等途徑獲得!

3、本站資源大多存儲在雲盤,如出現鏈接失效請評論反饋,如有密碼,均為:www.ipipn.com。

4、所有站內資源僅供學習交流使用。未經原版權作者許可,禁止用於任何商業環境,否則後果自負。為尊重作者版權,請購買正版作品。

5、站內資源來源於網絡公開發表文件或網友分享,如侵犯您的權益,請聯係管理員處理。

6、本站提供的源碼、模板、軟件工具等其他資源,都不包含技術服務,請大家諒解!

7、源碼、模板等資源會隨著技術、壞境的升級而存在部分問題,還請慎重選擇。

PS.源碼均收集自網絡,如有侵犯閣下權益,請發信件至: admin@ipipn.com .


源站網 » 容器化(Docker)部署poste.io私有郵局

發表評論

讚助本站發展 維持服務器消耗

全站源碼免費下載 立刻讚助