#b-navbar { height:0px; display:none; visibility:hidden; }

ページ

2023年12月21日木曜日

メールシステムの裏側:SMTP、MDA、POP3の役割を解説




① Postfix(SMTP)がメールを配達し、② Dovecot(MDA)がそれをユーザーのポスト(メールボックス)に配布し、③ 最終的にユーザーは自分のメールクライアント(POP3)でこれらのメールにアクセスします。


  SMTPの役割 - 郵便屋さんとしてのPostfix   

メールシステムの世界では、SMTP(Simple Mail Transfer Protocol)がメールの配送役を担っています。

PostfixのようなSMTPサーバーは、まさに郵便屋さんのような存在です。

外部からのメールを受け取り、または外部へメールを送る役割を果たします。このプロセスでは、メールが送信者から受信者のメールサーバーへと「配達」されるのです。しかし、これだけではメールはまだ受信者の手に渡りません。



  MDAの役割 - 郵便ポストの管理人としてのDovecot    

次に、MDA(Mail Delivery Agent)の役割を担うDovecotが登場します。

DovecotはPostfixからメールを受け取り、それを各ユーザーのメールボックスに配送して保存する役割を果たします。

これは、郵便ポストの管理人が配達された郵便物を各家庭のポストに正確に保管するようなものです。Dovecotはまた、ユーザーがメールボックスにアクセスした際には、スムーズにメールを取り出せるように取り計らいます。



  POP3とメールクライアント - メールを取りに行く家の人   

ユーザーが自分のメールにアクセスするためには、メールクライアント(例えばOutlookやThunderbird)を使用します。

ここでPOP3プロトコルが活躍します。

メールクライアントを使って、ユーザーはDovecotによって管理されているメールボックスからメールを「取得」します。

POP3の働きで、メールはサーバーからダウンロードされ、その後サーバー上から削除されることが多いです。つまり、家の人が郵便ポストから郵便物を取り出して家に持ち帰るようなものです。



  結論 - メールシステムの連携と利便性   

このように、メールシステムはSMTP、MDA、POP3という異なるコンポーネントが協力しながら機能しています。

Postfix(SMTP)はメールを配達し、Dovecot(MDA)はそれをユーザーのポスト(メールボックス)に配布し、最終的にユーザーは自分のメールクライアント(POP3)でこれらのメールにアクセスします。

これらの部品がうまく連携することで、私たちはスムーズにメールを送受信することができるのです。










2021年5月12日水曜日

OCNモバイルone テザリングのためのAPN設定(マニュアル不記載)

OCNのモバイルワンで、
カタログの記載通りに行っても、
テザリングができませんでした。

結果として、APNの設定で
以下の欄に追加記入するとうまくインターネットに
テザリング接続できるようになりました。

-----------------------
APNのタイプ: default,mms,supl,hippri,tether
MVNOの種類: SPN
-----------------------

なんでマニュアルに書かないんですかねえ。


<当方環境>
・SIM: OCNモバイルone 新プラン/2021年4月加入
・スマホ: Android Google Pixel 3
・ノートパソコン: Windows 10 (からスマホにテザリング接続)

.

2019年10月4日金曜日

aタグのhrefに書いた javascript がうまく動作しない

aタグに javascript: と書いて、スクリプトを実行させるものは
疑似プロトコルと呼ばれ、多用されています。

しかし、ブラウザの特定の環境下(※)では
別窓(新規タブ)が開いてしまうようになり、
スクリプトが動作しません。


■解決する方法の例:
<a href="javascript:sampleFunction();">戻る</a>

<a href="#" onClick="sampleFunction();return false;">戻る</a>

上記のように修正します。
return false;は「#」によるページスクロール抑止のためです。

みなさんも、サイト内のコードをチェックしてみましょう。
エラーではないですが、動作の不具合を起こしやすいですし、
気が付きにくいです。

HTML Lint によると、疑似プロトコルは
Mozilla以外ではサポートされていません。
http://www.htmllint.net/html-lint/explain.html の235番。

今後は、
<a href="#" onClick="sampleFunction();return false;">
で書こうと思います。

-------------
※当方で問題があった環境:
Chromeの最新版 + プラグイン「Opens external links in a new tab1.0

2019年5月13日月曜日

fail2ban / recidive error: エラー

2019-05-12 05:39:30,493 fail2ban.actions[19862]: WARNING [postfix-sasl-iproute] Ban XXX.XXX.XXX.XXX
2019-05-12 05:39:32,324 fail2ban.actions[19862]: WARNING [recidive] Ban XXX.XXX.XXX.XXX
2019-05-12 05:39:32,327 fail2ban.actions.action[19862]: ERROR   ip route add blackhole XXX.XXX.XXX.XXX returned 200
2019-05-12 07:24:53,626 fail2ban.actions[19862]: INFO    [recidive] XXX.XXX.XXX.XXX already banned


recidive Interfere with other action

postfixなど他の Ban/Unban と recidive の Ban が
干渉してうまく recidive が動作しない。

例えば、recidive がせっかく Ban したものを、他がUnbanしたり、
他が Ban した後に、recidive が Ban しようとして重複Banでコケる。



/etc/fail2ban/filter.d/recidive.conf 
そこで上記を編集する。

*変更箇所(Change/Replace):  Ban -> Unban


*Before
failregex = ^(%(__prefix_line)s|,\d{3} fail2ban.actions%(__pid_re)s?:\s+)WARNING\s+\[(?!%(_jailname)s\])(?:.*)\]\s+Ban\s+\s*$ 


*After
failregex = ^(%(__prefix_line)s|,\d{3} fail2ban.actions%(__pid_re)s?:\s+)WARNING\s+\[(?!%(_jailname)s\])(?:.*)\]\s+Unban\s+\s*$


これで干渉せず正しく動作するようになる。
Interfere will be solved.




CentOS7 / fail2ban0.8.12



2017年10月2日月曜日

外部サーバー(DB、SMTB、Redisなど)との疎通確認を簡単にする方法

<使用コマンド>

netcatコマンドというのを使います。コマンド自体は、「nc」です。

# nc


<使うシチュエーション>

・複数台のサーバーでアプリケーションを構成する場合、
それらの間の、通信の確認だけをまず行いたいという時があると思います。

・プログラムソースレベルの問題なのか、
ネットワーク関連の問題なのかを切り分けるのにも使えます。




<ncコマンドが入っていない時>

# which nc で、インストール状態を確認して、
入っていないようでしたら

# sudo yum install nc nmap
または
# sudo apt-get install netcat



<コマンドの文法>

# nc -v 対象ホスト(IPアドレス等) ポート番号

「-v」により、通信の詳細を表示させます




-----------------------------------------------------------------
<利用例>

■SMTPサーバーとの疎通確認

(例)
SMTPサーバー: mail.sample.com
ポート番号: 25

# nc -v mail.sample.com 25
出力
Connection to mail.sample.com 25 port [tcp/smtp] succeeded!
220 mail.sample.com ESMTP


接続はOKなようです。
Ctrl+C を打つと、もとに戻ります。


逆に、何もレスポンスが帰ってこないようでしたら、
ネットワーク的につながっていないということです。

確認ポイント:

  • 相手サーバー名は正しいですか
  • ポート番号は正しいですか
  • ファイアーウォールなどで閉じていませんか(こっち側)
  • ファイアーウォールなどで閉じていませんか(相手側)
  • 相手側サーバーから、接続許可は出ていますか
  • 相手側サーバーは、動いていますか






■DBサーバーとの疎通確認

(例)
DBサーバー: sql.sample.com
ポート番号: 3306

# nc -v sql.sample.com 3306
出力
Connection to sql.sample.com 3306 port [tcp/ms-sql-s] succeeded!


接続はOKなようです。
何もレスポンスが帰ってこない場合については、前述のとおりです。
Ctrl+C を打つと、もとに戻ります。





■Redis /Elasticache サーバーとの疎通確認

(例)
DBサーバー: hoge.cache.amazonaws.com
ポート番号: 6379

# nc -v hoge.cache.amazonaws.com 6379
出力
Connection to hoge.cache.amazonaws.com 6379 port [tcp/*] succeeded!
入力
set hoge 123 など


接続はOKなようです。
何もレスポンスが帰ってこない場合については、前述のとおりです。
Ctrl+C を打つと、もとに戻ります。





.