8.0 KiB
在Ubuntu上搭建一台Email服务器(四)
mail-server.jpg
本系列的第四部分我们将详细介绍在Dovecot和Postfix中设置虚拟用户。以Creative Commons ZeroPixabay方式授权发布
欢迎回来,我热心的Linux系统管理员们! 在本系列的第一部分和第二部分中,我们学习了如何将Postfix和Dovecot组合在一起,搭建一个不错的IMAP和POP3邮件服务器。 现在我们将学习设置虚拟用户,以便我们可以管理所有在Dovecot中的用户。
抱歉还不能配置SSL
我知道我答应教你们如何设置一个正确的受SSL保护的服务器。 不幸的是,我低估了这个话题的范围。 所以,我会下个月再写一个全面的教程。
对于今天,在本系列的最后一部分中,我们将详细介绍如何在Dovecot和Postfix中设置虚拟用户和邮箱。 在你看来这是有点奇怪,所以我尽量让下面的例子是简单点。我们将使用纯文件和纯文本来进行身份验证。 你也可以选择使用数据库后端和很好的加密认证形式,具体请参阅文末链接了解有关这些的更多信息。
虚拟用户
You want virtual users on your email server and not Linux system users. Using Linux system users does not scale, and it exposes their logins, and your Linux server, to unnecessary risk. Setting up virtual users requires editing configuration files in both Postfix and Dovecot. We'll start with Postfix. First, we'll start with a clean, simplified /etc/postfix/main.cf
. Move your original main.cf
out of the way and create a new clean one with these contents:
你希望电子邮件服务器上的是虚拟用户而不是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
。 这时应该就会给你提供输入错误、已卸载的包和可以谷歌的字词了。
接下来?
假设你的LAN名称服务配置正确,你现在有一台很好用的LAN邮件服务器。 显然以纯文本发送消息不是最佳的,并且对于Internet邮件也是绝对否定的。 请参阅Dovecot SSL配置和Postfix TLS支持。 VirtualUserFlatFilesPostfix涵盖TLS和数据库后端。并记得看即将到来的SSL指南。这次我说的是真的。
via: https://www.linux.com/learn/sysadmin/building-email-server-ubuntu-linux-part-3
作者: CARLA SCHRODER 译者:geekpi 校对:校对者ID