skillup

技術ブログ

サーバー・ネットワーク

メール送信に関して その1 おおまかな送受信の仕組み

投稿日:

php-fpmを変えてから大分動きがよくなりましたね・・サーバーのレスポンスがはやい・・

今回から数回に分けてメール送信の仕組みについて学習していこうと思います。

インフラ系の知識がやっぱり怪しいもんで・・・

メール送信のしくみ

パソコンでメールを送るとまずはメールサーバー(メールを格納しておくサーバー)に置かれることが一般的です。宛先にいきなり届くのではなくここにプールしておきます。

メール送信時に使われるプロトコルをSMTPとよび、メールをプールしておくサーバーをSMTPサーバーと呼びます。使用されるポート番号は587が一般的です。

SMTPサーバーから別のメールサーバーへ

SMTPサーバーに格納されたメールは別の配送先のメールサーバーへ運ばれます。(ちなみに配送先がどこかを知るためにはDNSサーバーにアクセスする必要があります。)このメール配送に使われるプロトコルもSMTPでポート番号は25になります。

メール受信のしくみ

メールを受信するさいのプロトコロルはPOPやIMAPが一般的です。前者は一般のメールクライアントなどでよく使われ、後者はGmailなどのクラウド型のサービスが該当します。POPのポート番号は110が一般的です。

エラー対策

一般的なメールの送受信では以下のようなトラブルが起こることが一般的です。

配送エラー

  • 配送先メールサーバーが応答しない
  • 宛先のメールアドレスが存在しない
  • 宛先のメールボックスが満杯で受け付けられない

上記のような場合には、元のメール送信者に送り返されます。

不正中継防止

メールサーバーはどこから送られた誰あてのメールでも中継するわけではありません。信頼できないクライアントから外部の宛先メールを受け付けて送信するとスパムの温床になります。そのようなことに備え、一般的には下記のような対策をすることが一般的です。

  • メール送信サーバーは信頼できるクライアントの接続であれば受け付ける
  • メール受信サーバーは自分が管理しているドメインあてのメールであれば受け付ける

※信頼できるの定義は今後説明予定。

内部の処理

メールの送信受信などはほとんどの方がソフトから行うと思いますが、コンソールから対話形式で処理を行う場合以下のような流れになります。

SMTP

  1. 接続
  2. 接続確認 EHLO ホスト名
  3. 送信者アドレス指定 MAIL FROM:メールアドレス
  4. 受信者アドレス指定 RECP TO:メールアドレス
  5. メッセージ送信 DATA+テキスト入力
  6. リセット RSET
  7. 終了 QUIT

POP

  1. 接続
  2. 認証 USER ユーザー名 PASS パスワード
  3. メッセージサイズ確認 LIST
  4. メッセージUID(ユニーク番号) UIDL番号
  5. メッセージ取り出し RETR メッセージ番号
  6. メッセージ一部取り出し TOP
  7. 削除 DELE
  8. リセット RSET
  9. 終了 QUIT

参考資料

SoftwareDesign 2015年9月号
http://www.itbook.info/network/smtp.html
http://www.itbook.info/network/pop.html

-サーバー・ネットワーク
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

ファイル一括検索 xargsを利用した置換

実務でよくあるファイル一括置換。 sedに関しては以前も触れましたが使用範囲は多いですね。

ちなみにオプションがすごく大事でxargs …

no image

サーバー設定ファイルについて nginx

最近はwebサーバーのシェアとしてnginxが徐々に伸びてきていますね。 先日apacheについて解説をしましたが、nginxについて書きたいと思います。 Contents1 設定ファイル2 参考リン …

no image

nginxの設定ファイルの書き方に関して

Contents1 設定ファイルの構成と基本用語1.1 ディレクティブ1.2 コンテキスト2 基本的なディレクティブの遷移2.1 serverディレクティブ2.2 locationディレクティブ2.3 …

no image

SQLインジェクション

セキュリティ関係の知識がぬるいのでちょっとお勉強。 知っていることもあるが復習もかねて勉強を。 Contents1 SQLインジェクションとは?2 被害3 対策4 参考サイト・書籍5 ソース SQLイ …

no image

firewall復習 ansibleコマンドもかねて

CentOS7ではファイアーウォールの設定をfirewallというコマンドで行います。要はportのブロックですね。 以前下記リンクでもfirewallについて書いたんですが、あまり理解もできていなか …