Jak sprawdzić, czy smtp działa z wiersza poleceń (Linux) [zamknięte]


129

Mam serwer SMTP, na potrzeby tego pytania nazwijmy go: smtp.mydomain.com.

Jak sprawdzić, czy serwer SMTP działa? Czy mogę wysyłać e-maile ręcznie z wiersza poleceń Linuksa?


@Flexo Czy takich pytań nie należy przenosić, a nie zamykać? Wygląda na to, że należy do Serverfault
Balmipour

1
@Balmipour stare pytania nie mogą być przenoszone, nawet przez moderatorów. Istnieją dobre powody omówione na meta.stackexchange.com (w tej chwili nie mam pod ręką linku), ale zauważ, że pytanie nie zostało usunięte.
Flexo

Po sprawdzeniu kilku postów na Meta, wydaje mi się, że migracja „tylko” musi najpierw zostać ponownie otwarta. Może nie jest to możliwe w przypadku starych pytań. Chyba wiesz o tym lepiej niż ja. W każdym razie dziękuję za odpowiedź. Bardziej istotną kwestią, którą przeczytałem w meta postach, było to, że migracja wydaje się wymagać „szczególnie cennego” pytania. Nie żeby ten był bezużyteczny, ale to też nie jest klejnot. Nie rozumiem tego zbyt wiele, ponieważ SO jest przereklamowany w stosunku do innych witryn, takich jak ServerFault / Linux lub Superuser, ale będę prowadzić debatę na inny dzień (i tak należy do Meta, a nie SO :)
Balmipour

Odpowiedzi:


178

Składnia ustanawiania nieprzetworzonego połączenia sieciowego za pomocą telnetu jest następująca:

telnet {domain_name} {port_number}

Więc telnet do swojego serwera smtp jak

telnet smtp.mydomain.com 25

I skopiuj i wklej poniżej

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

Uwaga: nie zapomnij o znaku „.” na końcu, który reprezentuje koniec wiadomości. Linia „quit” kończy sesję.


6
Powinieneś poczekać na odpowiedź serwera na każde polecenie i przerwać, jeśli pojawi się błąd (kod wyniku 4xx lub 5xx).
tripleee

18
Zamiast hello velanapps.compisać helo velanapps.comi jeśli chcesz wiedzieć, które rozszerzenia smtp są dostępne, powinieneś napisać ehlo velanapps.com, jak w przykładzie SMTP
jgrocha

4
możesz wyjść, wpisując quit
rhand

2
Ta odpowiedź była przydatna, jednak w swoich testach pominąłem pierwszą linię. Nadal otrzymywałem e-maile z serwera smtp. Byłoby pomocne, gdybyś mógł trochę opowiedzieć o tym, co robi tutaj domena velanapps.com. Zawsze jestem ostrożny, gdy widzę domenę używaną do czegoś takiego, bez wyjaśnienia, co robi z naszymi danymi. Dzięki.
Jeremy

2
@Jeremy To tylko przykładowe dane, usunąłem je i dodałem symbol zastępczy ...
balanv

27

Jedyną rzeczą związaną z używaniem telnetu do testowania postfiksa lub innego protokołu SMTP jest znajomość poleceń i składni. Zamiast tego po prostu użyj swaków :)

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:~$ 

To tylko jedno proste polecenie.


3
Nie wiedziałem o swakach. Dzięki!
Peter Loron

Właśnie wypróbowany swaksjest świetny, wow! Dostępny jako standardowy pakiet w Debianie
Erdal G.

17
[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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.