IT Knowledge Base

~ Without sacrifice, there can be no victory ~

發佈日期:

如何在Amazon EC2中的Postfix伺服器‧安裝Dovecot的IMAP協定

01. Postfix安裝後,也試過在伺服器上收發電郵,今天會安裝Dovecot的IMAP協定,以便用戶可在其他電郵客戶端上收發電郵。02. 安裝Dovecot程式及IMAP協定。

sudo apt install dovecot-core dovecot-imapd

03. 打開dovecot.conf檔案。

sudo nano /etc/dovecot/dovecot.conf

在檔案最下面加入以下內容:
protocols = imap

04. 打開10-mail.conf檔案。

sudo nano /etc/dovecot/conf.d/10-mail.conf

將:
mail_location = mbox:~/mail:INBOX=/var/mail/%u
更改為(這是Postfix用戶郵箱放置位置。當初設定郵箱時我用了這名稱。):
mail_location = maildir:~/Maildir

05. 將dovecot用戶加入mail群組。

sudo gpasswd -a dovecot mail

06. 打開10-auth.conf檔案。

sudo nano /etc/dovecot/conf.d/10-auth.conf

將:
# disable_plaintext_auth = yes
更改為:
disable_plaintext_auth = yes

將:
# auth_username_format = %Lu
更改為(我選擇了以細階英文作為登入名稱,):
auth_username_format = %Lu

將:
auth_mechanisms = plain
更改為(除簡單認證(PLAIN authentication),會再加入登入認證(LOGIN authentication)):
auth_mechanisms = plain login

07. 打開10-master.conf檔案。

sudo nano /etc/dovecot/conf.d/10-master.conf

將:
# Postfix smtp-auth
#unix_listener /var/spool/postfix/private/auth {
#  mode = 0666
#}
更改為:
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}

08. 打開15-mailboxes.conf檔案。

sudo nano /etc/dovecot/conf.d/15-mailboxes.conf

將:
mailbox Drafts {
special_use = \Drafts
}
mailbox Junk {
special_use = \Junk
}
mailbox Trash {
special_use = \Trash
}
更改為:
mailbox Drafts {
special_use = \Drafts
auto = create
}
mailbox Junk {
special_use = \Junk
auto = create
}
mailbox Trash {
special_use = \\Trash
auto = create
}

將:
mailbox Sent {
special_use = \Sent
}
mailbox "Sent Messages" {
special_use = \Sent
}
更改為:
mailbox Sent {
special_use = \Sent
auto = create
}
# mailbox "Sent Messages" {
# special_use = \Sent
# }

09. 打開10-ssl.conf檔案。

sudo nano /etc/dovecot/conf.d/10-ssl.conf

確認:
ssl = yes
將:
ssl_cert = </etc/dovecot/private/dovecot.pem
ssl_key = </etc/dovecot/private/dovecot.key
更改為:
ssl_cert = </etc/letsencrypt/live/nephkmail.ddns.net/cert.pem
ssl_key = </etc/letsencrypt/live/nephkmail.ddns.net/privkey.pem
將:
# ssl_ca =
更改為:
ssl_ca = </etc/letsencrypt/live/nephkmail.ddns.net/fullchain.pem


10. 重新啟動Dovecot及Postfix服務。

sudo systemctl restart dovecot
sudo systemctl restart postfix

11. 確認EC2防火牆已打開相應的埠位。

Port 25 (default SMTP)
Port 143 (default IMAP)
Port 993 (SSL/TLS IMAP)
Port 995 (SSL/TLS POP3)

13. 你會發現一個奇怪的情況。自己網域內收發電郵是沒有問題;由外面網域電郵發到自己網域也是沒有問題;唯獨由自己網域電郵發到外面網域就會出現錯誤。

14. 此問題就是因為電郵轉發(mail relay)設定問題。打開Postfix設定檔案main.cf。

sudo nano /etc/postfix/main.cf

加入以下內容:
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes

15. 同時,亦可為Postfix伺服器加入加密證書。

將:
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
更改為:
smtpd_tls_cert_file=/etc/letsencrypt/live/nephkmail.ddns.net/cert.pem
smtpd_tls_key_file=/etc/letsencrypt/live/nephkmail.ddns.net/privkey.pem

16. 重新啟動Postfix服務。

sudo systemctl restart postfix

17. 郵件可以經客戶端寄出。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *