在Ubuntu 16.04上使用Dovecot和Squirrelmail设置Postfix邮件服务器

2020年12月31日19:40:46 发表评论 58 次浏览

介绍

了解如何在运行Ubuntu 16.04的云服务器上设置邮件服务器。本教程将Postfix用作SMTP服务器, 将Dovecot用作POP / IMAP功能, 将Squirrelmail用作Webmail程序, 供用户检查和接收来自Web浏览器的电子邮件。

本教程还将引导你完成创建和使用自签名SSL证书以保护传入和传出电子邮件连接的过程。

要求

  • 运行Ubuntu 16.04的云服务器。
  • 指向服务器的有效域名

防火墙访问

你将需要设置防火墙以允许访问以下端口:

  • SMTP:25
  • POP3:110
  • IMAP:143
  • SMTP安全:465
  • MSA:587
  • IMAP安全:993
  • POP3安全:995

默认情况下, Cloud Panel Firewall拒绝访问除最常用端口之外的所有端口。有关如何允许端口访问的说明, 请参阅我们的文章"创建Cloud Panel防火墙".

安装Postfix

要安装Postfix, 请先更新你的软件包:

sudo apt-get update

然后安装Postfix:

sudo apt-get install postfix

默认情况下, 大多数Ubuntu 16.04系统都安装了Postfix, 因此该命令很可能会退出并显示一条消息, postfix已经是最新版本(3.1.0-3)。.

如果Postfix继续安装, 只需在每个提示下接受所有默认值即可完成该过程。

配置后缀

安装完成后, 运行命令以配置Postfix:

sudo dpkg-reconfigure postfix

在提示符下输入以下值, 替换为example.com用你自己的域名。使用上箭头和下箭头上下移动以突出显示答案, 然后使用Enter选择你的答案。

  1. 查找OK继续。
  2. 选择互联网网站.
  3. 系统邮件名称:example.com
  4. 根和邮政局长邮件收件人:根
  5. 其他邮寄目的地:example.com, localhost.example.com, localhost
  6. 强制对邮件队列进行同步更新?:No
  7. 本地网络:127.0.0.0/8
  8. 使用procmail进行本地递送?:No
  9. 邮箱大小限制(字节):0
  10. 本地地址扩展字符:+
  11. 使用的互联网协议:所有

完成初始Postfix配置后, 可以使用以下命令更改Postfix设置:

sudo postconf -e '[new setting]'

创建一个SSL证书

我们将创建一个自签名SSL证书, 以保护传入和传出的电子邮件连接:

sudo openssl req -x509 -nodes -newkey rsa:2048 -keyout mailserver.key -out mailserver.crt -nodes -days 365

sudo openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 3650

在提示时回答问题, 或直接按[Enter]保留答案空白。此命令将创建两个文件:mailserver.key和mailserver.crt.

为SSL证书文件创建一个文件夹:

sudo mkdir /etc/postfix/ssl

然后将文件移到该文件夹​​中:

sudo mv mailserver.key /etc/postfix/ssl
sudo mv mailserver.crt /etc/postfix/ssl
sudo mv cakey.pem /etc/postfix/ssl
sudo mv cacert.pem /etc/postfix/ssl

设置SMTP AUTH

SMTP AUTH是保护邮件服务器安全的基本方法。我们强烈建议在所有邮件服务器上使用SMTP AUTH。

首先, 使用以下命令将Postfix配置为使用SMTP AUTH:

sudo postconf -e 'smtpd_sasl_local_domain ='
sudo postconf -e 'smtpd_sasl_auth_enable = yes'
sudo postconf -e 'smtpd_sasl_security_options = noanonymous'
sudo postconf -e 'broken_sasl_auth_clients = yes'
sudo postconf -e 'smtpd_recipient_restrictions =  permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination'
sudo postconf -e 'inet_interfaces = all'
sudo postconf -e 'smtp_tls_security_level = may'
sudo postconf -e 'smtpd_tls_security_level = may'
sudo postconf -e 'smtpd_tls_auth_only = no'
sudo postconf -e 'smtp_tls_note_starttls_offer = yes'
sudo postconf -e 'smtpd_tls_key_file = /etc/postfix/ssl/mailserver.key'
sudo postconf -e 'smtpd_tls_cert_file = /etc/postfix/ssl/mailserver.crt'
sudo postconf -e 'smtpd_tls_CAfile = /etc/postfix/ssl/cacert.pem'
sudo postconf -e 'smtpd_tls_loglevel = 1'
sudo postconf -e 'smtpd_tls_received_header = yes'
sudo postconf -e 'smtpd_tls_session_cache_timeout = 3600s'
sudo postconf -e 'tls_random_source = dev:/dev/urandom'

更换example.com使用你自己的域名:

sudo postconf -e 'myhostname = example.com'

接下来, 创建文件/etc/postfix/sasl/smtpd.conf并打开进行编辑:

sudo nano /etc/postfix/sasl/smtpd.conf

添加以下内容:

pwcheck_method: saslauthd
mech_list: plain login

完成配置Postfix后, 请使用以下命令重新启动Postfix守护程序:

sudo systemctl restart postfix

安装SASL

Postfix将使用SASL处理SMTP AUTH的身份验证。现在, Postfix已配置为使用SMTP AUTH, 请使用以下命令安装SASL:

sudo apt-get install libsasl2-2 sasl2-bin libsasl2-modules

安装完成后, 编辑/ etc / default / saslauthd:

sudo nano /etc/default/saslauthd

向下滚动到该行:

# Should saslauthd run automatically on startup? (default: no)
START=no

更改开始to是:

# Should saslauthd run automatically on startup? (default: no)
START=yes

在该行下面, 添加以下三行:

PWDIR="/var/spool/postfix/var/run/saslauthd"
PARAMS="-m ${PWDIR}"
PIDFILE="${PWDIR}/saslauthd.pid"

向下滚动到文件底部的该行:

OPTIONS="-c -m /var/run/saslauthd"

将最后一行更改为:

OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"

保存并退出文件。

接下来, 运行以下命令以更新dpkg州:

sudo dpkg-statoverride --force --update --add root sasl 755 /var/spool/postfix/var/run/saslauthd

注意:如果收到错误消息, / var / spool / postfix / var / run / saslauthd不存在, 忽略它。启动SASL守护程序时将创建此目录。

为配置文件创建符号链接:

sudo ln -s /etc/default/saslauthd /etc/saslauthd

最后, 启动SASL守护程序:

sudo /etc/init.d/saslauthd start

使用Telnet测试Postfix

为了测试Postfix, 我们将通过telnet连接到服务器并执行基本的"握手协议", 就像电子邮件程序一样。

首先, 安装Telnet:

sudo apt-get install telnet

一旦安装了Telnet, 就可以使用它连接到服务器的SMTP端口:

telnet localhost 25

服务器将响应:

[user@localhost ~]$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 localhost.localdomain ESMTP Postfix (Ubuntu)

这表明Postfix已启动并正在运行。

接下来, 迎接服务器:

ehlo localhost

服务器将响应:

250-localhost.localdomain
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN

以下各行表明SMTP AUTH正在工作:

250-STARTTLS
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN

首先告诉服务器是谁发送邮件:

mail from: some-person@some-other-server.com

然后告诉服务器你要将邮件发送给谁, 用你自己的用户名和域名替换user@example.com:

rcpt to: root@example.com

现在添加一条简单的消息。告诉服务器你的消息正文从这里开始:

data

键入消息, 然后按[Enter](句号)., 然后按[Enter]:

hello world 
.

通过键入关闭会话放弃然后按Enter。

如果成功, 你的测试消息将出现在/ root / Maildir / new。你可以使用以下命令查看此消息:

ll /root/Maildir/new

要阅读消息, 请复制并粘贴文件名(该文件名应为长名, 例如1482257384.Vfc00I60512M258205.localhost.localdomain)并阅读更多:

sudo more  1482257384.Vfc00I60512M258205.localhost.localdomain

你将看到电子邮件以及所有标题信息:

From some-person@some-other-server.com  Thu Dec  8 19:43:10 2016
Return-Path: <some-person@some-other-server.com>
X-Original-To: root@example.com
Delivered-To: root@example.com
Received: from localhost (localhost [127.0.0.1])
        by mail.example.com (Postfix) with SMTP id 6CFD589184
        for <root@example.com>; Thu, 8 Dec 2016 19:42:33 +0000 (UTC)
Message-Id: <20161208194238.6CFD589184@mail.oxnardindustries.com>
Date: Thu, 8 Dec 2016 19:42:33 +0000 (UTC)
From: some-person@some-other-server.com

hello world

安装和配置Dovecot

Dovecot是Ubuntu的默认POP3 / IMAP服务器, 默认情况下已安装在大多数Ubuntu 16.04服务器上。更新Dovecot并安装映射使用以下命令打包:

sudo apt-get install dovecot-core dovecot-imapd

你可以使用以下命令检查Dovecot的状态:

sudo systemctl status dovecot

如果Dovecot正在运行, 你将看到类似以下的输出:

[user@mail dovecot]$ sudo systemctl status dovecot -l
● dovecot.service - Dovecot IMAP/POP3 email server
   Loaded: loaded (/usr/lib/systemd/system/dovecot.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2016-12-08 21:04:48 UTC; 3s ago
  Process: 8985 ExecStartPre=/usr/libexec/dovecot/prestartscript (code=exited, status=0/SUCCESS)
 Main PID: 8989 (dovecot)
   CGroup: /system.slice/dovecot.service
           ├─8989 /usr/sbin/dovecot -F
           ├─8992 dovecot/anvil
           ├─8993 dovecot/log
           └─8995 dovecot/config

Dec 08 21:04:48 example.com systemd[1]: Starting Dovecot IMAP/POP3 email server...
Dec 08 21:04:48 example.com systemd[1]: Started Dovecot IMAP/POP3 email server.
Dec 08 21:04:48 example.com dovecot[8989]: master: Dovecot v2.2.10 starting up for imap (core dumps disabled)

请注意以下行:

Active: active (running) since Thu 2016-12-08 21:04:48 UTC; 3s ago

这意味着Dovecot已安装并正在运行。

在上设置权限/ var / mail目录, 以便Dovecot可以为新用户创建文件夹:

sudo chmod 777 /var/mail

安装和配置Squirrelmail

使用以下命令安装Squirrelmail:

sudo apt-get install squirrelmail

你将需要编辑Apache配置以为Squirrelmail添加别名。该指令将需要插入到虚拟主机该站点的主Apache配置文件中的命令块。

按照惯例, 此Apache配置文件通常是/etc/apache2/sites-available/example.com.conf在Ubuntu上。

注意:站点的Apache配置文件的位置和文件名可能会有所不同。

使用你选择的编辑器编辑此文件, 例如, 使用以下命令:

sudo nano /etc/apache2/sites-available/example.com.conf

滚动浏览文件, 直到找到虚拟主机命令块, 如下所示:

<VirtualHost *:80>
ServerName example.com
    <Directory "/var/www/example.com/html">
    AllowOverride All
    </Directory>
</VirtualHost>

将以下内容添加到虚拟主机命令块:

Alias /squirrelmail /usr/share/squirrelmail

确保将这些行放在任何目录命令块。例如:

<VirtualHost *:80>
ServerName example.com

Alias /squirrelmail /usr/share/squirrelmail

    <Directory "/var/www/example.com/html">
    AllowOverride All
    </Directory>
</VirtualHost>

保存并退出文件, 然后重新启动Apache以使更改生效:

sudo systemctl restart apache2

Apache重新启动后, 你可以通过访问URL来测试Squirrelmailhttp://example.com/squirrelmail在浏览器中。

一盏木

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: