问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

在 Ubuntu上安装和配置邮件服务器(Postfix)

创作时间:
作者:
@小白创作中心

在 Ubuntu上安装和配置邮件服务器(Postfix)

引用
CSDN
1.
https://m.blog.csdn.net/qq_57526628/article/details/143943308

Postfix 是一个广泛使用的开源邮件传输代理(MTA),负责在 Linux 系统上处理邮件的发送和接收。大约四分之一的互联网邮件服务器都在使用 Postfix。
本教程将指导在 Ubuntu 上安装 Postfix 并进行基本配置,以及如何通过安装
s-nail
(邮件用户代理 MUA 或客户端)来验证邮件路由功能。
完成本教程后,将掌握 Postfix 的基础邮件处理能力,虽然不是完整的邮件服务器解决方案,但足以为搭建邮件系统提供良好的起点。

流程图

这个流程图简洁地总结了在 Ubuntu 22.04 上安装和配置邮件服务器的主要步骤,从系统更新到安装邮件客户端,再到测试邮件路由。

先决条件

如果确定要按照本指南安装和配置 Postfix,那么必须首先具备以下条件:
选择服务器提供商
为了本教程的演示,我将以一个具体的云服务提供商为例,展示如何进行操作。选择哪个提供商根据个人偏好和需求来决定。

购买云服务器
本示例中,我们选择了香港作为服务器区域。
点击云产品云服务器立即购买

选择操作系统
在创建服务器实例时,选择 Ubuntu 24.04 作为操作系统。

连接到服务器
使用 X-shell 或偏好的 SSH 客户端,通过远程用户名和密码连接到服务器。成功连接后,将看到特定的欢迎信息,表明已成功登录。

  • 一个指向 Ubuntu 服务器的完全限定域
  • 具备非 root 用户和 UFW 防火墙
    本教程假设配置的是
    mail.example.com
    。在必要时,请确保将
    example.com

    mail.example.com
    更改为反映自己的。

第 1 步 — 安装 Postfix

Postfix 包含在 Ubuntu 的默认仓库中,因此可以使用 APT 进行安装。
首先,更新本地
apt
软件包缓存:

sudo apt update

然后使用以下命令安装
postfix
包。注意,这里我们在安装命令中传递了
DEBIAN_PRIORITY=low
环境变量。这将导致安装过程提示配置一些额外的选项:

sudo DEBIAN_PRIORITY=low apt install postfix

安装过程将打开一系列交互式提示。为了本教程的目的,请使用以下信息填写提示:

  1. 邮件配置类型:选择Internet Site以适应我们的网络环境需求。
  2. 系统邮件名:输入域名,例如
    example.com
    ,这样当只提供用户名时,Postfix 会自动构建完整的邮件地址(如
    user1@example.com
    )。
  3. 邮件接收账户:指定一个 Linux 用户账户来接收
    root@

    postmaster@
    的邮件,这里使用sammy
  4. 额外邮件接收目标:如果服务器需要处理其他域名的邮件,请在此添加。否则,保留默认设置即可。
  5. 邮件队列更新:选择No,以避免同步更新队列。
  6. 本地网络:设置为
    127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
    ,适用于大多数情况。
  7. 邮箱大小限制:设置为
    0
    表示无限制。
  8. 本地地址扩展字符:使用默认的
  • 字符。
  1. 互联网协议:选择all以允许 Postfix 支持所有 IP 版本。
    注意:如果需要返回并更改这些设置,可以通过输入:
sudo dpkg-reconfigure postfix

提示将用之前的回答预填充。
当提示重启服务时,请接受默认选项并选择
OK

安装过程完成后,就可以更新 Postfix 配置了。

第 2 步 — 更改 Postfix 配置

现在可以调整软件包安装过程中没有提示的一些设置。Postfix 的许多配置设置都定义在
/etc/postfix/main.cf
文件中。与其直接编辑这个文件,可以使用 Postfix 的
postconf
命令来查询或设置配置设置。
首先,为非 root Ubuntu 用户设置邮箱位置。在本指南中,我们将使用Maildir格式,它将消息分离成单独的文件,然后根据用户操作在目录之间移动。本指南未涵盖的另一种选择是mbox格式,它将所有消息存储在单个文件中。

home_mailbox
变量设置为
Maildir/
。稍后,将在用户的主目录下创建一个以该名称为前缀的目录结构。通过输入配置
home_mailbox

sudo postconf -e 'home_mailbox= Maildir/'

接下来,设置
virtual_alias_maps
表的位置,该表将任意电子邮件账户映射到 Linux 系统账户。运行以下命令,将表位置映射到名为
/etc/postfix/virtual
的哈希数据库文件:

sudo postconf -e 'virtual_alias_maps= hash:/etc/postfix/virtual'

现在已在
main.cf
文件中定义了虚拟映射文件的位置,可以创建该文件本身,并开始将电子邮件账户映射到 Linux 系统上的用户账户。使用喜欢的文本编辑器创建文件;在这个例子中,我们将使用
nano

sudo nano /etc/postfix/virtual

列出希望接受邮件的任何地址,后跟一个空格和希望将邮件传递给的 Linux 用户。
例如,如果希望接受
contact@example.com

admin@example.com
的电子邮件,并且希望这些电子邮件被传递给sammyLinux 用户,可以像这样设置文件:

contact@example.com sammy
admin@example.com sammy

在将所有地址映射到适当的服务器账户后,保存并关闭文件。如果使用的是
nano
,请按
CTRL + X

Y
,然后
ENTER

通过输入应用映射:

sudo postmap /etc/postfix/virtual

重启 Postfix 进程以确保所有更改都已应用:

sudo systemctl restart postfix

假设按照先决条件的初始服务器设置指南进行了操作,将配置了带有 UFW 的防火墙。这个防火墙将默认阻止对服务器上服务的外部连接,除非这些连接被明确允许,因此需要添加一个防火墙规则来允许 Postfix 的例外。
可以通过输入允许连接到服务:

sudo ufw allow Postfix

有了这个,Postfix 配置好了,准备接受外部连接。但是,还没有准备好用邮件客户端测试它。在可以安装客户端并使用它与传递到服务器的邮件交互之前,需要对 Ubuntu 服务器的设置做一些更改。

第 3 步 — 安装邮件客户端和初始化 Maildir 结构

为了与传递的邮件交互,这一步将指导安装
s-nail
包。这是一个功能丰富的 BSD
xmail
客户端变体,可以正确处理 Maildir 格式。
在安装客户端之前,确保
MAIL
环境变量设置正确是很重要的。
s-nail
将查找此变量以确定在哪里为用户找到邮件。
为了确保无论如何访问账户 —— 无论是通过
ssh

su

su -
还是
sudo
等 —— 都需要在
/etc/bash.bashrc
文件中设置变量,并在
/etc/profile.d
中的文件中添加它,以确保它默认对所有用户设置。
要将变量添加到这些文件中,输入:

echo 'export MAIL=~/Maildir' | sudo tee -a /etc/bash.bashrc | sudo tee -a /etc/profile.d/mail.sh

要使变量在当前会话中生效,源
/etc/profile.d/mail.sh
文件:

source /etc/profile.d/mail.sh

完成后,使用 APT 安装
s-nail
邮件客户端:

sudo apt install s-nail

在运行客户端之前,有一些设置需要调整。打开
/etc/s-nail.rc
文件:

sudo nano /etc/s-nail.rc

在文件底部,添加以下选项:

set emptystart
set folder=Maildir
set record=+sent

这些行的作用如下:

set emptystart
:允许客户端即使在收件箱为空时也能打开

set folder=Maildir
:将
Maildir
目录设置为内部
folder
变量

set record=+sent

folder
变量设置的目录中创建一个
sent
mbox 文件,用于存储发送的邮件,在这种情况下是
Maildir
完成保存并关闭文件。现在可以初始化系统的 Maildir 结构了。
在主目录中快速创建 Maildir 结构的一个方法是使用
s-nail
命令给自己发送一封邮件。因为
sent
文件只有在创建 Maildir 后才可用,所以应该禁用对此封初始邮件的写入。通过传递
-Snorecord
选项来实现。
通过管道将字符串发送到
s-nail
命令来发送邮件。调整命令以将 Linux 用户标记为收件人:

echo 'init' | s-nail -s 'init' -Snorecord sammy

注意:可能会收到以下响应:

OutputCan't canonicalize "/home/sammy/Maildir"

发送这封第一封邮件时,这很正常。
可以通过查找
~/Maildir
目录来检查目录是否已创建:

ls -R ~/Maildir

将看到目录结构已创建,并且新消息文件在
~/Maildir/new
目录中:

Output/home/sammy/Maildir/:
cur  new  tmp
/home/sammy/Maildir/cur:
/home/sammy/Maildir/new:
1650294586.Vfc01I7e11dM993645.mail.example.com
/home/sammy/Maildir/tmp:

现在目录结构已经创建,可以通过查看发送的
init
消息并发送消息到外部电子邮件地址来测试
s-nail
客户端。

第 4 步 — 测试客户端

要打开客户端,请运行
s-nail
命令:

s-nail

在控制台中,将看到一个带有
init
消息的简单收件箱:

Outputs-nail version v14.9.15.  Type `?' for help
"/home/sammy/Maildir": 1 message 1 new
>N  1 sammy@example.com     2022-04-18 15:09   14/452   init


ENTER
查看消息:

Output[-- Message  1 -- 14 lines, 452 bytes --]:
Date: Mon, 18 Apr 2022 15:09:46 +0000
To: sammy@example.com
Subject: init
Message-Id: <20220418150946.EE6897E11A@@mail.example.com>
From: sammy@example.com
init

可以通过输入
h
然后按
ENTER
返回消息列表:

h
Output>R  1 sammy@example.com     2022-04-18 15:09   14/452   init

注意到消息现在的状态是
R
,表示它已被阅读。
由于这条消息没什么用,可以通过按
d
然后按
ENTER
删除它:

d

要返回终端,输入
q
然后按
ENTER

q

作为最后的测试,检查
s-nail
是否能够正确发送电子邮件。为此,可以将文本文件的内容通过管道传输到
s-nail
进程,就像在前一步中发送的
init
消息一样。
首先,在文本编辑器中编写一条测试消息:

nano ~/test_message

在内部输入想要发送的文本:

Hello,
This is a test.  Please confirm receipt!

编写消息后保存并关闭文件。
然后,使用
cat
命令将消息传输到
s-nail
进程。可以使用以下示例,它使用这些选项:

s
:定义电子邮件消息的主题行

r
:可选更改电子邮件的 “From:” 字段。默认情况下,登录的 Linux 用户将用于填充此字段。
r
选项允许用有效地址覆盖它,例如在
/etc/postfix/virtual
文件中定义的那些之一。为了说明,以下命令使用
contact@example.com
另外,请确保将
user@email.com
更改为可以访问的有效电子邮件地址:

cat ~/test_message | s-nail -s 'Test email subject line' -r contact@example.com user@email.com

然后,转到发送消息的电子邮件地址的收件箱。将看到消息在那里等待。
注意:如果消息不在收件箱中,它可能已发送到垃圾邮件文件夹。
可以在
s-nail
客户端中查看发送的消息。再次启动交互式客户端:

s-nail

从电子邮件客户端中,通过输入查看发送的消息:

file +sent

将看到类似的输出:

Output+[/home/sammy/Maildir/]sent: 1 message 1 new
▸N  1 To contact@example.com 2022-04-18 15:12   10/211   Test email subject line

可以使用与处理传入邮件相同的命令来管理发送的邮件。

结论

现在已在 Ubuntu 服务器上配置了 Postfix。管理邮件服务器对于新的系统管理员来说可能是一个艰巨的任务,但有了这个配置,应该有足够的 MTA 电子邮件功能来开始。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号