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.cominit

可以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

介绍完毕。

在Ubuntu 上安装和配置postfix邮箱服务器相关推荐

  1. [网摘学习]在Ubuntu上安装和配置OpenStack Nova之二

    再收藏一份Openstack的文章,这两天的操作与此相同.但其中出现的问题还需要查找原因.待个人继续学习研究. 原文参考:http://www.linuxde.net/2011/11/1599.htm ...

  2. 在Ubuntu 上安装和配置Snort 3 NIDS

    在Ubuntu 上安装和配置Snort 3 NIDS 概述 在本教程中,你将学习如何在Ubuntu21.04上安装和配置Snort3NIDS.Snort是一个轻量级的网络入侵检测系统.它具有基于规则的 ...

  3. 配置iscsi服务器_在Windows Server 2016上安装和配置iSCSI目标服务器

    配置iscsi服务器 In this article, I am going to explain how we can install and configure the iSCSI Target ...

  4. 在Ubuntu上安装和配置OpenStack Nova

    OpenStack 是由 Rackspace 和 NASA 共同开发的云计算平台,帮助服务商和企业内部实现类似于 Amazon EC2 和 S3 的云基础架构服务(Infrastructure as ...

  5. linux检测hashicorp,在Ubuntu/CentOS/Debian上安装和配置Hashicorp Vault服务器的方法

    本文介绍在Ubuntu 18.04/Debian 9/CentOS 7/Fedora上安装Vault服务器(Hashicorp Vault Server).配置Vault systemd服务.初始化V ...

  6. 如何在 Ubuntu 上安装和配置 Redis

    目录 Redis 简介 第 1 步 - 安装和配置 Redis 第 2 步 - 测试 Redis

  7. optimus切换 linux,在Ubuntu上安装和配置Nvidia Optimus驱动

    在Nvidia和非Nvidia显卡之间切换 你可以通过按下Alt+F2或者从命令行键入下列命令实现Nvidia和非Nvidia(如Intel)显卡之间的切换: ~$ nvidia-settings 注 ...

  8. linux系统管理与服务器配置高志君_如何在 Linux 上安装、配置 NTP 服务器和客户端?...

    你也许听说过这个词很多次或者你可能已经在使用它了.在这篇文章中我将会清晰的告诉你 NTP 服务器和客户端的安装. -- Magesh Maruthamuthu 你也许听说过这个词很多次或者你可能已经在 ...

  9. 在CentOS上安装和配置OpenNebula入门实例

    导读 我们提到的云计算一般有三种类型:软件即服务(Software as a service, SaaS),平台即服务(Platform as a Service, PaaS)和基础架构即服务(Inf ...

最新文章

  1. java为什么序列化不一致_java – 为什么Jackson多态序列化在列表中不起作用?
  2. Table嵌套去掉子table的外边框
  3. Ubuntu的which、whereis、locate和find命令
  4. sphinx-release 2.1.4
  5. foxmail邮箱怎么导入邮件_163企业邮箱登录后怎么导入联系人?
  6. Explain:解决MUI 软键盘弹起挤压页面问题
  7. statistics conjugate
  8. 释放锁以及添加线程对于队列的变化
  9. Sublime Text 3 配置python交互运行环境的快捷键
  10. windows server 2008/2012安装PostgreSQL过程及问题总结
  11. 惊,Java 字符串拼接竟然有这么多玩法!| CSDN 原力计划
  12. c语言数组的一维编程,C语言编程一维数组的使用.doc
  13. EOS开发“ Hello world !”
  14. 从零基础入门Tensorflow2.0 ----一、3.2 实战深度神经网络(批归一化)
  15. 万年历单片机课程设计百度文库_单片机电子万年历课程设计
  16. 修改网卡地址 突破一些与MAC绑定服务的限制 突破封锁 应对病毒 等
  17. 读书 | 少有人走的路心智成熟的旅程读后感
  18. 重磅开源!平安产险提出TableMASTER:表格识别大师
  19. 新注册的邮箱如何群发邮件
  20. sqoop export hive数据同步到oracle的用法

热门文章

  1. Java基础篇之三----Java简介
  2. PHP互联网工长装修O2O服务平台源码
  3. 2021年山东省安全员C证新版试题及山东省安全员C证免费试题
  4. linux 统计每个ip数量,日子IP统计
  5. 生成EAN13条码(C语言实现)
  6. 路肩石水渠机在施工公路项目中工艺特点的匹配
  7. [体渲染]渲染一个球体
  8. 深度学习: 细粒度图像分类 (fine-grained image recognition)
  9. 2018年7月20日日报
  10. 高德地图实现展示多个规划的路线