标签 邮件 下的文章

概述

本教程中,你将学习:

  • 使用 mail 命令。
  • 创建邮件别名。
  • 配置电子邮件转发。
  • 了解常见邮件传输代理(MTA),比如,postfix、sendmail、qmail、以及 exim。

控制邮件去向

Linux 系统上的电子邮件是使用 MTA 投递的。你的 MTA 投递邮件到你的系统上的其他用户,并且 MTA 彼此通讯跨越系统投递到全世界。

Sendmail 是最古老的 Linux MTA。它最初起源于 1979 年用于阿帕网(ARPANET)的 delivermail 程序。如今它有几个替代品,在本教程中,我也会介绍它们。

前提条件

为完成本系列教程的大部分内容,你需要具备 Linux 的基础知识,你需要拥有一个 Linux 系统来实践本教程中的命令。你应该熟悉 GNU 以及 UNIX 命令。有时候不同版本的程序的输出格式可能不同,因此,在你的系统中输出的结果可能与我在下面列出的稍有不同。

在本教程中,我使用的是 Ubuntu 14.04 LTS 和 sendmail 8.14.4 来做的演示。

邮件传输

邮件传输代理(比如 sendmail)在用户之间和系统之间投递邮件。大量的因特网邮件使用简单邮件传输协议(SMTP),但是本地邮件可能是通过文件或者套接字等其它可能的方式来传输的。邮件是一种存储和转发的操作,因此,在用户接收邮件或者接收系统和通讯联系可用之前,邮件一直是存储在某种文件或者数据库中。配置和确保 MTA 的安全是非常复杂的任务,它们中的大部分内容都已经超出了本教程的范围。

mail 命令

如果你使用 SMTP 协议传输电子邮件,你或许知道你可以使用许多邮件客户端,包括 mailmuttalpinenotmuch、以及其它基于主机控制台或者图形界面的邮件客户端。mail 命令是最老的、可用于脚本中的、发送和接收以及管理收到的邮件的备用命令。

你可以使用 mail 命令交互式的向列表中的收件人发送信息,或者不使用参数去查看你收到的邮件。清单 1 展示了如何在你的系统上去发送信息到用户 steve 和 pat,同时抄送拷贝给用户 bob。当提示 Cc:subject: 时,输入相应的抄送用户以及邮件主题,接着输入邮件正文,输入完成后按下 Ctrl+D (按下 Ctrl 键并保持再按下 D 之后全部松开)。

ian@attic4-u14:~$ mail steve,pat
Cc: bob
Subject: Test message 1
This is a test message

Ian

清单 1. 使用 mail 交互式发送邮件

如果一切顺利,你的邮件已经发出。如果在这里发生错误,你将看到错误信息。例如,如果你在接收者列表中输入一个无效的用户名,邮件将无法发送。注意在本示例中,所有的用户都在本地系统上存在,因此他们都是有效用户。

你也可以使用命令行以非交互式发送邮件。清单 2 展示了如何给用户 steve 和 pat 发送一封邮件。这种方式可以用在脚本中。在不同的软件包中 mail 命令的版本不同。对于抄送(Cc:)有些支持一个 -c 选项,但是我使用的这个版本不支持这个选项,因此,我仅将邮件发送到收件人。

ian@attic4-u14:~$ mail -t steve,pat -s "Test message 2" <<< "Another test.\n\nIan"

清单 2. 使用 mail 命令非交互式发送邮件

如果你使用没有选项的 mail 命令,你将看到一个如清单 3 中所展示的那样一个收到信息的列表。你将看到用户 steve 有我上面发送的两个信息,再加上我以前发送的一个信息和后来用户 bob 发送的信息。所有的邮件都用 'N' 标记为新邮件。

steve@attic4-u14:~$ mail
"/var/mail/steve": 4 messages 4 new
>N 1 Ian Shields Tue Dec 12 21:03 16/704 test message
 N 2 Ian Shields Tue Dec 12 21:04 18/701 Test message 1
 N 3 Ian Shields Tue Dec 12 21:23 15/661 Test message 2
 N 4 Bob C Tue Dec 12 21:45 17/653 How about lunch tomorrow?
?

清单 3. 使用 mail 查看收到的邮件

当前选中的信息使用一个 > 来标识,它是清单 3 中的第一封邮件。如果你按下回车键(Enter),将显示下一封未读邮件的第一页。按下空格楗将显示这个邮件的下一页。当你读完这个邮件并想返回到 ? 提示符时,按下回车键再次查看下一封邮件,依次类推。在 ? 提示符下,你可以输入 h 再次去查看邮件头。你看过的邮件前面将显示一个 R 状态,如清单 4 所示。

? h
 R 1 Ian Shields Tue Dec 12 21:03 16/704 test message
 R 2 Ian Shields Tue Dec 12 21:04 18/701 Test message 1
>R 3 Ian Shields Tue Dec 12 21:23 15/661 Test message 2
 N 4 Bob C Tue Dec 12 21:45 17/653 How about lunch tomorrow?
?

清单 4. 使用 h 去显示邮件头

在这个图中,Steve 已经读了三个邮件,但是没有读来自 bob 的邮件。你可以通过数字来选择单个的信息,你也可以通过输入 d 删除你不想要的信息,或者输入 3d 去删除第三个信息。如果你输入 q 你将退出 mail 命令。已读的信息将被转移到你的家目录下的 mbox 文件中,而未读的信息仍然保留在你的收件箱中,默认在 /var/mail/$(id -un)。如清单 5 所示。

? h
 R 1 Ian Shields Tue Dec 12 21:03 16/704 test message
 R 2 Ian Shields Tue Dec 12 21:04 18/701 Test message 1
>R 3 Ian Shields Tue Dec 12 21:23 15/661 Test message 2
 N 4 Bob C Tue Dec 12 21:45 17/653 How about lunch tomorrow?
? q
Saved 3 messages in /home/steve/mbox
Held 1 message in /var/mail/steve
You have mail in /var/mail/steve

清单 5. 使用 q 退出 mail

如果你输入 x 而不是使用 q 去退出,你的邮箱在退出后将不保留你做的改变。因为这在 /var 文件系统中,你的系统管理员可能仅允许邮件在一个有限的时间范围内保留。要重新读取或者以其它方式再次处理保存在你的本地邮箱中的邮件,你可以使用 -f 选项去指定想要去读的文件。比如,mail -f mbox

邮件别名

在前面的节中,看了如何在系统上给许多用户发送邮件。你可以使用一个全限定名字(比如 [email protected])给其它系统上的用户发送邮件。

有时候你可能希望用户的所有邮件都可以发送到其它地方。比如,你有一个服务器群,你希望所有的 root 用户的邮件都发给中心的系统管理员。或者你可能希望去创建一个邮件列表,将邮件发送给一些人。为实现上述目标,你可以使用别名,别名允许你为一个给定的用户名定义一个或者多个目的地。这个目的地或者是其它用户的邮箱、文件、管道、或者是某个进一步处理的命令。你可以在 /etc/mail/aliases 或者 /etc/aliases 中创建别名来实现上述目的。根据你的系统的不同,你可以找到上述其中一个,符号链接到它们、或者其中之一。改变别名文件你需要有 root 权限。

别名的格式一般是:

name: addr_1, addr_2, addr_3, ...

这里 name 是一个要别名的本地用户名字(即别名),而 addr_1addr_2,... 可以是一个或多个别名。别名可以是一个本地用户、一个本地文件名、另一个别名、一个命令、一个包含文件,或者一个外部地址。

因此,发送邮件时如何区分别名呢(addr-N)?

  • 本地用户名是你机器上系统中的一个用户名字。从技术角度来说,它可以通过调用 getpwnam 命令找到它。
  • 本地文件名是以 / 开始的完全路径和文件名。它必须是 sendmail 可写的。信息会追加到这个文件上。
  • 命令是以一个管道符号开始的(|)。信息是通过标准输入的方式发送到命令的。
  • 包含文件别名是以 :include: 和指定的路径和文件名开始的。在该文件中的别名被添加到该名字所代表的别名中。
  • 外部地址是一个电子邮件地址,比如 [email protected]

你可以在你的系统中找到一个示例文件,它是与你的 sendmail 包一起安装的,它的位置在 /usr/share/sendmail/examples/db/aliases。它包含一些给 postmasterMAILER-DAEMONabuse 和 `spam 的别名建议。在清单 6,我把我的 Ubuntu 14.04 LTS 系统上的一些示例文件,和人工修改的示例结合起来说明一些可能的情况。

ian@attic4-u14:~$ cat /etc/mail/aliases
# First include some default system aliases from
# /usr/share/sendmail/examples/db/aliases

#
# Mail aliases for sendmail
#
# You must run newaliases(1) after making changes to this file.
#

# Required aliases
postmaster: root
MAILER-DAEMON:  postmaster

# Common aliases
abuse:    postmaster
spam:   postmaster

# Other aliases

# Send steve's mail to bob and pat instead
steve: bob,pat

# Send pat's mail to a file in her home directory and also to her inbox.
# Finally send it to a command that will make another copy.
pat: /home/pat/accumulated-mail,
 \pat,
 |/home/pat/makemailcopy.sh

# Mailing list for system administrators
sysadmins: :include: /etc/aliases-sysadmins

清单 6. 人工修改的 /etc/mail/aliases 示例

注意那个 pat 既是一个别名也是一个系统中的用户。别名是以递归的方式展开的,因此,如果一个别名也是一个名字,那么它将被展开。Sendmail 并不会给同一个用户发送相同的邮件两遍,因此,如果你正好将 pat 作为 pat 的别名,那么 sendmail 在已经找到并处理完用户 pat 之后,将忽略别名 pat。为避免这种问题,你可以在别名前使用一个 \ 做为前缀去指示它是一个不要进一步引起混淆的名字。在这种情况下,pat 的邮件除了文件和命令之外,其余的可能会被发送到他的正常的邮箱中。

aliases 文件中以 # 开始的行是注释,它会被忽略。以空白开始的行会以延续行来处理。

清单 7 展示了包含文件 /etc/aliases-sysadmins

ian@attic4-u14:~$ cat /etc/aliases-sysadmins

# Mailing list for system administrators
bob,pat

清单 7 包含文件 /etc/aliases-sysadmins

newaliases 命令

sendmail 使用的主要配置文件会被编译成数据库文件。邮件别名也是如此。你可以使用 newaliases 命令去编译你的 /etc/mail/aliases 和任何包含文件到 /etc/mail/aliases.db 中。注意,newaliases 命令等价于 sendmail -bi。清单 8 展示了一个示例。

ian@attic4-u14:~$ sudo newaliases
/etc/mail/aliases: 7 aliases, longest 62 bytes, 184 bytes total
ian@attic4-u14:~$ ls -l /etc/mail/aliases*
lrwxrwxrwx 1 root smmsp 10 Dec 8 15:48 /etc/mail/aliases -> ../aliases
-rw-r----- 1 smmta smmsp 12288 Dec 13 23:18 /etc/mail/aliases.db

清单 8. 为邮件别名重建数据库

使用别名的示例

清单 9 展示了一个简单的 shell 脚本,它在我的别名示例中以一个命令的方式来使用。

ian@attic4-u14:~$ cat ~pat/makemailcopy.sh
#!/bin/bash

# Note: Target file ~/mail-copy must be writeable by sendmail!
cat >> ~pat/mail-copy

清单 9. makemailcopy.sh 脚本

清单 10 展示了用于测试时更新的文件。

ian@attic4-u14:~$ date
Wed Dec 13 22:54:22 EST 2017
ian@attic4-u14:~$ mail -t sysadmins -s "sysadmin test 1" <<< "Testing mail"
ian@attic4-u14:~$ ls -lrt $(find /var/mail ~pat -type f -mmin -3 2>/dev/null )
-rw-rw---- 1 pat mail 2046 Dec 13 22:54 /home/pat/mail-copy
-rw------- 1 pat mail 13240 Dec 13 22:54 /var/mail/pat
-rw-rw---- 1 pat mail 9442 Dec 13 22:54 /home/pat/accumulated-mail
-rw-rw---- 1 bob mail 12522 Dec 13 22:54 /var/mail/bob

清单 10. /etc/aliases-sysadmins 包含文件

需要注意的几点:

  • sendmail 使用的用户和组的名字是 mail。
  • sendmail 在 /var/mail 保存用户邮件,它也是用户 mail 的家目录。用户 ian 的默认收件箱在 /var/mail/ian 中。
  • 如果你希望 sendmail 在用户目录下写入文件,这个文件必须允许 sendmail 可写入。与其让任何人都可以写入,还不如定义一个组可写入,组名称为 mail。这需要系统管理员来帮你完成。

使用一个 .forward 文件去转发邮件

别名文件是由系统管理员来管理的。个人用户可以使用它们自己的家目录下的 .forward 文件去转发他们自己的邮件。你可以在你的 .forward 文件中放任何可以出现在别名文件的右侧的东西。这个文件的内容是明文的,不需要编译。当你收到邮件时,sendmail 将检查你的家目录中的 .forward 文件,然后就像处理别名一样处理它。

邮件队列和 mailq 命令

Linux 邮件使用存储-转发的处理模式。你已经看到的已接收邮件,在你读它之前一直保存在文件 /var/mail 中。你发出的邮件在接收服务器连接可用之前也会被保存。你可以使用 mailq 命令去查看邮件队列。清单 11 展示了一个发送给外部用户 ian@attic4-c6 的一个邮件示例,以及运行 mailq 命令的结果。在这个案例中,当前服务器没有连接到 attic4-c6,因此邮件在与对方服务器连接可用之前一直保存在队列中。

ian@attic4-u14:~$ mail -t ian@attic4-c6 -s "External mail" <<< "Testing external mail queues"
ian@attic4-u14:~$ mailq
MSP Queue status...
/var/spool/mqueue-client is empty
    Total requests: 0
MTA Queue status...
    /var/spool/mqueue (1 request)
-----Q-ID----- --Size-- -----Q-Time----- ------------Sender/Recipient-----------
vBE4mdE7025908* 29 Wed Dec 13 23:48 <[email protected]>
           <[email protected]>
    Total requests: 1

清单 11. 使用 mailq 命令

其它邮件传输代理

为解决使用 sendmail 时安全方面的问题,在上世纪九十年代开发了几个其它的邮件传输代理。Postfix 或许是最流行的一个,但是 qmail 和 exim 也大量使用。

Postfix 是 IBM 为代替 sendmail 而研发的。它更快、也易于管理、安全性更好一些。从外表看它非常像 sendmail,但是它的内部完全与 sendmail 不同。

Qmail 是一个安全、可靠、高效、简单的邮件传输代理,它由 Dan Bernstein 开发。但是,最近几年以来,它的核心包已经不再更新了。Qmail 和几个其它的包已经被吸收到 IndiMail 中了。

Exim 是另外一个 MTA,它由 University of Cambridge 开发。最初,它的名字是 EXperimental Internet Mailer

所有的这些 MTA 都是为代替 sendmail 而设计的,因此,它们它们都兼容 sendmail 的一些格式。它们都能够处理别名和 .forward 文件。有些封装了一个 sendmail 命令作为一个到特定的 MTA 自有命令的前端。尽管一些选项可能会被静默忽略,但是大多数都允许使用常见的 sendmail 选项。mailq 命令是被直接支持的,或者使用一个类似功能的命令来代替。比如,你可以使用 mailq 或者 exim -bp 去显示 exim 邮件队列。当然,输出可以看到与 sendmail 的 mailq 命令的不同之外。

查看相关的主题,你可以找到更多的关于这些 MTA 的更多信息。

对 Linux 上的邮件传输代理的介绍到此结束。


via: https://www.ibm.com/developerworks/library/l-lpic1-108-3/index.html

作者:Ian Shields 译者:qhwdw 校对:wxy

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

Nylas Mail An Amazing Free Email Client For Linux

有一个经常被提及的问题是 Ubuntu 是否还应该提供默认的电子邮件客户端。就个人而言,我已经很长时间没有使用 Thunderbird 了。我相信这不是一个第一次被问到的问题,但我相信这是一个把它解决掉的很好机会。这是因为日常用户倾向于使用基于网络的客户端,例如 Gmail 或 Outlook 来满足其邮件需求。而对于 Linux 上的经验丰富的用户而言,还有很多可供选择的选项。Geary、Empathy、Evolution 和 Thunderbird 本身已经为很多用户提供了很好的服务,但是我发现了值得一试的东西:它被称为 Nylas Mail。

它以前被称为 Nylas N1,Nylas Mail 于今年初在 1 月份推出,同时还发布了一个免费版本;Nylas Mail Basic 以前是一个付费版本。此外,在 1 月份,客户端仅适用于 Mac,但现在可用于 Linux 和 Windows 用户。

(在我写此文时,它还处于活跃开发状态,但是现在已经停止开发了。)

为什么使用 Nylas?

​很多人因为种种原因选择了 Nylas Mail。让我们来看看一些常见的原因。

简单 - Nylas Mail 客户端管理优雅简单。用 electron 构建,应用非常漂亮,易于使用。其设计还确保了在 Nylas 中设置电子邮件非常简单直接。

Nylas mail an awesome email client for linux

兼容性 - Nylas Mail 与所有电子邮件提供商兼容。它与 Gmail、Yahoo、Exchange 和 IMAP 帐户兼容,因此你可以在任何地方收到邮件。

nylas compatible with gmail facebook imap

功能​强大​ - Nylas 拥有大量功能。它有一个全屏模式、离线支持、多布局格式、多帐户、统一的收件箱、提醒、打盹、签名和稍后发送功能。其中一些功能随 Nylas Mail Basic 一起提供。

nylas email client powerful features

​混合后端​ - 以前,Nylas 将邮件的一个副本同步到使用 Nylas 云的服务器中,这对许多人来说就像 mehn 一样。幸运的是,在最新版本中,Nylas 采用了一个混合后端,可直接连接到 Gmail 或 Outlook 等电子邮件提供商。云同步虽然仍然可用,但仅在使用高级订阅工具(如 打盹 snoozing 和跟踪)时使用。缺点是它是一而二的。如果想要一些专业功能,你需要云同步;你不想用云同步,那你错过了这些功能。

nylas email hybrid backend

​开源和免费版​ - Nylas 作为开源项目。这意味着你可以自己编写代码并自行构建。你甚至可以设置自己的服务器以回避问题。

nylas open source and free email client

跨平台 - Nylas 是在 Linux、Windows 和 Mac OS X 上提供的跨平台应用程序。因此,无论你喜欢哪种桌面操作系统,你都可以放心,因为 Nylas 都已经覆盖了。而且用法是相同的。

还要做些什么?

到目前为止,Nylas 邮件客户端很好,但有一些抱怨。首先是在 2016 年推出的付费选项。引入免费版本有点像是这个解决这个问题的方案,但事实上,一些功能只能以每月 $9 的价格使用让包括我在内的大部分人不快。此外,没有多少人喜欢将邮件的副本保存在某台服务器上。当然,你可以设置自己的服务器,但有些麻烦。最后,对于在后台运行的应用程序来说,它需要相当多的内存。我希望这不是因为它主要是用 electron 写的,我相信随着它的更新和改进,它会变得更好。

总结

​Nylas Mail 在特性和功能方面对我来说非常棒,我相信你一定要用一下。作为一个电子邮件客户端,它是非常有效的,我真的很喜欢 Nylas Mail,并且一定会一直使用它。也许你应该也会。向开发人员的所做的工作致谢。你有其他的程序想让我们看下么?在下面的评论中指出,并分享你的想法和意见。


via: http://www.linuxandubuntu.com/home/nylas-mail-an-amazing-free-email-client-for-linux

作者:linuxandubuntu 译者:geekpi 校对:wxy

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

Roundcube 是 Linux 中最常用的 Webmail 用户代理之一,它为终端用户提供了一个现代化的 Web 界面,它可以与所有邮件服务进行交互,以便阅读、撰写和发送电子邮件。Roundcube 支持各种邮件协议,包括安全的邮件协议,如IMAPS、POP3S 或者 submission。

在本文中,我们将讨论如何在 iRedMail 中使用 IMAPS 以及 submission 安全端口配置 Roundcube,以检索和发送 Samba4 AD 帐户的电子邮件、如何从浏览器访问 iRedMail Roundcube Web 界面,并添加网址别名、如何启用 Samba4 AD 集成全局 LDAP 地址簿以及如何禁用某些不需要的 iRedMail 服务。

要求

  1. 如何在 CentOS 7 上安装 iRedMail,用于Samba4 AD集成
  2. 在 CentOS 7 上配置 iRedMail,用于 Samba4 AD 集成

第一步:在 Samba4 AD DC 中声明域帐户的电子邮件地址

1、 为了发送和接收 Samba4 AD DC 域账户的邮件,您需要编辑每个用户帐户,如下所示,通过从安装了 RSAT 工具的 Windows 机器并且已经加入 Samba4 AD 中打开 ADUC 工具显式地在邮箱字段填写正确的地址。

Add Email Account to Join Samba4 AD DC

添加邮箱帐户来加入 Samba4 AD DC

2、 相似地,要使用邮件列表,你需要在 ADUC 中创建组,为每个组添加相应的电子邮件地址,并分配合适的用户帐户作为每个组的成员。

这步创建了一个邮件列表,所有 Samba4 AD 组成员的邮箱都会收到给这个 AD 组邮箱地址的邮件。使用下面的截图作为指导为 Samba4 组声明电子邮件字段,并为组添加域成员。

确保所有的域账户成员都添加到了声明了邮件地址的组中。

Create Group Admin for Samba4 AD DC

为 Samba4 AD DC 创建组管理员

Add Users to Group

将用户添加到组

在本例中,发送给 [email protected] 的所有邮件地址将被该组的每个成员邮箱接收,它是 “Domain Admins” 组声明的电子邮件地址。

3、 你可以声明 Samba4 AD 帐户的电子邮件地址的另一种方法是直接从其中一个 AD DC 控制台使用 samba-tool 命令行创建一个用户或组,并使用 --mail-address 标志指定邮件地址。

使用下面其中一个命令创建一个指定邮件地址的用户:

# samba-tool user add  [email protected]  --surname=your_surname  --given-name=your_given_name  your_ad_user

创建一个指定邮件地址的组:

# samba-tool group add  [email protected]  your_ad_group

将成员添加到组中:

# samba-tool group addmembers your_group user1,user2,userX

使用下面的语法列出 samba-tool 中有关用户或者组的命令字段:

# samba-tool user add -h
# samba-tool group add -h

第二步:安全 Roundcube Webmail

4、 开始修改 Roundcube 配置文件之前,首先使用 netstat 命令管道输出给 egrep 过滤器来列出 Dovecot 和 Postfix 监听的套接字,并确保安全端口(IMAPS 是 993,submission 是 587 )是活跃的并且已启用。

# netstat -tulpn| egrep 'dovecot|master'

5、 要强制邮件的接收和发送在使用安全的 IMAP 和 SMTP 端口的 Roundcube 以及 iRedMail 服务之间,打开位于 /var/www/roundcubemail/config/config.inc.php 的 Roundcube 配置文件并确保你修改过了下面的行,本例中是 localhost,如下片段所示:

// For IMAPS
$config['default_host'] = 'ssl://127.0.0.1';
$config['default_port'] = 993;
$config['imap_auth_type'] = 'LOGIN';
// For SMTP
$config['smtp_server'] = 'tls://127.0.0.1';
$config['smtp_port'] = 587;
$config['smtp_user'] = '%u';
$config['smtp_pass'] = '%p';
$config['smtp_auth_type'] = 'LOGIN';

这步强烈建议在远程主机中安装 Roudcube,而不是提供了邮件服务的主机中(IMAP、POP3 或者 SMTP 守护进程)。

6、 接下来,不要关闭配置文件,搜索并做如下小的修改以便 Roundcube 能够通过 HTTPS 协议访问、隐藏版本号以及自动为登录 Web 界面的帐户追加域名。

$config['force_https'] = true;
$config['useragent'] = 'Your Webmail'; // Hide version number
$config['username_domain'] = 'domain.tld'

7、 同样,禁用下面的插件:managesieve 和 password,通过在以 $config[‘plugins’] 开头的行前添加注释 //

一旦登录并验证了域,用户将从连接到 Samba4 AD DC 的 Windows 或 Linux 机器上更改密码。系统管理员将全局管理域帐户的所有筛选规则。

// $config['plugins'] = array('managesieve', 'password');

8、 最后,保存并关闭配置文件,并打开浏览器访问 Roundcube Webmail,通过 HTTPS 协议进入 iRedMail IP 地址或者 FQDN/mail 位置。

由于浏览器使用的是自签名证书,所以你首次访问 Roundcube 会在浏览器上看到一个警告。接受证书并用 Samba AD 帐户凭证登录。

https://iredmail-FQDN/mail

Roundcube Webmail Login

Roundcube Webmail 登录

第三步:在 Roundcube 中启用 Samba AD 联系人

9、 要配置 Samba AD 全局 LDAP 地址簿以在 Roundcube 联系人中显示,再次打开 Roundcube 配置文件,并做如下修改:

到达文件的底部,并辨认以 # Global LDAP Address Book with AD 开头的部分,删除到文件底部的所有内容,并替换成如下代码段:

# Global LDAP Address Book with AD.
#
$config['ldap_public']["global_ldap_abook"] = array(
  'name'          => 'tecmint.lan',
  'hosts'         => array("tecmint.lan"),
  'port'          => 389,
  'use_tls'       => false,
  'ldap_version'  => '3',
  'network_timeout' => 10,
  'user_specific' => false,
  'base_dn'       => "dc=tecmint,dc=lan",
  'bind_dn'       => "[email protected]",
  'bind_pass'     => "your_password",
  'writable'      => false,
  'search_fields' => array('mail', 'cn', 'sAMAccountName', 'displayname', 'sn', 'givenName'),
  'fieldmap' => array(
    'name'        => 'cn',
    'surname'     => 'sn',
    'firstname'   => 'givenName',
    'title'       => 'title',
    'email'       => 'mail:*',
    'phone:work'  => 'telephoneNumber',
    'phone:mobile' => 'mobile',
    'department'  => 'departmentNumber',
    'notes'       => 'description',
  ),
  'sort'          => 'cn',
  'scope'         => 'sub',
  'filter' => '(&(mail=*)(|(&(objectClass=user)(!(objectClass=computer)))(objectClass=group)))',
  'fuzzy_search'  => true,
  'vlv'           => false,
  'sizelimit'     => '0',
  'timelimit'     => '0',
  'referrals'     => false,
);

在这段代码中替换相应的 namehostsbase_dnbind_dnbind_pass 的值。

10、 做了所需修改后,保存并关闭文件,登录 Roundcube webmail 界面,并进入地址簿菜单。

所有域名帐户(用户和组)与其指定的电子邮件地址的联系人列表都将被显示在全局地址簿上。

Roundcube User Contact List

Roundcube 用户联系人列表

第四步:为 Roundcube Webmail 界面添加一个别名

11、 要从 https://webmail.domain.tld 访问 Roundcube 而不是从 iRedMail 默认提供的旧地址,你需要进行以下更改。

在已安装 RSAT 工具的已加入的 Windows 机器上打开 DNS 管理器,并如下所示,添加一条 iRedMail FQDN、named webmail 的 CNAME 记录。

DNS Webmail Properties

DNS Webmail 属性

12、 接下来,在 iRedMail 机器中,打开位于 /etc/httpd/conf.d/ssl.conf 的 Apache Web 服务器的 SSL 配置文件,将 DocumentRoot 指向 /var/www/roundcubemail/

修改 /etc/httpd/conf.d/ssl.conf 片段:

DocumentRoot “/var/www/roundcubemail/”

重启 Apache 使更改生效。

# systemctl restart httpd

13、 现在打开下面的地址,Roundcube 界面应该会显示出来。接受自签名证书错误以进入登录页面。用你自己的域名替换例子中的 domain.tld。

https://webmail.domain.tld

第五步:禁用 iRedMail 未使用的服务

14、 由于 iRedMail 守护进程配置为查询 Samba4 AD DC LDAP 服务器的帐户信息和其他资源,因此可以通过使用以下命令来安全地停止和禁用 iRedMail 机器上的某些本地服务,例如 LDAP 数据库服务器和 iredpad 服务。

# systemctl stop slapd iredpad
# systemctl disable slapd iredpad

15、 另外,如下图所示,通过在 crontab 文件中的每行之前添加注释 #,禁用 iRedMail 执行的某些计划任务,例如 LDAP 数据库备份和 iRedPad 跟踪记录。

# crontab -e

Disable iRedMail Tasks

禁用 iRedMail 任务

第六步:在 Postfix 中使用邮件别名

16、 要将所有本地生成的邮件(发往 postmaster 并随后重定向到 root 帐户)重定向到特定的 Samba4 AD 帐户,请打开位于 /etc/postfix/aliases 中的 Postfix 别名配置文件,并修改 root 行,如下所示:

root:   [email protected]

17、 应用别名配置文件,以便 Postfix 可以通过执行 newaliases 命令以其自己的格式读取它,并测试邮件是否通过发出以下命令发送到正确的域电子邮件帐户。

# echo “Test mail” | mail -s “This is root’s email” root

18、 邮件发送完毕后,请使用你为邮件重定向设置的域帐户登录 Roundcube webmail,并验证先前发送的邮件应该在你的帐户收件箱中。

Verify User Mail

验证用户邮件

就是这样了!现在你已经有了一个完全工作的与 Samba4 AD 集成的邮件服务器了。域帐户可以用它们的内部或者其他外部域发送和接收邮件了。

本教程中使用的配置可以成功将 iRedMail 服务器集成到 Windows Server 2012 R2 或 2016 AD 中。


作者简介:

我是一个电脑上瘾的家伙,开源和基于 linux 的系统软件的粉丝,在 Linux 发行版桌面、服务器和 bash 脚本方面拥有大约4年的经验。


via: https://www.tecmint.com/integrate-iredmail-roundcube-with-samba4-ad-dc/

作者:Matei Cezar 译者:geekpi 校对:wxy

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

在本教程中,将学习如何修改提供邮件服务的 iRedMail 主要守护进程,相应地,Postfix 用于邮件传输,Dovecot 将邮件传送到帐户邮箱,以便将它们集成到 Samba4 AD 域控制器中。

将 iRedMail 集成到 Samba4 AD DC 中,你将得到以下好处:通过 Samba AD DC 得到用户身份验证、管理和状态,在 AD 组和 Roundcube 中的全局 LDAP 地址簿的帮助下创建邮件列表。

要求

  1. 在 CentOS 7 中为 Samba4 AD 集成安装 iRedMail

第一步:准备 iRedMail 系统用于 Samba4 AD 集成

1、 在第一步中,你需要为你的机器分配一个静态的 IP 地址以防你使用的是由 DHCP 服务器提供的动态 IP 地址。

运行 ifconfig 命令列出你的机器网络接口名,并对正确的网卡发出 nmtui-edit 命令,使用自定义 IP 设置编辑正确的网络接口。

root 权限运行 nmtui-edit 命令。

# ifconfig
# nmtui-edit eno16777736

Find Network Interface Name

找出网络接口名

2、 在打开要编辑的网络接口后,添加正确的静态 IP 设置,确保添加了 Samba4 AD DC 的 DNS 服务器 IP 地址以及你的域的名字,以便从机器查询 realm。使用以下截图作为指导。

Configure Network Settings

配置网络设置

3、 在你完成配置网络接口后,重启网络进程使更改生效,并对域名以及 samba 4 域控制器的 FQDN 使用 ping 命令测试。

# systemctl restart network.service
# cat /etc/resolv.conf     # 验证 DNS 解析器配置是否对域解析使用了正确的 DNS 服务器 IP
# ping -c2 tecmint.lan     # ping 域名
# ping -c2 adc1            # ping 第一个 AD DC
# ping -c2 adc2            # Ping 第二个 AD DC

Verify Network DNS Configuration

验证网络 DNS 配置

4、 接下来,用下面的命令安装 ntpdate 包,与域控制器同步时间,并请求 samba4 机器的 NTP 服务器:

# yum install ntpdate
# ntpdate -qu tecmint.lan      # querry domain NTP servers
# ntpdate tecmint.lan          # Sync time with the domain

Sync Time with Samba NTP Server

与 Samba NTP 服务器同步时间

5、 你或许想要本地时间自动与 samba AD 时间服务器同步。为了实现这个设置,通过运行 crontab -e 命令并追加下面的行添加一条计划任务。

0   */1   *   *   *   /usr/sbin/ntpdate tecmint.lan > /var/log/ntpdate.lan 2>&1

Auto Sync Time with Samba NTP

自动与 Samba NTP 同步时间

第二步:为 iRedMail 集成准备 Samba4 AD DC

6、 现在,如这篇教程所述进入一台安装了 RSAT 工具的 Windows 机器管理 Samba4 AD。

打开 DNS 管理器,转到你的域转发查找区并添加新的 A 记录、MX记录还有 PTR 记录指向你的 iRedMail 系统的 IP 地址。使用以下截图作为指导。

添加一条 A 记录(相应地用 iRedMail 机器的名字和 IP 替换)。

Create DNS A Record for iRedMail

为 iRedMail 创建 DNS A 记录

添加 MX 记录(将子域留空,优先级为 10)。

Create DNS MX Record for iRedMail

为 iRedMail 创建 DNS MX 记录

在反向查找区域(相应地替换 iRedMail 服务器的 IP 地址)添加 PTR 记录。如果你尚未为域控制器配置反向区域,请阅读以下教程:从 Windows 管理 Samba4 DNS 组策略

Create DNS PTR Record for iRedMail

为 iRedMail 创建 DNS PTR 记录

7、添加了使邮件服务器正常运行的基本 DNS 记录后,请进入 iRedMail 机器,安装 bind-utils 软件包,并按如下建议查询新添加的邮件记录。

Samba4 AD DC DNS 应该会响应之前添加的 DNS 记录。

# yum install bind-utils
# host tecmint.lan
# host mail.tecmint.lan
# host 192.168.1.245

Install Bind and Query Mail Records

安装 Bind 并查询邮件记录

在一台 Windows 机器上,打开命令行窗口并使用 nslookup 命令查询上面的邮件服务器记录。

8、 作为最后一个先决要求,在 Samba4 AD DC 中创建一个具有最小权限的新用户帐户,并使用名称 vmail, 为此用户选择一个强密码, 并确保该用户的密码永不过期。

vmail 帐户将被 iRedMail 服务用来查询 Samba4 AD DC LDAP 数据库并拉取电子邮件帐户。

要创建 vmail 账户,如截图所示,使用加入了已安装 RSAT 工具域的 Windows 机器上的 ADUC 图形化工具,或者按照先前主题中那样用 samba-tool 命令行直接在域控制器中运行。

在本指导中,我们会使用上面提到的第一种方法。

Active Directory Users and Computers

AD 用户和计算机

Create New User for iRedMail

为 iRedMail 创建新的用户

Set Strong Password for User

为用户设置强密码

9、 在 iRedMail 系统中,用下面的命令测试 vmail 用户能够查询 Samba4 AD DC LDAP 数据库。返回的结果应该是你的域的对象总数, 如下截图所示。

# ldapsearch -x -h tecmint.lan -D '[email protected]' -W -b 'cn=users,dc=tecmint,dc=lan'

注意:相应地替换域名以及 Samba4 AD 的 LDAP dn (cn=users,dc=tecmint,dc=lan)。

Query Samba4 AD DC LDAP

查询 Samba4 AD DC LDAP

第三步:将 iRedMail 服务集成到 Samba4 AD DC 中

10、 现在是时候修改 iRedMail 服务(Postfix、Dovecot 和 Roundcube)以便为邮箱帐户查询 Samba4 域控制器。

第一个要修改的服务是 MTA 代理,Postfix。执行以下命令禁用一系列的 MTA 设置,添加你的域名到 Postfix 本地域以及邮箱域中,并使用 Dovecot 代理发送已接收的邮件到用户邮箱中。

# postconf -e virtual_alias_maps=' '
# postconf -e sender_bcc_maps=' '
# postconf -e recipient_bcc_maps= ' '
# postconf -e relay_domains=' '
# postconf -e relay_recipient_maps=' '
# postconf -e sender_dependent_relayhost_maps=' '
# postconf -e smtpd_sasl_local_domain='tecmint.lan' #用你自己的域替换
# postconf -e virtual_mailbox_domains='tecmint.lan' #用你自己的域替换   
# postconf -e transport_maps='hash:/etc/postfix/transport'
# postconf -e smtpd_sender_login_maps='proxy:ldap:/etc/postfix/ad_sender_login_maps.cf'  # 检查 SMTP 发送者
# postconf -e virtual_mailbox_maps='proxy:ldap:/etc/postfix/ad_virtual_mailbox_maps.cf'  # 检查本地邮件帐户
# postconf -e virtual_alias_maps='proxy:ldap:/etc/postfix/ad_virtual_group_maps.cf'  # 检查本地邮件列表
# cp /etc/postfix/transport /etc/postfix/transport.backup   # 备份 transport 配置
# echo "tecmint.lan dovecot" > /etc/postfix/transport       # 添加带 dovecot transport 的域
# cat /etc/postfix/transport                    # 验证 transport 文件
# postmap hash:/etc/postfix/transport

11、 接下来,用你最喜欢的文本编辑器创建 Postfix 的 /etc/postfix/ad_sender_login_maps.cf 配置文件,并添加下面的配置。

server_host     = tecmint.lan
server_port     = 389
version         = 3
bind            = yes
start_tls       = no
bind_dn         = [email protected]
bind_pw         = ad_vmail_account_password
search_base     = dc=tecmint,dc=lan
scope           = sub
query_filter    = (&(userPrincipalName=%s)(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
result_attribute= userPrincipalName
debuglevel      = 0

12、 使用下面的配置创建 /etc/postfix/ad_virtual_mailbox_maps.cf

server_host     = tecmint.lan
server_port     = 389
version         = 3
bind            = yes
start_tls       = no
bind_dn         = [email protected]
bind_pw         = ad_vmail_account_password
search_base     = dc=tecmint,dc=lan
scope           = sub
query_filter    = (&(objectclass=person)(userPrincipalName=%s))
result_attribute= userPrincipalName
result_format   = %d/%u/Maildir/
debuglevel      = 0

13、 使用下面的配置创建 /etc/postfix/ad_virtual_group_maps.cf

server_host     = tecmint.lan
server_port     = 389
version         = 3
bind            = yes
start_tls       = no
bind_dn         = [email protected]
bind_pw         = ad_vmail_account_password
search_base     = dc=tecmint,dc=lan
scope           = sub
query_filter    = (&(objectClass=group)(mail=%s))
special_result_attribute = member
leaf_result_attribute = mail
result_attribute= userPrincipalName
debuglevel      = 0

替换上面三个配置文件中的 server_hostbind_dnbind_pwsearch_base 以反应你自己域的设置。

14、 接下来,打开 Postfix 主配置文件,通过在下面的行前添加 # 注释,搜索并禁用 iRedAPD 的 check_policy_servicesmtpd_end_of_data_restrictions

# nano /etc/postfix/main.cf

注释下面的行:

#check_policy_service inet:127.0.0.1:7777
#smtpd_end_of_data_restrictions = check_policy_service inet:127.0.0.1:7777

15、 现在,通过执行一系列查询,验证 Postfix 是否使用现有的域用户和域组绑定到 Samba AD,如以下示例所示。

结果应与下面的截图类似。

# postmap -q [email protected] ldap:/etc/postfix/ad_virtual_mailbox_maps.cf
# postmap -q [email protected] ldap:/etc/postfix/ad_sender_login_maps.cf
# postmap -q [email protected] ldap:/etc/postfix/ad_virtual_group_maps.cf

Verify Postfix Binding to Samba AD

验证 Postfix 绑定到了 Samba AD

相应替换 AD 用户及组帐户。同样,确保你使用的 AD 组已被分配了一些成员。

16、 在下一步中修改 Dovecot 配置文件以查询 Samba4 AD DC。打开 /etc/dovecot/dovecot-ldap.conf 文件并添加下面的行。

hosts           = tecmint.lan:389
ldap_version    = 3
auth_bind       = yes
dn              = [email protected]
dnpass          = ad_vmail_password
base            = dc=tecmint,dc=lan
scope           = subtree
deref           = never
user_filter     = (&(userPrincipalName=%u)(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
pass_filter     = (&(userPrincipalName=%u)(objectClass=person)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))
pass_attrs      = userPassword=password
default_pass_scheme = CRYPT
user_attrs      = =home=/var/vmail/vmail1/%Ld/%Ln/Maildir/,=mail=maildir:/var/vmail/vmail1/%Ld/%Ln/Maildir/

Samba4 AD 帐户的邮箱将会存储在 /var/vmail/vmail1/your_domain.tld/your_domain_user/Maildir/ 中。

17、 确保 dovecot 的主配置文件中启用了 pop3 和 imap 协议。打开 /etc/dovecot/dovecot.conf 验证是否启用了 quotaacl 邮件插件,并检查这些值是否存在。

Enable Pop3 and Imap in Dovecot

在 Dovecot 中启用 POP3 和 IMAP

18、 可选地,如果要将全局硬配额设置为每个域用户的最大不超过 500 MB 存储,请在 /etc/dovecot/dovecot.conf 文件中添加以下行。

quota_rule = *:storage=500M 

19、 最后,为了使目前这些更改生效,用 root 权限执行下面的命令重启并验证 Postfix 和 Dovecot 守护进程的状态。

# systemctl restart postfix dovecot
# systemctl status postfix dovecot

20、 为了使用 IMAP 协议从命令行测试邮件服务器配置,请使用 telnet 或 netcat 命令,如下所示。

# nc localhost 143
a1 LOGIN ad_user@your_domain.tld ad_user_password
a2 LIST “” “*”
a3 LOGOUT

Test iRedMail Configuration

测试 iRedMail 配置

如果你可以使用 Samba4 用户帐户从命令行执行 IMAP 登录,那么 iRedMail 服务器似乎已经准备好发送和接收 AD 帐户的邮件。

在下一个教程中将讨论如何将 Roundcube webmail 与 Samba4 AD DC 集成,并启用全局 LDAP 地址簿,自定义 Roudcube,从浏览器访问 Roundcube Web 界面,并禁用某些不需要的 iRedMail 服务。


作者简介:

我是一个电脑上瘾的家伙,开源和基于 linux 的系统软件的粉丝,在 Linux 发行版桌面、服务器和 bash 脚本方面拥有大约4年的经验。


via: https://www.tecmint.com/integrate-iredmail-to-samba4-ad-dc-on-centos-7/

作者:Matei Cezar 译者:geekpi 校对:wxy

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

sendmail logo

如果你运行了一个 web 服务器或者一台 VPS ,你可能需要在你的 PHP 程序中发送邮件。

同样,如果你正在运行一个 WordPress 博客,或者你正在使用任何类型的 CMS ,你允许你的访问者通过联系表单向你发送电子邮件(例如使用 WordPress 的 Contact Form 7 插件),你可能需要安装一个名为 sendmail 的简单的程序到你的 web 服务器上。

Sendmail 是一个通用的互联网电子邮件投递工具,支持多种邮件传输和传递方法,包括用于通过 Internet 进行电子邮件传输的简单邮件传输协议(SMTP)。来自 Wikipedia

Sendmail 可以通过你的发行版的软件包管理器安装。

以下是在 CentOS 7 上安装 Sendmail 的说明。

安装

要在 CentOS 7 中安装 CentOS 7 ,运行下面的命令:

# yum install sendmail

允许服务器可以发送邮件

如果在 CentOS 7 中使用了 SELinux, 你需要使用下面的命令允许 sendmail 发送邮件:

# setsebool -P httpd_can_sendmail=on

使用 PHP 发送一封测试邮件

使用这个命令进入 php 交互 shell 中:

php -a

在交互 shell 中,粘贴下面的代码:

mail('[email protected]', "Test email", "Test email from the Internet", null, "-f [email protected]");

不要忘记将 [email protected][email protected] 分别替换为你的收件地址和发件地址。

浏览 sendmail 日志

要监控邮件日志,你可以使用这个命令:

tail /var/log/maillog

在服务器上安装 sendmail 完成后,你可以允许你的用户通过联系栏通过邮件联系你了。


via: http://fasterland.net/sending-email-via-php-centos-7-using-sendmail.html

作者:Francesco Mondello 译者:geekpi 校对:wxy

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

 title=

在这个系列的文章中,我们将通过使用 Postfix、Dovecot 和 openssl 这三款工具来为你展示如何在 ubuntu 系统上搭建一个既可靠又易于配置的邮件服务器。

在这个容器和微服务技术日新月异的时代,值得庆幸的是有些事情并没有改变,例如搭建一个 Linux 下的邮件服务器,仍然需要许多步骤才能间隔各种服务器耦合在一起,而当你将这些配置好,放在一起,却又非常可靠稳定,不会像微服务那样一睁眼有了,一闭眼又没了。 在这个系列教程中我们将通过使用 Postfix、Dovecot 和 openssl 这三款工具在 ubuntu 系统上搭建一个既可靠又易于配置的邮件服务器。

Postfix 是一个古老又可靠的软件,它比原始的 Unix 系统的 MTA 软件 sendmail 更加容易配置和使用(还有人仍然在用sendmail 吗?)。 Exim 是 Debain 系统上的默认 MTA 软件,它比 Postfix 更加轻量而且超级容易配置,因此我们在将来的教程中会推出 Exim 的教程。

Dovecot(LCTT 译注:详情请阅读维基百科)和 Courier 是两个非常受欢迎的优秀的 IMAP/POP3 协议的服务器软件,Dovecot 更加的轻量并且易于配置。

你必须要保证你的邮件通讯是安全的,因此我们就需要使用到 OpenSSL 这个软件,OpenSSL 也提供了一些很好用的工具来测试你的邮件服务器。

为了简单起见,在这一系列的教程中,我们将指导大家安装一个在局域网上的邮件服务器,你应该拥有一个局域网内的域名服务,并确保它是启用且正常工作的,查看这篇“使用 dnsmasq 为局域网轻松提供 DNS 服务”会有些帮助,然后,你就可以通过注册域名并相应地配置防火墙,来将这台局域网服务器变成互联网可访问邮件服务器。这个过程网上已经有很多很详细的教程了,这里不再赘述,请大家继续跟着教程进行即可。

一些术语

让我们先来快速了解一些术语,因为当我们了解了这些术语的时候就能知道这些见鬼的东西到底是什么。 :D

  • MTA 邮件传输代理 Mail Transfer Agent ,基于 SMTP 协议(简单邮件传输协议)的服务端,比如 Postfix、Exim、Sendmail 等。SMTP 服务端彼此之间进行相互通信(LCTT 译注 : 详情请阅读维基百科)。
  • MUA 邮件用户代理 Mail User Agent ,你本地的邮件客户端,例如 : Evolution、KMail、Claws Mail 或者 Thunderbird(LCTT 译注 : 例如国内的 Foxmail)。
  • POP3 邮局协议 Post-Office Protocol 版本 3,将邮件从 SMTP 服务器传输到你的邮件客户端的的最简单的协议。POP 服务端是非常简单小巧的,单一的一台机器可以为数以千计的用户提供服务。
  • IMAP 交互式消息访问协议 Interactive Message Access Protocol ,许多企业使用这个协议因为邮件可以被保存在服务器上,而用户不必担心会丢失消息。IMAP 服务器需要大量的内存和存储空间。
  • TLS 传输套接层 Transport socket layer 是 SSL( 安全套接层 Secure Sockets Layer )的改良版,为 SASL 身份认证提供了加密的传输服务层。
  • SASL 简单身份认证与安全层 Simple Authentication and Security Layer ,用于认证用户。SASL进行身份认证,而上面说的 TLS 提供认证数据的加密传输。
  • StartTLS: 也被称为伺机 TLS 。如果服务器双方都支持 SSL/TLS,StartTLS 就会将纯文本连接升级为加密连接(TLS 或 SSL)。如果有一方不支持加密,则使用明文传输。StartTLS 会使用标准的未加密端口 25 (SMTP)、 110(POP3)和 143 (IMAP)而不是对应的加密端口 465(SMTP)、995(POP3) 和 993 (IMAP)。

啊,我们仍然有 sendmail

绝大多数的 Linux 版本仍然还保留着 /usr/sbin/sendmail 。 这是在那个 MTA 只有一个 sendmail 的古代遗留下来的痕迹。在大多数 Linux 发行版中,/usr/sbin/sendmail 会符号链接到你安装的 MTA 软件上。如果你的 Linux 中有它,不用管它,你的发行版会自己处理好的。

安装 Postfix

使用 apt-get install postfix 来做基本安装时要注意(图 1),安装程序会打开一个向导,询问你想要搭建的服务器类型,你要选择“Internet Server”,虽然这里是局域网服务器。它会让你输入完全限定的服务器域名(例如: myserver.mydomain.net)。对于局域网服务器,假设你的域名服务已经正确配置,(我多次提到这个是因为经常有人在这里出现错误),你也可以只使用主机名。

 title=

图 1:Postfix 的配置。

Ubuntu 系统会为 Postfix 创建一个配置文件,并启动三个守护进程 : masterqmgrpickup,这里没用一个叫 Postfix 的命令或守护进程。(LCTT 译注:名为 postfix 的命令是管理命令。)

$ ps ax 
 6494 ? Ss 0:00 /usr/lib/postfix/master 
 6497 ? S 0:00 pickup -l -t unix -u -c 
 6498 ? S 0:00 qmgr -l -t unix -u 

你可以使用 Postfix 内置的配置语法检查来测试你的配置文件,如果没用发现语法错误,不会输出任何内容。

$ sudo postfix check 
[sudo] password for carla: 

使用 netstat 来验证 postfix 是否正在监听 25 端口。

$ netstat -ant 
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 
tcp6 0 0 :::25  :::*  LISTEN 

现在让我们再操起古老的 telnet 来进行测试 :

$ telnet myserver 25 
Trying 127.0.1.1... 
Connected to myserver. 
Escape character is '^]'. 
220 myserver ESMTP Postfix (Ubuntu) 
EHLO myserver
250-myserver 
250-PIPELINING 
250-SIZE 10240000 
250-VRFY 
250-ETRN 
250-STARTTLS 
250-ENHANCEDSTATUSCODES 
250-8BITMIME 
250 DSN 
^]

telnet> 

嘿,我们已经验证了我们的服务器名,而且 Postfix 正在监听 SMTP 的 25 端口而且响应了我们键入的命令。

按下 ^] 终止连接,返回 telnet。输入 quit 来退出 telnet。输出的 ESMTP(扩展的 SMTP ) 250 状态码如下。 (LCTT 译注: ESMTP (Extended SMTP),即扩展 SMTP,就是对标准 SMTP 协议进行的扩展。详情请阅读维基百科

  • PIPELINING 允许多个命令流式发出,而不必对每个命令作出响应。
  • SIZE 表示服务器可接收的最大消息大小。
  • VRFY 可以告诉客户端某一个特定的邮箱地址是否存在,这通常应该被取消,因为这是一个安全漏洞。
  • ETRN 适用于非持久互联网连接的服务器。这样的站点可以使用 ETRN 从上游服务器请求邮件投递,Postfix 可以配置成延迟投递邮件到 ETRN 客户端。
  • STARTTLS (详情见上述说明)。
  • ENHANCEDSTATUSCODES,服务器支撑增强型的状态码和错误码。
  • 8BITMIME,支持 8 位 MIME,这意味着完整的 ASCII 字符集。最初,原始的 ASCII 是 7 位。
  • DSN,投递状态通知,用于通知你投递时的错误。

Postfix 的主配置文件是: /etc/postfix/main.cf,这个文件是安装程序创建的,可以参考这个资料来查看完整的 main.cf 参数列表, /etc/postfix/postfix-files 这个文件描述了 Postfix 完整的安装文件。

下一篇教程我们会讲解 Dovecot 的安装和测试,然后会给我们自己发送一些邮件。


via: https://www.linux.com/learn/how-build-email-server-ubuntu-linux

作者:CARLA SCHRODER 译者:WangYihang 校对:wxy

本文由 LCTT 组织编译,Linux中国 荣誉推出