# Looks like a valid email address
return True
+ def mail_is_spam(self, mail):
+ """
+ Checks whether the email follows a specific format that spammers are using.
+ """
+ username, _, domain = mail.partition("@")
+
+ # Fight against "<ho.l.m.ess.t.eph06@gmail.com>"
+ if domain == "gmail.com":
+ if username.count(".") >= 5:
+ return True
+
+ # Not spam
+ return False
+
def mail_is_blacklisted(self, mail):
username, delim, domain = mail.partition("@")
if first_name == last_name:
raise tornado.web.HTTPError(503)
+ # Fail if the email address isn't valid
+ if self.backend.accounts.mail_is_spam(email):
+ raise tornado.web.HTTPError(503, "Email address looks spammy")
+
# Register account
try:
with self.db.transaction():