> telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mailsv.local ESMTP Postfix
EHLO localhost
250-mailsv.local
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
MAIL FROM:test@mailsv.local
250 2.1.0 Ok
RCPT TO:test2@mailsv.local
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Subject:This is TEST Mail(TITLE)
This is TEST Mail.
.
250 2.0.0 Ok: queued as 56A34976F
QUIT
221 2.0.0 Bye
Connection closed by foreign host.
EHLO
メールサーバとの接続開始を宣言します。
MAIL FROM:
送信元アドレスを指定します。
RCPT TO:
送信先アドレスを指定します。
DATA
送信するメールのデータを指定します。
From: 送信者のメールアドレスを指定します。
To: 受信者のメールアドレスを指定します。
Subject: で始める行を先頭に記述すると、メールのタイトルになります。
データの設定を終了して、送信キューに貯めるためには、【.】ドットのみを入力して、Enteキーを押下します。
.
メールデータの送信終了を意味し、telnetによる接続を切断し、メールの送信を行います。
QUIT
送信キューにたまっているキューを配信して、終了します。
Subject
DATA コマンドを入力したのち、
Subject:送信タイトル
と入力することにより、送信タイトルを指定することが出来ます。
From
From:送信者メールアドレス
を入力することにより、受け取ったメールの送信者名のところにメールアドレスが表示されるようになります。
To
To:受信者メールアドレス
を入力することにより、受信者名が表示されるようになります。
上記コマンドをいちいち手入力していたら、面倒ですし間違いもあるでしょう。
そこで、下記のファイルを作成して下記にコマンドを実行すると、簡単にテストが出来ます。
このメールテストスクリプトを使用すると、送信時刻を埋め込んだ状態で簡単にテストメールを送ることが出来ます。
sendtest.shの内容
#!/bin/bash
DATE=`date "+%Y/%m/%d"`
TIME=`date "+%H:%M:%S"`
sleep 1;echo EHLO localhost
sleep 1;echo MAIL FROM:testuser@testdomain.org
sleep 1;echo RCPT TO:kakunin@uketoru.com
sleep 1;echo DATA
echo From:testuser@testdomain.org
echo Subject:This is TEST Mail [$TIME]
echo This is TEST Mail.
echo
echo $DATE $TIME
echo .
echo QUIT
※上記4か所のsleepコマンドは、省略すると送信元や送信先の情報をうまく設定できないことがあるようです。
簡単実行スクリプトの紹介
sh ./sendtest.sh | telnet 172.17.11.30 25 >> telnet-log
さらに、こんなスクリプトを作成して、呼び出すと便利かもね
#!/bin/bash
for count in $(seq 1 20)
do
TIME=`date "+%H:%M:%S"`
echo $count : $TIME
sh ./sendtest.sh $count | telnet 172.16.1.13 25 > telnet-log
done
※ echo Subject:This is TEST Mail [$TIME] の部分に、回数の引数を割り当てるようにしましょう
echo Subject:This is TEST Mail [$TIME] No.$1
for文は、
for i in {1..20}
do
done
という記述がスマートであるとのこと。
ただし、古いLinuxやUNIXでは、動作しないかもしれない。
両方知っていると応用が利くかもね。