当前位置: 首页 > 工具软件 > Postfix Admin > 使用案例 >

在Ubuntu 上安装和配置postfix邮箱服务器

边国安
2023-12-01

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

 本文介绍 如何在Ubuntu 20.04服务器上安装和配置Postfix。 然后,将通过安装s-nail(邮件用户代理(MUA),也称为电子邮件客户端)来测试Postfix是否能够正确路由邮件。

请注意,本文的目标是仅使用一些基本的电子邮件功能来帮助你启动Postfix并快速运行。最后,你虽没有功能齐全的电子邮件服务器,但是拥有此类设置的一些基本组件,作为基本应用和入门。

虽然是在ubuntu 20 下实验的,但其他版本,以及其他linux 都应该适用。

前提条件:

安装好了ubuntu20,并拥有一个非root 的sudo 权限用户。 如果没有,在root 下创建一个 

adduser sammy

usermod -aG sudo sammy

这样就建立了一个sudo 权限用户

全局域名指向你的Ubuntu 20.04服务器。 需要确保DNS具有指向邮件服务器的MX记录。

安装 Postfix

更新本地apt 包:

sudo apt update

安装Postfix

sudo DEBIAN_PRIORITY=low apt install postfix

这个安装DEBIAN_PRIORITY=low ,这样有些我们需要的设置。

安装过程有好些提示,我们是这样选择的:

General type of mail configuration?:  选择  Internet Site 

System mail name:  这里假设域名是 www.example.com , 邮件服务名为 mail.example ,这里只是填 example.com, 以后你用户user 的邮箱就是 user@example.com

Root and postmaster mail recipient:  比如你的用户名是sammy ,那就填 sammy ,这样根用户等的邮箱都是sammy 接收。

Other destinations to accept mail for: 选择缺省就好

Force synchronous updates on mail queue?: 选择 No

Local networks: 缺省就好。

Mailbox size limit: 邮箱限定封数,0则是不限制。

Local address extension character:  + 就是加号,不改。

Internet protocols to use: 选All

再写一下设置参数表:

  • General type of mail configuration?Internet Site
  • System mail nameexample.com (not mail.example.com)
  • Root and postmaster mail recipient: The username of your primary Linux account (sammy in our examples)
  • Other destinations to accept mail for$myhostname, example.com, mail.example.com, localhost.example.com, localhost
  • Force synchronous updates on mail queue?No
  • Local networks127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
  • Mailbox size limit0
  • Local address extension character+
  • Internet protocols to useall

选择错了也没关系,可以用下面命令修改:

sudo dpkg-reconfigure postfix

更改Postfix 的配置

设置主邮件目录

sudo postconf -e 'home_mailbox= Maildir/'

建立别名表

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

编辑别名文件

sudo nano /etc/postfix/virtual

内容如下:
 

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

这个什么意思呢? contact , admin 这2个用户的邮件转给sammy 接收。

使能别名映像表:

sudo postmap /etc/postfix/virtual

重启动 Postfix 使更改生效:

sudo systemctl restart postfix

打开防火墙:

sudo ufw allow Postfix

安装邮件客户端并初始化Maildir结构

为了与要发送的邮件进行交互,此步骤将引导并完成安装s-nail软件包。 这是BSD xmail客户端的多功能的变体,可以正确处理Maildir格式。

但是,在安装客户端之前,请务必确保正确设置了MAIL环境变量。 s-nail将查找此变量,以找出在何处为您的用户查找邮件。

为了确保无论你如何访问帐户(无论是通过ssh,su,su-还是sudo)都可以设置MAIL变量,需要在/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/bash.bashrc 和 /etc/profile.d/mail.sh 这2个文件末尾添加了MAIL=~/Maildir 可以打开这2个文件看看

要将上面设置变量在当前会话中生效,执行如下命令:

source /etc/profile.d/mail.sh

现在安装:

sudo apt install s-nail

在运行前:

sudo nano /etc/s-nail.rc

其内容是添加下面3行到末尾,如果复制的话,去掉个点,本来表示其他内容不变的意思。

. . .
set emptystart
set folder=Maildir
set record=+sent

3行的意思是:

set emptystart:即使收件箱为空也允许客户端打开
set folder = Maildir:将Maildir目录设置为内部文件夹变量
set record = + sent 创建一个已发送的mbox文件,用于将已发送的邮件存储在设置为文件夹变量的任何目录中,在这种情况下为Maildir

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

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

原文说,可能得到如下提示:

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

这个是正常的。

我没得到这个提示。

看看 ~/Maildir 建立的情况:

ls -R ~/Maildir

应该如下目录结构:

/home/sammy/Maildir/:
cur  new  tmp

/home/sammy/Maildir/cur:

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

/home/sammy/Maildir/tmp:

可能需要些时间,还是怎么的,我总是什么也没有,连 Maildir 这个目录也没有。

我也不知道怎么原因,又把前面再做一遍,突然说收到 新邮件,然后看到这个目录了。我猜想是不是需要等待些时间,第一次做也是一样。接收到的时候,有好几个邮件。没有,就重新执行。

测试客户端

执行:

s-nail
有下面输出:

[-- Message  1 -- 14 lines, 369 bytes --]:
From sammy@example.com Tue May 19 15:40:48 2020
Date: Tue, 19 May 2020 15:40:48 +0000
To: sammy@example.com
Subject: init
Message-Id: <20160513220749.A278F228D9@mail.example.com>
From: sammy@example.com

init

可以h 回车,回到列表:

?h

>R  1 sammy@example.com     2020-05-19 15:40   14/392   init 

信息有R 标记,读取过来的。

d 回车删除当前邮件

?d

q 回车,退出

?q

下面测试发送一个文件:

先编辑

nano ~/test_message
 

内容如下:

Hello,

This is a test.  Please confirm receipt!

发送邮件的选项:

-s:这定义电子邮件的主题行
-r:对电子邮件的“发件人:”字段的可选更改。 默认情况下,将使用您登录时使用的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

看发送了的邮件信息:

?  file +sent

应该看到如下类似信息:

+[/home/sammy/Maildir/]sent: 1 message 1 new
▸N  1 contact@example.com 2020-05-19 15:47   12/297   Test email subject line 

本文参考学习 How To Install and Configure Postfix on Ubuntu 20.04

介绍完毕。
 

 


 

 

 类似资料: