TranslateProject/translated/tech/20161215 Building an Email Server on Ubuntu Linux - Part 3.md
2016-12-29 13:58:24 +08:00

8.0 KiB
Raw Blame History

在Ubuntu上搭建一台Email服务器

mail-server.jpg

Mail server 本系列的第四部分我们将详细介绍在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进行测试如本系列前面部分所述并在你最喜欢的邮件客户端中设置帐户如ThunderbirdClaws-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

本文由 LCTT 原创编译,Linux中国 荣誉推出