网站搜索

在 Debian 9 中安装带有 Postfix 和 Webmail 的完整邮件服务器


本教程将指导您如何在 Debian 9 版本中使用 Postfix 安装和配置完整的邮件服务器。它还将介绍如何使用 Dovecot 配置帐户邮箱,以便通过 IMAP 协议检索和撰写邮件。用户将使用Rainloop Webmail界面作为邮件用户代理来处理邮件。

要求

  1. Debian 9 最小安装
  2. 为网络接口配置的静态 IP 地址
  3. 本地或公共注册域名。

在本教程中,我们将使用仅通过 /etc/hosts 文件配置的私有域帐户进行邮件服务器设置,无需任何 DNS 服务器参与处理 DNS 解析。

第 1 步:Debian 上 Postfix 邮件服务器的初始配置

1. 第一步,使用具有 root 权限的帐户或直接使用 root 用户登录您的计算机,并确保您的 Debian 系统已安装最新的安全补丁以及软件和软件包版本,通过发出以下命令。

apt-get update 
apt-get upgrade 

2.下一步,通过发出以下命令来安装将用于系统管理的以下软件包。

apt-get install curl net-tools bash-completion wget lsof nano

3. 接下来,打开 /etc/host.conf 文件,使用您喜欢的文本编辑器进行编辑,并在文件开头添加以下行,以便 DNS 解析为首先读取hosts文件。

order hosts,bind
multi on

4. 接下来,设置您的计算机 FQDN 并将您的域名和系统 FQDN 添加到 /etc/hosts 文件中。使用您的系统 IP 地址来解析域名和 FQDN,如下面的屏幕截图所示。

相应地替换 IP 地址和域。然后,重新启动计算机以便正确应用主机名。

hostnamectl set-hostname mail.linux-console.net
echo "192.168.0.102 linux-console.net mail.linux-console.net" >> /etc/hosts
init 6

5. 重新启动后,通过发出以下一系列命令来验证主机名是否已正确配置。 hostname 命令应返回系统的域名、FQDN、主机名和 IP 地址。

hostname
hostname -s
hostname -f
hostname -A
hostname -i
cat /etc/hostname 

6. 另外,通过发出以下命令来测试域是否正确回复本地查询。请注意,该域不会重播网络中其他系统发出的远程查询,因为我们不使用 DNS 服务器。

但是,如果您手动将域名添加到每个系统的 /etc/hosts 文件中,该域应该从其他系统回复。另外,请注意,添加到 /etc/hosts 文件中的域的 DNS 解析无法通过 host、nslookup 或 dig 命令起作用。

getent ahosts mail.linux-console.net
ping linux-console.net
ping mail.linux-console.net

步骤 2:在 Debian 上安装 Postfix 邮件服务器

7.邮件服务器正常运行所需的最重要的软件是MTA代理。 MTA是一种构建在服务器-客户端架构中的软件,负责邮件服务器之间的邮件传输。

在本指南中,我们将使用 Postfix 作为邮件传输代理。要从官方存储库在 Debian 中安装 postfix,请执行以下命令。

apt-get install postfix

8.Postfix的安装过程中,您将被问到一系列问题。在第一个提示中,选择 Internet Site 选项作为 Postfix 配置的常规类型,然后按 [enter] 键继续,然后将您的域名添加到系统邮件名称中,如下所示如以下屏幕截图所示。

步骤 3:在 Debian 上配置 Postfix 邮件服务器

9. 接下来,备份 Postfix 主配置文件并使用以下命令为您的域配置 Postfix。

cp /etc/postfix/main.cf{,.backup}
nano /etc/postfix/main.cf

现在在 main.cf 文件中配置 Postfix 配置,如图所示。

See /usr/share/postfix/main.cf.dist for a commented, more complete version

smtpd_banner = $myhostname ESMTP
biff = no
appending .domain is the MUA's job.
append_dot_mydomain = no
readme_directory = no

See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on
fresh installs.
compatibility_level = 2

TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
information on enabling SSL in the smtp client.

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname = mail.debian.lan

mydomain = debian.lan

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

#myorigin = /etc/mailname
myorigin = $mydomain

mydestination = $myhostname, $mydomain, localhost.$mydomain, localhost
relayhost = 
mynetworks = 127.0.0.0/8, 192.168.1.0/24
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
#inet_protocols = all
inet_protocols = ipv4

home_mailbox = Maildir/

SMTP-Auth settings
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject

替换 myhostnamemydomainmynetworks 变量以匹配您自己的配置。

您可以运行 postconf -n 命令来转储 Postfix 主配置文件并检查最终错误,如下面的屏幕截图所示。

postconf -n

10. 所有配置完成后,重新启动 Postfix 守护进程以应用更改,并通过运行 netstat 检查 Postfix 主服务是否绑定在端口 25 上来验证服务是否正在运行命令。

systemctl restart postfix
systemctl status postfix
netstat -tlpn

步骤 3:在 Debian 上测试 Postfix 邮件服务器

11.为了测试postfix是否可以处理邮件传输,首先通过运行以下命令安装mailutils软件包。

apt-get install mailutils

12. 接下来,使用邮件命令行实用程序,向 root 帐户发送邮件,并通过发出以下命令检查邮件是否已成功传输,以检查邮件队列并列出 root 帐户的内容主 Maildir 目录。

echo "mail body"| mail -s "test mail" root
mailq
mail
ls Maildir/
ls Maildir/new/
cat Maildir/new/[TAB]

13. 您还可以通过发出以下命令检查邮件日志文件的内容来验证 postfix 服务处理邮件的方式。

tailf /var/log/mail.log

步骤 4:在 Debian 上安装和配置 Dovecot IMAP

14. 在本指南中,我们将使用的邮件传送代理将电子邮件传送到本地收件人的邮箱,该代理是 Dovecot IMAPIMAP 是一种在 143993 (SSL) 端口上运行的协议,负责读取、删除或在多个电子邮件客户端之间移动邮件。

IMAP 协议还使用同步来确保每条消息的副本都保存在服务器上,并允许用户在服务器上创建多个目录并将邮件移动到该目录以便对电子邮件进行排序。

POP3 协议的情况并非如此。 POP3 协议不允许用户在服务器上创建多个目录来对邮件进行排序。您只有收件箱文件夹来管理邮件。

要在 Debian 上安装 Dovecot 核心服务器和 Dovecot IMAP 软件包,请执行以下命令。

apt install dovecot-core dovecot-imapd

15. 在系统中安装 Dovecot 后,打开以下 dovecot 文件进行编辑并进行以下更改。首先,打开 /etc/dovecot/dovecot.conf 文件,搜索并取消注释以下行:

listen = *, ::

16. 接下来,打开 /etc/dovecot/conf.d/10-auth.conf 进行编辑,找到并更改以下行,使其如下面的摘录所示。

disable_plaintext_auth = no
auth_mechanisms = plain login

17. 打开 /etc/dovecot/conf.d/10-mail.conf 文件并添加以下行以使用 Maildir 位置而不是Mbox 格式存储电子邮件。

mail_location = maildir:~/Maildir

18. 最后要编辑的文件是/etc/dovecot/conf.d/10-master.conf。在这里搜索 Postfix smtp-auth 块并进行以下更改:

Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
  mode = 0666
  user = postfix
  group = postfix
 }

19.完成上述所有更改后,重新启动 Dovecot 守护进程以反映更改,检查其状态并验证 Dovecot 是否绑定在端口 143,通过发出以下命令。

systemctl restart dovecot.service 
systemctl status dovecot.service 
netstat -tlpn

20.通过向系统添加新用户帐户并使用telnetnetcat命令连接到邮件服务器来测试邮件服务器是否正常运行SMTP 服务器并向新添加的用户发送新邮件,如下面的摘录所示。

adduser matie
nc localhost 25
ehlo localhost
mail from: root
rcpt to: matie
data
subject: test
Mail body
.
quit

21.通过列出用户主目录的内容来检查邮件是否已到达新用户邮箱,如下图所示。

ls /home/test_mail/Maildir/new/

22.此外,您还可以通过 IMAP 协议从命令行连接到用户的邮箱,如下面的摘录所示。新邮件应列在用户的收件箱中。

nc localhost 143
x1 LOGIN matie user_password
x2 LIST "" "*"
x3 SELECT Inbox
x4 LOGOUT

第 5 步:在 Debian 中安装和配置 Webmail

23.用户将通过Rainloop Webmail客户端管理他们的电子邮件。在安装 Rainloop 邮件用户代理之前,首先通过发出以下命令安装 Rainloop 所需的 Apache HTTP 服务器和以下 PHP 模块。

apt install apache2 php7.0 libapache2-mod-php7.0 php7.0-curl php7.0-xml

24. Apache Web 服务器安装完毕后,将目录路径更改为 /var/www/html/ 目录,删除 index.html 文件并发出以下命令以安装 Rainloop Webmail。

cd /var/www/html/
rm index.html 
curl -sL https://repository.rainloop.net/installer.php | php

25. 在系统中安装 Rainloop Webmail 客户端后,导航到您的域 IP 地址并使用以下默认凭据登录 Rainloop 管理 Web 界面:

http://192.168.0.102/?admin
User: admin
Password: 12345

26.导航到域名菜单,点击添加域名按钮并添加您的域名设置,如下面的屏幕截图所示。

27. 添加完域名设置后,从 Ranloop 管理界面注销并将浏览器指向您的 IP 地址,以便使用电子邮件帐户登录网络邮件客户端。

成功登录 Rainloop 网络邮件后,您应该会看到之前从命令行发送到收件箱文件夹中的电子邮件。

http://192.168.0.102
User: [email 
Pass: the matie password

27. 要添加新用户,请发出带有 -m 标志的 useradd 命令以创建用户主目录。但是,首先请确保使用以下命令为每个用户配置 Maildir 路径变量。

echo 'export MAIL=$HOME/Maildir' >> /etc/profile
useradd -m user3
passwd user3

28. 如果您想将所有 root 的电子邮件从系统重定向到特定的本地邮件帐户,请运行以下命令。所有重定向或发往 root 帐户的邮件都将转发给您的邮件用户,如下图所示。

echo "root: test_mail" >> /etc/aliases
newaliases

就这样!您已在您的场所成功安装并配置了邮件服务器,以便本地用户通过电子邮件进行通信。但是,这种类型的邮件配置不以任何方式受到保护,建议仅针对您完全控制的系统和网络中的小型设置进行部署。