- 配置你的服务器防火墙
- 安装软件包
- 创建用户
- 测试开箱即用的设置
- 配置 Postfix 使用 Maildir 风格的邮箱
- 安装 Courier IMAP 服务器
- 配置 Postfix 接收来自互联网的电子邮件
- 测试最终设置
- 完成
{{< details >}}
- Tier: 基础版, 专业版, 旗舰版
- Offering: 私有化部署
{{< /details >}}
这篇文档将指导你在 Ubuntu 上设置一个带有 IMAP 身份验证的基础 Postfix 邮件服务器,以便用于接收电子邮件。
文档假设你正在使用的电子邮件地址为 incoming@gitlab.example.com
,即在主机 gitlab.example.com
上的用户名为 incoming
。在执行示例代码片段时,不要忘记将其更改为你的实际主机。
配置你的服务器防火墙
- 打开服务器上的端口 25,以便人们可以通过 SMTP 向服务器发送电子邮件。
- 如果邮件服务器与运行极狐GitLab 的服务器不同,则打开服务器上的端口 143,以便极狐GitLab 可以通过 IMAP 从服务器读取电子邮件。
安装软件包
-
如果尚未安装
postfix
软件包,请安装它:sudo apt-get install postfix
当被问及环境时,选择 ‘Internet Site’。确认主机名时,确保它与
gitlab.example.com
匹配。 -
安装
mailutils
软件包。sudo apt-get install mailutils
创建用户
-
为接收电子邮件创建一个用户。
sudo useradd -m -s /bin/bash incoming
-
为此用户设置密码。
sudo passwd incoming
确保不要忘记这个密码,你稍后会需要它。
测试开箱即用的设置
-
连接到本地 SMTP 服务器:
telnet localhost 25
你应该看到如下提示:
Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. 220 gitlab.example.com ESMTP Postfix (Ubuntu)
如果你收到
Connection refused
错误,请验证postfix
是否正在运行:sudo postfix status
如果没有运行,启动它:
sudo postfix start
-
通过在 SMTP 提示符中输入以下内容,向新
incoming
用户发送一封电子邮件以测试 SMTP:ehlo localhost mail from: root@localhost rcpt to: incoming@localhost data Subject: Re: Some issue Sounds good! . quit
{{< alert type=”note” >}}
.
是一个独立行上的实际句号。{{< /alert >}}
如果在输入
rcpt to: incoming@localhost
后收到错误,则你的 Postfixmy_network
配置不正确。错误会显示 ‘Temporary lookup failure’。参见配置 Postfix 以接收来自互联网的电子邮件。 -
检查
incoming
用户是否收到了电子邮件:su - incoming mail
你应该看到如下输出:
"/var/mail/incoming": 1 message 1 unread >U 1 root@localhost 59/2842 Re: Some issue
退出邮件应用:
q
-
登出
incoming
账户,并返回成为root
:logout
配置 Postfix 使用 Maildir 风格的邮箱
我们稍后安装的 Courier 需要邮箱采用 Maildir 格式,而不是 mbox。
-
配置 Postfix 使用 Maildir 风格的邮箱:
sudo postconf -e "home_mailbox = Maildir/"
-
重启 Postfix:
sudo /etc/init.d/postfix restart
-
测试新的设置:
- 按照 测试开箱即用的设置 的步骤 1 和 2。
-
检查
incoming
用户是否收到了电子邮件:su - incoming MAIL=/home/incoming/Maildir mail
你应该看到如下输出:
"/home/incoming/Maildir": 1 message 1 unread >U 1 root@localhost 59/2842 Re: Some issue
退出邮件应用:
q
如果
mail
返回错误Maildir: Is a directory
,则你的mail
版本不支持 Maildir 风格的邮箱。通过运行sudo apt-get install heirloom-mailx
安装heirloom-mailx
。然后,再次尝试上述步骤,使用heirloom-mailx
替换mail
命令。 -
登出
incoming
账户,并返回成为root
:logout
安装 Courier IMAP 服务器
-
安装
courier-imap
软件包:sudo apt-get install courier-imap
并启动
imapd
:imapd start
-
安装后不会启动
courier-authdaemon
。没有它,IMAP 身份验证会失败:sudo service courier-authdaemon start
你还可以配置
courier-authdaemon
在启动时启动:sudo systemctl enable courier-authdaemon
配置 Postfix 接收来自互联网的电子邮件
-
让 Postfix 知道它应该认为本地的域:
sudo postconf -e "mydestination = gitlab.example.com, localhost.localdomain, localhost"
-
让 Postfix 知道它应该认为是局域网的一部分的 IP:
假设
192.168.1.0/24
是你的本地局域网。如果没有在同一局域网中的其他机器,你可以安全地跳过此步骤。sudo postconf -e "mynetworks = 127.0.0.0/8, 192.168.1.0/24"
-
配置 Postfix 在所有接口上接收邮件,包括互联网:
sudo postconf -e "inet_interfaces = all"
-
配置 Postfix 使用
+
分隔符进行子地址:sudo postconf -e "recipient_delimiter = +"
-
重启 Postfix:
sudo service postfix restart
测试最终设置
-
在新设置下测试 SMTP:
-
连接到 SMTP 服务器:
telnet gitlab.example.com 25
你应该看到如下提示:
Trying 123.123.123.123... Connected to gitlab.example.com. Escape character is '^]'. 220 gitlab.example.com ESMTP Postfix (Ubuntu)
如果你收到
Connection refused
错误,请确保你的防火墙设置允许端口 25 上的入站流量。 -
通过在 SMTP 提示符中输入以下内容,向
incoming
用户发送一封电子邮件以测试 SMTP:ehlo gitlab.example.com mail from: root@gitlab.example.com rcpt to: incoming@gitlab.example.com data Subject: Re: Some issue Sounds good! . quit
{{< alert type=”note” >}}
.
是一个独立行上的实际句号。{{< /alert >}}
-
检查
incoming
用户是否收到了电子邮件:su - incoming MAIL=/home/incoming/Maildir mail
你应该看到如下输出:
"/home/incoming/Maildir": 1 message 1 unread >U 1 root@gitlab.example.com 59/2842 Re: Some issue
退出邮件应用:
q
-
登出
incoming
账户,并返回成为root
:logout
-
-
在新设置下测试 IMAP:
-
连接到 IMAP 服务器:
telnet gitlab.example.com 143
你应该看到如下提示:
Trying 123.123.123.123... Connected to mail.gitlab.example.com. Escape character is '^]'. - OK [CAPABILITY IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA IDLE ACL ACL2=UNION] Courier-IMAP ready. Copyright 1998-2011 Double Precision, Inc. See COPYING for distribution information.
-
以
incoming
用户身份登录以测试 IMAP,通过在 IMAP 提示符中输入以下内容:a login incoming PASSWORD
将 PASSWORD 替换为你之前为
incoming
用户设置的密码。你应该看到如下输出:
a OK LOGIN Ok.
-
断开与 IMAP 服务器的连接:
a logout
-
完成
如果所有测试都成功,Postfix 就设置完成并准备好接收电子邮件!继续查看接收电子邮件指南以配置极狐GitLab。