LoginSignup
0
2

More than 5 years have passed since last update.

XCLIENTコマンド対応SMTPクライアントツール

Last updated at Posted at 2018-05-27

XCLIENTコマンドに対応したメールサーバのテスト用のSMTPクライアントツールを作成します。

XCLIENTコマンド対応SMTPクライアント目的

以下のエントリで構築したテスト用のpostfixのアクセスコントロールの確認を行うため、送信元アドレス、ホスト名を指定することが可能なXCLIENTコマンドに対応したSMTPクライアントツールを作成します。
https://qiita.com/keikmobile/items/2440ecebdd02adccc6a1

XCLIENTコマンドについては以下を参照ください。
http://www.postfix.org/XCLIENT_README.html

XCLIENTコマンド対応SMTPクライアントツール仕様

XCLIENTコマンド対応SMTPクライアントツールの仕様は以下とします。

  • SMTPでメッセージ送信が可能なこと。
  • XCLIENTコマンドでNAME,ADDR属性を指定可能なこと。
  • XCLIENTコマンドの発行の有無は指定可能なこと。
  • 以下パラメータはコマンドラインオプション指定可能なこと。
    • SMTP server host
    • SMTP server port
    • XCLIENT NAME attribute
    • XCLIENT ADDR attribute
    • MAIL FROM Reverse-Path
    • RCPT TO Forward-Path
    • SMTP Contents (message)
  • SMTPクライアントが発行するSMTPコマンドのシーケンスは以下の通りとする。
    • EHLO
    • XCLIENT
    • MAIL FROM
    • RCPT TO
    • DATA
    • QUIT
  • 4xx,5xx応答を受けた場合は、QUITコマンドを発行して、終了すること。
  • [TODO] SMTPサーバがXCLIENT拡張をサポートしていない場合、XCLIENTコマンドの発行はしない。
  • [TODO] 各コマンドのレスポンスタイムアウトを実装すること。タイムアウトした場合、セッションを終了する(QUIT)
  • [TODO] 各コマンドのリクエスト、レスポンスをログ出力すること
  • [TODO] ログの出力有無は、指定可能とすること。

SMTPクライアントツール実装

SMTPクライアントツールの実装は以下の方針とします。

  • 言語はperl。

実行サンプル

$ ./smtp_xclient.pl --help
Usage: ./smtp_xclient.pl [options] 
[options:description:defalt]
--host                : smtp host : 127.0.0.1
--port                : smtp port : 127.0.0.1
--xaddr               : xclient addr
--xname               : xclient name
--helodomain          : helo domain : localhost
--mailfrom            : mail from   : localhost@localhost
--rcptto              : rcpt to     : vagrant@localhost
--message_file        : message file 
--help                : help
$ 
$ ./smtp_xclient.pl 
220 host.localhost ESMTP Postfix
EHLO localhost
250-host.localhost
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-XCLIENT NAME ADDR PROTO HELO REVERSE_NAME PORT
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
MAIL FROM:<localhost@localhost>
250 2.1.0 Ok
RCPT TO:<vagrant@localhost>
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
TEST MESSAGE
.
250 2.0.0 Ok: queued as 985D420563
QUIT
221 2.0.0 Bye
$

github
https://github.com/keikmobile/smtp_xclient

0
2
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
0
2