LoginSignup
22
21

More than 5 years have passed since last update.

SMTPのテストを行うシェルスクリプト

Last updated at Posted at 2014-11-22

SMTPサーバの接続確認をする際、テストメールを送信することがあります。
最初のうちはtelnetコマンドを手で叩いて確認してましたが、だんだん面倒になってきたので、シェルスクリプト化してみました。
内部ではncコマンドを叩いているので、ncがない場合別途インストールしてください。
base64のエンコードはこのあたりからどうぞ。

bash=mail.sh
#!/bin/bash

host=メールサーバホスト
port=ポート番号(25、465、587とか)
user=SMTP認証のユーザ名(base64エンコードしたもの)
pass=SMTP認証のパスワード(base64エンコードしたもの)
to=宛先メールアドレス
from=送信元メールアドレス

function mail_input {
  echo "EHLO localhost"
  sleep 1
  echo "auth login"
  echo "$user"
  echo "$pass"
  echo "mail from: $from"
  echo "rcpt to: $to"
  echo "data"
  echo "To: $to"
  echo "From: $from"
  echo "Subject: Hello Mail Server"
  echo ""
  echo "test mail"
  echo "."
  echo "quit"
}

# send
mail_input | nc $host $port

実行権限を与えて実行!

$ chmod +x mail.sh
$ ./mail.sh

実行結果

$ ./mail.sh 
220 hostname ESMTP Postfix
250-hostname
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-AUTH PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
334 xxxxxxxx
334 xxxxxxxx
235 2.7.0 Authentication successful
250 2.1.0 Ok
250 2.1.5 Ok
354 End data with <CR><LF>.<CR><LF>
250 2.0.0 Ok: queued as AFBEE10A9C52
221 2.0.0 Bye

SMTP認証が不要な場合、auth login、$user、$passの3行を削ればOK。

22
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
21