如何检查 smtp 是不是从命令行(Linux)工作 [关闭]

     2023-03-15     142

关键词:

【中文标题】如何检查 smtp 是不是从命令行(Linux)工作 [关闭]【英文标题】:How to check if smtp is working from commandline (Linux) [closed]如何检查 smtp 是否从命令行(Linux)工作 [关闭] 【发布时间】:2012-08-12 21:05:23 【问题描述】:

我有一个 SMTP 服务器,出于这个问题的目的,我们称之为:smtp.mydomain.com。

如何检查 SMTP 服务器是否在工作?我可以从 Linux 命令行手动发送电子邮件吗?

【问题讨论】:

@Flexo 这样的问题不应该迁移而不是关闭吗?这个貌似属于Serverfault @Balmipour 旧问题无法迁移,即使是版主也无法迁移。在meta.stackexchange.com 上讨论这个问题是有充分理由的(我现在手头没有链接),但请注意这个问题没有被删除。 在检查了 Meta 上的几篇帖子之后,(对我来说)迁移“只是”需要先重新打开。顺便说一句,也许这对于旧问题是不可能的。我想你比我更清楚这一点。无论如何,谢谢你的回答。我在元帖子中读到的一个更相关的观点是,迁移似乎需要一个“特别有价值”的问题。并不是说这个没用,但它也不是宝石。我不太了解,因为 SO 比 ServerFault / Linux 或 Superuser 等其他网站被高估了,但我会再讨论一天(无论如何它属于 Meta,而不是 SO :) 【参考方案1】:

使用 telnet 建立原始网络连接的语法如下:

telnet domain_name port_number

所以像 telnet 到你的 smtp 服务器一样

telnet smtp.mydomain.com 25

复制粘贴下面的内容

helo client.mydomain.com
mail from:<sender@mydomain.com>
rcpt to:<to_email@mydomain.com>
data
From: test@mydomain.com
Subject: test mail from command line

this is test number 1
sent from linux box
.
quit

注意:不要忘记“.”最后代表消息的结束。 “退出”行退出结束会话。

【讨论】:

您应该等待服务器对每个命令的响应,如果遇到错误(4xx 或 5xx 结果代码)则中止。 你应该写helo velanapps.com而不是hello velanapps.com,如果你想知道哪些smtp扩展可用,你应该写ehlo velanapps.com,如SMTP Example 你可以输入quit退出 这个答案很有用,但是我在测试中省略了第一行。我仍然从 smtp 服务器收到电子邮件。如果您能在此处包含一些关于 velanapps.com 域在做什么的信息,将会很有帮助。当我看到一个域用于这样的事情时,我总是很谨慎,但没有解释它对我们的数据做了什么。谢谢。 @Jeremy 它只是一个示例数据,我已将其删除并添加了占位符...【参考方案2】:
[root@piwik-dev tmp]# mail -v root@localhost
Subject: Test
Hello world
Cc:  <Ctrl+D>

root@localhost... Connecting to [127.0.0.1] via relay...
220 piwik-dev.example.com ESMTP Sendmail 8.13.8/8.13.8; Thu, 23 Aug 2012 10:49:40 -0400
>>> EHLO piwik-dev.example.com
250-piwik-dev.example.com Hello localhost.localdomain [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-DELIVERBY
250 HELP
>>> MAIL From:<root@piwik-dev.example.com> SIZE=46
250 2.1.0 <root@piwik-dev.example.com>... Sender ok
>>> RCPT To:<root@piwik-dev.example.com>
>>> DATA
250 2.1.5 <root@piwik-dev.example.com>... Recipient ok
354 Enter mail, end with "." on a line by itself
>>> .
250 2.0.0 q7NEneju002633 Message accepted for delivery
root@localhost... Sent (q7NEneju002633 Message accepted for delivery)
Closing connection to [127.0.0.1]
>>> QUIT
221 2.0.0 piwik-dev.example.com closing connection

【讨论】:

【参考方案3】:

不确定这是否有帮助,但这是一个命令行工具,可让您简单地从 SMTP 服务器发送测试邮件。 http://code.google.com/p/woodpecker-tester/

【讨论】:

【参考方案4】:

使用 telnet 测试 postfix 或其他 SMTP 的唯一事情是您必须了解命令和语法。相反,只需使用swaks :)

thufir@dur:~$ 
thufir@dur:~$ mail -f Maildir
"/home/thufir/Maildir": 4 messages
>    1 thufir@dur.bouncem                   15/553   test Mon, 30 Dec 2013 10:15:12 -0800
     2 thufir@dur.bouncem                   15/581   test Mon, 30 Dec 2013 10:15:55 -0800
     3 thufir@dur.bouncem                   15/581   test Mon, 30 Dec 2013 10:29:57 -0800
     4 thufir@dur.bouncem                   15/581   test Mon, 30 Dec 2013 11:54:16 -0800
? q
Held 4 messages in /home/thufir/Maildir
thufir@dur:~$ 
thufir@dur:~$ swaks --to thufir@dur.bounceme.net
=== Trying dur.bounceme.net:25...
=== Connected to dur.bounceme.net.
<-  220 dur.bounceme.net ESMTP Postfix (Ubuntu)
 -> EHLO dur.bounceme.net
<-  250-dur.bounceme.net
<-  250-PIPELINING
<-  250-SIZE 10240000
<-  250-VRFY
<-  250-ETRN
<-  250-STARTTLS
<-  250-ENHANCEDSTATUSCODES
<-  250-8BITMIME
<-  250 DSN
 -> MAIL FROM:<thufir@dur.bounceme.net>
<-  250 2.1.0 Ok
 -> RCPT TO:<thufir@dur.bounceme.net>
<-  250 2.1.5 Ok
 -> DATA
<-  354 End data with <CR><LF>.<CR><LF>
 -> Date: Mon, 30 Dec 2013 14:33:17 -0800
 -> To: thufir@dur.bounceme.net
 -> From: thufir@dur.bounceme.net
 -> Subject: test Mon, 30 Dec 2013 14:33:17 -0800
 -> X-Mailer: swaks v20130209.0 jetmore.org/john/code/swaks/
 -> 
 -> This is a test mailing
 -> 
 -> .
<-  250 2.0.0 Ok: queued as 52D162C3EFF
 -> QUIT
<-  221 2.0.0 Bye
=== Connection closed with remote host.
thufir@dur:~$ 
thufir@dur:~$ mail -f Maildir
"/home/thufir/Maildir": 5 messages 1 new
     1 thufir@dur.bouncem                   15/553   test Mon, 30 Dec 2013 10:15:12 -0800
     2 thufir@dur.bouncem                   15/581   test Mon, 30 Dec 2013 10:15:55 -0800
     3 thufir@dur.bouncem                   15/581   test Mon, 30 Dec 2013 10:29:57 -0800
     4 thufir@dur.bouncem                   15/581   test Mon, 30 Dec 2013 11:54:16 -0800
>N   5 thufir@dur.bouncem                   15/581   test Mon, 30 Dec 2013 14:33:17 -0800
? 5
Return-Path: <thufir@dur.bounceme.net>
X-Original-To: thufir@dur.bounceme.net
Delivered-To: thufir@dur.bounceme.net
Received: from dur.bounceme.net (localhost [127.0.0.1])
    by dur.bounceme.net (Postfix) with ESMTP id 52D162C3EFF
    for <thufir@dur.bounceme.net>; Mon, 30 Dec 2013 14:33:17 -0800 (PST)
Date: Mon, 30 Dec 2013 14:33:17 -0800
To: thufir@dur.bounceme.net
From: thufir@dur.bounceme.net
Subject: test Mon, 30 Dec 2013 14:33:17 -0800
X-Mailer: swaks v20130209.0 jetmore.org/john/code/swaks/
Message-Id: <20131230223317.52D162C3EFF@dur.bounceme.net>

This is a test mailing

New mail has arrived.
? q
Held 5 messages in /home/thufir/Maildir
thufir@dur:~$ 

这只是一个简单的命令。

【讨论】:

我不知道 swaks。谢谢! 刚试过swaks 太棒了,哇!在 Debian 中作为标准包提供

从命令行检查 Parquet

...fromcommandline【发布时间】:2016-07-0812:09:14【问题描述】:如何文件的内容?我现在看到的唯一选择是$hadoopfs-getmy-pathlocal-file$parquet-toolsheadlocal-file|less我愿意避免创建local-file和以json的形式查看文件内容,而不是parquet-tools打印的无... 查看详情

从 linux 命令行检查有效的 docx

】从linux命令行检查有效的docx【英文标题】:checkvaliddocxfromlinuxcommandline【发布时间】:2018-10-1811:24:51【问题描述】:我在php脚本中生成docx文件,但有时它们已损坏。服务器不知道这一点,它会将docx文件返回给用户,他发现它已... 查看详情

如何检查命令行参数是不是为整数

】如何检查命令行参数是不是为整数【英文标题】:Howtocheckifcommandlineparametersareintegers如何检查命令行参数是否为整数【发布时间】:2017-04-1119:04:08【问题描述】:首先,我说的是用gcc编译的老式ANSI-C(我的意思是ANSI标准,没有... 查看详情

怎么检查linux是不是安装pcre

1、连接上相应的linux主机,进入到等待输入shell指令的linux命令行状态下。2、在linux命令行下输入shell指令:rpm-qapcre。3、键盘按“回车键”运行shell指令,此时会看到pcre的版本,说明已安装,否则未安装。参考技术Arpm-qapcrePCRE(Per... 查看详情

macOS:以编程方式检查进程是不是作为启动守护进程或启动代理运行或从命令行运行

】macOS:以编程方式检查进程是不是作为启动守护进程或启动代理运行或从命令行运行【英文标题】:macOS:programmaticcheckifprocessrunsasalaunchDaemonorlaunchAgentorfromcommand-linemacOS:以编程方式检查进程是否作为启动守护进程或启动代理运... 查看详情

如何从命令行界面检查 Apache Phoenix 的版本?

】如何从命令行界面检查ApachePhoenix的版本?【英文标题】:HowcanIchecktheversionofApachePhoenixfromitscommandlineinterface?【发布时间】:2019-11-0918:55:31【问题描述】:如何从命令行查看ApachePhoenix的版本?我尝试在谷歌上搜索此信息,但没... 查看详情

如何从 linux 命令行获取视频文件的分辨率(宽度和高度)?

】如何从linux命令行获取视频文件的分辨率(宽度和高度)?【英文标题】:HowcanIgettheresolution(widthandheight)foravideofilefromalinuxcommandline?【发布时间】:2010-10-1514:28:04【问题描述】:我一直在研究mplayer/mencoder和ffmpeg文档,但我似乎... 查看详情

如何从命令行检查 TypeScript 代码中的语法错误?

】如何从命令行检查TypeScript代码中的语法错误?【英文标题】:HowtocheckTypeScriptcodeforsyntaxerrorsfromacommandline?【发布时间】:2017-05-2309:53:54【问题描述】:我有一个生成TypeScript类的代码,作为构建/测试步骤,我想检查生成的文件... 查看详情

如何仅从命令行检查 JavaScript 代码的语法错误?

】如何仅从命令行检查JavaScript代码的语法错误?【英文标题】:HowcanIcheckJavaScriptcodeforsyntaxerrorsONLYfromthecommandline?【发布时间】:2014-03-1808:15:03【问题描述】:JavaScript程序可以检查IDE中的错误或使用onlinewebapps,但我正在寻找一... 查看详情

如何从 bash 验证是不是已安装 xcode 命令行工具?

】如何从bash验证是不是已安装xcode命令行工具?【英文标题】:HowdoIverifyfrombashthatxcodecommandlinetoolsarealreadyinstalledornot?如何从bash验证是否已安装xcode命令行工具?【发布时间】:2016-02-2713:31:01【问题描述】:我正在寻找一个bash序... 查看详情

如何从命令提示符检查 ZooKeeper 是不是正在运行或启动?

】如何从命令提示符检查ZooKeeper是不是正在运行或启动?【英文标题】:HowtocheckifZooKeeperisrunningorupfromcommandprompt?如何从命令提示符检查ZooKeeper是否正在运行或启动?【发布时间】:2015-05-2007:43:12【问题描述】:我探索了一些设... 查看详情

如何从 Linux 命令行彻底关闭 Eclipse?

】如何从Linux命令行彻底关闭Eclipse?【英文标题】:HowtocleanlyshutdownEclipsefromLinuxcommandline?【发布时间】:2011-06-1720:53:53【问题描述】:有没有办法从命令行干净地关闭Eclipse,以便保存文件和工作区?kill-3什么都不做。kill-1和kill-... 查看详情

如何使用 tsconfig.json 中的设置从命令行键入检查单个文件?

】如何使用tsconfig.json中的设置从命令行键入检查单个文件?【英文标题】:Howtotypecheckasinglefilefromcommandline,usingthesettingintsconfig.json?【发布时间】:2019-04-0606:28:24【问题描述】:通常我运行tsc-p./tsconfig.json,它会检查./src文件夹中... 查看详情

linux下shell判断是不是配置ntp服务

检查ntp服务器是否有效linux查看全部1个回答好学者百科百度认证:北京惠企网络技术有限公司官方帐号关注成为第12844位粉丝1、连接上相应的linux主机,进入到等待输入shell指令的linux命令行状态下。2、其次,在linux命令行中输入... 查看详情

在 C 中读取命令行参数并检查它是不是为数字

】在C中读取命令行参数并检查它是不是为数字【英文标题】:Readingcommand-lineargumentinCandcheckingisitadigit在C中读取命令行参数并检查它是否为数字【发布时间】:2021-02-2810:37:40【问题描述】:关于我的目标的详细信息在C语言中,我... 查看详情

如何从命令行而不是 XCode 运行 DOCTest

】如何从命令行而不是XCode运行DOCTest【英文标题】:HowtorunOCTestfromcommand-line,notXCode【发布时间】:2009-07-0314:58:33【问题描述】:XCode3.1.2使用内置的OCTest单元测试。运行单元测试时我遇到了崩溃。我想运行一些额外的环境变量(... 查看详情

如何在linux终端下检查笔记本电池状态

...们想要从命令行中获得这些信息呢?并不是所有人都知道如何做到这点。前几天我的一个朋友询问我如何从他的Ubuntu系统里,在终端中查看他的笔记本电池的电量。这便是我写这篇文章的起因。在本文中我概括了三种简单的方法... 查看详情

如何查看mongodb是不是安装成功

参考技术A安装过程比较简单,遇到的问题,也顺利解决。(1)、检查yum源,发现没有mongodb。(2)添加yum源配置信息(3)再次检查yum源,发现已经有mongodb。(4)安装mongodb服务端(5)安装mongodb客户端(6)安装完后,启动mongodb... 查看详情