Alpine 电子邮件客户端:通过 ssh 从不同的服务器发送邮件

Alpine 电子邮件客户端:通过 ssh 从不同的服务器发送邮件

我曾遭受过无法收到重要电子邮件的困扰,同时也没有收到退回邮件。

我想知道这个问题的一个因素是否是,如果 Alpine 直接与某个(主要)SMTP 服务器对话,我的笔记本电脑(有时具有动态分配的 IP 地址)似乎是发件人。如果我的电子邮件来自笔记本电脑,可能会受到较少的尊重。

那么我可以更改smtp-serverAlpine 中的设置以在不同(固定 IP)计算机上使用 sendmail,而不是在我的笔记本电脑上使用 sendmail 吗?

我已经在我的远程(隧道)服务器上设置了无密码 ssh 密钥。我可以输入什么字符串来告诉 Alpine 在其他地方为 sendmail 建立隧道?

现在,smtp-server我只是使用 Alpine 格式tlsssluser=字符串指定远程 SMTP 服务器的 IP 名称和端口号,但我想通过 ssh 将它们传递到另一台 GNU/Linux 机器上的邮件程序。

(我实际上使用的是该smtp-rules设置而不是默认smtp-server设置。)

更详细一点(解释我的动机):

这是一封非常重要的电子邮件的标题底部部分,该电子邮件从未收到(随后发生了重大损坏)并且没有产生退回邮件:

Received: from Mylaptop-high (192-0-111-216.cpe.teksavvy.com [192.0.111.216])
    (authenticated bits=0)
        (User authenticated as [email protected])
    by outgoing-alum.mit.edu (8.14.7/8.12.4) with ESMTP id 03F39FMc032212
    (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);
    Tue, 14 Apr 2020 23:09:16 -0400
Date: Tue, 14 Apr 2020 23:09:15 -0400 (EDT)
From: C P meuser <[email protected]>
To: Important recipient <[email protected]>
Subject: life or death emergency
Message-ID: <alpine.DEB.2.21.200411111170.2116@Mylaptop-high>
User-Agent: Alpine 2.21 (DEB 202 2017-01-01)

其他服务器会查看此信息并发现它源自我的笔记本电脑,该笔记本电脑目前位于我的 ISP 的 IP (teksavvy) 中。不太理想,我通过麻省理工学院的 smtp 服务器而不是麦吉尔的服务器发送它。然而,麻省理工学院对我进行了身份验证,并通过密件抄送地址成功将其发回给我。但有些东西阻止了它到达接收者手中。据推测,那是麦吉尔使用的微软服务器。

所以我担心的是,作为第一个 MTA,从我的便携式笔记本电脑中获得一些东西可能看起来很糟糕。也许这是错误的。当我在工作时,同一台笔记本电脑有固定的 IP 和 IP 名称,但这是从家里发送的。我真的不知道自己在抗争什么,但我正在努力减少拒绝电子邮件的原因。因此,如果(尤其是在家时)我从工作中的固定 IP 机器(ssh 管道)而不是从我的笔记本电脑发送,也许会更好。

答案1

这是我多年来一直使用的,目前在我的 MacBook 上。我使用了 ssh-add 所以我不需要登录服务器 arcticus

alpinemailarcticus.sh 包含

#!/bin/sh
~/bin/ssh53025arcticus.sh
alpine

这是一个 shell 脚本。您可以通过在命令行中键入 alpinemailarcticus.sh 并按 Enter 来运行它。它运行另一个 shell 脚本 ssh53025arcticus.sh,然后运行 ​​alpine

ssh53025arcticus.sh包含(ssh命令全部在一行)

#!/bin/sh
ssh -o TCPKeepAlive=no -o ServerAliveCountMax=5 -o ServerAliveInterval=15  -f  -L 53587:localhost:587 -L 53143:localhost:143  arcticus.clifford.ac sleep 15

这将为几个端口设置 ssh 隧道。当您在 alpine 中设置 SMTP 服务器以使用 localhost:53587 时(如下详述),笔记本电脑上的 alpine 会认为邮件服务器位于 localhost 上,也就是说,笔记本电脑和 alpine 正在使用端口 53587 与其进行通信。但是,在在隧道的另一端,邮件服务器认为您正在服务器上运行邮件客户端并在端口 587 上与它通信。服务器活动的东西在那里,因为 alpine 似乎对连接中的打嗝非常敏感(打嗝是技术术语!)。 novalidate-cert 在那里,因为我有自签名证书 - 请参阅 alpine 中的帮助。

结果是,您的一封电子邮件中看到的所有标头似乎都是您的远程邮件服务器。

alpine 中的 smtp 和收件箱是

SMTP Server (for sending) = localhost:53587/notls/novalidate-cert/user=alan                                        
Inbox Path = {localhost:53143/novalidate-cert/user=alan/NoRsh}INBOX                                 

这些是在 Alpine 中设置的,方法是选择 setup 然后 config,然后将 alpine 设置为 ssh,以便在 ssh 隧道另一端的远程邮件服务器上发送和接收邮件。

从这里忽略。它与传入文件夹有关,只是使问题变得混乱。我最近一直在直接使用服务器尝试传入文件夹

arcticus-inbox {arcticus.clifford.ac:993/novalidate-cert/ssl/user=alan/NoRsh}INBOX

而不是

golfclubs {localhost:53143/novalidate-cert/user=alan/NoRsh}golfclubs

所以我想你可以为 smtp 做到这一点。

我发现你问题的原因是因为我注意到后搜索了“alpine mail ssh”

Ssh Command = <No Value Set>
Ssh Path    = <No Value Set>
Ssh Open Timeout  = <No Value Set>

我不知道它们的用途,所以开始调查。

相关内容