有时当我旅行时,我很难从通常通过有线或 WiFi 连接到家中 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 上安装(CentOS 是我首选的服务器发行版,尽管有时我也使用 Fedora 作为服务器)。CentOS 的 Alpine 位于 Extra Packages for Enterprise 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(消息索引),或使用箭头键突出显示 MESSAGE INDEX 并按 Enter 键。
要打开特定电子邮件,请突出显示它并按 Enter 键。然后键入 < 返回收件箱,键入 M 返回主菜单。
要进入配置菜单,请键入 S(设置),然后键入 C(配置)。这里几乎不需要更改任何内容,因为 Alpine 在服务器本地运行,但我确实将签名设置为我的名字。无需配置出站 SMTP 服务器,因为默认情况下使用 localhost。我还将已发送邮件的默认位置从 sent-messages 更改为 Sent,这是 Thunderbird 存储它们的位置。
解决电子邮件位置冲突
接下来,我需要修复客户端电子邮件位置的其他问题。像 Thunderbird 这样的客户端将电子邮件存储在位于用户主目录 (~) 中的文件夹中。默认情况下,Alpine 将电子邮件存储在它在 ~/mail 中创建的文件夹中,除了收件箱。因为我希望能够在 Thunderbird 和 Alpine 之间切换,所以我需要确保两者都可以访问电子邮件文件夹。
这个问题无法通过 Alpine 或 Thunderbird 配置选项来解决。为默认的 Collection List(文件夹组)指定用户的主目录 (~) 会导致 Alpine 尝试创建用户的主目录(该目录已存在),并导致更改失败。没有在不尝试创建默认文件夹位置的情况下更改它的选项。
Linux 提供了一个简单的解决方案:在 ~/mail 目录中创建到主目录中每个现有电子邮件文件夹的硬链接。有关如何创建它们的详细信息,请参阅“Linux 文件系统链接用户指南”。软(符号)链接也有效,但我认为硬链接最适合这种情况。
这样 Thunderbird 和 Alpine 都很高兴,因为它们都可以使用自己的默认位置来存储邮件文件夹。我很高兴,因为在完成研究后,我不必花费大量时间尝试破解这些电子邮件客户端。现在,我只需要记住,如果我使用任何一个客户端创建新文件夹,则需要创建一个新的硬链接。
优点和缺点
Alpine 凭借其简洁、简单的界面和丰富的功能,对我来说很容易使用。它非常快,因为它不尝试下载和显示图形。它仅限于纯文本,因此它将 HTML 呈现为纯文本,但不能用于生成和发送 HTML。这不是一件坏事。
Alpine——至少在我使用它的方式中——不能很好地处理附件;它通常不知道如何处理需要图形应用程序(如 LibreOffice)的附件。
如果需要新文件夹,设置和维护它也需要做一些工作。即便如此,我还是觉得它非常值得付出努力,因为我可以使用 SSH 从我的笔记本电脑、我的 Android 手机或我的 Kindle 登录,快速查看我的邮件,并在必要时回复。
除了解决 ISP 阻止端口 25 上的出站电子邮件问题之外,还有其他替代方案。例如,我的手机可以很好地用作无线热点,并且我的移动运营商不阻止出站电子邮件,因此这对我也适用。
如果您想学习如何使用 Alpine,该软件有一个很好的 手册页 和一个很好的内置帮助功能。这些应该可以帮助您入门。
您使用 Alpine 还是其他文本模式电子邮件客户端?请在评论中告知我们您的经验和建议。
6 条评论