レンタルサーバー・自宅サーバー設定・構築のヒント
レンタルサーバー・自宅サーバー設定・構築のヒント - レンタルサーバー・自宅サーバーの設定・構築情報を公開しています。

telnetを使ったsendmailのメール中継のテスト方法

2011年10月18日 2015年5月16日
smtp test telnet

sendmailのメール中継のテスト方法について、telnetを使う方法を簡単に sendmail設定(2)Submissionポート(サブミッション・ポート)& SMTP-AUTH(認証)を使ってみる で紹介していました。
そのtelentを使った方法を備忘録もかねて、1つの記事にしておきます。

telnetを使ったsendmailのメール中継のテスト方法

早速、いろんなパターンでテストしてみましょう。
対象となるSMTPサーバーのIPアドレスは、12.34.56.78とします。

通常のtcpポート 25 を使ったメール中継を確認する

  1. telnetで接続するクライアント端末がOP25Bの対象か確認する

    まず、tcpポート 25 のtelnetによる動作確認を行う場合は、telnetでアクセスするクライアント側が、OP25Bの規制にひっかかっていないか確認しておきましょう。
    ほとんどの国内IPSであれば、自PCに割り当てられたIPアドレスは、OP25Bの対象になっているはずなので、telnetでアクセスしても接続できません。
    とりあえず、Googleのメールサーバーへアクセスしてみてくだい。接続できれば、OP25Bの対象になっていないことになります。

    [ OP25Bの対象になっている場合 ]

    $ telnet alt1.gmail-smtp-in.l.google.com 25
    Trying 74.125.113.27...
    telnet: Unable to connect to remote host: Connection timed out
    $

    [ OP25Bの対象になっていない場合 ]

    $ telnet alt1.gmail-smtp-in.l.google.com 25
    Trying 74.125.113.27...
    Connected to alt1.gmail-smtp-in.l.google.com.
    Escape character is '^]'.
    220 mx.google.com ESMTP Service ready
    QUIT
    221 Service closing transmission channel
    Connection closed by foreign host.
    $

    サーバの設定ばかりやっていると、ついつい自分がIPSでログインしていることを忘れていることがあります。それで、えらく悩んでしまったので備忘録として残してます。
    OP25Bの対象の端末から確認しようとしてもできませんから、まずは、確認しましょう。
    もし、OP25Bの対象でないサーバーがない方は、この方法でのtcp ポート 25 の確認はできません。別の方法を検討しましょう。


  2. SMTP-AUTH(認証)とメールの中継を確認する

    /etc/mail/sendmail.mc が以下のような場合、tcp ポート 25 での認証はしないはずです。

    ...
    dnl --- コメントアウトしてあるものを解除します --- dnl
    dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
    dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
    TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
    define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
    ...
    dnl --- 25portは認証しないように設定します --- dnl
    dnl DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl
    DAEMON_OPTIONS(`Port=smtp, Name=MTA, M=A')dnl
    ...

    SMTP-AUTH(認証有り)になっていますが、tcpポート25に関しては、認証しない(M=A)ように設定してあります。

    M=A は、認証しない 設定です。
    M=a は、認証が必要とする 設定になります。
    大文字小文字では、全く意味が違うので注意しましょう。
    Postfixなら、以下のように smtpd_sasl_auth_enable が設定してある場合、認証が必要になります。
    但し、smtpd_recipient_restrictions での設定が重要で、ここでの設定がメールの中継を許可する条件になります。
    permit_sasl_authenticated が認証OKの場合、中継を許可するという設定になります。それ以前に設定されている条件が、 さらに優先的に処理されますので、ここでは、permit_mynetworks(mynetworksで設定されているホストからの中継は、すべて許可します) の設定が優先されます。
    ...
    smtpd_sasl_auth_enable = yes
    ...
    smtpd_recipient_restrictions = 
         permit_mynetworks,
         permit_sasl_authenticated,
         ...
    ...

    SMTP-AUTH(認証)しない(できない)かチェックしてみます。

    $ telnet 12.34.56.78 25
    Trying 12.34.56.78...
    Connected to 12.34.56.78.
    Escape character is '^]'.
    220 host.example.com ESMTP Sendmail 8.13.8/8.13.8; Thu, 13 Oct 2011 14:44:27 +0900
    AUTH LOGIN
    503 5.3.3 AUTH not available
    QUIT
    221 2.0.0 host.example.com closing connection
    Connection closed by foreign host.
    $

    AUTH not availableが出力され、ログインできなければOKです。

    メールの中継ができないかチェックしてみます。

    $ telnet 12.34.56.78 25
    Trying 12.34.56.78...
    Connected to 12.34.56.78.
    Escape character is '^]'.
    220 host.example.com ESMTP Sendmail 8.13.8/8.13.8; Thu, 13 Oct 2011 14:44:27 +0900
    mail from:hoge@example.com
    250 2.1.0 hoge@example.com... Sender ok
    rcpt to:test-user@yahoo.co.jp
    550 5.7.1 test-user@yahoo.co.jp... Relaying denied. Proper authentication required.
    data
    503 5.0.0 Need RCPT (recipient)
    QUIT
    221 2.0.0 host.example.com closing connection
    Connection closed by foreign host.
    $

    Relaying deniedが出力され、メールの中継ができなければOKです。


    簡単にコマンドの解説をしておきます。

    mail from:hoge@example.com
    hoge@example.comからのメールを送信要求しています。
    rcpt to:test-user@yahoo.co.jp
    test-user@yahoo.co.jpへのメールを配信要求しています。
    ここで、自サーバーの管轄外なので、Relaying deniedで受付拒否というのが正しい動作です。
    data
    メールの配信情報をいまから送ります・・・という宣言です。
    ここで、配信先が決定していない(Need RCPT (recipient)) というエラーで受付拒否となります。
    先のrcpt to:test-user@yahoo.co.jp が受け付けられていないので、エラーとなります。
    QUIT
    telnet終了。

    上記のように、ちゃんとメールの中継を拒否できればOKです。もし、何でもメールの中継を受け付けてしまうとスパムの踏み台にされかねません。注意しましょう。



Submission Port(587) + SMTP-AUTH (認証)を確認する

/etc/mail/sendmail.mc が以下のような場合、tcp ポート 587 では必ず認証が必要となるはずです。

...
dnl --- コメントアウトしてあるものを解除します --- dnl
dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
...
dnl --- Submission Port 587portは認証するように設定します --- dnl
dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl
DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl
...

SMTP-AUTH(認証)が必ず必要なことをチェックしてみます。

$ telnet 12.34.56.78 587
Trying 12.34.56.78...
Connected to 12.34.56.78.
Escape character is '^]'.
220 host.example.com ESMTP Sendmail 8.13.8/8.13.8; Thu, 13 Oct 2011 14:44:27 +0900
mail from:hoge@example.com
530 5.7.0 Authentication required
rcpt to:test-user@yahoo.co.jp
503 5.0.0 Need MAIL before RCPT
QUIT
221 2.0.0 host.example.com closing connection
Connection closed by foreign host.
$

認証していない状態では、Authentication requiredが出力され、メールの中継ができなければOKです。


簡単にコマンドの解説をしておきます。

mail from:hoge@example.com
hoge@example.comからのメールを送信要求しています。
ここでは、まで認証手続きを終えていないので、Authentication requiredで受付拒否というのが正しい動作です。
rcpt to:test-user@yahoo.co.jp
test-user@yahoo.co.jpへのメールを配信要求しています。
ここでは、先のmailコマンドが受け付けられていないので、Need MAIL before RCPTmailコマンドを先に必要というエラーで正しい動作です。
QUIT
telnet終了。

SMTP-AUTH(認証)後は、メールの中継ができることをチェックしてみます。

$ telnet 12.34.56.78 587
Trying 12.34.56.78...
Connected to 12.34.56.78.
Escape character is '^]'.
220 host.example.com ESMTP Sendmail 8.13.8/8.13.8; Thu, 13 Oct 2011 14:44:27 +0900
AUTH LOGIN
334 VXNlcm5hbWU6
aG9nZUBleGFtcGxlLmNvbQ==
334 UGFzc3dvcmQ6
cHBwd3d3
235 2.0.0 OK Authenticated
mail from:hoge@example.com
250 2.1.0 hoge@example.com... Sender ok
rcpt to:test-user@yahoo.co.jp
250 2.1.5 test-user@yahoo.co.jp... Recipient ok
data
354 Enter mail, end with "." on a line by itself
TEST Relay 587
.
250 2.0.0 p9D5iRKZ015644 Message accepted for delivery
QUIT
221 2.0.0 host.example.com closing connection
Connection closed by foreign host.
$

上記では、Message accepted for deliveryで、メールが正しく受け付けられたのでOKです。


簡単にコマンドの解説をしておきます。

AUTH LOGIN
今からSMTP-AUTH(認証)します・・という宣言です。
以降、SMTP-AUTH(認証)を終えるまで、Base64によるエンコードされた文字列でやり取りします。
  • VXNlcm5hbWU6Username: ( Base64 Encode前 )
    ユーザ名を促すプロンプト表示です。次行に、 ( Base64 Encodeされた )ユーザ名を入力します。
    例)hoge@example.comaG9nZUBleGFtcGxlLmNvbQ== ( Base64 Encode後 )
  • UGFzc3dvcmQ6Password: ( Base64 Encode前 )
    パスワードを促すプロンプト表示です。次行に、 ( Base64 Encodeされた )パスワードを入力します。
    例)pppwwwcHBwd3d3 ( Base64 Encode後 )
Base64によるエンコード、デコードは、http://ostermiller.org/calc/encode.htmlにて行うことができます。
mail from:hoge@example.com
hoge@example.comからのメールを送信要求しています。
rcpt to:test-user@yahoo.co.jp
test-user@yahoo.co.jpへのメールを配信要求しています。

data
メールの配信情報をいまから送ります・・・という宣言です。
メール内容をここで入力します。最後は、’.‘(ピリオド)で終了となります。
QUIT
telnet終了。

最後にSubmission Portから送信したメールが正しく届いたか確認できたらOKです。



いかがだったでしょうか?
前半部分は、tcp ポート 25 を使った確認なので、しっかりやっておく必要があります。
後半部分は、sendmail設定(2)Submissionポート(サブミッション・ポート)& SMTP-AUTH(認証)を使ってみる でも同じようなことを記載しているので、詳しい説明もいらないと思います。

上記のような方法に限らず、少なくとも、sendmailの設定を変更したら、スパマーの踏む台サーバーにならないようにしっかり確認しておきましょう。
ご利用のブラウザは、広告ブロック(AdBlockなど) が適用となっていませんか?
このサイトでは、コンテンツの一部が非表示、あるいは、コメント、お問い合わせの投稿ができない検索ができないことがあります。


関連記事 :

sendmail設定(2)Submissionポート(サブミッション・ポート)& SMTP-AUTH(認証)を使ってみる

前回までの関連記事 sendmailを使って内部メールをgmailへ転送する Dovecotでメールを受信する sendmail設定(1) ...

sendmailを使って内部メールをgmailへ転送する

今回は、sendmailです。 といっても、sendmailを本格的使いだすとメンテナンスも大変ですし、設定も面倒です。しかし、かといって、シ ...

Postfix で Submissionポート(サブミッション・ポート)& SMTP-AUTH(認証)を使ってみる

前回までの関連記事 Debian(Ubuntu)で postfix を使ってみる postfixを使って単純に全メールを1つのメールサーバー ...

sendmail設定(1)必要最小限の設定で使ってみる

以前の記事 sendmailを使って内部メールをgmailへ転送する では、SendMailのインストールと、SendMailを使ったメールのG ...

sendmail設定(3)Submissionポート(サブミッション・ポート)& SMTP-AUTH(認証)& STARTTLSを使ってみる

前回までの関連記事 sendmailを使って内部メールをgmailへ転送する Dovecotでメールを受信する sendmail設定(1) ...



コメントを投稿 :

お名前 *

メールアドレス *
( メールアドレスが公開されることはありません。)

サイトアドレス

コメント *

* 印の項目は、入力が必要な項目です。




最近投稿の記事

[ 画像提供元 : Amazon ] 先日、1TBのディスクの入れ替え時にバックアップをとろうとディスクコピーを行いました。 その際 ...

Windows で Linux ファイルシステム Ext4 のディスクをマウントするには? Ext3Fsd が、おそらく、最も簡単なツール ...

今回は、Windows で Compass を使ってみました。 Compass とは、 Sass(サス、Syntactica ...

今回は、Anti Adblock を使ってみました。 Anti Adblock とは、 そもそも Adblock という ウェブ ...

デスクトップ環境でない サーバーで、Webページのキャプチャー画像をコマンドで撮る には、wkhtmltoimage, CutyCapt ...


さくらのVPS 全プラン リニューアルです。(石狩(北海道)も選択可)


root権限ありで ¥685 / 月 ~ と非常にリーズナブルな CPU 1(core)の 512 プランから、 最高 CPU 10(core), メモリ 32(GB), SSD容量 800(GB) までとプランが充実。
ディスクは、SSDとHDDの選択が可能になった他、データセンターは人気の東京、石狩(北海道)となりました。

また、どのプランでも好きなOSが選べます
( CentOS, Fedora, Scientific Linux, FreeBSD, Ubutu, Debian )

管理人もおすすめのVPSです。
試用期間がありますから、一度、お試しを!!

詳しくは、http://vps.sakura.ad.jp/さくらのVPSのサイトへ へどうぞ!!

カテゴリ


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。


Serverman@VPS 完全1ヶ月無料 キャンペーン実施中です。
最近、スワップにも対応した Serverman@VPS は、かなりリーズナブルかもです。

  • メモリ1GB~2GBのEntryプラン :月額:490円
  • メモリ2MB~4GBのStandardプラン :月額:980円
  • メモリ4GB~8GBのProプラン :月額:1,980円

新規申し込みで1ヶ月間完全無料となるキャンペーンを実施中です。
Serverman@VPSの特徴は、安さとIPv6対応です。また、初期設定費0円もポイントです。

IPv6でちょっと遊んでみたい方には、おすすめかもしれませんね。最低利用期間もありませんから、気に入らないときは即解約もできます。

Serverman@VPSの詳細については、 http://dream.jp/vps/ Serverman@VPSのサイトへへどうぞ。



KVM採用 ConoHa VPSは、時間単位で借りれる便利なVPSです。


ConoHa VPS は、初期設定費0円最低利用期間無し時間単位で清算可能、 さらに、Web APIを使って自動化を図ることもできる便利なVPSです。

海外サーバー設置も可能で、ローカル接続にも対応と、かなり、機能豊富なサーバーです。

新規ユーザ登録で、クーポンもらえますから、まずは、お試しですね。

ConoHa VPSの詳細については、
http://www.conoha.jp/ へどうぞ。

KVM採用 お名前.com VPS(KVM) 2G プラン 初期設定費無料 キャンペーン 実施です。


メモリ2GBプラン CPU:3core、Disk:200GB
月額:1,153円から (初期設定:1,680円0円)

さくらのVPSがリニューアルされてもなんのその。
1GBメモリ / 2Core を ¥834 – の格安価格で提供中です!
間違いなくスペックからすると割安感ありです。
年間割引時の途中解約で返金がないのは、 ちょっと残念ですが、それでもこの割安感は魅力です。

まずは、お試しですね。

お名前.com VPS(KVM)の詳細については、
http://www.onamae-server.com/vps/ へどうぞ。(お試し期間が15日あります。)



  • ソーシャルブックマーク

  • はてなブックマークへ追加するはてな登録数
ページトップへ
Time : 0.2802 [s]