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