Regex Expression для замены адреса электронной почты домена, для адреса электронной почты пользователя - PullRequest
0 голосов
/ 05 июля 2019

Я пытаюсь решить проблему сосуществования домена электронной почты с Exchange в Интернете. В основном мне это нужно, чтобы при отправке сообщения одному арендатору (domain.com) и пересылке другому арендатору (newdomain.com) заголовки To и / или CC заменялись адресами электронной почты конечной точки (newdomain.com) перед они доставляются в конечный пункт назначения.

Например:

1) Пользователь Gmail (или любой другой) отправляет и отправляет электронное письмо по адресу sally.sue@domain.com, для этого домена выполняется поиск MX, он доставляется Арендатору Office 365 для domain.com

2) Тот же клиент Office 365 настроен для пересылки электронных писем на адрес sally.sue@newdomain.com (другой клиент)

3) Когда приходит сообщение, чтобы подать в суд на newdomain.com, и она нажимает «Ответить всем», первоначальный отправитель И ее (sally.sue@domain.com) добавляются в строку «Кому» в электронном письме.

Способ исправить это - использовать замену заголовка на Proofpoint, которая, как упоминалось ниже, работает для одного пользователя. Весь вопрос ниже - я пытаюсь заставить его работать, используя RegEx (поскольку это единственное решение) для большого количества пользователей.

Мне нужно преобразовать адрес электронной почты следующих пользователей:

username@domain.com to username@newdomain.com

Это должно быть сделано с помощью ProofPoint, MTA, размещенного в облаке. Они смогли дать какой-то ответ, но он не работает.

Служба поддержки Proofpoint предложила использовать это:

Header Name : To
Find Value  : domain\.com$
Replace     : newdomain\.com$ or just newdomain.com 

Ничего из вышеперечисленного не работает. В обоих случаях значения просто полностью игнорируются.

Похоже, что находят значения:

Header Name : To
Find Value  : \b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b
Replace     : $1@fake.com

Но вышеприведенное просто и только заменяет строку To: (в электронном письме) на буквальную строку: $1@fake.com

Мне также нужно было бы найти строчные буквы и цифры в адресах электронной почты. Я считаю, что приведенный выше пример находит только заглавные буквы.

Мне нужно сделать следующее:

Header Name : To
Find Value  : \b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b (find users email address, domain) 
Replace     : user.name@newdomain.com 

Это для большого количества пользователей, поэтому нет способа вручную обновить или создать отдельные правила для каждого пользователя.

Если я создаю отдельное правило, то оно работает, как и ожидалось, но, как указано, требует ручного ввода каждого пользователя по адресу: адрес и их нового желаемого адреса по адресу:

Это решение здесь почти сработало: Regex для замены доменов адресов электронной почты?

1 Ответ

0 голосов
/ 05 июля 2019

У меня есть пара наблюдений из общего опыта, хотя я не работал с Office365 специально.

Во-первых, регулярное выражение, используемое для замены, обычно должно иметь "группу захвата". Это часто выражается в скобках, например:

match       : \b([A-Z0-9._%-]+)@domain.com$
replacement : $1@newdomain.com

Идея состоит в том, что $1 в шаблоне замены заменяется тем, что было найдено в () в соответствующем шаблоне.

Обратите внимание, что некоторые движки регулярных выражений используют другой символ для замены, поэтому это может быть \1@newdomain.com или что-то подобное. Также обратите внимание, что некоторым движкам регулярных выражений необходимо избегать скобок, поэтому шаблон сопоставления может выглядеть примерно так: \b\([A-Z0-9._%-]+\)@domain.com$

Во-вторых, если вы хотите включить - в набор "класса символов" (то есть в квадратные скобки []), тогда - должен быть первым; иначе это неоднозначно, потому что - также используется для диапазона символов. Рассматриваемый движок регулярных выражений может не заботиться, но я предлагаю написать ваш соответствующий шаблон как:

\b([-A-Z0-9._%]+)@domain.com$

Таким образом, первый - однозначно сам по себе, потому что перед ним нет ничего, что указывало бы на начало диапазона.

В-третьих, для строчных букв проще всего расширить набор классов символов, включив их, например:

[-A-Za-z0-9._%]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...