在Ubuntu 上安装和配置postfix邮箱服务器
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 name:
example.com
(notmail.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 networks:
127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
- Mailbox size limit:
0
- Local address extension character:
+
- Internet protocols to use: all
选择错了也没关系,可以用下面命令修改:
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邮箱服务器相关推荐
- [网摘学习]在Ubuntu上安装和配置OpenStack Nova之二
再收藏一份Openstack的文章,这两天的操作与此相同.但其中出现的问题还需要查找原因.待个人继续学习研究. 原文参考:http://www.linuxde.net/2011/11/1599.htm ...
- 在Ubuntu 上安装和配置Snort 3 NIDS
在Ubuntu 上安装和配置Snort 3 NIDS 概述 在本教程中,你将学习如何在Ubuntu21.04上安装和配置Snort3NIDS.Snort是一个轻量级的网络入侵检测系统.它具有基于规则的 ...
- 配置iscsi服务器_在Windows Server 2016上安装和配置iSCSI目标服务器
配置iscsi服务器 In this article, I am going to explain how we can install and configure the iSCSI Target ...
- 在Ubuntu上安装和配置OpenStack Nova
OpenStack 是由 Rackspace 和 NASA 共同开发的云计算平台,帮助服务商和企业内部实现类似于 Amazon EC2 和 S3 的云基础架构服务(Infrastructure as ...
- linux检测hashicorp,在Ubuntu/CentOS/Debian上安装和配置Hashicorp Vault服务器的方法
本文介绍在Ubuntu 18.04/Debian 9/CentOS 7/Fedora上安装Vault服务器(Hashicorp Vault Server).配置Vault systemd服务.初始化V ...
- 如何在 Ubuntu 上安装和配置 Redis
目录 Redis 简介 第 1 步 - 安装和配置 Redis 第 2 步 - 测试 Redis
- optimus切换 linux,在Ubuntu上安装和配置Nvidia Optimus驱动
在Nvidia和非Nvidia显卡之间切换 你可以通过按下Alt+F2或者从命令行键入下列命令实现Nvidia和非Nvidia(如Intel)显卡之间的切换: ~$ nvidia-settings 注 ...
- linux系统管理与服务器配置高志君_如何在 Linux 上安装、配置 NTP 服务器和客户端?...
你也许听说过这个词很多次或者你可能已经在使用它了.在这篇文章中我将会清晰的告诉你 NTP 服务器和客户端的安装. -- Magesh Maruthamuthu 你也许听说过这个词很多次或者你可能已经在 ...
- 在CentOS上安装和配置OpenNebula入门实例
导读 我们提到的云计算一般有三种类型:软件即服务(Software as a service, SaaS),平台即服务(Platform as a Service, PaaS)和基础架构即服务(Inf ...
最新文章
- java为什么序列化不一致_java – 为什么Jackson多态序列化在列表中不起作用?
- Table嵌套去掉子table的外边框
- Ubuntu的which、whereis、locate和find命令
- sphinx-release 2.1.4
- foxmail邮箱怎么导入邮件_163企业邮箱登录后怎么导入联系人?
- Explain:解决MUI 软键盘弹起挤压页面问题
- statistics conjugate
- 释放锁以及添加线程对于队列的变化
- Sublime Text 3 配置python交互运行环境的快捷键
- windows server 2008/2012安装PostgreSQL过程及问题总结
- 惊,Java 字符串拼接竟然有这么多玩法!| CSDN 原力计划
- c语言数组的一维编程,C语言编程一维数组的使用.doc
- EOS开发“ Hello world !”
- 从零基础入门Tensorflow2.0 ----一、3.2 实战深度神经网络(批归一化)
- 万年历单片机课程设计百度文库_单片机电子万年历课程设计
- 修改网卡地址 突破一些与MAC绑定服务的限制 突破封锁 应对病毒 等
- 读书 | 少有人走的路心智成熟的旅程读后感
- 重磅开源!平安产险提出TableMASTER:表格识别大师
- 新注册的邮箱如何群发邮件
- sqoop export hive数据同步到oracle的用法