メールアドレスに使える文字の話

「メールが送れない」
と連絡が来た。
「送ろうとするとなんかエラーとなる。」
と言うのでエラーメッセージを読んで貰ったところ、
「501 Bad recipient address syntax」
というようなエラーが出ている模様だ。
このエラーは読んだ通り「宛先アドレスの書き方に問題がある」状態なので、送ろうとした相手先アドレスを見ると先頭と@の直前に「-(ハイフン)」が使われている。
メールアドレスに使える文字はRFC 2822内の”Internet Message Format”セクションで規定されていて、「-(ハイフン)」を先頭に使うことは特に禁止はされていない。
ところが、先頭に「-(ハイフン)」があるとUNIX系OSのコマンドに文字列を渡す際にオプションと混同される危険性があるので、UNIX系OS上で動作するMTAによっては先頭に「-(ハイフン)」を使うことを禁じているものがある(Postfix等)。
今回のエラーはまさにこれに引っかかった様で、現在のところはこの宛先にメールを送る手段が存在しない(Postfixを使っている場合はオプションで許可することも出来る様だ)ので、送るのを諦めて貰うことになった(汗)。

プロバイダによってはユーザーが希望するアドレスを使うことが出来るが、先頭の文字を英小文字に限定しているところがある(ソフトバンクとかOCNとか)。
反対に制限を設けていない(もしくは過去に設けていなかった)プロバイダやキャリアもあるが、そのようなアドレスを持っている人は受け取れないメールもあるということになるので、出来れば先頭には英小文字を使うようにしたほうが良さそうだ。

参考までに携帯電話各キャリアでの使用文字の制限は以下の通り(2013年10月10日現在)
au
・Eメールネーム文字数が、30文字まで利用可能です。
・半角英数字、小文字、「- (ハイフン)」、「. (ピリオド/ドット)」、「_ (アンダーバー)」が使用できます。
・「.」をアドレス内での連続使用や「.」をEメールネームの最初/最後に使用することはできません。また最初に数字の「0」を使用することもできません。

docomo
・半角英数字および「_」(アンダーバー)、「.」(ピリオド)、「-」(ハイフン)の記号にて、3字以上30字まで設定することができます。
ただし、「.」は「..」などのように連続で使用することや@マークの直前で使用することはできません。
・「スペース(空白)」は使用できません。
・英字を入力する場合、大文字小文字の区別はありません。すべて小文字で表示されます。(注:大文字の使用は不可ということ)
・先頭文字は英文字にしてください。

ソフトバンク
・文字数 半角文字 3字~30字
・文字の種類 半角英数字 「-」(ハイフン)、「.」(ドット)、「_ 」(アンダーバー)
・ひとつ目の文字は英文字のみ 「1abc@i.softbank.jp」などは、設定できません。
・英文字については、小文字のみ使用できます。
・「-」(ハイフン)、「.」(ドット)、「_ 」(アンダーバー)以外の記号は、ご利用いただけません。
 例 : 「a bc@i.softbank.jp」 など
・「@」直前の「.」(ドット) は設定できません。
 例 : 「abc.@i.softbank.jp」 など
・「.」(ドット)の連続使用は設定できません。
 例 :  「a..bc@i.softbank.jp」 など
・携帯電話の社名、および、サービス名に関わる文字は、設定できません。
 例 : 「softbank.abc@i.softbank.jp」など

これを見ると各社で細かい違いはあるが、文字数(30字まで)や文字種(英小文字と数字の他は「-」「.」「_」のみ)は共通だというのが判る。
面白いのはソフトバンクの「携帯電話の社名、および、サービス名に関わる文字は、設定できません。」と言う項目で、例では”softbank”という文字列は駄目となっているが、”docomo”とか”ezweb”とかも駄目なのかな?(笑)

←クリックしてくれると嬉しいです。
【広告】

6 comments to this article

  1. 千歳

    on 2013 年 10 月 10 日 at 4:33 PM -

    MTAによっては@の前を「””」で囲ってあげると行けるかも。
    まぁ、MTA次第なのですが。

  2. tan

    on 2013 年 10 月 10 日 at 4:52 PM -

    >千歳さん
     RFCの規定でもクォーテーションで括ればどんな文字(スペースも!)でも使えるとなっていますね。
     問題は仰るとおりMTAの実装次第ですけど。

  3. 千歳

    on 2013 年 10 月 10 日 at 5:42 PM -

    なので、完璧なメールアドレスを判断する正規表現が作れにと言う罠が…

  4. tan

    on 2013 年 10 月 10 日 at 6:41 PM -

    >千歳さん
     どんな文字でも使えるということは、どんな正規表現を使っても判定できないということですもんね。
     sendmail.cfのルール設定が凄いことになっているのは理由が違いますけど、あれを解読するのは大変でした・・・というか未だに半分以上理解できていないです(爆)。

  5. ちょろ

    on 2013 年 10 月 11 日 at 5:55 PM -

    >sendmail.cf
    一度は覚えようと思ったんだよ…けどpostfix触って結局そのままって言う。せいぜい上流にリレーしたりエイリアス書いたりだけど。(qmailは開発止まったのでやめた)
    正規表現でのチェックはそれなりなのしか書かないな~
    つーか、うちの社内で正規表現使う人少ない。むしろ身近には自分しか居ない(爆)

  6. tan

    on 2013 年 10 月 12 日 at 9:24 AM -

    >ちょろさん
     sendmail.cfの大半は現実的に使われていないアドレス解釈のためのルールですからねぇ。
     Postfixを覚えているほうが有利かと。

コメントを残す