Gmail ではメールアドレスに + 記号を付けることでひとつのアカウントのメールアドレスにタグを付けて扱うことができます。しかしたとえばユーザー登録時のメールアドレスに + 記号が含まれていると「正しいアドレスを入力してください」とバリデーションエラーを出すウェブアプリにしばしば遭遇します。

RFC 5322 によると、メールアドレスのローカルパートには記号 !#$%&'*+-/=?^_`{|}~ を含むことができます。なのでバリデーション側が間違っていることになります。

ただもしかすると、メールアドレスの仕様では OK でも、裏側で動いているシステムにおいて NG なことがあるのかもしれません。たとえば何かしらセキュリティリスクがあって許しておらず、そのエラーメッセージがたまたま「アドレスが間違っている」というものになっているのかもしれません。もしそうなのであれば自分でアプリを作る際に注意しておきたいです。逆に、単に歴史的理由や特定のライブラリのバグなのであれば気にする必要が無くなります。

そこで、質問です。メールアドレス内に記号(特に +)を許すことによるリスクはありますか? あるならば、どのようなものでしょうか? それは適切なエスケープを課すなどして避けられないものなのでしょうか?