如何在Debian10上安装和配置Postfix作为仅发送SMTP服务器

来自菜鸟教程
跳转至:导航、​搜索

介绍

Postfix 是一个 邮件传输代理 (MTA),一个用于发送和接收电子邮件的应用程序。 在本教程中,您将安装和配置 Postfix,使其仅可用于本地应用程序发送电子邮件,即安装在与 Postfix 相同的服务器上的应用程序。

你为什么想这么做?

如果您已经在使用第三方电子邮件提供商来发送和接收电子邮件,则无需运行自己的邮件服务器。 但是,如果您管理的云服务器上安装了需要发送电子邮件通知的应用程序,则运行本地的仅发送 SMTP 服务器是使用第三方电子邮件服务提供商或运行成熟的 SMTP 的不错选择服务器。

在本教程中,您将在 Debian 10 上安装和配置 Postfix 作为只发送的 SMTP 服务器。

先决条件

要遵循本教程,您将需要:

请注意,您的服务器的主机名应与您的域或子域匹配。 您可以通过在命令提示符处键入 hostname 来验证服务器的主机名。 输出应与您在创建服务器时为其指定的名称相匹配。

第 1 步 — 安装 Postfix

在此步骤中,您将学习如何安装 Postfix。 您将需要两个包:mailutils,其中包括 Postfix 运行所需的程序,以及 postfix 本身。

首先,更新包数据库:

sudo apt update

接下来,安装 mailtuils

sudo apt install mailutils

最后,安装postfix

sudo apt install postfix

在安装过程即将结束时,您将看到一个如下图所示的窗口:

ENTER 继续。

默认选项是 Internet 站点,在以下屏幕中预先选择:

ENTER 继续。

之后,您将获得另一个窗口来设置系统邮件名称

系统邮件名称 应该与您在创建服务器时分配给服务器的名称相同。 如果它显示像 subdomain.example.com 这样的子域,请将其更改为 example.com。 完成后,按 TAB,然后按 ENTER

您现在已经安装了 Postfix,并准备好修改其配置设置。

第 2 步 — 配置 Postfix

在此步骤中,您将配置 Postfix 以处理仅从运行它的服务器发送电子邮件的请求,即 来自 localhost

为此,需要将 Postfix 配置为仅侦听 环回接口 ,这是服务器用于内部通信的虚拟网络接口。 要进行更改,请使用 nano您最喜欢的文本编辑器 打开主 Postfix 配置文件:

sudo nano /etc/postfix/main.cf

打开文件后,向下滚动,直到看到以下部分:

/etc/postfix/main.cf

. . .
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
. . .

将读取 inet_interfaces = all 的行更改为 inet_interfaces = loopback-only

/etc/postfix/main.cf

. . .
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only
. . .

您需要修改的另一个指令是 mydestination,它用于指定通过 local_transport 邮件传递传输传递的域列表。 默认情况下,这些值与以下类似:

/etc/postfix/main.cf. . .
mydestination = $myhostname, example.com, localhost.com, , localhost
. . .

该指令的 推荐默认值 在下面的代码块中给出,因此请修改您的以匹配:

/etc/postfix/main.cf. . .
mydestination = $myhostname, localhost.$mydomain, $mydomain
. . .

保存并关闭文件。

注意: 如果您在单个服务器上托管多个域,其他域也可以使用 mydestination 指令传递给 Postfix。 但是,以可扩展且不会出现问题的方式配置 Postfix 涉及超出本文范围的其他配置。


最后,重启 Postfix。

sudo systemctl restart postfix

第 3 步 — 测试 SMTP 服务器

在此步骤中,您将测试 Postfix 是否可以使用 mail 命令向外部电子邮件帐户发送电子邮件,该命令是您在步骤 1 中安装的 mailutils 软件包的一部分。

要发送测试电子邮件,请键入:

echo "This is the body of the email" | mail -s "This is the subject line" your_email_address

在执行您自己的测试时,您可以按原样使用正文和主题行文本,或根据自己的喜好更改它们。 但是,请使用有效的电子邮件地址代替 your_email_address。 域可以是 gmail.comfastmail.comyahoo.com 或您使用的任何其他电子邮件服务提供商。

现在检查您发送测试消息的电子邮件地址。 您应该会在收件箱中看到该消息。 如果没有,请检查您的垃圾邮件文件夹。

请注意,使用此配置,您发送的测试电子邮件的 From 字段中的地址将是 sammy@example.com,其中 sammy 是您的 Linux 非 root 用户名,并且domain 是服务器的主机名。 如果您更改用户名,From 地址也会更改。

第 4 步 — 转发系统邮件

我们要设置的最后一件事是转发,因此您将通过您的个人外部电子邮件地址将电子邮件发送到系统上的 root

要配置 Postfix 以便将系统生成的电子邮件发送到您的电子邮件地址,您需要编辑 /etc/aliases 文件。 现在打开该文件:

sudo nano /etc/aliases

Debian 10 默认安装文件的完整内容如下:

/etc/别名

mailer-daemon: postmaster
postmaster: root
nobody: root
hostmaster: root
usenet: root
news: root
webmaster: root
www: root
ftp: root
abuse: root
noc: root
security: root

postmaster: root 设置确保系统生成的电子邮件发送给 root 用户。 您想要编辑这些设置,以便将这些电子邮件重新路由到您的电子邮件地址。 为此,请在 postmaster: root 设置下方添加以下行:

/etc/别名

mailer-daemon: postmaster
postmaster:    root
root:          your_email_address
. . .

your_email_address 替换为您的个人电子邮件地址。 完成后,保存并关闭文件。 要使更改生效,请运行以下命令:

sudo newaliases

您可以通过使用以下命令向 root 帐户发送电子邮件来测试它是否有效:

echo "This is the body of the email" | mail -s "This is the subject line" root

您应该在您的电子邮件地址收到电子邮件。 如果没有,请检查您的垃圾邮件文件夹。

结论

这就是使用 Postfix 设置只发送电子邮件服务器所需的全部内容。 但是,您可能需要采取一些额外的步骤来保护您的域免受垃圾邮件发送者的侵害。

如果您想在单个地址接收来自服务器的通知,那么将电子邮件标记为垃圾邮件就不是问题,因为您可以创建白名单解决方法。 但是,如果您想向潜在的站点用户发送电子邮件(例如用于留言板注册的确认电子邮件),您绝对应该设置 SPF 记录和 DKIM,以便您的服务器的电子邮件更有可能被视为合法。

如果配置正确,这些步骤将很难使用看似来自您的域的地址发送垃圾邮件。 采取这些额外的配置步骤还将使普通邮件提供商更有可能将来自您服务器的电子邮件视为合法电子邮件。