如果您不是進階使用者,那麼在 Linux 上從頭開始設定自己的電子信件伺服器是一件很痛苦的事情。 本教學將向您展示如何使用 iRedMail 在 Ubuntu 22.04 上快速設定功能齊全的信件伺服器,為您節省大量時間和麻煩。
什麼是 iRedMail?
iRedMail 是一個 shell 腳本,可以在您的 Linux/BSD 伺服器上自動安裝和配置所有必需的信件伺服器元件,從而消除手動安裝和配置。 借助 iRedMail,您可以 輕鬆建立無限個信箱和無限個信件域 在基於 Web 的管理面板中 。 信箱可以存儲在 MariaDB/MySQL、PostgreSQL 資料庫或 OpenLDAP 中。 以下是 iRedMail 將自動安裝和配置的開源軟體的清單。
- Postfix SMTP 伺服器
- Dovecot IMAP 伺服器
- Nginx Web 伺服器為管理面板和 Web 信件提供服務
- OpenLDAP、MySQL/MariaDB 或 PostgreSQL 用於存儲使用者訊息
- Amavided-用於 DKIM 簽名和驗證的新功能
- SpamAssassin 用於反垃圾信件
- ClamAV 用於防病毒
- Roundcube 網路信件
- SOGo元件,提供網路信件、日曆(CalDAV)、聯繫人(CardDAV)、任務和ActiveSync服務。
- 用於保護 SSH 的 Fail2ban
- mlmmj 信件清單管理器
- 網路資料伺服器監控
- 用於灰名單的 iRedAPD Postfix 策略伺服器
第 1 步:選取合適的託管提供商併購買域名
要使用 iRedMail 設定功能齊全的電子信件伺服器,您需要一台至少具有 3GB RAM 的伺服器,因為安裝後,您的伺服器將使用超過 2GB RAM。
強烈建議您在全新的 Ubuntu 22.04 伺服器上安裝 iRedMail。 如果您使用現有的生產伺服器,iRedMail 可能會清除您現有的資料庫。
本教學是在 具有 1 個 CPU 和 3GB RAM的 Kamatera VPS(虛擬私人伺服器)上完成的,價格為 9 美元/月 。
他們提供 30 天的免費試用。
Kamatera 是運行信件伺服器的一個非常好的選取,因為
- 它們不會阻止連接埠 25 ,因此您可以傳送到無限的電子信件(事務性電子信件和新聞通信),而無需花錢購買 SMTP 中繼服務。 Kamatera 沒有任何 SMTP 限制。 您每天可以傳送到一百萬封電子信件。
- 該 IP 位址不在任何電子信件黑名單中 。 (至少對我來說是這樣。我選取了達拉斯資料中心。)您絕對不想被列入可怕的 Microsoft Outlook IP 黑名單或垃圾信件黑名單。 有些黑名單會阻止整個 IP 範圍,您無法將您的 IP 位址從此類黑名單中刪除。
- 您可以編輯 PTR 記錄以提高電子信件的送達率。
- 傳送到新聞通信 它們容許您向電子信件訂閱者 ,沒有 每小時或每日限制。
- 您可以為單個伺服器訂購多個 IP 位址。 這對於需要傳送到大量電子信件的人來說非常有用。 您可以 將電子信件流量分散到多個 IP 位址上 ,以實現更好的電子信件送達率。
其他 VPS 提供商(例如 DigitalOcean )會阻止連接埠 25。DigitalOcean 不會解鎖連接埠 25,因此您需要設定 SMTP 中繼來繞過阻止,這可能會花費您額外的費用。 如果您使用 Vultr VPS ,則預設情況下會阻止連接埠 25。 如果您開啟支援票證,他們可以解鎖它,但如果他們決定不容許您的電子信件傳送到活動,他們可以隨時再次阻止它。 如果您使用 Vultr 的伺服器傳送到新聞通信,Vultr 實際上可能會重新阻止它。
轉至 Kamatera 網站 建立帳戶,然後在帳戶控制台中建立伺服器。
我建議按照下面連結的教學在 Kamatera 上正確設定 Linux VPS 伺服器。
- 如何在 Kamatera 上建立 Linux VPS 伺服器
建立伺服器後,Kamatera 將向您傳送到一封電子信件,其中包括伺服器 SSH 登入詳細訊息。 要登入伺服器,您可以使用 SSH 用戶端。 如果您的電腦上使用的是 Linux 或 macOS,則只需開啟終端視窗並運行以下指令即可登入伺服器。 將 12.34.56.78 置換為您伺服器的 IP 位址。
ssh root@12.34.56.78
系統將要求您輸入密碼。
您還需要一個域名。 註冊了我的域名, 我從NameCheap 因為價格低,而且他們終身免費提供 whois 隱私保護。
步驟 2:建立 DNS MX 記錄
MX 記錄指定哪個或哪些主機處理特定域名的電子信件。 例如,處理電子信件的主機 linuxbabe.com
是 mail.linuxbabe.com
。 如果擁有 Gmail 帳戶的人將電子信件傳送到至 somebody@linuxbabe.com
,然後Gmail伺服器會查詢linuxbabe.com的MX記錄。 當它發現這一點時 mail.linuxbabe.com
負責接受電子信件,然後查詢 A 記錄 mail.linuxbabe.com
取得IP位址,從而可以傳送到電子信件。
在您的 DNS 管理器中,為您的域名建立 MX 記錄。 進入 @
在名稱欄位中表示主域名,然後輸入 mail.your-domain.com
在值欄位中。
注意: MX 記錄的主機名不能是其他名稱的別名。 另外,強烈建議您使用主機名而不是裸 IP 位址作為 MX 記錄。
您的 DNS 管理器可能會要求您輸入偏好項值(也稱為優先級值)。 它可以是 0 到 65,356 之間的任意數字。 小數字比大數字具有更高的優先級。 建議您將該值設定為0,這樣該信件伺服器將具有最高的優先級來接收電子信件。 建立MX記錄後,還需要建立A記錄 mail.your-domain.com
,這樣就可以解析為IP位址。 如果您的伺服器使用 IPv6 位址,請務必加入 AAAA 記錄。
提示:如果您使用 Cloudflare DNS 服務,則在建立 A 記錄時不應啟用 CDN 功能 mail.your-domain.com
。 Cloudflare 不支援 SMTP 代理。
步驟 3:配置主機名
登入伺服器 通過SSH ,然後運行以下指令來更新現有軟體包。
sudo apt update sudo apt upgrade
我強烈建議建立一個 sudo
用於管理伺服器的使用者而不是使用預設值 root
使用者。 運行以下指令建立使用者。 代替 username
使用您喜歡的使用者名。
adduser username
然後將使用者新增到 sudo
團體。
adduser username sudo
然後切換到新使用者。
su - username
接下來,使用以下指令為您的伺服器設定完全限定域名 (FQDN)。
sudo hostnamectl set-hostname mail.your-domain.com
我們還需要更新 /etc/hosts
使用 Nano 等指令行文字編輯器建立檔案。
sudo nano /etc/hosts
像下面這樣編輯它。 (使用方向鍵在檔案中搬移游標。)
127.0.0.1 mail.your-domain.com localhost
儲存並關閉檔案。 (要在 Nano 文字編輯器中儲存檔案,請按 Ctrl+O
,然後按 Enter
確認。 要關閉檔案,請按 Ctrl+X
.)
要檢視變更,請重新登入,然後運行以下指令來檢視您的主機名。
hostname -f
步驟 4:使用 iRedMail 在 Ubuntu 22.04 上設定信件伺服器
運行以下指令從其 Github 存儲庫下載最新版本的 iRedMail 腳本安裝程式。
wget https://github.com/iredmail/iRedMail/archive/1.6.0.tar.gz
提取存檔檔案。
tar xvf 1.6.0.tar.gz
然後 cd 進入新建立的目錄。
cd iRedMail-1.6.0/
加入可執行權限 iRedMail.sh
腳本。
chmod +x iRedMail.sh
接下來,使用 sudo 權限運行 Bash 腳本。
sudo bash iRedMail.sh
將出現信件伺服器設定精靈。 使用 Tab 鍵選取 Yes ,然後按 Enter。
下一個螢幕將要求您選取信件存儲路徑。 你可以使用預設的 /var/vmail
,因此只需按 Enter 鍵即可。
然後選取是否要運行 Web 伺服器。 強烈建議您選取運行 Web 伺服器,因為您需要基於 Web 的管理面板來加入電子信件帳戶。 此外,它還容許您訪問 Roundcube 網路信件。 預設情況下,選取 Nginx Web 伺服器,因此您只需按 Enter 鍵即可。 (星號表示該項目已被選中。)
然後選取電子信件帳戶的存儲後端。 選取您熟悉的一個。 本教學選取MariaDB。 按上下方向鍵並按空白鍵進行選取。
如果您選取了 MariaDB 或 MySQL,那麼您將需要設定 MySQL root 密碼。
請注意,如果您選取 MariaDB,則不需要密碼即可登入 MariaDB shell。 而不是運行普通指令 mysql -u root -p
,您可以運行以下指令來登入,使用 sudo 並且無需提供 MariaDB root 密碼。
sudo mysql -u root
這是因為 Ubuntu 22.04 上的 MariaDB 軟體包使用 unix_socket 身份驗證外掛程式,該外掛程式容許使用者使用操作系統憑據連線到 MariaDB,但您仍然需要在 iRedMail 設定精靈中設定 root 密碼。
接下來,輸入您的第一個信件域。 您可以稍後在基於 Web 的管理面板中加入其他信件域。 本教學假設您需要一個電子信件帳戶,例如 john.doe@your-domain.com 。 在這種情況下,您需要在此處輸入 your-domain.com ,不帶子域。 不要在域名後面按空白鍵。 我認為 iRedMail 會將空格字元與您的域名一起複製,這可能會導致安裝失敗。
接下來,設定信件域管理員的密碼。
選取可選元件。 預設情況下,選取 4 個項目。 請注意,SOGo元件目前不支援Ubuntu 22.04,所以不要選取它。
現在您可以檢查您的配置。 類型 Y
開始安裝所有信件伺服器元件。
安裝結束時選取 y
使用iRedMail提供的防火牆規則並重新啟動防火牆。
至此iRedMail安裝完成。 您將收到網路信件、SOGo 元件和網路管理面板的 URL 以及登入憑據的知會。 這 iRedMail.tips
檔案包括有關 iRedMail 伺服器的重要訊息。
重新啟動您的 Ubuntu 22.04 伺服器。
sudo shutdown -r now
一旦您的伺服器重新上線,您就可以訪問網路管理面板。
https://mail.your-domain.com/iredadmin/
請注意 ,在上面的 URL 中,訪問管理面板的子目錄是 /iredadmin/
, 不是 /iredmail/
。 由於它使用自簽名 TLS 證書,因此您需要在 Web 瀏覽器中加入安全例外。
第5步:安裝Let’s Encrypt TLS證書
由於信件伺服器使用自簽名 TLS 證書,桌面信件用戶端使用者和 Web 信件用戶端使用者都會看到警示。 為了解決這個問題,我們可以取得並安裝免費的 Let’s Encrypt TLS 證書。
獲得證書
首先,通過 SSH 再次登入伺服器並運行以下指令在 Ubuntu 22.04 上安裝 Let’s Encrypt (certbot) 用戶端。
sudo apt install certbot python3-certbot-nginx -y
iRedMail 已經在預設的 Nginx 虛擬主機中配置了 TLS 設定,因此這裡我建議使用 webroot 外掛程式而不是 nginx 外掛程式來取得證書。 運行以下指令。 將紅色文字置換為您的實際資料。
sudo certbot certonly --webroot --agree-tos --email you@example.com -d mail.your-domain.com -w /var/www/html/
當它詢問您是否要接收來自 EFF 的通信時,您可以選取“否”。
如果一切順利,您將看到以下文字,顯示您已成功取得 TLS 證書。 您的證書和鏈已儲存在 /etc/letsencrypt/live/mail.your-domain.com/
目錄。
取得TLS證書失敗
如果 certbot 無法取得 TLS 證書,可能是因為您的 DNS 記錄未傳播到 Internet。 根據您使用的域名註冊商,您的 DNS 記錄可能會立即傳播,也可能需要長達 24 小時才能傳播。 您可以訪問 https://dnsmap.io ,輸入您的信件伺服器的主機名( mail.your-domain.com
) 檢查 DNS 傳播。
如果 certbot 無法取得證書並且您看到以下訊息,
Failed authorization procedure. mail.linuxbabe.com (http-01): urn:ietf:params:acme:error:connection :: The server could not connect to the client to verify the domain :: Fetching https://mail.linuxbabe.com/.well-known/acme-challenge/IZ7hMmRE4ZlGW7cXYoq2Lc_VrFzVFyfW6E0pzNlhiOA: Timeout during connect (likely firewall problem)
您可能已設定 AAAA 記錄 mail.your-domain.com
,但 Nginx Web 伺服器不偵聽 IPv6 位址。 要修復此錯誤,請編輯 /etc/nginx/sites-enabled/00-default.conf
檔案
sudo nano /etc/nginx/sites-enabled/00-default.conf
找到以下行。
#listen [::]:80;
去除 #
用於為此 Nginx 虛擬主機啟用 IPv6 的字元。
listen [::]:80;
儲存並關閉檔案。 然後編輯SSL虛擬主機 /etc/nginx/sites-enabled/00-default-ssl.conf
.
sudo nano /etc/nginx/sites-enabled/00-default-ssl.conf
加入以下行。
listen [::]:443 ssl http2;
儲存並關閉檔案。 然後測試Nginx配置。
sudo nginx -t
如果測試成功,請重新加載 Nginx 以使變更生效。
sudo systemctl reload nginx
再次運行以下指令取得TLS證書。 將紅色文字置換為您的實際資料。
sudo certbot certonly --webroot --agree-tos --email you@example.com -d mail.your-domain.com -w /var/www/html/
現在您應該能夠成功取得 TLS 證書。
在 Nginx 中安裝證書
獲得 TLS 證書後,讓我們配置 Nginx Web 伺服器來使用它。 編輯 SSL 模板檔案。
sudo nano /etc/nginx/templates/ssl.tmpl
找到以下 2 行。
ssl_certificate /etc/ssl/certs/iRedMail.crt; ssl_certificate_key /etc/ssl/private/iRedMail.key;
將它們置換為:
ssl_certificate /etc/letsencrypt/live/ mail.your-domain.com /fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/ mail.your-domain.com /privkey.pem;
儲存並關閉檔案。 然後測試nginx配置並重新加載。
sudo nginx -t sudo systemctl reload nginx
再次訪問 iRedMail 管理面板,您的網路瀏覽器將不再警示您,因為 Nginx 現在使用有效的 TLS 證書。
在 Postfix 和 Dovecot 中安裝 TLS 證書
我們還需要配置 Postfix SMTP 伺服器和 Dovecot IMAP 伺服器以使用 Let’s Encrypt 頒發的證書,以便桌面信件用戶端不會顯示安全警示。 編輯Postfix的主配置檔。
sudo nano /etc/postfix/main.cf
找到以下 3 行。 (95、96、97 號線)。
smtpd_tls_key_file = /etc/ssl/private/iRedMail.key smtpd_tls_cert_file = /etc/ssl/certs/iRedMail.crt smtpd_tls_CAfile = /etc/ssl/certs/iRedMail.crt
將它們置換為:
smtpd_tls_key_file = /etc/letsencrypt/live/ mail.your-domain.com /privkey.pem smtpd_tls_cert_file = /etc/letsencrypt/live/ mail.your-domain.com /cert.pem smtpd_tls_CAfile = /etc/letsencrypt/live/ mail.your-domain.com /chain.pem
儲存並關閉檔案。 然後重新加載 Postfix。
sudo systemctl reload postfix
接下來,編輯Dovecot的主配置檔。
sudo nano /etc/dovecot/dovecot.conf
細化以下兩行。 (第 47、48 行)
ssl_cert = </etc/ssl/certs/iRedMail.crt ssl_key = </etc/ssl/private/iRedMail.key
將它們置換為:
ssl_cert = </etc/letsencrypt/live/ mail.your-domain.com /fullchain.pem ssl_key = </etc/letsencrypt/live/ mail.your-domain.com /privkey.pem
儲存並關閉檔案。 然後重新加載鴿捨。
sudo systemctl reload dovecot
從現在開始,桌面信件使用者將不會看到安全警示。
第 6 步:傳送到測試電子信件
)登入 iredadmin 面板 使用 postmaster 信件帳戶 ( postmaster@your-domain.com 。 在裡面 Add
索引片,您可以加入其他域或電子信件位址。
建立使用者後,您可以訪問 Roundcube 網路信件位址並使用新的信件使用者帳戶登入。
https://mail.your-domain.com/mail/
現在您可以測試電子信件傳送到和接收。 請注意,您可能需要等待幾分鐘才能收到電子信件,因為 iRedMail 預設啟用灰名單,這是一種告訴其他傳送到 SMTP 伺服器在幾分鐘後重試的方法。 信件日誌檔案中的以下行 /var/log/mail.log
表示灰名單已啟用。
Recipient address rejected: Intentional policy rejection, please try again later;
加入交換空間
ClamAV 用於掃瞄電子信件中的病毒。 ClamAV 可以使用相當數量的 RAM。 如果您的伺服器上沒有足夠的 RAM,ClamAV 將無法標準工作,這將阻止您的信件伺服器傳送到電子信件。 您可以向伺服器加入交換檔案以增加伺服器上的總 RAM。 (請注意,在伺服器上使用交換空間會降低伺服器效能。如果您想要更好的效能,應升級物理 RAM,而不是使用交換空間。)
要在伺服器上加入交換空間,首先使用 fallocate
建立檔案的指令。 例如,在根檔案系統中建立一個名為swapfile、容量為1G的檔案:
sudo fallocate -l 1G /swapfile
然後確保只有 root 可以讀取和寫入它。
sudo chmod 600 /swapfile
將其格式化為交換:
sudo mkswap /swapfile
輸出:
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes) no label, UUID=0aab5886-4dfb-40d4-920d-fb1115c67433
啟用交換檔案
sudo swapon /swapfile
要在系統啟動時掛載交換空間,請編輯 /etc/fstab
檔案。
sudo nano /etc/fstab
在此檔案的底部加入以下行。
/swapfile swap swap defaults 0 0
儲存並關閉檔案。 然後重新加載 systemd 並重新啟動 ClamAV。
sudo systemctl daemon-reload sudo systemctl restart clamav-daemon
步驟7:檢查連接埠25(出站)是否被阻止
您的 ISP 或託管提供商不會阻止到您伺服器連接埠 25 的傳入連線,這意味著您可以接收來自其他信件伺服器的電子信件。 但是,許多 ISP/託管提供商會阻止與其他信件伺服器的連接埠 25 的傳出連線,這意味著您無法傳送到電子信件。
如果您的電子信件未到達您的其他電子信件位址(例如 Gmail),請在信件伺服器上運行以下指令以檢查連接埠 25(出站)是否被阻止。
telnet gmail-smtp-in.l.google.com 25
如果沒有被阻止,您將看到如下訊息,這顯示連線已成功建立。 (提示:輸入 quit
然後按 Enter 鍵關閉連線。)
Trying 74.125.68.26... Connected to gmail-smtp-in.l.google.com. Escape character is '^]'. 220 mx.google.com ESMTP y22si1641751pll.208 - gsmtp
如果連接埠 25(出站)被阻止,您會看到類似以下內容:
Trying 2607:f8b0:400e:c06::1a... Trying 74.125.195.27... telnet: Unable to connect to remote host: Connection timed out
在這種情況下,您的 Postfix 無法將電子信件傳送到到其他 SMTP 伺服器。 請您的 ISP/託管提供商為您開啟它。 如果他們拒絕您的請求,您需要 設定 SMTP 中繼來繞過連接埠 25 阻塞 。
仍然無法傳送到電子信件?
如果連接埠 25(出站)未被阻止,但您仍然無法從自己的信件伺服器向您的其他電子信件位址(例如 Gmail)傳送到電子信件,那麼您應該檢查信件日誌( /var/log/mail.log
).
sudo nano /var/log/mail.log
例如,有些人可能會在檔案中看到以下幾行。
host gmail-smtp-in.l.google.com[2404:6800:4003:c03::1b] said: 550-5.7.1 [2a0d:7c40:3000:b8b::2] Our system has detected that 550-5.7.1 this message does not meet IPv6 sending guidelines regarding PTR 550-5.7.1 records and authentication. Please review 550-5.7.1 https://support.google.com/mail/?p=IPv6AuthError for more information
這意味著您的信件伺服器正在使用 IPv6 傳送到電子信件,但您沒有設定 IPv6 記錄。 你應該去你的 DNS 管理器,設定 AAAA
記錄為 mail.your-domain.com
,那麼你應該設定 PTR
記錄您的 IPv6 位址,這將在步驟 9 中討論。
步驟 8:在電腦或搬移裝置上使用信件用戶端
啟動您的桌面電子信件用戶端(例如 Mozilla Thunderbird)並加入信件帳戶。
- 在傳入伺服器部分,選取 IMAP 協定,輸入
mail.your-domain.com
作為伺服器名稱,選取連接埠 143 和 STARTTLS。 選取normal password
作為身份驗證方法。 - 在傳送到部分,選取 SMTP 協定,輸入
mail.your-domain.com
作為伺服器名稱,選取連接埠 587 和 STARTTLS。 選取normal password
作為身份驗證方法。
Fail2ban 阻止您自己的 IP 位址
如果您犯了錯誤,多次登入信件伺服器失敗,那麼信件伺服器上的Fail2ban服務可能會封鎖您的IP位址。 您可以通過編輯以下內容將您的 IP 位址新增到白名單 jail.local
檔案。
sudo nano /etc/fail2ban/jail.local
將您自己的 IP 位址新增到忽略清單中,如下所示。 將 12.34.56.78 置換為您的真實 IP 位址。
ignoreip = 12.34.56.78 127.0.0.1 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16
儲存並關閉檔案。 然後重新啟動 Fail2ban。
sudo systemctl restart fail2ban
第 9 步:提高電子信件送達率
為了防止您的電子信件被標示為垃圾信件,您應該設定 PTR
, SPF
, DKIM
和 DMARC
記錄。
PTR記錄
指標記錄或 PTR 記錄將 IP 位址映射到 FQDN(完全限定域名)。 它與 A 記錄相對應,用於 反向 DNS 搜尋,有助於阻止垃圾信件傳送到者。 如果沒有找到傳送到伺服器的 PTR 記錄,許多 SMTP 伺服器會拒絕電子信件。
要檢查 IP 位址的 PTR 記錄,請運行以下指令:
dig -x IP-address +short
或是
host IP-address
PTR 記錄不由您的域名註冊商管理。 它由為您提供 IP 位址的組織管理。 因為您從託管提供商或 ISP 取得 IP 位址,而不是從域名註冊商處取得,所以您必須在託管提供商的控制台中為您的 IP 設定 PTR 記錄,或是詢問您的 ISP。 它的值應該是您的信件伺服器的主機名: mail.your-domain.com
。 如果您的伺服器使用 IPv6 位址,請務必為您的 IPv6 位址加入 PTR 記錄。
的反向 DNS 記錄 要編輯Kamatera VPS ,請登入 Kamatera 用戶端區域,然後開啟支援票並告訴他們為您的伺服器 IP 位址加入 PTR 記錄以將 IP 位址指向 mail.your-domain.com
。 您可能會認為這並不方便,但這是為了讓垃圾信件傳送到者遠離平台,因此像我們這樣的合法電子信件發件人將擁有良好的 IP 聲譽。
SPF記錄
SPF (發件人策略框架)記錄指定容許哪些主機或 IP 位址代表域傳送到電子信件。 您應該只容許您自己的電子信件伺服器或 ISP 的伺服器為您的域傳送到電子信件。 在您的 DNS 管理介面中,建立一個新的 TXT 記錄,如下所示。
解釋:
- TXT 表示這是一條 TXT 記錄。
- 在名稱欄位中輸入 @ 代表主域名。
- v=spf1 表示這是一條 SPF 記錄,版本為 SPF1。
- mx 表示 MX 記錄中列出的所有主機都可以為您的域傳送到電子信件,而不容許所有其他主機。
- ~all 表示來自您域的電子信件只能來自 SPF 記錄中特殊的主機。 來自其他主機的電子信件將被標示為偽造。
要檢查您的 SPF 記錄是否傳播到公共網際網路,您可以在 Linux 電腦上使用 dig 實用程式,如下所示:
dig your-domain.com txt
這 txt
選項告訴 dig
我們只想查詢TXT記錄。
DKIM 記錄
DKIM (域密鑰識別信件)使用私鑰對從您的域傳送到的電子信件進行數字簽名。 接收 SMTP 伺服器使用在 DNS DKIM 記錄中發佈的公鑰來驗證簽名。
iRedMail 腳本自動為您的伺服器配置 DKIM。 唯一剩下要做的就是在 DNS 管理器中建立 DKIM 記錄。 運行以下指令以顯示 DKIM 公鑰。
sudo amavisd-new showkeys
DKIM 公鑰位於括號中。
然後在您的 DNS 管理器中建立一條 TXT 記錄,輸入 dkim._domainkey
在名稱欄位中。 複製括號中的所有內容並貼上到值欄位中。 刪除所有雙引號和換行符。
儲存變更後,運行以下指令來測試您的 DKIM 記錄是否正確。
sudo amavisd-new testkeys
如果 DKIM 記錄正確,則測試將通過。
TESTING#1 linuxbabe.com: dkim._domainkey.linuxbabe.com => pass
請注意,您的 DKIM 記錄可能需要一些時間才能傳播到 Internet。 根據您使用的域名註冊商,您的 DNS 記錄可能會立即傳播,也可能需要長達 24 小時才能傳播。 您可以訪問 https://www.dmarcanalyzer.com/dkim/dkim-check/ ,輸入 dkim
作為選取器並輸入您的域名以檢查 DKIM 記錄傳播。
DMARC 記錄
DMARC 代表基於域的訊息驗證、報告和一致性。 DMARC 可以幫助接收電子信件伺服器識別合法電子信件並防止您的域名被電子信件欺騙所使用。
要建立 DMARC 記錄,請轉到您的 DNS 管理器並加入 TXT 記錄。 在名稱欄位中,輸入 _dmarc
。 在值欄位中,輸入以下內容。 (您應該建立 dmarc@your-domain.com
電子信件位址。)
v=DMARC1; p=無; %=100; rua=mailto: dmarc@your-domain.com
上述 DMARC 記錄是一個安全的起點。 如果您想閱讀 DMARC 的完整說明,請檢視以下文章。 請注意,這是可選的。
- 建立 DMARC 記錄以保護您的域名免遭電子信件欺騙
第 10 步:測試電子信件分數和排名
建立 PTR、SPF、DKIM 記錄後,轉到 https://www.mail-tester.com 。 您將看到一個唯一的電子信件位址。 從您的域向此位址傳送到一封電子信件,然後檢查您的分數。 正如你所看到的,我得到了滿分。 在測試結果中,您應該檢查您的PTR記錄、SPF和DKIM記錄是否有效。
Mail-tester.com 只能向您顯示發件人分數。 還有另一項名為 GlockApps 的 服務,可讓您檢查您的電子信件是否已進入收件人的收件箱或垃圾信件資料夾,或被徹底拒絕。 它支援許多流行的電子信件提供商,如 Gmail、Outlook、Hotmail、YahooMail、iCloud 信件等電子信件被 Microsoft 信箱拒絕?
Microsoft 使用內定黑名單來阻止許多合法的 IP 位址。 如果您的電子信件被 Outlook 或 Hotmail 拒絕,您需要按照下面連結的教學繞過 Microsoft Outlook 黑名單。
- 如何繞過 Microsoft Outlook 黑名單和其他黑名單
如果您的電子信件仍然被標示為垃圾信件怎麼辦?
我在這篇文章中為您提供了更多提示: 如何阻止您的電子信件被標示為垃圾信件 。 儘管這需要一些時間和精力,但應用這些提示後,您的電子信件最終將被放入收件箱中。
加入多個信件域
我寫 這篇文章是為了向您展示如何在 iRedMail 中加入多個信件域 。
如何禁用灰名單
預設情況下,iRedMail 已啟用灰名單,這會告訴其他傳送到 SMTP 伺服器在幾分鐘後重試。 這主要用於阻止垃圾信件,但也會降低使用者體驗。 如果您想禁用灰名單,請按照以下說明操作。
加入寫入權限 /opt/iredapd/settings.py
檔案。
sudo chmod 600 /opt/iredapd/settings.py
然後編輯配置檔。
sudo nano /opt/iredapd/settings.py
找到以下行。
plugins = ["reject_null_sender", "wblist_rdns", "reject_sender_login_mismatch", "greylisting", "throttle", "amavisd_wblist", "sql_alias_access_policy"]
消除 "greylisting"
從清單中。 儲存並關閉檔案。 然後重新啟動 iredapd。
sudo systemctl restart iredapd
將配置檔變更回唯讀模式。
sudo chmod 400 /opt/iredapd/settings.py
啟用 SMTPS 連接埠 465
如果您要使用 Microsoft Outlook 用戶端,則需要 在 Postfix SMTP 伺服器中啟用 SMTPS 連接埠 465 。
故障排除技巧
首先,請使用至少 4GB RAM 的 VPS。 在 1GB RAM VPS 上運行 iRedMail 將導致資料庫、SpamAssassin 或 ClamAV 由於記憶體不足問題而被終止。 如果您確實想使用 1GB RAM VPS,您將會丟失傳入的電子信件並產生其他不良結果。
如果 iRedMail Web 介面無法訪問,例如 502 通訊閘錯誤,您應該檢查 Nginx 登入 /var/log/nginx/
目錄尋找線索。
如果您無法傳送到或接收電子信件,請檢查信件日誌 /var/log/mail.log
.
另外,檢查各種服務是否正在運行。
systemctl status postfix systemctl status dovecot systemctl status nginx systemctl status mariadb systemctl status clamav-daemon systemctl status amavis
如果啟用了防火牆,則應在防火牆中開啟以下連接埠。
HTTP port: 80 HTTPS port: 443 SMTP port: 25 Submission port: 587 (and 465 if you are going to use Microsoft Outlook mail client) IMAP port: 143 and 993
如果您想使用 UFW 防火牆,請在此處檢視我的指南: Debian 和 Ubuntu 上的 UFW 防火牆入門 。
如何續訂 TLS 證書
Let’s Encrypt 頒發的 TLS 證書的有效期僅為 90 天,因此設定 Cron 作業來自動續訂證書非常重要。 您可以運行以下指令來更新證書。
sudo certbot renew -w /var/www/html
您可以使用 --dry-run
選取測試續訂過程,而不是進行真正的續訂。
sudo certbot renew -w /var/www/html --dry-run
如果您在續訂 TLS 證書時看到以下錯誤。
The client lacks sufficient authorization :: Invalid response
然後你需要建立隱藏目錄。
sudo mkdir -p /var/www/html/.well-known/acme-challenge
並設定 www-data
作為網路根的所有者。
sudo chown www-data:www-data /var/www/html/ -R
另外,編輯 SSL 虛擬主機 /etc/nginx/sites-enabled/00-default-ssl.conf
。 加入以下行。
location ~ /.well-known/acme-challenge { root /var/www/html/; allow all; }
儲存並關閉檔案。 測試 Nginx 配置並重新加載。
sudo nginx -t sudo systemctl reload nginx
建立計劃任務
如果現在試運行成功,您可以建立 Cron 作業來自動更新證書。 只需開啟 root 使用者的 crontab 檔案即可。
sudo crontab -e
然後在檔案底部加入以下行。
@daily certbot renew -w /var/www/html --quiet && systemctl reload postfix dovecot nginx
為了使這些程式取得新的證書和私鑰,需要重新加載 Postfix、Dovecot 和 Nginx。
設定備份信件伺服器
您的主信件伺服器有時可能會關閉。 如果您將信件伺服器託管在資料中心,則停機時間非常短,因此您不必擔心丟失入站電子信件。 如果您在家中託管信件伺服器,則無法預測停機時間,因此最好在資料中心運行備份信件伺服器以防止丟失入站電子信件。 備份信件伺服器僅需要 512MB RAM 即可運行。 請檢視以下文章中的完整詳細訊息。
- 如何在 Ubuntu 上使用 Postfix 設定備份電子信件伺服器(完整指南)
對於進階使用者
iRedMail 不包括 DMARC 驗證服務,您可以檢視以下教學來設定 OpenDMARC 以阻止電子信件欺騙。
- 在 Ubuntu 上使用 Postfix 設定 OpenDMARC 以阻止電子信件欺騙/垃圾信件
您可能需要自訂 SpamAssassin 內容過濾器以更好地檢驗垃圾信件。
- 通過檢查 Postfix/SpamAssassin 中的標頭和正文來阻止垃圾信件
如果您的網站和信件伺服器運行在兩個不同的VPS(虛擬私人伺服器)上,您可以在您的網站和信件伺服器之間設定SMTP中繼,以便您的網站可以通過您的信件伺服器傳送到電子信件。 請參閱以下文章。
- 如何在 Ubuntu 上的 2 個 Postfix SMTP 伺服器之間設定 SMTP 中繼
就是這樣! 我希望本教學可以幫助您在 Ubuntu 22.04 上使用 iRedMail 設定信件伺服器。