isLandcenter 非番中

ブログトップ | ログイン

postfix 送信キューの確認と削除


- 送信キューの確認 -


mail2:~ # postqueue -p
-Queue ID-  --Size-- ----Arrival Time---- -Sender/Recipient-------
C16E980855B      276 Wed Aug 19 13:34:44  dummy@islandcenter.jp
      (connect to mail.islandcenter.jp[153.125.134.9]:25: Connection timed out)
                                         knakaj@mail.i.islandcenter.jp

8713D80855C     2589 Wed Aug 19 15:31:00  MAILER-DAEMON
      (connect to mail.islandcenter.jp[153.125.134.9]:25: Connection timed out)
                                         dummy@islandcenter.jp

-- 2 Kbytes in 2 Requests.


- 送信キューディレクトリ -


mail2:~ # ls /var/spool/postfix/deferred/ -al
total 0
drwx------  5 postfix root     33 Aug 20 13:50 .
drwxr-xr-x 16 root    root    201 Aug  7 02:12 ..
drwx------  2 postfix postfix  25 Aug 20 13:50 2
drwx------  2 postfix postfix   6 Aug 20 10:15 8
drwx------  2 postfix postfix   6 Aug 20 10:15 C
mail2:~ # ls /var/spool/postfix/deferred/2 -al
total 4
drwx------ 2 postfix postfix  25 Aug 20 13:50 .
drwx------ 5 postfix root     33 Aug 20 13:50 ..
-rwx------ 1 postfix postfix 925 Aug 20  2020 24D1680855B




- 全て削除 -


mail2:~ # postsuper -d ALL
postsuper: Deleted: 1 message
mail2:~ #
mail2:~ # cat /var/spool/postfix/deferred/2/24D1680855B
cat: /var/spool/postfix/deferred/2/24D1680855B: No such file or directory

mail2:~ # postqueue -p
Mail queue is empty
mail2:~ #





タグ:
by islandcenter | 2020-08-20 14:09 | Linux | Comments(0)

何かと引きこもりになりがちな今日この頃です。テーマを決めないと次の目標が見つからないので、電子メールのシステムを勉強してみる事にしました。

電子メールシステムは難しい? openSUSE Leap 15.2 でメールサーバ

- まずは Telnet でメールを送る -

これまで、馬鹿の一つ覚えの様に GroupWise 一辺倒だったのですが、これではイカンと一念発起です。

- openSUSE Leap 15.2 では Postfix はデフォルト -

openSUSE Leap 15.2 では、デフォルトで Postfix MTA がインストールされています。OSインストールの際にDNSと Hostname を設定したので、SUSE Linux では、自動的に、 /etc/postfix/main.cf の hostname 変数には FQDN がセットされています。

SUSE のデフォルトです。

mail:~ # cat /etc/postfix/main.cf | grep islandcenter
myhostname = mail.i.islandcenter.jp
mail:~ #

まずはここから何を行えるかを見てみましょう。

- telnet のインストール -

Postfix はじめ MTA を学ぶためには、一番基礎となるのが telnet を使った、メールの送信です。telnet で基本的な操作をして、メール(MTA) のプロトコル学んでください、という事ですね。

telnet は deprecated (非推奨) なプログラムなので、手動でインストールします。

yast > Software management > "telnet" を検索してスペースキーでチェックしてインストールできます。

メールサーバー入門、とりあえず openSUSE Leap 15.2 初期設定の postfix から telnet してみる_a0056607_12110468.png

- telnet でメールを送る -

次に、root に telnet でテストメールを送ってみます。太字は実際タイプした文字です。


knakaj@mail:~> telnet localhost 25
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 mail.i.islandcenter.jp ESMTP
ehlo mail.i.islandcenter.jp
250-mail.i.islandcenter.jp
250-PIPELINING
250-SIZE
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250-SMTPUTF8
250 CHUNKING
mail from: <knakaj@mail.i.islandcenter.jp>
250 2.1.0 Ok
rcpt to: <root@mail.i.islandcenter.jp>
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
Subject: Hello Root!

Hello Im your user...

.
250 2.0.0 Ok: queued as 064D8808541
quit
221 2.0.0 Bye
Connection closed by foreign host.
knakaj@mail:~> 

- mail コマンドでメールを読む -

デフォルト(無指定状態)では postfix は mbox 形式です。



mail:~ #
You have mail in /var/spool/mail/root
mail:~ #
mail:~ # ls /var/spool/mail/ -al
total 4
drwxrwxrwt  2 root root  18 Aug  7 17:06 .
drwxr-xr-x 11 root root 132 Aug  7 10:59 ..
-rw-------  1 root root 588 Aug  7 17:06 root
mail:~ # mail
Heirloom mailx version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N  1 knakaj@mail.i.isl Fri Aug  7 17:06   15/588   Hello Root!
? 1
Message  1:
From knakaj@mail.i.islandcenter.jp  Fri Aug  7 17:06:08 2020
X-Original-To: root@mail.i.islandcenter.jp
Delivered-To: root@mail.i.islandcenter.jp
Subject: Hello Root!
Date: Fri,  7 Aug 2020 17:03:40 +0900 (JST)
From: knakaj@mail.i.islandcenter.jp

Hello Im your user...


? quit
Saved 1 message in mbox
mail:~ # ls mbox -al
-rw------- 1 root root 599 Aug  7 17:07 mbox
mail:~ #


メールを読み終わると、/etc/spool/mail にあったメールは ~: mbox ファイルに本文がマージされ移動します。

- メールの保存形式を Maildir に変える -

- Maildir に変更 -

- mbox と Maildir との違い

mbox は、旧来のメール保管方式で、私が初めて触った HP-UX もこの方式でした。受信したメールは SUSE Linux では /var/spool/mail/User_name ファイルにスプールされ、mail コマンドで読むと /home/User_Home/mbox ファイルに切り貼りされます。

後方互換性は良いのですが、単一のテキストファイルをロックして、該当のメールを切り貼りするため、スプールや受信メールが破損しやすいという欠点があります。

一方、Maildir 方式は /home/User_Home/Maildir の下に tmp, new, cur, というディレクトリが作られ、メール本文はメール毎に別ファイルとして tmp -> new -> cur のそれぞれのディレクトリにスプール -> 未読 -> 既読、とステータスを変更しながらハードリンクを切り替える方式です。一見複雑ですが、動作が単純なので、現在はこの方法が主流の様です。

mail コマンドは、デフォルトで mbox を使いますが、openSUSE Leap 15.2 はじめ最新の Linux の mail コマンドでは

localhost :~ > mail -f ./Maildir

を実行することで従来の mail コマンドと同じ処理をしてくれるわけです。

/etc/postfix/main.cf の次の一行をコメントアウトして postfix を再起動します。

mail:~ # cat /etc/postfix/main.cf | grep home_mailbox
# The home_mailbox parameter specifies the optional pathname of a
#home_mailbox = Mailbox
home_mailbox = Maildir/
mail:~ #

mail:~ # postfix check
mail:~ #
mail:~ # systemctl stop  postfix.service
mail:~ # systemctl start postfix.service
mail:~ #

Telnet でメールを送ってみた。

mail:~ # ls -l ./Maildir/
total 0
drwx------ 1 root root  0 Aug  8 14:48 cur
drwx------ 1 root root 62 Aug  8 14:48 new
drwx------ 1 root root  0 Aug  8 14:48 tmp
mail:~ #
mail:~ # mail -f ./Maildir/
Heirloom mailx version 12.5 7/5/10.  Type ? for help.
"./Maildir/": 1 message 1 new
>N  1 knakaj@mail.i.isl Sat Aug  8 14:45   15/546
? 1
Message  1:
From knakaj@mail.i.islandcenter.jp Sat Aug  8 14:45:48 2020
X-Original-To: root@mail.i.islandcenter.jp
Delivered-To: root@mail.i.islandcenter.jp
subjecct: to root home_dir ...!
Date: Sat,  8 Aug 2020 14:45:48 +0900 (JST)
From: knakaj@mail.i.islandcenter.jp

open your mail dir !

Thnks....

? q
"./Maildir/" updated.
mail:~ #

一応、デフォルトの mbox から ~/Maildir/ 形式に変わったようです。





isLandcenter.jp










by islandcenter | 2020-08-14 12:11 | Linux | Comments(0)

なぜ、電子メールシステムは難しく感じるか

- ついに Postfix に手を出す -

今まで電子メールと言えば Gmail か Novell GroupWise と、あとはレンタルドメインのメールシステムしか扱ってこなかった私が Postfix に手が出なかった理由はいくつかあります。やっぱり

「電子メールは難しい」

という先入観でした。Psttfix の勉強を始めて改めてその難しさに気が付きました。




- どこまで何を目標とするか -

ITエンジニアやプログラマの初心者がまず陥る問題点として、「何をどこまでヤルか」を自己定義できない事があります。いわゆる「要件定義」という奴なのでしょうが、ここでぶつかると、研究に必要な機材、ソフトウェア、教科本の選択など、ありとあらゆる問題点にぶち当たります。つまり、根本的に技術者としてのセンスがない。

本来、アプリケーション向けの技術者ではないので、手持ちの機材、環境でできる事、できないから調達しなければならないサービスや機材、ソフトウェアも検討しなければなりません。

私のテスト環境は、一般的な DSL の通信回線で、ほぼ固定IPで、ドメインの逆引きもできますが、DNSの MX レコードがないため、たとえ自宅サーバーからメールの送受信ができる様にしたいと思っても、かなり困難で、若干の運用費用が掛かります。そもそも自宅環境から、ポート開放して公開する事も難しい。まだ CGN ではなくシェアド IP じゃないのですが MX レコードを使える無料DNSってなかなか見つからない。


そこで、自ドメイン名でメールの受信は目標から外すことにします。最終的には、自メールサーバー経由でインターネット宛にメールが転送でき、レンタルサーバーの受信メールを、自メールサーバーに転送できれば良いのですが、道のりは遠そうです。

最終的な目標は、自ドメインのレンタルサーバースペースに Postfix と Dovecot を導入して運用することです。


- DNS, MTA, POP/IMAP, MUA, ファイアウォール, 何が原因だ -

電子メールのシステムを構築するうえで面倒なのは、DNS とMTAとの関係、MTA と POP/IMAP の関係、POP/IMAP とメーラの相性問題、ファイアウォール、認証システム、メールリレーなどのセキュリティ全般を一つ纏めて面倒を見なければならない事。どこか一つに問題があれば、メールが読めない、送れない、重大なセキュリティホールになり易い。こんな面倒な問題になってしまいます。

(正直言って GroupWise の Internet Agent で止めときゃ良かった)

- クローズした環境でのトレーニングが難しい -

もし、一つの企業なり組織なりの内部のネットワーク内でメールの読み書きができればいいのであれば、さほど苦労はいらないでしょう。

しかし、電子メールは社外とのやり取りが重要なので、こちらから送っても無効が拒否してしまっては役に立ちません。逆もありえまず。しかも普及しきった電子メールは、社会のインフラであり、わずかな時間のサービス停止も、エンドユーザは好みません。

つまりリハーサルなしの一発勝負なんですね。これも電子メールに中々手が出ない理由の一つです。


- 用途、目的により設定が異なる -

つまり要件によって設定を検討しなければならないという事。仮想化システムや Web LAMP, Zabbix, Samba など一発設定してしまえるシステムと違い、メールのシステムは、目標となる要件定義から設定までやる事が幅広すぎます。

そして、SUSE LInux お得意の YaST ツールが全く役に立たない。YaST で GUI 設定ができないのが Linux のメール構築なのです。 GroupWise の GUI 設定は有難かった。

- 伝統的で資料は豊富だが情報が古い -

インターネットの歴史は電子メールとともにあり、インターネットサービスの中では長い歴史を持っています。

それだけに、資料は豊富ですが、一概に書籍では古い資料が多く、最新の情報を求めると、どうしても断片的な情報に偏りやすい傾向にあります。古い「教科書」を頼りにすれば、セキュリティ上の問題が軽くかたられたり、最新の情報を求めると、分断された情報の破片だけが手に入ります。

横断的に「実用的」な資料が少ない所が困った所です。


- 電子メールは SaaS に一番適したシステムで触れる機会がない  -

電子メールは、クラウドサービスの一部として SaaS に最も適したサービスです。インターネット普及期の1990年代中頃のように、構内ネットワークの重要なコンポーネントの座を譲り、いまや「メールサービスを借りる」ことが時代の流れなのですね。

そういった中では「電子メールシステムのブラックボックス化」が進行しています。一般の社内SEが管理するより、SaaSサービスに一括「お任せ」した方がコストは低い。

--

それでも ISP/ASP のサービスでは電子メールは重要なコンポーネントですし、SaaS に頼らない、あるいは頼れない場合は、電子メールシステムのスクラッチアンドビルドとメンテナンスは欠かせません。

ということで、少なくとも「電子メールのしくみ」というものを勉強するため、Postfix/Devecot に挑戦してみます。

メールサーバー入門、とりあえず openSUSE Leap 15.2 初期設定の postfix から telnet してみる



by islandcenter | 2020-08-12 12:15 | Linux | Comments(0)