标签 邮件 下的文章

在 2020 年用开源实现更高生产力的二十种方式的第十六篇文章中,直接通过文本编辑器管理你的电子邮件和日历。

去年,我在 19 天里给你介绍了 19 个新(对你而言)的生产力工具。今年,我换了一种方式:使用你在使用或者还没使用的工具,构建一个使你可以在新一年更加高效的环境。

用 Vim 做(几乎)所有事情,第一部分

我经常使用两个文本编辑器 —— VimEmacs。为什么两者都用呢?它们有不同的使用场景,在本系列的后续几篇文章中,我将讨论其中的一些用例。

好吧,为什么要在 Vim 中执行所有操作?因为如果有一个应用程序是我可以访问的每台计算机上都有的,那就是 Vim。如果你像我一样,可能已经在 Vim 中打发了很多时光。那么,为什么不将其用于所有事情呢?

但是,在此之前,你需要做一些事情。首先是确保你的 Vim 具有 Ruby 支持。你可以使用 vim --version | grep ruby。如果结果不是 +ruby,则需要解决这个问题。这可能有点麻烦,你应该查看发行版的文档以获取正确的软件包。在 MacOS 上,用的是官方的 MacVim(不是 Brew 发行的),在大多数 Linux 发行版中,用的是 vim-nox 或 vim-gtk,而不是 vim-gtk3。

我使用 Pathogen 自动加载插件和捆绑软件。如果你使用 Vundle 或其他 Vim 软件包管理器,则需要调整以下命令才能使用它。

在 Vim 中管理你的邮件

使 Vim 在你的生产力计划中发挥更大作用的一个很好的起点是使用它通过 Notmuch 发送和接收电子邮件,和使用 abook 访问你的联系人列表。你需要为此安装一些东西。下面的所有示例代码都运行在 Ubuntu 上,因此如果你使用其他发行版,则需要对此进行调整。通过以下步骤进行设置:

sudo apt install notmuch-vim ruby-mail
curl -o ~/.vim/plugin/abook --create-dirs https://raw.githubusercontent.com/dcbaker/vim-abook/master/plugin/abook.vim

到目前为止,一切都很顺利。现在启动 Vim 并执行 :NotMuch。由于是用较旧版本的邮件库 notmuch-vim 编写的,可能会出现一些警告,但总的来说,Vim 现在将成为功能齐全的 Notmuch 邮件客户端。

 title=

如果要搜索特定标签,请输入 \t,输入标签名称,然后按回车。这将拉出一个带有该标签的所有消息的列表。\s 组合键会弹出 Search: 提示符,可以对 Notmuch 数据库进行全面搜索。使用箭头键浏览消息列表,按回车键显示所选项目,然后输入 \q 退出当前视图。

要撰写邮件,请使用 \c 按键。你将看到一条空白消息。这是 abook.vim 插件发挥作用的位置。按下 Esc 并输入 :AbookQuery <SomeName>,其中 <SomeName> 是你要查找的名称或电子邮件地址的一部分。你将在 abook 数据库中找到与你的搜索匹配的条目列表。通过键入你想要的地址的编号,将其添加到电子邮件的地址行中。完成电子邮件的键入和编辑,按 Esc 退出编辑模式,然后输入 ,s 发送。

如果要在 :NotMuch 启动时更改默认文件夹视图,则可以将变量 g:notmuch_folders 添加到你的 .vimrc 文件中:

let g:notmuch_folders = [
      \ [ 'new', 'tag:inbox and tag:unread' ],
      \ [ 'inbox', 'tag:inbox' ],
      \ [ 'unread', 'tag:unread' ],
      \ [ 'News', 'tag:@sanenews' ],
      \ [ 'Later', 'tag:@sanelater' ],
      \ [ 'Patreon', 'tag:@patreon' ],
      \ [ 'LivestockConservancy', 'tag:livestock-conservancy' ],
    \ ]

Notmuch 插件的文档中涵盖了更多设置,包括设置标签键和使用其它的邮件程序。

在 Vim 中查询日历

遗憾的是,似乎没有使用 vCalendar 或 iCalendar 格式的 Vim 日历程序。有个 Calendar.vim,做得很好。设置 Vim 通过以下方式访问你的日历:

cd ~/.vim/bundle
git clone [email protected]:itchyny/calendar.vim.git

现在,你可以通过输入 :Calendar 在 Vim 中查看日历。你可以使用 <> 键在年、月、周、日和时钟视图之间切换。如果要从一个特定的视图开始,请使用 -view= 标志告诉它你希望看到哪个视图。你也可以在任何视图中定位日期。例如,如果我想查看 2020 年 7 月 4 日这一周的情况,请输入 :Calendar -view week 7 4 2020。它的帮助信息非常好,可以使用 ? 键参看。

Calendar.vim 还支持 Google Calendar(我需要),但是在 2019 年 12 月,Google 禁用了它的访问权限。作者已在 GitHub 上的这个提案中发布了一种变通方法。

这样你就在 Vim 中有了这些:你的邮件、地址簿和日历。但是这些还没有完成; 下一篇你将在 Vim 上做更多的事情!

Vim 为作家提供了很多好处,无论他们是否具有技术意识。

需要保持时间表正确吗?了解如何使用这些免费的开源软件来做到这一点。


via: https://opensource.com/article/20/1/vim-email-calendar

作者:Kevin Sonney 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Notmuch 可以索引、标记和排序电子邮件。在我们的 20 个使用开源提升生产力的系列的第四篇文章中了解该如何使用它。

去年,我在 19 天里给你介绍了 19 个新(对你而言)的生产力工具。今年,我换了一种方式:使用你在使用或者还没使用的工具,构建一个使你可以在新一年更加高效的环境。

用 Notmuch 为你的邮件建立索引

昨天,我谈到了如何使用 OfflineIMAP 将我的邮件同步到本地计算机。今天,我将讨论如何在阅读之前预处理所有邮件。

 title=

Maildir 可能是最有用的邮件存储格式之一。有很多工具可以帮助你管理邮件。我经常使用一个名为 Notmuch 的小程序,它能索引、标记和搜索邮件。Notmuch 配合其他几个程序一起使用可以使处理大量邮件更加容易。

大多数 Linux 发行版都包含 Notmuch,你也可以在 MacOS 上获得它。Windows 用户可以通过 Linux 的 Windows 子系统(WSL)访问它,但可能需要进行一些其他调整。

 title=

Notmuch 首次运行时,它将询问你一些问题,并在家目录中创建 .notmuch-config 文件。接下来,运行 notmuch new 来索引并标记所有邮件。你可以使用 notmuch search tag:new 进行验证,它会找到所有带有 new 标签的消息。这可能会有很多邮件,因为 Notmuch 使用 new 标签来指示新邮件,因此你需要对其进行清理。

运行 notmuch search tag:unread 来查找未读消息,这会减少很多邮件。要从你已阅读的消息中删除 new 标签,请运行 notmuch tag -new not tag:unread,它将搜索所有没有 unread 标签的消息,并从其中删除 new 标签。现在,当你运行 notmuch search tag:new 时,它将仅显示未读邮件。

但是,批量标记消息可能更有用,因为在每次运行时手动更新标记可能非常繁琐。--batch 命令行选项告诉 Notmuch 读取多行命令并执行它们。还有一个 --input=filename 选项,该选项从文件中读取命令并应用它们。我有一个名为 tagmail.notmuch 的文件,用于给“新”邮件添加标签;它看起来像这样:

# Manage sent, spam, and trash folders
-unread -new folder:Trash
-unread -new folder:Spam
-unread -new folder:Sent

# Note mail sent specifically to me (excluding bug mail)
+to-me to:kevin at sonney.com and tag:new and not tag:to-me

# And note all mail sent from me
+sent from:kevin at sonney.com and tag:new and not tag:sent

# Remove the new tag from messages
-new tag:new

我可以在运行 notmuch new 后运行 notmuch tag --input=tagmail.notmuch 批量处理我的邮件,之后我也可以搜索这些标签。

Notmuch 还支持 pre-newpost-new 钩子。这些脚本存放在 Maildir/.notmuch/hooks 中,它们定义了在使用 notmuch new 索引新邮件之前(pre-new)和之后(post-new)要做的操作。在昨天的文章中,我谈到了使用 OfflineIMAP 同步来自 IMAP 服务器的邮件。从 pre-new 钩子运行它非常容易:

#!/bin/bash
# Remove the new tag from messages that are still tagged as new
notmuch tag -new tag:new

# Sync mail messages
offlineimap -a LocalSync -u quiet

你还可以使用可以操作 Notmuch 数据库的 Python 应用 afew,来为你标记邮件列表垃圾邮件。你可以用类似的方法在 post-new 钩子中使用 afew

#!/bin/bash
# tag with my custom tags
notmuch tag --input=~/tagmail.notmuch

# Run afew to tag new mail
afew -t -n

我建议你在使用 afew 标记邮件时,不要使用 [ListMailsFilter],因为某些邮件处理程序会在邮件中添加模糊或者彻头彻尾是垃圾的列表标头(我说的就是你 Google)。

 title=

此时,任何支持 Notmuch 或 Maildir 的邮件阅读器都可以读取我的邮件。有时,我会使用 alot(一个 Notmuch 特定的客户端)在控制台中阅读邮件,但是它不像其他邮件阅读器那么美观。

在接下来的几天,我将向你展示其他一些邮件客户端,它们可能会与你在使用的工具集成在一起。同时,请查看可与 Maildir 邮箱一起使用的其他工具。你可能会发现我没发现的好东西。


via: https://opensource.com/article/20/1/organize-email-notmuch

作者:Kevin Sonney 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

将邮件镜像保存到本地是整理消息的第一步。在我们的 20 个使用开源提升生产力的系列的第三篇文章中了解该如何做。

去年,我在 19 天里给你介绍了 19 个新(对你而言)的生产力工具。今年,我换了一种方式:使用你在使用或者还没使用的工具,构建一个使你可以在新一年更加高效的环境。

使用 OfflineIMAP 在本地同步你的邮件

我与邮件之间存在爱恨交织的关系。我喜欢它让我与世界各地的人交流的方式。但是,像你们中的许多人一样,我收到过很多邮件,许多是来自邮件列表的,但也有很多垃圾邮件、广告等。这些积累了很多。

 title=

我尝试过的大多数工具(除了大型邮件服务商外)都可以很好地处理大量邮件,它们都有一个共同点:它们都依赖于以 Maildir 格式存储的本地邮件副本。这其中最有用的是 OfflineIMAP。OfflineIMAP 是将 IMAP 邮箱镜像到本地 Maildir 文件夹树的 Python 脚本。我用它来创建邮件的本地副本并使其保持同步。大多数 Linux 发行版都包含它,并且可以通过 Python 的 pip 包管理器获得。

示例的最小配置文件是一个很好的模板。首先将其复制到 ~/.offlineimaprc。我的看起来像这样:

[general]
accounts = LocalSync
ui=Quiet
autorefresh=30

[Account LocalSync]
localrepository = LocalMail
remoterepository = MirrorIMAP

[Repository MirrorIMAP]
type = IMAP
remotehost = my.mail.server
remoteuser = myusername
remotepass = mypassword
auth_mechanisms = LOGIN
createfolder = true
ssl = yes
sslcacertfile = OS-DEFAULT

[Repository LocalMail]
type = Maildir
localfolders = ~/Maildir
sep = .
createfolder = true

我的配置要做的是定义两个仓库:远程 IMAP 服务器和本地 Maildir 文件夹。还有一个帐户,告诉 OfflineIMAP 运行时要同步什么。你可以定义链接到不同仓库的多个帐户。除了本地复制外,这还允许你从一台 IMAP 服务器复制到另一台作为备份。

如果你有很多邮件,那么首次运行 OfflineIMAP 将花费一些时间。但是完成后,下次会花少得多的时间。你也可以将 OfflineIMAP 作为 cron 任务(我的偏好)或作为守护程序在仓库之间不断进行同步。其文档涵盖了所有这些内容以及 Gmail 等高级配置选项。

现在,我的邮件已在本地复制,并有多种工具用来加快搜索、归档和管理邮件的速度。这些我明天再说。


via: https://opensource.com/article/20/1/sync-email-offlineimap

作者:Kevin Sonney 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

当你需要在 shell 脚本中创建邮件时,就需要用到命令行发送邮件的知识。Linux 中有很多命令可以实现发送邮件。本教程中包含了最流行的 5 个命令行邮件客户端,你可以选择其中一个。这 5 个命令分别是:

  • mail / mailx
  • mutt
  • mpack
  • sendmail
  • ssmtp

工作原理

我先从整体上来解释下 Linux 中邮件命令怎么把邮件传递给收件人的。邮件命令撰写邮件并发送给一个本地邮件传输代理(MTA,如 sendmail、Postfix)。邮件服务器和远程邮件服务器之间通信以实际发送和接收邮件。下面的流程可以看得更详细。

1) 如何在 Linux 上安装 mail/mailx 命令

mail 命令是 Linux 终端发送邮件用的最多的命令。mailxmail 命令的更新版本,基于 Berkeley Mail 8.1,意在提供 POSIX mailx 命令的功能,并支持 MIME、IMAP、POP3、SMTP 和 S/MIME 扩展。mailx 在某些交互特性上更加强大,如缓冲邮件消息、垃圾邮件评分和过滤等。在 Linux 发行版上,mail 命令是 mailx 命令的软链接。可以运行下面的命令从官方发行版仓库安装 mail 命令。

对于 Debian/Ubuntu 系统,使用 APT-GET 命令APT 命令 安装 mailutils。

$ sudo apt-get install mailutils

对于 RHEL/CentOS 系统,使用 YUM 命令 安装 mailx。

$ sudo yum install mailx

对于 Fedora 系统,使用 DNF 命令 安装 mailx。

$ sudo dnf install mailx

1a) 如何在 Linux 上使用 mail 命令发送邮件

mail 命令简单易用。如果你不需要发送附件,使用下面的 mail 命令格式就可以发送邮件了:

$ echo "This is the mail body" | mail -s "Subject" [email protected]

如果你要发送附件,使用下面的 mail 命令格式:

$ echo "This is the mail body" | mail -a test1.txt -s "Subject" [email protected]
  • -a:用于在基于 Red Hat 的系统上添加附件。
  • -A:用于在基于 Debian 的系统上添加附件。
  • -s:指定消息标题。

2) 如何在 Linux 上安装 mutt 命令

mutt 是另一个很受欢迎的在 Linux 终端发送邮件的命令。mutt 是一个小而强大的基于文本的程序,用来在 unix 操作系统下阅读和发送电子邮件,并支持彩色终端、MIME、OpenPGP 和按邮件线索排序的模式。可以运行下面的命令从官方发行版仓库安装 mutt 命令。

对于 Debian/Ubuntu 系统,使用 APT-GET 命令APT 命令 安装 mutt。

$ sudo apt-get install mutt

对于 RHEL/CentOS 系统,使用 YUM 命令 安装 mutt。

$ sudo yum install mutt

对于 Fedora 系统,使用 DNF 命令 安装 mutt。

$ sudo dnf install mutt

2b) 如何在 Linux 上使用 mutt 命令发送邮件

mutt 一样简单易用。如果你不需要发送附件,使用下面的 mutt 命令格式就可以发送邮件了:

$ echo "This is the mail body" | mutt -s "Subject" [email protected]

如果你要发送附件,使用下面的 mutt 命令格式:

$ echo "This is the mail body" | mutt -s "Subject" [email protected] -a test1.txt

3) 如何在 Linux 上安装 mpack 命令

mpack 是另一个很受欢迎的在 Linux 终端上发送邮件的命令。mpack 程序会在一个或多个 MIME 消息中对命名的文件进行编码。编码后的消息被发送到一个或多个收件人。可以运行下面的命令从官方发行版仓库安装 mpack 命令。

对于 Debian/Ubuntu 系统,使用 APT-GET 命令APT 命令 安装 mpack。

$ sudo apt-get install mpack

对于 RHEL/CentOS 系统,使用 YUM 命令 安装 mpack。

$ sudo yum install mpack

对于 Fedora 系统,使用 DNF 命令 安装 mpack。

$ sudo dnf install mpack

3a) 如何在 Linux 上使用 mpack 命令发送邮件

mpack 同样简单易用。如果你不需要发送附件,使用下面的 mpack 命令格式就可以发送邮件了:

$ echo "This is the mail body" | mpack -s "Subject" [email protected]

如果你要发送附件,使用下面的 mpack 命令格式:

$ echo "This is the mail body" | mpack -s "Subject" [email protected] -a test1.txt

4) 如何在 Linux 上安装 sendmail 命令

sendmail 是一个上广泛使用的通用 SMTP 服务器,你也可以从命令行用 sendmail 发邮件。可以运行下面的命令从官方发行版仓库安装 sendmail 命令。

对于 Debian/Ubuntu 系统,使用 APT-GET 命令APT 命令安装 sendmail。

$ sudo apt-get install sendmail

对于 RHEL/CentOS 系统,使用 YUM 命令 安装 sendmail。

$ sudo yum install sendmail

对于 Fedora 系统,使用 DNF 命令 安装 sendmail。

$ sudo dnf install sendmail

4a) 如何在 Linux 上使用 sendmail 命令发送邮件

sendmail 同样简单易用。使用下面的 sendmail 命令发送邮件。

$ echo -e "Subject: Test Mail\nThis is the mail body" > /tmp/send-mail.txt
$ sendmail [email protected] < send-mail.txt

5) 如何在 Linux 上安装 ssmtp 命令

ssmtp 是类似 sendmail 的一个只发送不接收的工具,可以把邮件从本地计算机传递到配置好的 邮件主机(mailhub)。用户可以在 Linux 命令行用 ssmtp 把邮件发送到 SMTP 服务器。可以运行下面的命令从官方发行版仓库安装 ssmtp 命令。

对于 Debian/Ubuntu 系统,使用 APT-GET 命令APT 命令安装 ssmtp。

$ sudo apt-get install ssmtp

对于 RHEL/CentOS 系统,使用 YUM 命令 安装 ssmtp。

$ sudo yum install ssmtp

对于 Fedora 系统,使用 DNF 命令 安装 ssmtp。

$ sudo dnf install ssmtp

5a) 如何在 Linux 上使用 ssmtp 命令发送邮件

ssmtp 同样简单易用。使用下面的 ssmtp 命令格式发送邮件。

$ echo -e "Subject: Test Mail\nThis is the mail body" > /tmp/ssmtp-mail.txt
$ ssmtp [email protected] < /tmp/ssmtp-mail.txt

via: https://www.2daygeek.com/6-ways-to-send-email-from-the-linux-command-line/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:lxbwolf 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Postfix 是一个自由开源的 MTA(邮件传输代理),用于在 Linux 系统上路由或传递电子邮件。在本指南中,你将学习如何在 CentOS 8 上安装和配置 Postfix。

Install-configure-Postfx-Server-CentOS8

实验室设置:

  • 系统:CentOS 8 服务器
  • IP 地址:192.168.1.13
  • 主机名:server1.crazytechgeek.info(确保域名指向服务器的 IP)

步骤 1)更新系统

第一步是确保系统软件包是最新的。为此,请按如下所示更新系统:

# dnf update

继续之前,还请确保不存在其他 MTA(如 Sendmail),因为这将导致与 Postfix 配置冲突。例如,要删除 Sendmail,请运行以下命令:

# dnf remove sendmail

步骤 2)设置主机名并更新 /etc/hosts

使用下面的 hostnamectl 命令在系统上设置主机名:

# hostnamectl set-hostname server1.crazytechgeek.info
# exec bash

此外,你需要在 /etc/hosts 中添加系统的主机名和 IP:

# vim /etc/hosts
192.168.1.13   server1.crazytechgeek.info

保存并退出文件。

步骤 3)安装 Postfix 邮件服务器

验证系统上没有其他 MTA 在运行后,运行以下命令安装 Postfix:

# dnf install postfix

Install-Postfix-Centos8

步骤 4)启动并启用 Postfix 服务

成功安装 Postfix 后,运行以下命令启动并启用 Postfix 服务:

# systemctl start postfix
# systemctl enable postfix

要检查 Postfix 状态,请运行以下 systemctl 命令:

# systemctl status postfix

Start-Postfix-check-status-centos8

太好了,我们已经验证了 Postfix 已启动并正在运行。接下来,我们将配置 Postfix 从本地发送邮件到我们的服务器。

步骤 5)安装 mailx 邮件客户端

在配置 Postfix 服务器之前,我们需要安装 mailx,要安装它,请运行以下命令:

# dnf install mailx

Install-Mailx-CentOS8

步骤 6)配置 Postfix 邮件服务器

Postfix 的配置文件位于 /etc/postfix/main.cf 中。我们需要对配置文件进行一些修改,因此请使用你喜欢的文本编辑器将其打开:

# vi /etc/postfix/main.cf

更改以下几行:

myhostname = server1.crazytechgeek.info
mydomain = crazytechgeek.info
myorigin = $mydomain
## 取消注释并将 inet_interfaces 设置为 all##
inet_interfaces = all
## 更改为 all ##
inet_protocols = all
## 注释 ##
#mydestination = $myhostname, localhost.$mydomain, localhost
## 取消注释 ##
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
## 取消注释并添加 IP 范围 ##
mynetworks = 192.168.1.0/24, 127.0.0.0/8
## 取消注释 ##
home_mailbox = Maildir/

完成后,保存并退出配置文件。重新启动 postfix 服务以使更改生效:

# systemctl restart postfix

步骤 7)测试 Postfix 邮件服务器

测试我们的配置是否有效,首先,创建一个测试用户。

# useradd postfixuser
# passwd postfixuser

接下来,运行以下命令,从本地用户 pkumar 发送邮件到另一个用户 postfixuser

# telnet localhost smtp
或者
# telnet localhost 25

如果未安装 telnet 服务,那么可以使用以下命令进行安装:

# dnf install telnet -y

如前所述运行命令时,应获得如下输出:

[root@linuxtechi ~]# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 server1.crazytechgeek.info ESMTP Postfix

上面的结果确认与 postfix 邮件服务器的连接正常。接下来,输入命令:

# ehlo localhost

输出看上去像这样:

250-server1.crazytechgeek.info
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250 SMTPUTF8

接下来,运行橙色高亮的命令,例如 mail fromrcpt todata,最后输入 quit

mail from:<pkumar>
250 2.1.0 Ok
rcpt to:<postfixuser>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
Hello, Welcome to my mailserver (Postfix)
.
250 2.0.0 Ok: queued as B56BF1189BEC
quit
221 2.0.0 Bye
Connection closed by foreign host

完成 telnet 命令可从本地用户 pkumar 发送邮件到另一个本地用户 postfixuser,如下所示:

Send-email-with-telnet-centos8

如果一切都按计划进行,那么你应该可以在新用户的家目录中查看发送的邮件:

# ls /home/postfixuser/Maildir/new
1573580091.Vfd02I20050b8M635437.server1.crazytechgeek.info
#

要阅读邮件,只需使用 cat 命令,如下所示:

# cat /home/postfixuser/Maildir/new/1573580091.Vfd02I20050b8M635437.server1.crazytechgeek.info

Read-postfix-email-linux

Postfix 邮件服务器日志

Postfix 邮件服务器邮件日志保存在文件 /var/log/maillog 中,使用以下命令查看实时日志,

# tail -f /var/log/maillog

postfix-maillogs-centos8

保护 Postfix 邮件服务器

建议始终确保客户端和 Postfix 服务器之间的通信安全,这可以使用 SSL 证书来实现,它们可以来自受信任的权威机构或自签名证书。在本教程中,我们将使用 openssl 命令生成用于 Postfix 的自签名证书,

我假设 openssl 已经安装在你的系统上,如果未安装,请使用以下 dnf 命令:

# dnf install openssl -y

使用下面的 openssl 命令生成私钥和 CSR(证书签名请求):

# openssl req -nodes -newkey rsa:2048 -keyout mail.key -out mail.csr

Postfix-Key-CSR-CentOS8

现在,使用以下 openssl 命令生成自签名证书:

# openssl x509 -req -days 365 -in mail.csr -signkey mail.key -out mail.crt
Signature ok
subject=C = IN, ST = New Delhi, L = New Delhi, O = IT, OU = IT, CN = server1.crazytechgeek.info, emailAddress = root@linuxtechi
Getting Private key
#

现在将私钥和证书文件复制到 /etc/postfix 目录下:

# cp mail.key mail.crt /etc/postfix

在 Postfix 配置文件中更新私钥和证书文件的路径:

# vi /etc/postfix/main.cf
………
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/postfix/mail.crt
smtpd_tls_key_file = /etc/postfix/mail.key
smtpd_tls_security_level = may
………

重启 Postfix 服务以使上述更改生效:

# systemctl restart postfix

让我们尝试使用 mailx 客户端将邮件发送到内部本地域和外部域。

pkumar 发送内部本地邮件到 postfixuser 中:

# echo "test email" | mailx -s "Test email from Postfix MailServer" -r root@linuxtechi root@linuxtechi

使用以下命令检查并阅读邮件:

# cd /home/postfixuser/Maildir/new/
# ll
total 8
-rw-------. 1 postfixuser postfixuser 476 Nov 12 17:34 1573580091.Vfd02I20050b8M635437.server1.crazytechgeek.info
-rw-------. 1 postfixuser postfixuser 612 Nov 13 02:40 1573612845.Vfd02I20050bbM466643.server1.crazytechgeek.info
# cat 1573612845.Vfd02I20050bbM466643.server1.crazytechgeek.info

Read-Postfixuser-Email-CentOS8

postfixuser 发送邮件到外部域([email protected]):

# echo "External Test email" | mailx -s "Postfix MailServer" -r root@linuxtechi root@linuxtechi

注意:如果你的 IP 没有被任何地方列入黑名单,那么你发送到外部域的邮件将被发送,否则它将被退回,并提示你的 IP 被 spamhaus 之类的数据库列入黑名单。

检查 Postfix 邮件队列

使用 mailq 命令列出队列中的邮件:

# mailq
Mail queue is empty
#

完成!我们的 Postfix 配置正常工作了!目前就这样了。我们希望你觉得本教程有见地,并且你可以轻松地设置本地 Postfix 服务器。


via: https://www.linuxtechi.com/install-configure-postfix-mailserver-centos-8/

作者:James Kiarie 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

交流是非常重要的。你的电脑可能正试图告诉你一些重要的事情。但是,如果你没有正确配置邮件传输代理(MTA),那么你可能不会收到通知。Postfix 是一个易于配置且以强大的安全记录而闻名)的 MTA。遵循以下步骤,以确保从本地服务发送的电子邮件通知将通过 Postfix MTA 路由到你的互联网电子邮件账户中。

安装软件包

使用 dnf 来安装一些必须软件包(你应该配置了 sudo,对吧?):

$ sudo -i
# dnf install postfix mailx

如果以前配置了不同的 MTA,那么你可能需要将 Postfix 设置为系统默认。使用 alternatives 命令设置系统默认 MTA:

$ sudo alternatives --config mta
There are 2 programs which provide 'mta'.
  Selection    Command
*+ 1           /usr/sbin/sendmail.sendmail
   2           /usr/sbin/sendmail.postfix
Enter to keep the current selection[+], or type selection number: 2

创建一个 password\_maps 文件

你需要创建一个 Postfix 查询表条目,其中包含你要用于发送电子邮件账户的地址和密码:

# [email protected]
# MY_EMAIL_PASSWORD=abcdefghijklmnop
# MY_SMTP_SERVER=smtp.gmail.com
# MY_SMTP_SERVER_PORT=587
# echo "[$MY_SMTP_SERVER]:$MY_SMTP_SERVER_PORT $MY_EMAIL_ADDRESS:$MY_EMAIL_PASSWORD" >> /etc/postfix/password_maps
# chmod 600 /etc/postfix/password_maps
# unset MY_EMAIL_PASSWORD
# history -c

如果你使用的是 Gmail 账户,那么你需要为 Postfix 配置一个“应用程序密码”而不是使用你的 Gmail 密码。有关配置应用程序密码的说明,参阅“使用应用程序密码登录”。

接下来,你必须对 Postfix 查询表运行 postmap 命令,以创建或更新 Postfix 实际使用的文件的散列版本:

# postmap /etc/postfix/password_maps

散列后的版本将具有相同的文件名,但后缀为 .db

更新 main.cf 文件

更新 Postfix 的 main.cf 配置文件,以引用刚刚创建 Postfix 查询表。编辑该文件并添加以下行:

relayhost = smtp.gmail.com:587
smtp_tls_security_level = verify
smtp_tls_mandatory_ciphers = high
smtp_tls_verify_cert_match = hostname
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/password_maps

这里假设你使用 Gmail 作为 relayhost 设置,但是你可以用正确的主机名和端口替换系统应该将邮件发送到的邮件主机。

有关上述配置选项的最新详细信息,参考 man 帮助:

$ man postconf.5

启用、启动和测试 Postfix

更新 main.cf 文件后,启用并启动 Postfix 服务:

# systemctl enable --now postfix.service

然后,你可以使用 exit 命令或 Ctrl+D 以 root 身份退出 sudo 会话。你现在应该能够使用 mail 命令测试你的配置:

$ echo 'It worked!' | mail -s "Test: $(date)" [email protected]

更新服务

如果你安装了像 logwatchmdadmfail2banapcupsdcertwatch 这样的服务,你现在可以更新它们的配置,以便它们的电子邮件通知转到你的 Internet 电子邮件地址。

另外,你可能希望将发送到本地系统 root 账户的所有电子邮件都转到互联网电子邮件地址中,将以下行添加到系统的 /etc/alises 文件中(你需要使用 sudo 编辑此文件,或首先切换到 root 账户):

root: [email protected]

现在运行此命令重新读取别名:

# newaliases
  • 提示: 如果你使用的是 Gmail,那么你可以在用户名和 @ 符号之间添加字母数字标记,如上所示,以便更轻松地识别和过滤从计算机收到的电子邮件。

常用命令

查看邮件队列:

$ mailq

清除队列中的所有电子邮件:

# postsuper -d ALL

过滤设置,以获得感兴趣的值:

$ postconf | grep "^relayhost\|^smtp_"

查看 postfix/smtp 日志:

$ journalctl --no-pager -t postfix/smtp

进行配置更改后重新加载 postfix:

$ systemctl reload postfix

via: https://fedoramagazine.org/use-postfix-to-get-email-from-your-fedora-system/

作者:Gregory Bartholomew 选题:lujun9972 译者:MjSeven 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出