in between days

表参道で働くシニアのブログ

Gmailでメアドが無限に増殖できるワザの名前と起源について

Gmailには、+(プラス)記号を使うとメールアドレスを限りなく増殖できるワザがある。これはヘルプに「エイリアス」と説明されているし、ライフハック系のブログなどでも定番のネタだ。

別のアドレスやエイリアスからメールを送信する - Gmail ヘルプ

たしかにGmailだけで生成できるエイリアス(別名)といえば、このプラス記号のアドレスとあとはピリオドを使うくらいだけど、インターネットのメールシステムでエイリアスといえばもっと自由な仕組みであり、プラスはエイリアスの一部ではあるだろうけどイコールではないのではないか。

ということで、プラス記号でメールアドレスを増やすワザのことを一般に何と呼べばいいのか? そして、これはそもそもはどこからやって来た仕組みなのか? ちょっと調べてみました。

RFC 5233 サブアドレス拡張

ネットにおける世間のジョーシキならば、たいがいウィキペディアに書いてある。英語版の「Email address」には「Subaddressing」という項目があり、このメールアドレスの拡張手法が簡潔に説明されている。

Some mail services support a tag included in the local-part, such that the address is an alias to a prefix of the local part.

まず、プラス記号の後ろの部分は「タグ」だということがわかる。

RFC 5233, refers to this convention as sub-addressing, but it is also known as plus addressing, tagged addressing or mail extensions.

そして呼び名については、RFC 5233でサブアドレス(sub-addressing)として定義されているほか、「プラスアドレス」「タグ付きアドレス」「メール拡張」とも言われるようだ。

RFC 5233 - Sieve Email Filtering: Subaddress Extension

RFCとは、インターネットの技術仕様をまとめたドキュメント群。RFC 5233は、電子メールをフィルタリングするSieveというスクリプト言語の拡張仕様らしく、2008年に書かれている。

start - Sieve.Info

Sieveとは、自前でメールサーバーを構築するひとが、(いまどきそういう自宅サーバーがどれくらい使われているかわからないけど)Postfix(MTA)とDovecot(ローカルMDA)を組み合わせて使用する言語らしい。

DovecotとSieveを使ったメールのサーバーサイドフィルタリング | 株式会社インフィニットループ技術ブログ

Postfixとqmailはサブアドレスをどのように拡張するか

ここでPostfixというちゃんとしたメールサーバーが登場してきた。

先ほどのウィキペディアのSubaddressingには、この仕組みが使えるメールシステムが列挙されているんだけれど、ほとんどがGmailのようなWebメールのクライアントで、メールの配信をつかさどるソフトウェアといえるのは、このPostfixとqmailくらいだろうか。

とくにqmailは1997年から1998にかけてのとても短い期間しか開発されていなかったMTA(メール転送エージェント)で、Postfixはその直後に公開されて今でも開発が続けられているソフトウェアだから、プラスアドレスの歴史は1990年代までさかのぼることができる。

qmailのドキュメントを見てみよう。

qmailではユーザ(user)は自分のアカウントであるuserだけでなく、 user-anythingという形式のメイルアドレスも管理します。 user-anythingへのメイル配送は ~user/.qmail-anythingにより決められます。

http://man.qmail.jp/jman5/dot-qmail.html#subaddress

ここでようやく自分の記憶のなかのプラスアドレスがうっすらと立ち上がってきたのだけれど、当時はメールのエイリアスというより一般ユーザーがメーリングリストを立ち上げる画期的かつ革命的な技術として普及してた印象がある。

そのころまだインターネットの情報流通はWebだけでなくメールによる会議室的な仕組みとしてメーリングリストがさまざまなジャンルで有効だったのだけど、旧来の仕組みではメールサーバーの管理者権限がなければメーリングリストを設定できなかった。ところがqmailのサブアドレス拡張を使うと、ユーザーの権限でメーリングリストを運営できた(詳細は下記のリンクを参照)

メーリングリストの構築と運用(前編) (2/4):実用qmailサーバ運用・管理術(4) - @IT
第7章 .qmail ファイルの利用 - qmail で作る快適メールサーバー

Postfixのサブアドレス拡張もそれにならっていて、MySQLユーザ会のとみたまさひろid:tmtms @tmtmsさんが2014年末に書いたブログエントリーも参考になる。

Postfix の拡張メールアドレス - @tmtms のメモ

すべてはsendmailより出づる

ところで、qmailやpostfixの名前が出てきたなら、それ以前からメールサーバーのデファクトスタンダードとして君臨するSendmailではどうなのか? ということになるのだけれど、先ほどのとみたさんのブログ記事にその回答へのリンクがある。

結論から言うと、Sendmailが先だった。

sendmail の plussed usersが最初のはず。いつからあった機能かは知らんけど、qmail より古いのはたしか。とくにいじらなくてもデフォルトで有効。sendmail 本家の cf だけでなく、昔なつかしい WIDE CF でもサポートされていた由緒正しい機能。

plussed という単語が示すとおり、sendmail で拡張部分を示すデリミタは "+" で、postfix でのデフォルトのデリミタと同じ。このことからも、デリミタが "-" の qmail ではなく、sendmail との互換性のために用意された機能であることが推察される。sendmail も postfix も ~/.forward+hoge で共通だし。

postfix が qmail からパクったのは拡張アドレスというアイデアではなく、.forward から起動されるスクリプトから拡張部分(user+hoge の hoge の部分)を環境変数として参照できるようにしたところぐらいなんじゃないかと。……

http://ya.maya.st/d/201412a.html#s20141205_1

これで、sendmailがいつプラスアドレス拡張に対応したかが最後の課題となった。

ネットを検索していると、オライリーの『Sendmail』本に「Plussed detail addressing is ... available only with V8.7 sendmail and above」と記載されているらしい。手元にsendmail本がないのでさらに検索を続けると、当時のドキュメントがあった。

For example, a client might include the alias:

root: root+client1@server

On the server, this will match an alias for "root+client1". If that is not found, the alias "root+*" will be tried, then "root".

README For Sendmail Configuration With m4

これはSendmail 8.7.5に付属するcf(設定ツール)の文書で、1995年の公開。25年前までさかのぼれるということがわかった。

ところでこのドキュメントでは、いまとちょっと違うプラス付きアドレスの使う方が想定されていたようにみえる。rootをタグ付きのアドレスに分割してエイリアスを設定し、それ以外のタグ付きアドレスにメールが来たら、タグ部分を無視するという一種のデフォルト値のような考え方だったのではないだろうか。

まとめ

プラスの記号を使った「サブアドレス」は「プラスアドレス」「タグ付きアドレス」「拡張アドレス」などとも呼ばれており、歴史的には次のような経緯をたどっている。

  • 拡張そのものはSendmail 8.7からあった(1995年)
  • qmailで、ユーザー環境でスクリプトを起動できるようになった(1997年)
  • Postfixでもqmailのやり方を踏襲した(1999年)
  • Gmailがエイリアスとして引き継いだ(2004年)
  • Sieveの拡張仕様としてRFCに記載された(2008年)

こちらからは以上です。