No alert for invalid mail addresses

Hi geeks,
sometimes someone here mistypes the mail address of Requestor or CC. The
typos in addresses are various, my question is about the really obvious
ones. Like if you put to CC an address “a@b”. Is there any mechanism in
RT to detect such mistakes and say something at least? Or can I have a
feature request for this? :slight_smile:

If you try this in Gmail or Thunderbird, an error is raised and the
message is not sent.

Thank you, Petr

Petr Hanousek e-mail: petr.hanousek@cesnet.cz
MetaCentrum User Support phone: +420 950 072 112
CESNET z.s.p.o. mobile: +420 606 665 139
location: Zikova 13a, Praha room: 32b
Czech Republic

Hi Petr,

We have this problem a lot.

BP wrote us this module to help manage autocreated users that don’t
belong in the database:

-mOn Thu, Jan 5, 2017 at 3:53 AM, Petr Hanousek phanousk@civ.zcu.cz wrote:

Hi geeks,
sometimes someone here mistypes the mail address of Requestor or CC. The
typos in addresses are various, my question is about the really obvious
ones. Like if you put to CC an address “a@b”. Is there any mechanism in
RT to detect such mistakes and say something at least? Or can I have a
feature request for this? :slight_smile:

If you try this in Gmail or Thunderbird, an error is raised and the
message is not sent.

Thank you, Petr


±------------------------------------------------------------------+
Petr Hanousek e-mail: petr.hanousek@cesnet.cz
MetaCentrum User Support phone: +420 950 072 112
CESNET z.s.p.o. mobile: +420 606 665 139
location: Zikova 13a, Praha room: 32b
Czech Republic
±------------------------------------------------------------------+

Thank you Matt, this will also help. BTW, for the curiosity, the “Merge
with an alternate user” option behaves the same way like

or does it have some extra functionality?

But my main focus with this question was about to help that desperate
users who make that typos to realize, that no mail will come to the
intended recipient. Something like warning “Hey, this address is not
valid so your answer never reach anybody”.

Imagine sending some info (like “downtime will occur next monday”) to
multiple recipients and one of them has a typo like invalid domain in
his mail address. You feel safe that you’ve sent info to everybody
important but someone never receive that and surely will complain during
the unexpected downtime.

PetrOn 5.1.2017 16:09, Matt Zagrabelny wrote:

Hi Petr,

We have this problem a lot.

BP wrote us this module to help manage autocreated users that don’t
belong in the database:

GitHub - bestpractical/rt-extension-manageautocreatedusers

-m

On Thu, Jan 5, 2017 at 3:53 AM, Petr Hanousek phanousk@civ.zcu.cz wrote:

Hi geeks,
sometimes someone here mistypes the mail address of Requestor or CC. The
typos in addresses are various, my question is about the really obvious
ones. Like if you put to CC an address “a@b”. Is there any mechanism in
RT to detect such mistakes and say something at least? Or can I have a
feature request for this? :slight_smile:

If you try this in Gmail or Thunderbird, an error is raised and the
message is not sent.

Thank you, Petr

Thank you Matt, this will also help. BTW, for the curiosity, the “Merge
with an alternate user” option behaves the same way like
RT::Extension::MergeUsers - Merges two users into the same effective user - metacpan.org
or does it have some extra functionality?

No extra functionality. In fact the module in question depends on the
MergeUsers module.

-m

Petr Hanousek writes:

Hi geeks,
sometimes someone here mistypes the mail address of Requestor or CC. The
typos in addresses are various, my question is about the really obvious
ones. Like if you put to CC an address “a@b”. Is there any mechanism in
RT to detect such mistakes and say something at least? Or can I have a
feature request for this? :slight_smile:

If you try this in Gmail or Thunderbird, an error is raised and the
message is not sent.

Check out
How to Find or Validate an Email Address
It indicates the ‘most’ official regex is:
\A(?:[a-z0-9!#$%&'+/=?^_{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_{|}~-]+)
| "(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]
| \[\x01-\x09\x0b\x0c\x0e-\x7f])")
@ (?:(?:a-z0-9?.)+a-z0-9?
| [(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}
(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]
[a-z0-9]:
(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]
| \[\x01-\x09\x0b\x0c\x0e-\x7f])+)
])\z

Yeah. Quite a mouthful. This is because there are quite a few ways to express email addresses. And even this is not foolproof.

The same page also has other simpler regex expressions that work a fair amount of the time, but are less complicated, like:
\b[A-Z0-9._%±]+@[A-Z0-9.-]+.[A-Z]{2,}\b

The page claims it is 99% effective.

That, however, does not solve your problem. Just because it is formulated correctly does not mean it is a valid address.

The usual solution is to whitelist the addresses and do a lookup. Any address not found gets added tentatively, but flagged for testing. You can also at this time prompt for acceptance vs. going back to an edit screen. This does require you maintain a list of valid email addresses somewhere. The user list is a likely place, but if you are sending emails to people who are not users, then that fails.

/jeff
The information contained in this e-mail is for the exclusive use of the
intended recipient(s) and may be confidential, proprietary, and/or
legally privileged. Inadvertent disclosure of this message does not
constitute a waiver of any privilege. If you receive this message in
error, please do not directly or indirectly use, print, copy, forward,
or disclose any part of this message. Please also delete this e-mail
and all copies and notify the sender. Thank you.

Hello Jeffrey,
thank you, I’ll try to implement it here. Wonder if someone has done it
before or if there is any plugin for this? Or (the best way) if some
developer encodes it to some future release of RT? :slight_smile:
PetrOn 5.1.2017 21:51, Jeffrey Pilant wrote:

Check out
How to Find or Validate an Email Address
It indicates the ‘most’ official regex is:
\A(?:[a-z0-9!#$%&'+/=?^_{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_{|}~-]+)
| "(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]
| \[\x01-\x09\x0b\x0c\x0e-\x7f])")
@ (?:(?:a-z0-9?.)+a-z0-9?
| [(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}
(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]
[a-z0-9]:
(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]
| \[\x01-\x09\x0b\x0c\x0e-\x7f])+)
])\z

Yeah. Quite a mouthful. This is because there are quite a few ways to express email addresses. And even this is not foolproof.

The same page also has other simpler regex expressions that work a fair amount of the time, but are less complicated, like:
\b[A-Z0-9._%±]+@[A-Z0-9.-]+.[A-Z]{2,}\b

The page claims it is 99% effective.

That, however, does not solve your problem. Just because it is formulated correctly does not mean it is a valid address.

The usual solution is to whitelist the addresses and do a lookup. Any address not found gets added tentatively, but flagged for testing. You can also at this time prompt for acceptance vs. going back to an edit screen. This does require you maintain a list of valid email addresses somewhere. The user list is a likely place, but if you are sending emails to people who are not users, then that fails.

/jeff


The information contained in this e-mail is for the exclusive use of the
intended recipient(s) and may be confidential, proprietary, and/or
legally privileged. Inadvertent disclosure of this message does not
constitute a waiver of any privilege. If you receive this message in
error, please do not directly or indirectly use, print, copy, forward,
or disclose any part of this message. Please also delete this e-mail
and all copies and notify the sender. Thank you.


Petr Hanousek e-mail: petr.hanousek@cesnet.cz
MetaCentrum User Support phone: +420 950 072 112
CESNET z.s.p.o. mobile: +420 606 665 139
location: Zikova 13a, Praha room: 32b
Czech Republic

Hi,

You might want to checkout the perl module Regex::Common::email::Address

Best Regards

MartinOn 2017-01-06 13:16, Petr Hanousek wrote:

Hello Jeffrey,
thank you, I’ll try to implement it here. Wonder if someone has done it
before or if there is any plugin for this? Or (the best way) if some
developer encodes it to some future release of RT? :slight_smile:
Petr

On 5.1.2017 21:51, Jeffrey Pilant wrote:

Check out
How to Find or Validate an Email Address
It indicates the ‘most’ official regex is:
\A(?:[a-z0-9!#$%&'+/=?^_{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_{|}~-]+)
| "(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]
| \[\x01-\x09\x0b\x0c\x0e-\x7f])")
@
(?:(?:a-z0-9?.)+a-z0-9?
| [(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}
(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]
[a-z0-9]:
(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]
| \[\x01-\x09\x0b\x0c\x0e-\x7f])+)
])\z

Yeah. Quite a mouthful. This is because there are quite a few ways
to express email addresses. And even this is not foolproof.

The same page also has other simpler regex expressions that work a
fair amount of the time, but are less complicated, like:
\b[A-Z0-9._%±]+@[A-Z0-9.-]+.[A-Z]{2,}\b

The page claims it is 99% effective.

That, however, does not solve your problem. Just because it is
formulated correctly does not mean it is a valid address.

The usual solution is to whitelist the addresses and do a lookup. Any
address not found gets added tentatively, but flagged for testing.
You can also at this time prompt for acceptance vs. going back to an
edit screen. This does require you maintain a list of valid email
addresses somewhere. The user list is a likely place, but if you are
sending emails to people who are not users, then that fails.

/jeff


The information contained in this e-mail is for the exclusive use of
the
intended recipient(s) and may be confidential, proprietary, and/or
legally privileged. Inadvertent disclosure of this message does not
constitute a waiver of any privilege. If you receive this message in
error, please do not directly or indirectly use, print, copy, forward,
or disclose any part of this message. Please also delete this e-mail
and all copies and notify the sender. Thank you.


Martin Wheldon writes:

You might want to checkout the perl module Regex::Common::email::Address

I looked at that
Regexp::Common::Email::Address - Returns a pattern for Email Addresses - metacpan.org
Provides a regex to match email addresses as defined by RFC 2822. Under
C<{-keep}>, the entire match is kept as C<$1>. If you want to parse that
further then pass it to C<< Email::Address->parse() >>. Don’t worry,
it’s fast.

This is from 2005, and the that RFC was replaced by 5322, which is what the big regex I gave was from.

The Wikipedia has even more relevant info on email addresses:
Email address - Wikipedia
It talks about support for foreign character sets, quoted normally invalid characters, allowed comments, and do on. Basically, it is nearly complete chaos. Check out their “valid” and “invalid” examples, as well as the internationalization example.

/jeff
The information contained in this e-mail is for the exclusive use of the
intended recipient(s) and may be confidential, proprietary, and/or
legally privileged. Inadvertent disclosure of this message does not
constitute a waiver of any privilege. If you receive this message in
error, please do not directly or indirectly use, print, copy, forward,
or disclose any part of this message. Please also delete this e-mail
and all copies and notify the sender. Thank you.