SSH隧道用于Sendmail

4
我很苦恼,试图配置我的系统。
我在家里有一台笔记本电脑和一台工作站。我使用mutt和sendmail。我有一个家庭ISP,它在很多黑名单上,所以我通过我的ISP发送的任何电子邮件经常被接收者阻止为垃圾邮件。我可以通过SSH连接到我的工作站,在那里交互地使用mutt,但这很慢且繁琐。我使用fetchmail从工作服务器下载电子邮件到笔记本电脑。
我尝试让笔记本电脑通过工作邮件程序发送邮件,使用的方法是:
ssh -L 25:workstation.work.com:25 workstation.work.com

但是当我这样做时,似乎sendmail无法运行。当我尝试从工作站获取fetchmail到笔记本电脑时,必须在笔记本电脑上运行sendmail才能将邮件本地递送到笔记本电脑。当邮件确实通过时,它被拒绝,因为主机名未被识别。我尝试更改mutt中的主机名,但似乎没有影响任何内容。

所以我对如何配置我的笔记本电脑上的mutt、sendmail和SSH感到困惑,以便我可以从我的笔记本电脑撰写和发送电子邮件,使它们得到传递,同时我还想通过fetchmail从服务器获取我的电子邮件,并将其本地递送。

非常感谢您的帮助。

2个回答

7
如果您运行了ssh隧道,就不能在本地运行sendmail,因为否则它将侦听端口25,而不是您的隧道。默认情况下,fetchmail希望有一个本地邮件服务器进行投递,尽管如果您愿意,可以将其配置为直接投递到mbox文件。
相反,我在我的笔记本电脑上运行postfix,并将其设置为使用“relayhost=[127.0.0.1]:2526”在/etc/postfix/main.cf中发送邮件到localhost:2526。然后,我运行ssh隧道“ssh -N -L 2526:localhost:25 ptomblin@myserver”,以便当postfix进行投递时,它会通过隧道传输。像mutt和fetchmail这样的本地邮件客户端看到的是在端口25上运行的本地邮件服务器,就像他们所期望的那样。

抱歉,我对此非常陌生。我和原帖发布者一样(11年后),但我想知道如何运行ssh隧道。我应该在哪里输入运行ssh命令?这是放在postfx main.cf中吗?另一个复杂的问题是我的ssh连接需要检查vpn是否开启,因为这是我连接远程服务器的方式,但我认为我必须先理解这部分内容。 - user3236841
你必须手动运行ssh命令,或者在启动时作为脚本的一部分自动运行 - 我曾经在/etc/rc.local中这样做,或者在macOS中作为登录项。 - Paul Tomblin
谢谢。作为一种替代方案,我发现如果我的 VPN 打开,我的电子邮件不会被发送到收件人的垃圾邮件中。我想知道是否有可能推迟或延迟 postfix 的服务直到 VPN 打开。我在这里提出了一个问题:https://stackoverflow.com/questions/60792180/force-postfix-to-delay-service-until-vpn-is-up,但我不知道如何开始解决这个问题。这是一个奇怪的问题。你有什么建议吗? - user3236841

0

保罗:你的回答解决了我的问题!我很困惑,本应该指定-L 54321:localhost:25而不是-L 54321:remotehost:25。请注意relayhost stanza中的拼写错误。方括号应该在冒号之前关闭,因此:relayhost=[127.0.0.1]:54321。 感谢你关于postfix的提示。我以前一直使用sendmail,有点盲目,现在根据你的建议安装并使用postfix,相比sendmail,我发现配置绝对是一种享受!


使用Postfix多年后,不是后缀的main.cf比sendmail.cf的恐怖令人愉悦吗? - Paul Tomblin
让我真的想知道为什么我花了这么长时间和sendmail在一起! - Chris Duncombe Rae

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接