Author Archives: Daniel Hrubý

About Daniel Hrubý

Head of project management at HAVIT

Domain Catch-all – pokračování

Pár měsíců nazpět jsem si tu zoufal (Domain Catch-all) při neúspěšných pokusech o nastavení doménového koše pro jednu z našich domén, kterou používáme na příjem testovacích emailů, které během vývoje produkují naše aplikace. Cílem bylo aby jakýkoliv email který je odeslán na emailovou adresu *@devmail.havit.cz došel do konkrétní schránky. Tenkrát se ještě nezadařilo, neboť Exchange tvrdošíjně odmítal přijmout jakékoliv zprávy určené uživatelům které neznal a pravidlo se tak nemohlo uplatnit. To už je ale minulostí, problém se podařilo vyřešit.

Stačilo nastavit v menu mail flow v záložce accepted domains pro danou doménu s pravidlem Domain cach all volbu Internal Relay: Email is delivered to recipients in this Exchange organization or relayed to an email server at another physical or logical location.

Nastavení accepted domains pro Domain catch all pravidlo

Nastavení accepted domains pro Domain catch all pravidlo

Od té doby funguje všechno jak má. Naštěstí nemusíme řešit situaci kdybychom chtěli podobné chování pro naši regulérní doménu havit.cz.

Stránky která se tématu věnuje do větší hloubky: Catch-All for MS Exchange 2013 SP1 on specific Authoritative Domains – Server Fault

Domain Catch-all

Pro vývojářské a testovací účely máme často scénáře, že je potřeba pracovat s větším množstvím aplikačních uživatelských účtů a k nim přidruženým emailovým adresám. Samozřejmě, že jsme kvůli tomu nezakládali stovky emailových schránek na našem Exchange, ale používali jsme pravidlo, které všechny emaily došlé na adresu odpovídající patternu *@devmail.havit.cz přesměrovalo do předem určené schránky. Minulý čas je na místě, jelikož od migrace na verzi Exchange 2013, nyní už s CU3, stále ještě dokáže překvapit co za funkčnost zmizelo, nebo co nefunguje jak má.

Po tom co se objevilo spoustu nedoručitelných emailů které dříve byly korektně zpracovávané, jsem si naplánoval hodinku na vyřešení problému, s tím že pouze něco lehce dokonfiguruji a bude hotovo.

Začal jsem kontrolou konfigurace našeho SPAM filtering serveru, kde běží produkt ORF (který mohu s dobrým svědomím všem doporučit – používáme léta k naší plné spokojenosti). Bylo potřeba do nastavení přidat výjimku, jelikož jedno z aktivních pravidel a jeho výchozí nastavení nebylo kompatibilní s naším záměrem. Jedná se o Recipient validation které kontroluje zdali v organizaci existuje mailbox s daným emailem. Pokud neexistuje, tak ukončuje okamžitě SMTP relaci a nedochází k dalšímu zpracování emailu.

ORF

Při migraci z Exchange 2010 na verzi 2013 se k mé radosti původní pravidlo (Transport rule)přeneslo a zachovalo si svoje nastavení. Samotné nastavení v prostředí verze 2013 vypadá takto:

ecp

Ve verzi 2010 jsme měli pravidlo postavené na regulárním výrazu – adresa příjemce musela splňovat určitý pattern. Jak vytvářet regulární výrazy ve verzi 10: http://technet.microsoft.com/en-us/library/aa997187(v=exchg.141).aspx

Přestože bylo pravidlo aktivní, všechny emaily zaslané do domény devmail.havit.cz vracely jako nedoručené s následující hláškou: domaincatchall@devmail.havit.cz
Remote Server  returned ‚550 5.1.1 RESOLVER.ADR.RecipNotFound; not found‘. V tušení možné zrady zde jsem začal pátrat v dokumentaci pro verzi 2013 – ta nyní plně podporuje Microsoft.NET Framework regular expression (regex). Trochu jsem si upravil předchozí regulární výraz na ^[A-Za-z0-9_-]*@devmail.havit.cz$. Nastavení pravidla je vidět na následujícím obrázku:

transportrule

Nicméně kýžený výsledek se nekonal. Při dalších pokusech jsem ještě narazil na zajímavou možnost (buď jsem ji ve verzi 10 přehlédl, nebo je ve verzi 2013 nová) – to co se snažím pracně nastavit přes regulární výraz jde nyní jednodušeji přímo přes předpřipravenou podmínku:

transportrule2

Ani to mě však nedovedlo k cíli. Další cesta vedla přes pokusy o nastavení Antispam protection – Recipient filtering přímo na Exchange. Toto nejde nastavit v UI, ale je potřeba provést přes EMS(Exchange management shell) (více k Antispam konfiguraci: http://technet.microsoft.com/en-us/library/bb125187(v=exchg.150).aspx)

  • Set-RecipientFilterConfig -Enabled $false
  • pro jistotu ještě Set-RecipientFilterConfig -RecipientValidationEnabled $false

Ani toto však bohužel nevedlo k cíli. Byl jsem už poměrně rozladěný a tak jsem googlil co to šlo, až jsem narazil na podobný problém který byl na Microsoft fóru vyřešen takto:

Hi Frank – Thanks for checking in.  At this point I’ve marked it up as „can’t be done“ on exchange 2013.

Dále jsem našel ještě nějaké diskuze vedené v podobném duchu , případně vysvětlování proč tuto funkci uživatelé vlastně nepotřebují (třeba zde).

Další cesta kterou se ale vydat moc nechci, je řešení založené na doinstalování Domain catch-all agenta (https://github.com/Pro/exchange-catchall), kdoví co všechno co dosud fungovalo by se tím rozbilo. Zbývá tedy čekat na balíček s CU4 , nebo vyřešit problém nějakým workaroundem.

Toto je právě ten typ problémů, kvůli kterým přechod na Exchange 2013 zatím nemohu doporučit.

Update: Problém se asi po roce podařilo vyřešit viz Domain Catch-all – pokračování