使用 Alpine Linux 邮件客户端访问任何网络的消息

复古的 Alpine 邮件客户端为 ISP 的反垃圾邮件努力提供了一种变通方法,这种努力也可能在旅行时阻止合法的消息传递。
276 位读者喜欢这个。
Compute like it's 1989

LSE Library。由 Opensource.com 修改。CC BY-SA 4.0

有时当我旅行时,我难以从我的设备发送电子邮件,这些设备通常通过有线或无线网络连接到我家的 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 或其他文本模式电子邮件客户端?请在评论中告诉我们您的经验和建议。

标签
David Both
David Both 是开源软件和 GNU/Linux 的倡导者、培训师、作家和演讲者。自 1996 年以来,他一直从事 Linux 和开源软件工作,自 1969 年以来一直从事计算机工作。他是“系统管理员的 Linux 哲学”的坚定支持者和传播者。

6 条评论

我很欣赏这个解决方案/变通方法提供的功能。可能没有多少 Linux 用户愿意为了收发一些电子邮件而经历这一切,特别是如果这不是工作要求的话。但是,可以做到这一点的简单事实!?...充分说明了 Linux 的实用性和灵活性。很棒的文章!....

阅读关于 Alpine 的文章让我真的怀念 90 年代和 2000 年代。我拥有一个 Unix/Linux 或类 Unix shell 系统的登录帐户 + 电子邮件大约 15 年。我一直将它们作为我的主要个人电子邮件帐户使用到 2010 年左右。速度和相对安全性是无与伦比的。当其他人打开电子邮件并看到满屏可能是恶意链接时,我看到的是他们的原始 html 代码。快乐的日子。

这就是我每天阅读电子邮件的方式。

没有使用 alpine,而是 sup (sup-heliotrope.github.io,以类似 gmail 的方式使用标签而不是文件夹),但原理是相同的。

不同之处在于我根本不使用桌面客户端,因此我不必处理多个电子邮件客户端,也不必担心通过慢速连接下载大型电子邮件和附件。

获取附件需要更多的工作,尽管我通常将它们保存在公共文件夹中,以便与本地 http 服务器共享。我也可以将附件保存在 dropbox 文件夹中,以便将它们放到我的本地设备上。

问候,eMBee。

非常有趣地使用 SSH 来克服 ISP 的严厉封禁。我想我有点困惑的是,当您通过 SMTP 服务器发送邮件时,ISP 是如何被列入黑名单的。或者是因为当允许连接到端口 25 上的 SMTP 服务器时,您也可以在本地设置 SMTP 服务器来发送消息?

无论如何,非常有趣,感谢分享!

问题是许多住宅计算机是不安全的,因此垃圾邮件发送者会利用并侵入它们,并使用它们发送垃圾邮件。因此,必须不信任并阻止住宅 IP 地址。

一些 ISP 主动禁止其客户发送 SMTP。
其他 ISP 不会这样做,如果他们主要为住宅区服务,则整个 ISP(嗯,由 ISP 管理的 IP 地址块)可能会被阻止。

问候,eMBee。

回复 作者 LewisCowles1986

我一直在网上寻找该软件的副本,但找不到来自可信来源的软件。有人知道我在哪里可以访问该软件吗?

知识共享许可协议本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.