Linux 如何使用perl/shell脚本轻松检查POP3或SMTP连接是否有效?

Linux 如何使用perl/shell脚本轻松检查POP3或SMTP连接是否有效?,linux,perl,email,smtp,pop3,Linux,Perl,Email,Smtp,Pop3,我已经设置了一个到邮件服务器的SSH隧道,如下所示: ssh -o ServerAliveInterval=60 -f me\@mydomain.com -L 63110:mail.mydomain.com:110 -N ssh -o ServerAliveInterval=60 -f me\@mydomain.com -L 63325:mail.mydomain.com:25 -N 我可以发送/接收邮件一段时间,但在一段时间不活动后,我的邮件客户端报告它无法从邮件服务器收到有效的问候语 我有

我已经设置了一个到邮件服务器的SSH隧道,如下所示:

ssh -o ServerAliveInterval=60 -f me\@mydomain.com -L 63110:mail.mydomain.com:110 -N
ssh -o ServerAliveInterval=60 -f me\@mydomain.com -L 63325:mail.mydomain.com:25 -N
我可以发送/接收邮件一段时间,但在一段时间不活动后,我的邮件客户端报告它无法从邮件服务器收到有效的问候语

我有一个perl脚本,它每分钟检查一次,以确保ssh隧道正在运行(通过ps)并且端口是打开的(使用IO::Socket::PortState qw(check_ports)),但我还想检查是否收到了有效的问候语


在perl或shell脚本(运行Ubuntu 12.04)中,最好的方法是什么

为了回答这个问题,尽管设置了OP,但要使用的工具是
swaks
SMTP的瑞士军刀。您可以从这里获得:

通常,为了测试smtp,您会使用如下命令:
swaks--server mail.example.com--from ben。holness@example.com“给本。holness@somewhere.example.com


然后,它将向您显示smtp客户端和服务器之间的所有对话,从而可以很容易地查明可能出现问题的根源。

毫不奇怪……ssh不会说smtp。smtp服务器在您发送内容(例如EHLO/HELO问候语)之前不会响应。我的邮件客户端(evolution)设置为每10分钟发送/接收一次,我通过ssh隧道进行思考,这很好。。。我建议你看一下。它会自动监视并重新启动带有端口转发的SSH会话。Re:“在一段时间不活动后,我的邮件客户端报告它没有从邮件服务器收到有效的问候语”:您知道原因了吗?我看到您的
ssh
命令每60秒发送一条服务器活动消息,因此您的ssh客户端和ssh服务器之间的连接似乎不太可能由于“一段时间的不活动”而中断。您是否已将邮件客户端配置为期望与邮件服务器的连续连接,而这种连接正在消亡?您知道
SMTP
用于发送电子邮件,对吗?你是说
IMAP