Я хочу иметь возможность анализировать адреса электронной почты, чтобы изолировать часть домена, и проверить, является ли адрес электронной почты частью данного домена.
Модуль email
, насколько я могу судить, этого не делает. Есть ли что-то, что стоит использовать для этого, кроме обычных процедур обработки строк и регулярных выражений?
Примечание: Я знаю, как обращаться со строками Python. Мне не нужны базовые рецепты, хотя приветствуются удивительные рецепты.
Проблема здесь заключается в том, что адреса электронной почты имеют формат (схематически) userpart@sub\.domain\.[sld]+\.tld
.
Снятие детали до @ легко; сложная часть - это анализ домена, чтобы определить, какие части являются поддоменами в домене более крупной организации, а не общие публичные домены второго уровня (или, я полагаю, даже более высокого порядка).
Представьте себе, что синтаксический анализ user@mail.organisation.co.uk
обнаружил, что доменное имя организации - organisation.co.uk
, и поэтому можно сопоставить mail.organisation.co.uk
и finance.organisation.co.uk
как субдомены organisation.co.uk
.
Существует два возможных подхода (не основанных на dns): создать конечный автомат, который знает обо всех общих slds и их отношении к tld (включая популярные 'поддельные' slds, такие как uk.com
), или попытаться угадать основываясь на знании о том, что должно быть tld, и при условии, что если имеется три (или более) элемента, домен второго уровня является общим, если в нем меньше трех / четырех символов. Относительные недостатки каждого подхода должны быть очевидны.
Альтернатива состоит в том, чтобы просматривать записи DNS, чтобы выяснить, что является зарегистрированным доменом, который имеет свои недостатки.
В любом случае, я бы предпочел совмещать работу с другими.