在Ubuntu 18.04上安装和配置Postfix的方法

简介: 在Ubuntu 18.04上安装和配置Postfix的方法

简介

Postfix 是一个流行的开源邮件传输代理(MTA),可用于在 Linux 系统上路由和传递电子邮件。据估计,全球约 25% 的公共邮件服务器运行的是 Postfix。

在本指南中,我们将教你如何在 Ubuntu 18.04 服务器上快速启动和运行 Postfix。

先决条件

为了遵循本指南,你应该拥有一个具有 sudo 权限的非 root 用户。你可以按照我们的 Ubuntu 18.04 初始服务器设置指南来创建必要的用户。

为了正确配置 Postfix,你需要一个指向你的 Ubuntu 18.04 服务器的完全合格的域名。你可以按照此指南来获取有关在 DigitalOcean 上设置域名的帮助。如果你打算接收邮件,你需要确保有一个 MX 记录指向你的邮件服务器。

在本教程中,我们假设你正在配置一个具有 FQDN 为 mail.example.com 的主机。

步骤 1 — 安装 Postfix

Postfix 包含在 Ubuntu 的默认软件仓库中,因此安装很简单。

首先,更新本地的 apt 软件包缓存,然后安装软件。我们将在安装命令中传入 DEBIAN_PRIORITY=low 环境变量,以回答一些额外的提示:

sudo apt update
sudo DEBIAN_PRIORITY=low apt install postfix

使用以下信息正确填写你的提示,以适应你的环境:

  • 邮件配置的一般类型?:对于此项,我们将选择 Internet Site,因为这符合我们的基础设施需求。
  • 系统邮件名称:这是用于构建有效电子邮件地址的基本域,当只给出地址的帐户部分时。例如,我们服务器的主机名是 mail.example.com,但我们可能希望将系统邮件名称设置为 example.com,这样给定用户名 user1,Postfix 将使用地址 user1@example.com
  • Root 和 postmaster 邮件接收者:这是将邮件转发到 root@postmaster@ 的 Linux 帐户。使用你的主帐户。在我们的情况下,sammy
  • 其他接受邮件的目的地:这定义了此 Postfix 实例将接受的邮件目的地。如果需要添加此服务器负责接收的其他域,请在此处添加,否则默认设置应该可以正常工作。
  • 强制邮件队列上的同步更新?:由于你可能使用了日志文件系统,这里选择 No
  • 本地网络:这是你的邮件服务器配置为中继消息的网络列表。默认设置对大多数情况都适用。如果选择修改它,请确保对网络范围非常严格。
  • 邮箱大小限制:这可用于限制消息的大小。将其设置为 “0” 可禁用任何大小限制。
  • 本地地址扩展字符:这是用于将地址的常规部分与扩展(用于创建动态别名)分开的字符。
  • 要使用的 Internet 协议:选择是否限制 Postfix 支持的 IP 版本。我们将为我们的目的选择 “all”。

明确地说,这些是我们将在本指南中使用的设置:

  • 邮件配置的一般类型?:Internet Site
  • 系统邮件名称:example.com(而不是 mail.example.com)
  • Root 和 postmaster 邮件接收者:sammy
  • 其他接受邮件的目的地:$myhostname, example.com, mail.example.com, localhost.example.com, localhost
  • 强制邮件队列上的同步更新?:No
  • 本地网络:127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
  • 邮箱大小限制:0
  • 本地地址扩展字符:+
  • 要使用的 Internet 协议:all

如果你需要返回以重新调整这些设置,可以通过输入以下命令来执行:

sudo dpkg-reconfigure postfix

提示将预填充你之前的响应。

完成后,我们现在可以进行更多配置,以便按照我们的喜好设置系统。

步骤 2 — 调整 Postfix 配置

接下来,我们可以调整软件包未提示我们的一些设置。

首先,我们可以设置邮箱。我们将使用 Maildir 格式,它将消息分成单独的文件,然后根据用户操作移动到不同的目录中。另一个选项是 mbox 格式(我们将不在此处介绍),它将所有消息存储在单个文件中。

我们将设置 home_mailbox 变量为 Maildir/,这将在用户的主目录下创建一个以该名称命名的目录结构。可以使用 postconf 命令来查询或设置配置设置。通过输入以下命令来配置 home_mailbox

sudo postconf -e 'home_mailbox= Maildir/'

接下来,我们可以设置 virtual_alias_maps 表的位置。此表将任意电子邮件帐户映射到 Linux 系统帐户。我们将在 /etc/postfix/virtual 创建此表。同样,我们可以使用 postconf 命令:

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

步骤 3 — 将邮件地址映射到 Linux 账户

接下来,我们可以设置虚拟映射文件。在文本编辑器中打开文件:

sudo nano /etc/postfix/virtual

虚拟别名映射表使用非常简单的格式。在左侧,您可以列出您希望接收邮件的任何地址。然后,用空格分隔,输入您希望将该邮件发送到的 Linux 用户。

例如,如果您希望在 contact@example.comadmin@example.com 接收邮件,并希望将这些邮件发送到 sammy Linux 用户,您可以像这样设置文件:

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

在将所有地址映射到适当的服务器账户之后,保存并关闭文件。

我们可以通过输入以下命令应用映射:

sudo postmap /etc/postfix/virtual

重新启动 Postfix 进程,以确保我们的所有更改已被应用:

sudo systemctl restart postfix

步骤 4 — 调整防火墙

如果您正在运行 UFW 防火墙,如在初始服务器设置指南中配置的那样,我们将不得不为 Postfix 允许一个例外。

您可以通过输入以下命令允许对该服务的连接:

sudo ufw allow Postfix

Postfix 服务器组件已安装并准备就绪。接下来,我们将设置一个可以处理 Postfix 处理的邮件的客户端。

步骤 5 — 设置环境以匹配邮件位置

在安装客户端之前,我们应该确保我们的 MAIL 环境变量设置正确。客户端将检查此变量以确定从哪里查找用户的邮件。

为了确保无论您如何访问您的帐户(通过 sshsusu -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

步骤 6 — 安装和配置邮件客户端

为了与传递的邮件交互,我们将安装 s-nail 软件包。这是 BSD xmail 客户端的一个变种,功能丰富,可以正确处理 Maildir 格式,并且在很大程度上向后兼容。GNU 版本的 mail 有一些限制,例如无论源格式如何,它总是将已读邮件保存到 mbox 格式中。

要安装 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

这将允许客户端即使在空收件箱的情况下也能打开。它还将将 Maildir 目录设置为内部 folder 变量,然后使用此变量在其中创建一个 sent mbox 文件,用于存储已发送的邮件。

完成后保存并关闭文件。

步骤 7 — 初始化 Maildir 并测试客户端

现在,我们可以测试客户端。

初始化目录结构

在我们的主目录中创建 Maildir 结构的最简单方法是给自己发送一封电子邮件。我们可以使用 s-nail 命令来实现这一点。因为只有在创建 Maildir 后 sent 文件才可用,所以我们应该在我们的初始电子邮件中禁用写入。我们可以通过传递 -Snorecord 选项来实现这一点。

通过将字符串传递给 s-nail 命令来发送电子邮件。调整命令以将您的 Linux 用户标记为接收者:

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

可能会收到以下响应:

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

这是正常的,可能只会在发送这封第一封邮件时出现。我们可以检查确保目录已创建,方法是查找我们的 ~/Maildir 目录:

ls -R ~/Maildir

您应该看到目录结构已创建,并且 ~/Maildir/new 目录中有一个新的消息文件:

/home/sammy/Maildir/:
cur  new  tmp
/home/sammy/Maildir/cur:
/home/sammy/Maildir/new:
1463177269.Vfd01I40e4dM691221.mail.example.com
/home/sammy/Maildir/tmp:

看起来我们的邮件已经被投递。

使用客户端管理邮件

使用客户端检查您的邮件:

s-nail

您应该看到您的新消息正在等待:

s-nail 版本 v14.8.6。键入 ? 获取帮助。
"/home/sammy/Maildir": 1 封邮件 1 封新邮件
>N  1 sammy@example.com     Wed Dec 31 19:00   14/369   init

只需按下 ENTER 键即可显示您的消息:

[-- Message  1 -- 14 lines, 369 bytes --]:
From sammy@example.com Wed Dec 31 19:00:00 1969
Date: Fri, 13 May 2016 18:07:49 -0400
To: sammy@example.com
Subject: init
Message-Id: <20160513220749.A278F228D9@mail.example.com>
From: sammy@example.com
init

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

h
s-nail 版本 v14.8.6。键入 ? 获取帮助。
"/home/sammy/Maildir": 1 封邮件 1 封新邮件
>R  1 sammy@example.com     Wed Dec 31 19:00   14/369   init

由于这条消息并不是很有用,我们可以使用 d,然后按 ENTER 键将其删除:

d

退出以返回到终端,通过输入 q,然后按 ENTER 键:

q

使用客户端发送邮件

您可以通过在文本编辑器中输入一条消息来测试发送邮件:

nano ~/test_message

在其中,输入您想要发送的文本:

你好,
这是一个测试。请确认收到!

使用 cat 命令,我们可以将消息传输到 s-nail 进程。这将默认以您的 Linux 用户发送消息。如果您想要修改“发件人”字段,可以使用 -r 标志进行调整:

cat ~/test_message | s-nail -s '测试邮件主题行' -r from_field_account user@email.com

上述选项为:

  • -s:邮件的主题行
  • -r:邮件“发件人:”字段的可选更改。默认情况下,将使用您登录的 Linux 用户来填充此字段。-r 选项允许您覆盖此设置。
  • user@email.com:要发送邮件的帐户。将其更改为您可以访问的有效帐户。

您可以在 s-nail 客户端中查看已发送的消息。通过输入以下命令再次启动交互式客户端:

s-nail

之后,通过输入以下命令查看您的已发送消息:

file +sent

您可以使用与处理收件邮件相同的命令来管理已发送的邮件。

结论

您现在应该已在您的 Ubuntu 18.04 服务器上配置了 Postfix。对于初学管理员来说,管理邮件服务器可能是一项艰巨的任务,但通过此配置,您应该具备基本的 MTA 电子邮件功能,让您可以开始使用。


目录
相关文章
|
7天前
|
Ubuntu 开发工具 git
Ubuntu安装homebrew的完整教程
本文介绍了如何在没有公网的情况下安装 Homebrew。首先访问 Homebrew 官网,然后通过阿里云的镜像克隆安装脚本,并创建普通用户进行安装。接着修改 `install.sh` 文件指向国内镜像,执行安装命令。最后配置环境变量并更换 Homebrew 源为国内镜像,确保安装顺利。
96 50
|
29天前
|
Ubuntu Linux 测试技术
Linux系统之Ubuntu安装cockpit管理工具
【10月更文挑战第13天】Linux系统之Ubuntu安装cockpit管理工具
109 4
Linux系统之Ubuntu安装cockpit管理工具
|
8天前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
22 2
|
1月前
|
网络协议 Ubuntu 网络安全
|
3天前
|
Ubuntu Java
Ubuntu之jdk安装
以下是Ubuntu之jdk安装的详细内容
10 0
|
30天前
|
Kubernetes Ubuntu Docker
从0开始搞K8S:使用Ubuntu进行安装(环境安装)
通过上述步骤,你已经在Ubuntu上成功搭建了一个基本的Kubernetes单节点集群。这只是开始,Kubernetes的世界广阔且深邃,接下来你可以尝试部署应用、了解Kubernetes的高级概念如Services、Deployments、Ingress等,以及探索如何利用Helm等工具进行应用管理,逐步提升你的Kubernetes技能树。记住,实践是最好的老师,不断实验与学习,你将逐渐掌握这一强大的容器编排技术。
113 1
|
1月前
|
Ubuntu Linux
软件安装(五):Ubuntu 18.04安装Teamviewer 看一遍就会
这篇文章介绍了在Ubuntu 18.04系统上通过图形界面和命令行两种方法安装TeamViewer远程控制软件的步骤。
28 2
|
16天前
|
消息中间件 Ubuntu Java
Ubuntu系统上安装Apache Kafka
Ubuntu系统上安装Apache Kafka
|
22天前
|
Ubuntu Linux
Ubuntu 16.04下无法安装.deb的解决方法
希望以上策略能有效协助您克服在Ubuntu 16.04中安装.deb文件时遇到的挑战。
20 0
|
1月前
|
并行计算 Ubuntu Linux
Ubuntu学习笔记(五):18.04安装多版本CUDA
这篇博客文章介绍了在Ubuntu 18.04系统上如何安装和切换不同版本的CUDA,以及如何安装不同版本的cuDNN。
183 2