在Ubuntu上构建自己的邮件服务器:基本Postfix设置

您是否听说过希拉里·克林顿(Hillary Clinton)使用私人邮件服务器来构建自己的邮件服务器?希拉里将其用于邪恶目的。但是,构建自己的私人邮件服务器会有所帮助 保护您的隐私 服务器管理员只有您自己可以访问存储在服务器上的邮件。另一方面,构建您自己的邮件服务器可能非常麻烦,因为您需要注意很多细节。

因此,为了使操作更简单,我们创建了一系列有关如何构建自己的邮件服务器的教程。本教程系列分为五个部分。

  1. 设置基本的Postfix SMTP服务器
  2. 设置Dovecot IMAP服务器和TLS加密
  3. 创建SPF和DKIM记录以通过垃圾邮件过滤器
  4. 设置DMARC以保护域信誉
  5. 使用Postfix阻止电子邮件垃圾邮件

本文是本教程系列的第一部分。本文将向您展示 设置一个非常基本的Postfix SMTP服务器,也称为MTA(邮件传输代理)。 完成本文之后,您将能够使用自己的邮件服务器上的自己的邮件域来发送和接收邮件。本教程将在Ubuntu 16.04和Ubuntu 14.04服务器上进行演示。

关于Postfix

Postfix是最新的邮件传输代理(MTA),也称为SMTP服务器。将邮件从邮件用户代理(MUA或邮件客户端)转发到远程SMTP服务器。 Postfix应用程序设计是模块化的,每个模块都以完成作业所需的最低特权级别运行。 Postfix的设计考虑了安全性。 Postfix与Unix紧密集成。在本教程中,您将学习如何设置单域Postfix。

先决条件

要从服务器发送邮件,必须打开端口25(发送)。许多ISP和DigitalOcean托管公司阻止端口25来控制垃圾邮件。建议使用Linode VPS(虚拟专用服务器)。因为它不会阻止端口25(出站),所以您可以免费发送无限量的电子邮件。创建Linode服务器后,在其上安装Ubuntu并按照以下说明进行操作。

还需要一个域名。我从isNameCheap的生活中注册了域名。价格低廉,whois隐私保护终身免费。

安装Postfix之前要做的事情

Postfix是由Unix专家Wietse Venema构建的。 Postfix不提供Unix已经提供的功能。因此,要提高Postfix性能并充分利用Postfix,您需要正确设置Ubuntu服务器。

为Ubuntu服务器设置正确的主机名

默认情况下,Postfix在与其他MTA通信时使用服务器的主机名来标识自己。主机名有两种形式:单字和FQDN。

单字格式主要用于个人计算机。 Linux家用计算机可能被命名为 linuxdebianubuntu 完全限定的域名(FQDN)由两部分组成:节点名称和域名。例如:

mail.linuxbabe.com

FQDN。 mail 是节点名称。 linuxbabe.com 域名FQDN主要用于连接到Internet的服务器,邮件服务器必须使用FQDN。 FQDN显示在smtpd标语中。如果Postfix在smtpd标语中未提供FQDN,则某些MTA将拒绝该消息。 一些MTA查询DNS,以查看smtpd标语FQDN是否解析为邮件服务器IP

输入以下命令以显示主机名FQDN格式:

hostname -f

如果ubuntu服务器还没有FQDN,则可以使用 hostnamectl 一套

sudo hostnamectl set-hostname your-fqdn

邮件服务器的常规FQDN为 mail.yourdomain.com。要在命令提示符下看到此更改,您必须注销并再次登录。另请注意,FQDN可以用Postfix覆盖。 myhostname Postfix配置文件参数。但是现在您不必担心此参数。

设置邮件服务器的DNS记录

MX记录

MX记录告诉其他MTA他们是邮件服务器 mail.yourdomain.com 我负责我的域的邮件传递。

MX record  @           mail.linuxbabe.com

邮件主机的通用名称 mail.yourdomain.com。您可以指定多个MX记录来设置邮件服务器优先级。数字越小,优先级越高。

记录

一条记录将FQDN映射到IP地址。

mail.linuxbabe.com        

AAAA记录

如果您的服务器使用IPv6地址,也建议添加AAAA记录 mail.yourdomain.com

mail.linuxbabe.com        

PTR记录

指针记录或PTR记录将IP地址映射到FQDN。创纪录的同行 反向DNS 进行调查。

使用PTR记录对A记录进行反向解析可以帮助阻止垃圾邮件发送者。只有服务器真正负责特定域时,许多MTA才会接受电子邮件。您必须确保将邮件服务器的PTR记录配置为增加邮件到达收件人的收件箱而不是垃圾邮件文件夹的可能性。

要检查PTR记录中的IP地址:

dig -x  +short

host 

要从托管服务提供商而不是从域名注册机构获取IP地址,必须在托管服务提供商的控制面板中设置IP PTR记录。如果服务器使用IPv6地址,则还要添加IPv6地址的PTR记录。

要编辑Linode服务器的反向DNS记录,请登录Linode控制面板,选择服务器, networking 标签单击三个点以编辑RDNS。

完成上述所有操作后,您可以尝试Postfix。

安装Postfix

在ubuntu服务器上,运行以下两个命令:

sudo apt-get update

sudo apt-get install postfix -y

提示您选择邮件配置类型。通常选择第二种类型。 Internet Site

使用后缀构建自己的邮件服务器

  • No configuration 表示在安装过程中未设置参数。
  • Internet Site 这意味着使用Postfix向其他MTA发送电子邮件和从其他MTA接收电子邮件。
  • Internet with smarthost 这意味着使用后缀接收来自其他MTA的电子邮件,但是使用另一个智能主机将电子邮件中继给收件人。
  • Satellite system 这意味着智能主机用于发送和接收邮件。
  • Local only 表示仅在本地用户帐户之间发送邮件。

然后输入系统邮件名称的域名,即@符号后的域名。例如,我的电子邮件地址是(电子邮件保护),所以我输入了它 linuxbabe.com 系统邮件名称。该域名被添加到未指定域名的地址中。

使用后缀构建自己的邮件服务器

安装完成后,Postfix会自动启​​动, /etc/postfix/main.cf 生成一个文件。您可以使用以下命令检查Postfix版本:

(email protected):~$ sudo postconf mail_version
mail_version = 2.11.0

在Ubuntu 16.04中,Postfix版本是3.1.0,而Ubuntu 18.04在3.3.0版本中已提供。

netstat 该实用程序指示Postfix主进程正在监听TCP端口25。

sudo netstat -lnpt

建立自己的邮件服务器

建议在发送测试电子邮件之前检查端口25是否被防火墙或主机提供商阻止。可以使用 nmap 扫描服务器上打开的端口。在另一台计算机(例如个人计算机)上运行以下命令。 (我认为您正在Linux计算机上阅读本教程。) your-server-ip 具有真实IP。

sudo nmap your-server-ip

建立自己的邮件服务器

从上面的屏幕截图中,您可以看到服务器上的TCP端口25已打开。请检查 iptables 防火墙允许端口25上的传入和传出连接。如果TCP端口25被托管提供商(例如Vultr)阻止,请打开TCP端口25。

nmap 根据您的Linux发行版,可以使用以下命令之一在Linux上安装:

sudo apt install nmap

sudo yum install nmap

sudo zypper install nmap

sudo pacman -S nmap

发送测试电子邮件

实际上,您现在可以从命令行发送和接收电子邮件。如果您在Ubuntu服务器上具有用户帐户 user1,此用户的电子邮件地址 (email protected)。您可以将邮件发送给root用户 (email protected)。您还可以将电子邮件发送到Gmail,yahoo电子邮件或其他电子邮件服务。

安装Postfix时,sendmail二进制文件为 /usr/sbin/sendmail。您可以使用Postfix sendmail二进制文件将测试电子邮件发送到您的Gmail帐户,如下所示:

echo "test email" | sendmail (email protected)

在此简单命令中,sendmail从标准输入中读取一条消息,创建“测试邮件”作为邮件正文,然后将此邮件发送到您的Gmail帐户。您应该能够在Gmail收件箱(或垃圾邮件文件夹)中收到此测试电子邮件。您可以看到,即使没有指定发件人地址,Postfix也会自动添加发件人地址的域名。这是因为在安装Postfix时将域名添加到了系统邮件名称中。

您也可以回复此测试电子邮件,以查看Postfix是否可以接收该电子邮件。从您的域发送的电子邮件可能被归类为垃圾邮件。不用担心,我们将在本教程系列的第3部分中对此进行研究。

每个用户的收件箱位于 /var/spool/mail//var/mail/ 文件如果您不知道在哪里可以找到收件箱,请使用此命令。

postconf mail_spool_directory

Postfix邮件日志存储在: /var/log/mail.log

使用邮件程序发送和接收电子邮件

接下来,安装命令行MUA(邮件用户代理)。

sudo apt-get install mailutils

要发送电子邮件,请输入

mail (email protected)
(email protected):~$ mail (email protected)
Cc: 
Subject: 2nd test email
I'm sending this email using the mail program.

输入主题和文字。告诉 mail 请按一下您已完成写作 Ctrl+D 电子邮件将发送此电子邮件。

要阅读传入的电子邮件,只需键入 mail

mail

用法如下 mail 一个管理邮箱的程序。

  • 要阅读第一封电子邮件,请键入 1。如果仅显示部分消息,请按 Enter 显示消息的其余部分。
  • 要显示从消息1开始的消息头,请输入: h
  • 要查看屏幕上的最后一条消息,请键入 h$z
  • 要阅读下一封电子邮件,请键入 n
  • 要删除消息1,请输入: d 1
  • 要删除消息1、2和3,请输入: d 1 2 3
  • 要删除消息1到10,请输入: d 1-10
  • 要播放消息1,请输入: reply 1
  • 要结束电子邮件,请输入 q

打开的邮件将从 /var/mail//home//mbox 文件这意味着其他邮件客户端无法读取这些邮件。为防止这种情况,请键入 x 代替 q 结束电子邮件。

如何增加附件大小限制

默认情况下,附件不能超过10MB。 message_size_limit 参数。

postconf | grep message_size_limit

输出:

message_size_limit = 10240000

要允许附件大小为50MB,请运行以下命令:

sudo postconf -e message_size_limit=52428800

什么时候 后置 该命令是 -e (编辑)尝试搜索选项,参数(message_size_limit)Postfix主要配置文件(/etc/postfix/main.cf)更改值。如果找不到该参数,请将其添加到文件末尾。

请注意 message_size_limit 不能更大 mailbox_size_limit默认值为51200000字节(约48MB)。

postconf | grep mailbox_size_limit

使用方法 postconf 命令增加值。

sudo postconf -e message_size_limit=52428800

重新启动Postfix,以使更改生效。

sudo systemctl restart postfix

温馨提示:将Postfix设置为仅转发邮件主机

将所有传入的邮件转发到邮件服务器上的另一个邮件服务(例如Gmail)。然后,您可以通过创建 .forward 用户主目录中的文件。

nano ~/.forward

在文件中添加一个电子邮件地址。

(email protected)

仅转帐后设置

保存并关闭文件。那就是你要做的。

恭喜你!基本的Postfix电子邮件服务器现在可以运行了。您可以使用命令行发送纯文本电子邮件并阅读传入的电子邮件。此设置还允许网站向用户发送电子邮件,例如密码重置电子邮件。在本教程系列的下一部分中,您将学习如何安装Dovecot IMAP服务器并启用TLS加密。期待它!