如何在CubieTruck架設 Dovecot 收信伺服器

版主: stnet253

回覆文章
tony
文章: 585
註冊時間: 2012-02-26, 07:04
聯繫:

如何在CubieTruck架設 Dovecot 收信伺服器

未閱讀文章 tony »

之前寫了利用 Postfix 來當SMTP郵件伺服器的文章,後來才發現相對應的 POP3 收信的 Dovecot 沒有寫進來,所以趁著空檔,把這篇文章補齊。對了,各位讀者,本網站所介紹的文章,真的是在這台小小的 CubieTruck 所架設的。其實我也很關心 Cubieboard 8 A80的進展,價錢不是問題,畢竟是八核心 64位元 ARM CPU,但如果沒有 SATA 介面,那對不起,我一點都不會考慮的。我買來是要來練習架站的,而不是訓練我的 Android,我 Android 手機至少有 10 隻以上了,一點都不需要。

按照慣例,我們還是先安裝套件:

# apt-get install dovecot-imapd dovecot-pop3d

安裝好了之後,設定檔案目錄就在 /etc/dovecot 底下,我們要先在這個目錄底下先修改 dovecot.conf 這個檔案。其實新的 Dovecot 套件也很進步了,基本上是不用動到這個檔案,而是去 /etc/dovecot/conf.d 去分門別類修改的檔案內容。

# nano /etc/dovecot/dovecot.conf

找到下述幾行,把它修改一下

ssl = yes -> 如果不要 pop3s加密,則改為 no
disable_plaintext_auth = no ->需要認證才能登入
protocols = imap pop3 ->支持 imap 和pop3協議,不需要填入 pop3s和imaps,因為ssl會自動判斷

然後設定去哪裡收信,這裡要配合 Postfix的設定,不然寄信寄到一個地方,收信又是另一個地方,那當然會收不到信件。

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

然後找到這一行 mail_location ,然後把它修改成

mail_location = maildir:~/Maildir

其實這行是配合 Postfix 在 /etc/postfix/main.cf 底下這行設定,寄到哪裡去,就去哪裡收信。

home_mailbox = Maildir/

然後打開 SSL 選項,如果不需要加密設定,請略過此步驟。

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

找到 ssl 這行,把 no 改成 yes

ssl = yes

並且把自己的私鑰和公鑰指向檔案的路徑

ssl_key = </etc/ssl/private/private.key ->私鑰,可以去 StartSSL 申請一個免費的,自己簽署的,Outlook不認,更別提Android。
ssl_cert = </etc/ssl/certs/domain.crt ->公鑰,可以去 StartSSL 申請一個免費的,自己簽署的,Outlook不認,更別提Android。

關於StartSSL申請證書,可以參考這篇文章。因為 Dovecot 十分難偵錯,一旦錯了,服務起不來,但沒有任何錯誤訊息,所以建議把自己的 log 打開,方便之後除錯使用。

# nano /etc/dovecot/conf.d/10-logging.conf

找到 log_path 那行,把它改為

log_path = /var/log/dovecot.log

之後就可以到 /var/log/dovecot.log 去看訊息,而不必去 /var/log/syslog 去看一堆 log 淘出 dovecot 的訊息了。

到這裡,就可以重新啟動 Dovecot 服務,然後就可以使用 Outlook 收信了。

# service dovecot restart

想要看到 Dovecot 整個設定值,可以使用下面命令。

# dovecot -n

收信的 Port 是 110(pop3),和995(加密的pop3),143(非加密imap),993(加密的imap)。所以有開啟防火牆的使用者請都把這些 Port 打開吧!

# ufw allow 110 <- 一般收信協議 POP3
# ufw allow 143 <- 一般的 IMAP協議
# ufw allow 995 <- 加密的POP3S協議
# ufw allow 993 <- 加密的IMAPS協議

因為 Dovecot 不太好偵錯,所以我把一些 Outlook 碰到的問題訊息以及解決辦法列出來。

錯誤訊息

Plaintext authentication disallowed on non-secure (SSL/TLS) connections.

修正方式:

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

設定值

disable-plaintext_auth = no

重啟服務

# service dovecot restart

錯誤訊息

dovecot: pop3(hostname): Error: user whoever: Initialization failed: mail_location not set and autodetection failed: Mail storage autodetection failed with home=/home/whoever

修正方式:

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

設定值

mail_location = mbox:~/mail:INBOX=/var/mail/%u

重啟服務

# service dovecot restart

錯誤訊息

dovecot: pop3(hostname): Error: chown(/home/whoever/mail/.imap/INBOX, -1, 12(mail)) failed: Operation not permitted (egid=500(whoever), group based on /var/mail/whoever)
dovecot: pop3(hostname): Error: mkdir(/home/whoever/mail/.imap/INBOX) failed: Operation not permitted
dovecot: pop3(hostname): Error: Couldn’t open INBOX: Internal error occurred. Refer to server log for more information.
dovecot: pop3(hostname): Couldn’t open INBOX top=0/0, retr=0/0, del=0/0, size=0

修正方式:

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

設定值

mail_privileged_group = mail

重啟服務

# service dovecot restart

測試是否有重啟成功,可以使用 telnet 連到 110(pop3),995(加密的pop3),我以 110 為例

# telnet localhost 110
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+OK Dovecot (Ubuntu) ready.

這樣就代表 Dovecot 在 Port 110 有成功建立起來,可以也試試看 995或是其他 Port看是否 Dovecot 某個服務是否正常運作。
回覆文章

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客