
我的 VPS 運行的是 Ubuntu,我希望能夠接收發送到我的網域的電子郵件。
如何輕鬆設定郵件伺服器來執行此操作?
答案1
這就是我在生產機器上設定郵件的方式。這些是我們需要的標準:
- 電子郵件帳戶
- 電子郵件別名(轉發器)
- IMAP、POP3 和 SMTP
「簡單」(長;博士)
首先,我想解決似乎是最簡單的解決方案。
sudo tasksel install mail-server
當我們嘗試這個時,出現了幾個問題:首先它安裝了 Dovecot,這對大多數人來說都很好,但我們認為 Courier 是兩者中更好的一個。我們的需要。其次,它使用 Postfix,這很棒,但我們還需要 Exim,因為它是更強大的 MTA/SMTP 伺服器。第三,它安裝 MySQL - 在我使用的配置中,我們更喜歡使用平面檔案進行配置,因為它少了一個斷點。想像一下如果 MySQL 因為某種未知原因崩潰了會發生什麼事。否則,對於小型郵件服務(總共有 1-2 個電子郵件網域),其餘的軟體包非常簡單且易於維護。
我們的配置
目錄結構
我們稍微偏離了正常配置的路徑,但它使管理更容易。
我們所有的郵件都儲存在中,/var/mail/virtual/<domain>/<user>/mail
因此在以後的範例中,我將使用[email protected]
、[email protected]
、分別[email protected]
表示電子郵件地址、要發送到的轉發器[email protected]
和錯誤地址。在上面的例子中,它是/var/mail/virtual/example.com/email/mail
.
我還維護了伺服器上所有網域的列表,/etc/valiases
稍後會詳細介紹。
後綴
這或多或少是設定中最簡單的部分。只需安裝該postfix
軟體包即可。
進出口銀行
安裝 Eximapt-get install exim4 exim4-base exim4-config exim4-daemon-heavy
安裝後,您需要編輯 exim 預設配置以取代或新增以下值:
domainlist local_domains = @:localhost:dsearch;/etc/valiases:dsearch;/var/mail/virtual
daemon_smtp_ports = smtp : 587 : 465
MAIN_TLS_ENABLE = yes
(這些行將出現在文件的不同部分,相應地替換每個部分)
完成後,使用以下命令重建 exim 配置update-exim4.conf
。
導遊
安裝 Couriercourier-base
應安裝courier-authdaemon
, courier-authlib*
, courier-imap*
, courier-pop*
, courieruserinfo
,courier-ssl
老實說,沒有太多超出標準的配置。您只需要建立一個使用者資料庫。
帳戶
Exim 和 Courier 檢查幾個地方,看看登入或收到的電子郵件是否有效。 Exim 檢查該網域是否被列為本機主機名,或該網域是否在 中,/var/mail/virtual
或該網域是否在 中/etc/valiases
。
建立電子郵件帳戶
我最終創建了幾個工具來簡化這個過程 - 但添加新用戶需要注意以下幾點:
mkdir -p /var/mail/virtual/example.com/email
chown -R mail.mail /var/mail/virtual/example.com/
maildirmake /var/mail/virtual/example.com/email/mail
chown -R mail.mail /var/mail/virtual/example.com/
然後將位址加入 courier userdb - 這樣他們就可以登入
userdb [email protected] set uid=8 gid=8 home=/var/mail/virtual/example.com/email mail=/var/mail/virtual/example.com/email/mail
確保在適當的地方替換這些值。還有——uid
和gid
需要是郵件使用者的數位使用者/群組 ID。
userdbpw -md5 | userdb [email protected] set systempw
這將提示您輸入密碼,輸入您想要用於該帳戶的密碼。
makeuserdb
最後,產生 userdb 哈希/影子檔案。重新啟動 Courier 並測試您的變更是否有效:
authtest [email protected]
應該會產生類似的東西
Authentication succeeded.
Authenticated: [email protected] (uid 8, gid 8)
Home Directory: /var/mail/virtual/example.com/email
Maildir: /var/mail/virtual/example.com/email/mail
Quota: (none)
Encrypted Password: $1$LOLCATS$THISWILLBEAHASH.
Cleartext Password: (none)
Options: (none)
如果您看到“身份驗證失敗:不允許操作”,請編輯 /etc/courier/authdaemonrc 並將 authuserdb 新增至 authmodulelist 行。
確認所有測試後,重新啟動所涉及的各種服務(courier-authdaemon
、exim4
),開啟連接埠 143、25、586、495、110 並在您喜歡的郵件用戶端中設定帳戶。
建立電子郵件別名
對於每個網域,您應該建立一個檔案/etc/valiases
(如果不存在則建立),其中至少包含以下行:
*: :fail: No user at this address.
這意味著:如果傳入的郵件與我存檔的任何電子郵件帳戶都不匹配,則郵件應該失敗並退回,並顯示一條訊息:「此地址沒有使用者」。因此,所有發送的郵件[email protected]
都會被視為失敗而被退回。
但是,我們希望在其他地方保留一些電子郵件地址 - 例如[電子郵件受保護]- 為此,我們需要建立/etc/valiases/example.com
文件,其內容應如下所示:
fwd: [email protected]
*: :fail: No user at this address.
這樣一來,儘管[電子郵件受保護]與伺服器上的任何電子郵件帳戶都不匹配,它在文件中匹配/etc/valiases
,並且郵件將被轉發到[電子郵件受保護]- 然而,[電子郵件受保護]仍然會失敗並顯示“此地址沒有用戶”訊息。
答案2
最簡單的方法就是跑步sudo tasksel install mail-server
。這將為您提供一個具有合理預設值的電子郵件伺服器。您所要做的就是回答幾個問題。顯然,如果有必要,您仍然可以在之後進行手動配置,但在大多數情況下不會。只需按照螢幕上的說明操作就可以了。
不過,絕對推薦閱讀有關電子郵件服務管理的內容。
官方參考:
答案3
我沒有“很好的答案”,但您可能會發現這些連結很有幫助https://help.ubuntu.com/community/PostfixBasicSetupHowto#Receiving郵件和https://help.ubuntu.com/community/Postfix
答案4
我自己一直在這樣做,你確實需要 postfix,就我而言,我還想要一個 imap 伺服器,這樣我就可以在另一台機器上使用一個漂亮的 gui 客戶端(不提及任何名稱)。我使用了這些文件:
鴿舍(imap 和 pop3)
它實際上非常簡單,幾分鐘內就可以啟動並運行,並且正在接收電子郵件。這對於檢查一切是否設定正常也很有用ping 能力。
哦,您當然必須正確設定您的 dns 條目,如下所示(基於對我有用的設定):
name type content
@ A ???.???.??.??
mail A ???.???.??.??
和
MX Records
Name Priority
mail.mydomain.com. 1
mail2.mydomain.com. 2
請注意郵件伺服器末尾的句號,並在適當的位置插入您的 IP 位址和網域名稱。