如何在 Ubuntu 環境下搭建郵件伺服器(三)
在本系列的最後,我們將詳細介紹如何在 Dovecot 和 Postfix 中設置虛擬用戶和郵箱。
歡迎回來,熱心的 Linux 系統管理員們! 在本系列的第一部分和第二部分中,我們學習了如何將 Postfix 和 Dovecot 組合在一起,搭建一個不錯的 IMAP 和 POP3 郵件伺服器。 現在我們將學習設置虛擬用戶,以便我們可以管理所有 Dovecot 中的用戶。
抱歉,還不能配置 SSL
我知道我答應過教你們如何設置一個受 SSL 保護的伺服器。 不幸的是,我低估了這個話題的範圍。 所以,我會下個月再寫一個全面的教程。
今天,在本系列的最後一部分中,我們將詳細介紹如何在 Dovecot 和 Postfix 中設置虛擬用戶和郵箱。 在你看來這是有點奇怪,所以我盡量讓下面的例子簡單點。我們將使用純文本文件和純文本來進行身份驗證。 你也可以選擇使用資料庫後端和較強的加密認證形式,具體請參閱文末鏈接了解有關這些的更多信息。
虛擬用戶
我們希望郵件伺服器上用的是虛擬用戶而不是 Linux 系統用戶。使用 Linux 系統用戶不能擴展,並且它們會暴露系統登錄賬號,給你的伺服器帶來不必要的風險。 設置虛擬用戶需要在 Postfix 和 Dovecot 中編輯配置文件。我們將從 Postfix 開始。首先,我們將從一個乾淨、簡化的 /etc /postfix/main.cf
開始。移動你原始的 main.cf
到別處做個備份,創建一個新的乾淨的文件,內容如下:
compatibility_level=2
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu/GNU)
biff = no
append_dot_mydomain = no
myhostname = localhost
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = $myhostname
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/24
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
virtual_mailbox_domains = /etc/postfix/vhosts.txt
virtual_mailbox_base = /home/vmail
virtual_mailbox_maps = hash:/etc/postfix/vmaps.txt
virtual_minimum_uid = 1000
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
virtual_transport = lmtp:unix:private/dovecot-lmtp0
你可以直接拷貝這份文件,除了 mynetworks
參數的設置 192.168.0.0/24
,它應該是你的本地子網掩碼。
接下來,創建用戶和組 vmail
來擁有你的虛擬郵箱。虛擬郵箱保存在 vmail
的家目錄下。
$ sudo groupadd -g 5000 vmail
$ sudo useradd -m -u 5000 -g 5000 -s /bin/bash vmail
接下來重新載入 Postfix 配置:
$ sudo postfix reload
[sudo] password for carla:
postfix/postfix-script: refreshing the Postfix mail system
Dovecot 虛擬用戶
我們會使用 Dovecot 的 lmtp
協議來連接到 Postfix。你可以這樣安裝:
$ sudo apt-get install dovecot-lmtpd
main.cf
的最後一行涉及到 lmtp
。複製這個 /etc/dovecot/dovecot.conf
示例文件來替換已存在的文件。再說一次,我們只使用這一個文件,而不是 /etc/dovecot/conf.d
內的所有文件。
protocols = imap pop3 lmtp
log_path = /var/log/dovecot.log
info_log_path = /var/log/dovecot-info.log
ssl = no
disable_plaintext_auth = no
mail_location = maildir:~/.Mail
pop3_uidl_format = %g
auth_verbose = yes
auth_mechanisms = plain
passdb {
driver = passwd-file
args = /etc/dovecot/passwd
}
userdb {
driver = static
args = uid=vmail gid=vmail home=/home/vmail/studio/%u
}
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
group = postfix
mode = 0600
user = postfix
}
}
protocol lmtp {
postmaster_address = postmaster@studio
}
service lmtp {
user = vmail
}
最後,你可以創建一個含有用戶和密碼的文件 /etc/dovecot/passwd
。對於純文本驗證,我們只需要用戶的完整郵箱地址和密碼:
alrac@studio:{PLAIN}password
layla@studio:{PLAIN}password
fred@studio:{PLAIN}password
molly@studio:{PLAIN}password
benny@studio:{PLAIN}password
Dovecot 虛擬用戶獨立於 Postfix 虛擬用戶,因此你需要管理 Dovecot 中的用戶。保存所有的設置並重啟 Postfix 和 Dovecot:
$ sudo service postfix restart
$ sudo service dovecot restart
現在讓我們使用老朋友 telnet 來看下 Dovecot 是否設置正確。
$ telnet studio 110
Trying 127.0.1.1...
Connected to studio.
Escape character is '^]'.
+OK Dovecot ready.
user molly@studio
+OK
pass password
+OK Logged in.
quit
+OK Logging out.
Connection closed by foreign host.
現在一切都好!讓我們用 mail
命令,發送測試消息給我們的用戶。確保使用用戶的完整電子郵箱地址而不只是用戶名。
$ mail benny@studio
Subject: hello and welcome!
Please enjoy your new mail account!
.
最後一行的英文句點表示發送消息。讓我們看下它是否到達了正確的郵箱。
$ sudo ls -al /home/vmail/studio/benny@studio/.Mail/new
total 16
drwx------ 2 vmail vmail 4096 Dec 14 12:39 .
drwx------ 5 vmail vmail 4096 Dec 14 12:39 ..
-rw------- 1 vmail vmail 525 Dec 14 12:39 1481747995.M696591P5790.studio,S=525,W=540
找到了。這是一封我們可以閱讀的純文本文件:
$ less 1481747995.M696591P5790.studio,S=525,W=540
Return-Path: <carla@localhost>
Delivered-To: benny@studio
Received: from localhost
by studio (Dovecot) with LMTP id V01ZKRuuUVieFgAABiesew
for <benny@studio>; Wed, 14 Dec 2016 12:39:55 -0800
Received: by localhost (Postfix, from userid 1000)
id 9FD9CA1F58; Wed, 14 Dec 2016 12:39:55 -0800 (PST)
Date: Wed, 14 Dec 2016 12:39:55 -0800
To: benny@studio
Subject: hello and welcome!
User-Agent: s-nail v14.8.6
Message-Id: <20161214203955.9FD9CA1F58@localhost>
From: carla@localhost (carla)
Please enjoy your new mail account!
你還可以使用 telnet 進行測試,如本系列前面部分所述,並在你最喜歡的郵件客戶端中設置帳戶,如 Thunderbird,Claws-Mail 或 KMail。
故障排查
當郵件工作不正常時,請檢查日誌文件(請參閱配置示例),然後運行 journalctl -xe
。 這時會提供定位輸入錯誤、未安裝包和可以 Google 的短語等所有需要的信息。
接下來?
假設你的 LAN 名稱服務配置正確,你現在有一台很好用的 LAN 郵件伺服器。 顯然,以純文本發送消息不是最佳的,不支持互聯網的郵件也是絕對不可以的。 請參閱 Dovecot SSL 配置和 Postfix TLS 支持,VirtualUserFlatFilesPostfix 涵蓋了 TLS 和資料庫後端。並請期待我之後的 SSL 指南。這次我說的是真的。
via: https://www.linux.com/learn/sysadmin/building-email-server-ubuntu-linux-part-3
作者:CARLA SCHRODER 譯者:geekpi 校對:jasminepeng
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive