LinuxServer 電子メールについてもう一度… メールをコマンドで送信

この記事は2012年10月11日に書かれたものです。内容が古い可能性がありますのでご注意ください。


LinuxServer 電子メールについてもう一度… メールをコマンドで送信

メール送信の仕組みと、メールデータの構造について簡単に説明してきましたが、
メールを送信するとき、クライアントとサーバの間ではどのようなやり取りをしているか
実際に見て行きましょう。

telnetを使ったメールサーバとのやりとり。

telnetとは、ネットワーク上のサーバを遠隔操作できるプログラムで
メール送信の場合は次のように使います。

[コマンド] # telnet smtp.senderserver.org 25

コマンド 対象サーバ 接続ポートの順でコマンドを打ちます。
SMTPのポートは25番です。

接続が上手く行くと、対象のSMTPサーバが応答します。

[応答] Trying [IP Address]…
Connected to smtp.senderserver.org.
Escape character is ‘^]’.
220 smtp.senderserver.org ESMTP Postfix

次にHELOコマンドで対象のSMTPサーバへクライアントのホスト(ドメイン)名を
告げ、SMTPのセッションを開始します。

[コマンド] helo mail.side-7w.org
[応答] 250 mail.side-7w.org
MAILコマンドで送信元のメールアドレスを指定します。

[コマンド] mail from:sender@sender.org
[応答] 250 2.1.0 Ok
RCPTコマンドで送信先のメールアドレスを指定します。

[コマンド] rcpt to:recipient@recipient.com
[応答] 250 2.1.5 Ok

DATAコマンドでメールデータを送る事をSMTPサーバへ伝えます。
最後にピリオド(.)だけの行でメールデータの入力するが終了します。

[コマンド] data
354 End data with .
From:sender@sender.org
To:recipient@recipient.com
Subject:Test

Test Mail
.
[応答] 250 2.0.0 Ok: queued as CB18EA00EB

DATAコマンド後に入力するFROMとTOのアドレスがメールヘッダに
記述されるメールアドレスになり、クライアント(MUA)で
使用されるメールアドレスになります。

また、FROMコマンドやTOコマンドで入力したアドレスは
エンベローブ・アドレスと呼ばれ、このアドレスを元にMTAは
送信元メールアドレスと宛先メールアドレスを判断します。

セッションを終えるにはQUITコマンドを使用します。

[コマンド] quit

[応答] 221 2.0.0 Bye

SMTPサーバへの接続から、メール送信、セッションの終了まで、
コマンド投入の度に3桁の数字とメッセージが表示されていました。

この3桁の数字をレスポンスコードと呼び、コマンドの実行結果を表します。

以下は代表的なレスポンスコードになります。

  • 220:サービス準備完了
  • 221:切断
  • 250:コマンド正常終了
  • 354:メール本文を入力待ち
  • 421:メールサービスの使用不可による切断
  • 450:メールボックスが利用できない
  • 451:データ処理中にエラー発生、アクション中止
  • 500:コマンド構文エラー
  • 501:コマンドパラメータエラー
  • 502:コマンドを利用できない
  • 550:宛先メールボックスが存在しない
  • 551:宛先ユーザが存在しない
  • メールサーバ(MTA)は何を使う

    前回まででメール送信の仕組みとSMTPコマンドについて説明してきました。

    これからLinuxServer上でメールサーバ(MTA)を構築していきましょう。

    構築をする前にLinuxServer上で使用できる3大MTAについて特徴を確認していきましょう。

    Sendmail --業界標準--

    Sendmailは1980年代に登場し、事実上の標準MTAとして多くの
    使用実績があります。

    Sendmailは多くの機能が盛り込まれており、正しく設定すれば柔軟で
    高度なメール配送を行うことが出来ます。

    しかし、柔軟で高度な配送を行う為の設定ファイルが複雑かつ難解になり、
    管理を難しくしています。
    さらに機能の豊富さから、プログラムの肥大化、複雑化を呼び、
    多くのセキュリティホールが見つかり、開発時には考えられなかった
    問題も発生しています。

    qmail --よりセキュアに--

    qmailはSendmailの問題点からシンプルで堅牢な、よりよいMTAを目指し、
    D.J.バーンスタイン氏が開発したMTAです

    Sendmailでは一つのプログラムが全ての機能を実行しており、大量のメールを
    扱う時に処理が遅くなる問題を抱えていましたが、qmailでは機能毎に
    プログラムと設定ファイルを分割した上で、プログラムは各々が独立、
    強調して動作します。

    各々のプログラムには、最低限の権限のみ与え、プログラム間の通信も
    セキュアになっており、プログラムの設定ファイルはシンプルです。

    また、Sendmailでは、全てのメッセージが一ユーザにつき、一ファイルで
    保存する形式(mbox形式)を採用していましたが、mbox形式では
    メッセージの処理に問題があると、全てのメッセージに影響する可能性が
    ありました。

    この問題を回避するため、qmailではメッセージ一通につき、
    一ファイルで保存する形式(Maildir形式)を作用しています。

    qmail独自の設計は、セキュリティを強固なものにしましたが、開発者の
    ポリシーと厳しいライセンス制限の為、Sendmailからの移行は大変難しくなりました。

    Postfix --高い互換性--

    PostfixはSendmailやqmailに比べ、後発で新しいMTAです。

    Sendmailとの互換性を保ち、設定を簡単にし、qmailのMaildir形式を
    採用する等、Sendmailとqmailの良い点を参考に、開発されました。

    qmailと同様に機能毎にプログラムを分割し、強調して動作するようになっています。
    また、プログラムには最低限の権限のみ与え、一つのプログラムに
    問題が発生してもシステム全体に影響はしません。

    Postfixは比較的緩やかなライセンス形態の為、標準のMTAとして採用している
    Linuxディストリビューションも有り、利用実績を増えてきています。

    Postfixでメールサーバを構築してみよう

    Sendmail、qmail、Postfix、それぞれに長所と短所があり、
    どれが一番優れているかは決められませんが、メールサーバの構築には
    入手が容易で設定が簡単なPostfixを使用し、メールサーバを
    構築してみましょう。

    • このエントリーをはてなブックマークに追加

    コメント

    1. この記事へのコメントはありません。

    1. この記事へのトラックバックはありません。

    PAGE TOP