有时当我旅行时,我难以从我的设备发送电子邮件,这些设备通常通过有线或无线网络连接到我家的 ISP。这是因为某些 ISP 不希望出站电子邮件离开他们的网络,除非它通过他们自己的电子邮件服务器路由。但是您需要拥有 ISP 的帐户才能通过他们的服务器发送出站电子邮件。
这种有意阻止出站端口 25 用于电子邮件通常旨在防止被劫持的主机充当垃圾邮件机器人,并通过 ISP 的网络发送电子邮件。这种情况可能导致 ISP 被标记为垃圾邮件来源并添加到垃圾邮件阻止网站,从而阻止合法的电子邮件到达其正确的目的地。
为了消除出站电子邮件被阻止的问题,我想使用一个电子邮件客户端,我可以作为电子邮件用户在自己的电子邮件服务器上运行它。换句话说,我将使用 SSH 登录随时随地访问我的电子邮件服务器。登录后,我只需启动电子邮件客户端,直接从我自己的电子邮件服务器接收和发送电子邮件,从而消除任何出站端口 25 阻止问题。
多年来,我使用过许多不同的开源电子邮件客户端,从最近带有图形界面的选项(如 KMail 和 Thunderbird)到文本模式的电子邮件客户端(如 mailx、Mutt 和 Pine)。在后三者中,我更喜欢 Pine,因为它似乎最适合我的工作方式。
我还记得大约 15 年前使用的 Pine 支持我试图做的事情来克服电子邮件被阻止的问题,所以我认为我会再次尝试一下。
不幸的是,Pine 是 1992 年在华盛顿大学编写的,不再受支持,自 2005 年以来没有更新过。它已被 Alpine 取代,Alpine 也是在华盛顿大学编写的,旨在成为 Pine 的完全重写和替代品。我决定尝试 Alpine 2.21 版本,它于 2017 年 3 月发布,因为它是最新的可用版本。
设置用户帐户
虽然 Alpine 可以用于远程访问电子邮件服务器,但我希望直接将其安装在服务器上并在那里使用它。这意味着用户必须使用有效的登录 ID 远程登录到邮件服务器。这带来了一个问题,因为电子邮件帐户通常不是登录帐户。典型的电子邮件帐户使用 nologin shell 来阻止用户登录到邮件服务器。
student:x:1008:1008:Student email account:/home/student:/sbin/nologin
这显示了典型电子邮件用户 student 的 /etc/passwd 条目。/sbin/nologin shell 用于阻止用户作为普通用户登录到电子邮件服务器。这是当我尝试使用 nologin shell 登录时得到的结果
This account is currently not available.
Connection to bh closed.
要将 student 帐户转换为登录帐户,请将 shell 更改为任何常规登录 shell。我喜欢 Bash,所以,如下所示,这就是我将用户 shell 更改为的内容。此更改不影响帐户用于电子邮件的用途。这是在我将默认 shell 更改为 Bash 后用户帐户的样子
student:x:1008:1008:Student email account:/home/student:/bin/bash
作为 root 用户工作,我可以使用 chsh 命令来更改 student 的用户 shell,但我更喜欢直接使用文本编辑器编辑 /etc/passwd 文件。创建新的电子邮件帐户时,Linux 的默认 shell 是 Bash,因此无需进行任何更改。我通过使用我的新电子邮件帐户登录到电子邮件服务器来测试它。
然后,我配置电子邮件服务器以添加 student 帐户。我使用 SendMail,所以我将以下行添加到 /etc/mail/virtusertable 文件中。要激活新的电子邮件地址,我从 /etc/mail 目录中运行了 make 命令,并重新启动了 SendMail。(其他电子邮件服务器可能使用不同的方法来添加新的电子邮件用户。)
student@both.org student
我向 student 用户发送了一条测试消息,以验证该帐户是否可以接收电子邮件。您可以通过查看 /var/spool/mail/student 文件的内容来验证测试消息是否在那里,而无需使用电子邮件客户端。/var/spool/mail 目录中的所有文件都是电子邮件用户的收件箱。
安装和配置 Alpine
Alpine 很容易在 CentOS 上安装(这是我首选的服务器发行版,尽管我有时使用 Fedora 作为服务器)。CentOS 的 Alpine 位于 企业 Linux 附加软件包 (EPEL) 存储库中,因此您可能需要安装 EPEL 软件包(如果尚未安装)。Alpine 位于标准的 Fedora 存储库中,因此如果您使用 Fedora,则无需向系统添加额外的存储库。我使用以下命令在我的 CentOS 电子邮件服务器上安装 Alpine。
yum -y install alpine
我可以下载源代码并自行构建它,但是使用打包版本要快得多且容易得多。
要开始使用 Alpine,我以 student 用户身份登录到电子邮件服务器。我键入命令 alpine 以启动电子邮件客户端。我看到的第一件事是消息,指示 Alpine 正在创建 ~/mail 子目录以存储其邮件。这可能会与其他电子邮件客户端发生冲突,但这很容易解决,我将在下面解释。
接下来,Alpine 显示了一个欢迎页面,这仅在 Alpine 首次运行时发生。在欢迎页面上,维护人员要求您按 Return 或 Enter 键自动向 Alpine 开发人员发送电子邮件,以便他们知道有多少人在使用该软件。(我总是这样做,以便他们知道有足够的兴趣继续维护它。)
导航菜单
在我按下 Enter 键后,Alpine 的主菜单显示,如此处所示
ALPINE 2.21 MAIN MENU Folder: INBOX 1 Message
? HELP - Get help using Alpine
C COMPOSE MESSAGE - Compose and send a message
I MESSAGE INDEX - View messages in current folder
L FOLDER LIST - Select a folder to view
A ADDRESS BOOK - Update address book
S SETUP - Configure Alpine Options
Q QUIT - Leave the Alpine program
For Copyright information press "?"
? Help P PrevCmd R RelNotes
O OTHER CMDS > [Index] N NextCmd K KBLock
Alpine 启动时,收件箱作为默认文件夹。收件箱实际上是文件 /var/spool/mail/student,其中包含该帐户收件箱的所有邮件。从收件箱移动到另一个文件夹的电子邮件存储在 ~/home/mail 中的相应目录中。
请注意上面的代码中,student 收件箱中已经有一封电子邮件。在每个页面的底部,都有两行命令与当前菜单页面相关。某些命令可以从几乎任何菜单中发出,方法是键入相应的字母。请注意,有时不同的命令使用相同的字母快捷键,具体取决于您所在的菜单页面。请务必通过键入字符 O 来查看每个菜单屏幕中可用的其他命令。
要查看收件箱中电子邮件的列表,请键入 I(消息索引),或使用箭头键突出显示消息索引,然后按 Enter 键。
要打开特定电子邮件,请突出显示它并按 Enter 键。然后键入 < 返回收件箱,键入 M 返回主菜单。
要进入配置菜单,请键入 S(设置),然后键入 C(配置)。这里几乎不需要更改任何内容,因为 Alpine 在服务器本地运行,但我确实将签名设置为我的名字。无需配置出站 SMTP 服务器,因为默认情况下使用 localhost。我还将已发送邮件的默认位置从 sent-messages 更改为 Sent,这是 Thunderbird 存储它们的位置。
解决电子邮件位置冲突
接下来,我需要修复客户端电子邮件位置的其他问题。像 Thunderbird 这样的客户端将电子邮件存储在用户主目录 (~) 中的文件夹中。默认情况下,Alpine 将电子邮件存储在它在 ~/mail 中创建的文件夹中,收件箱除外。因为我希望能够在 Thunderbird 和 Alpine 之间切换,所以我需要确保两者都可以访问电子邮件文件夹。
这个问题无法通过 Alpine 或 Thunderbird 配置选项解决。为默认的集合列表(文件夹组)指定用户的主目录 (~) 会导致 Alpine 尝试创建用户的主目录,该目录已存在,并导致更改失败。没有在不尝试创建默认文件夹位置的情况下更改默认文件夹位置的选项。
Linux 提供了一个简单的解决方案:在 ~/mail 目录中创建到主目录中每个现有电子邮件文件夹的硬链接。有关如何创建它们的详细信息,请参阅“Linux 文件系统链接用户指南”。软(符号)链接也有效,但我认为硬链接最适合这种情况。
这样,Thunderbird 和 Alpine 都很高兴,因为它们都可以使用自己的默认邮件文件夹位置。我很高兴,因为在做了研究之后,我不必花费大量时间来破解这些电子邮件客户端。现在我只需要记住,如果我使用任何一个客户端创建新文件夹,都要创建一个新的硬链接。
优点和缺点
Alpine 易于我使用,因为它具有简洁、简单的界面和丰富的功能。它非常快,因为它不尝试下载和显示图形。它仅限于纯文本,因此它将 HTML 呈现为纯文本,但不能用于生成和发送 HTML。这不是一件坏事。
Alpine——至少我使用它的方式——不能很好地处理附件;它通常不知道如何处理需要图形应用程序(如 LibreOffice)的附件。
如果需要新文件夹,设置和维护它也需要一些工作。即便如此,我发现它非常值得付出努力,因为我可以使用 SSH 从我的笔记本电脑、我的 Android 手机或我的 Kindle 登录,快速查看我的邮件,并在必要时回复。
还有其他替代方法可以解决 ISP 阻止端口 25 上的出站电子邮件的问题。例如,我的手机可以很好地用作无线热点,我的移动运营商不阻止出站电子邮件,所以这也对我有效。
如果您想学习如何使用 Alpine,该软件有一个很好的 man page 和一个很好的内置帮助功能。这些应该可以帮助您入门。
您是否使用 Alpine 或其他文本模式电子邮件客户端?请在评论中告诉我们您的经验和建议。
6 条评论