ハイフンを含むアカウントを利用した際に生じた不具合?

TROUBLE REPORT


qmail についてと、その運用中の出来事

簡単な紹介と、出来事

qmail とは、http://www.jp.qmail.org/ でも歌われている通り、「安全確実で、信頼できて、高性能で、簡潔なメイル配送エージェント」 が売り文句になっているメールサーバです。

この qmail 、安全性も然ることながら、特に高性能の部分が魅力的に思います。複数のドメインを取り扱うことに特に優れていて、設定方法も慣れてしまえば基本的には直感的です。

ただ、柔軟なのが故、というか単に仕様の問題とも言えるのですけど、ハイフンを含めたアドレスを仮想ドメイン中で使用しようとしてみたときに、メールが正常に配信できない (どこかへ消えてしまった) という状況に見舞われてしまったのでした。

 

基本ドメインについてのお話

qmail ではたとえば基本的に "host.domain.xx.jp" を取り扱うように設定されていた場合は、"main" というアカウントを Linux へ登録することで、メールアドレス "main@host.domain.xx.jp" を利用することが出来るようになります。

そして qmail の特徴ですけど、この場合、"main" のホームディレクトリに ".qmail-sub" というファイルを用意してその中へ1行ほどの設定を記載してあげるだけで、"main-sub@host.domain.xx.jp" というメールアドレスを使用することが出来るようになるのでした。

 

仮想ドメインについてのお話

仮想ドメインを、すなわち複数のドメインを取り扱う場合、qmail ではまず /var/qmail/control/virtualdomains ファイルにて、取り扱うドメインとそれを管理するアカウントを登録することとなります。

 

たとえば "virtual.domain.xx.jp" というドメインを利用したい場合に、"virtual" というアカウントを用意したとします。このとき、"main@virtual.domain.xx.jp" というメールアドレスを作成したいとするならば、"virtual" アカウントのホームディレクトリにて ".qmail-main" というファイルを作成することになります。

そしてさらに基本ドメインのときと同じように、".qmail-main-sub" というように設定ファイルを用意してあげれば、"main-sub@virtual.domain.xx.jp" というアドレスが利用できるようになります。

 

今回の問題点

これはこれで、各アカウントへそれぞれが支配しているアドレスの管理を任せることができたり、または設定の都合でまとまりがあってわかりやすくて良いのですけど、そもそものアカウントにハイフン "-" が含まれたりする場合に問題が出てくることもあるのでした。

今回はそれに関するお話です。

 

基本ドメイン "host.domain.xx.jp" を取り扱う qmail 環境が用意されていたとします。

そこで仮想ドメイン "virtual.domain.xx.jp" を "virtual" アカウントの管理として登録して、そのドメインで "mail-addr@virtual.domain.xx.jp" を利用できるようにするとします。

そしてこのとき、Linux アカウントとして "virtual-mail-addr" を登録して、"virtual" アカウントのホームディレクトリへは ".qmail-mail-addr" を作成して、基本ドメインのこのアカウント "virtual-mail-addr@host.domain.xx.jp" へこのあて先のメールを転送するように設定してみました。

ところがそうしてみても "mail-addr@virtual.domain.xx.jp" へメールを出してみても、一向に届く気配が無いのでした。

 

ハイフンを含むアカウントを取り扱うには

問題点を探ってみる

そもそもどういう事態になっているのか、想像してみることにします。現在の設定は整理して書いてみると次のような感じになっています。

  • 基本ドメインは "host.domain.xx.jp" として登録されている。
  • Linux アカウント "virtual" を用意し、それが "virtual.domain.xx.jp" を管理している。
  • Linux アカウントとして "virtual-mail-addr" を登録し、ここを最終的な受信先とする。
  • "virtual" アカウントのホームディレクトリへ ".qmail-mail-addr" を用意し、この中で "virtual-mail-addr@host.domain.xx.jp" へメールを転送するよう設定する。

仮想ドメインから基本ドメインへ転送しているのは、そうしないとフォルダの所有権が違うために正常にメールを保存することが出来ないことと、それぞれのアカウントで好き好きに受信することが出来るようにするためです。

 

このとき、まずは "mail-addr@virtual.domain.xx.jp" へ送信したメールが正常に "virtual" アカウントのホームディレクトリ内にある ".qmail-mail-addr" を参照してくれるかを確認してみることにしました。

方法は簡単で、この中で本来の転送先と合わせて、自分が所有している (正常に稼動している) メールアドレスへも転送するように設定しなおしてみます。そして "mail-addr@virtual.domain.xx.jp" へメールを送信してみたのですけど、この時点で既にメールが届く事はないようでした。

ためしに ".qmail-mail-addr" ファイルを ".qmail-mail_addr" として "mail_addr@virtual.domain.xx.jp" へ送信してみたところ、こちらは正常に転送先にメールが届きましたので、設定自体には問題はないようです。

ところが、その後で "virtual-mail-addr" の受信メールを確認してみたところ、以前に送っていたメールがしっかりと届いているではないですか。".qmail-mail_addr" に変更する直前に試した分についても、ためしに追記した転送先には届いていないにも関わらず、本来のあて先にはしっかりと届いていたのでした。

これに気づくまでに 1 日おいてしまったので、遅れて届いたのか、それとも既に届いていたのかは判らず…。ともあれよくわからないながらも、もう一度 ".qmail-mail-addr" へ元へ戻してみたところ、今度はしっかりと、すぐにメールを受信することが出来たのでした。

ただし、ためしに追記したアドレスの方には届いてはくれないのですけど…。

 

ともあれ別のアカウントを上と同じ約束で登録してみましたけど、それはさっそく、すぐに利用できることを確認しました…。

いったいなんだったのでしょうね。事の発端を確認したときは確かに、"du" で Maildir の容量を確認して new/ ディレクトリに何も保存されていないことだけですけど確認したのですけど…。

ともあれ、まったく別のアドレス宛へ転送できないのはまた別のお話として、とりあえずハイフンがいくつか入るアドレスへの送信は、上手く行かなかったのはたぶん勘違いで、基本的には問題なく行えるということで良いのでしょう…。

 

ついでに調べた事柄

メール配送について調べていたついでに、知った仕様についてせっかくなので触れておこうと思います。

qmail では該当する ".qmai-" ファイルを探し出す際に、ハイフン以下の拡張アドレスと呼ばれる部分に現れるドット ( . ) は、コロン ( : ) に置き換えられるそうです。また、アルファベットの大文字はすべて小文字にされるとのことでした。

ですのでたとえば、"AB.cd@xxxx.xx.xx" 宛の仮想ドメインがある場合には、その設定ファイルは ".qmail-ab:cd" ということになるようです。

 

また、たとえば ".qmail-xxx" が該当する設定ファイルだったとして、そのファイルが存在しなかった場合は、続いて ".qmail-default" を参照し、それがあればその設定に従うとのことでした。

さらに ".qmail-xxx-yyy" の場合は、それが存在しなければ ".qmail-xxx-default" を参照し、さらにそれがなければ ".qmail-default" を参照するとのことでした。