Głuchy telefon czyli Exchange 2010, Exim oraz Massage-ID

Są trzy typy poradników na temat Exchange 2010 które można znaleźć w sieci. Pierwszy z nich, to  gruba marketingowa ściema okraszona jakimś podłej jakości komentarzem technicznym. Nic konkretnego, jedynie roztaczanie narkotycznych wizji o możliwościach Exchange. Kolejny typ to posty na forach z opisami wyuzdanych problemów typu „Mam 75 instancji Exchange i powiadam Wam nie wiem czemu na jednym OWA mam menu w kolorze jasno żółtym a w innym ciemno żółtym”. Następnie wypowiada się jakiś milion onanistów, którzy przez połowę dyskusji rozmawiają o gramatyce wypowiedzi a na końcu mówią dla gostka żeby poszukał na Google. Trzeci typ jest najbardziej denerwujący. Dotyczy on bowiem problemu z którym się próbujemy uporać, lecz niestety znaleziony opis rozwiązania jest oparty na prehistorycznej wersji Exchange od której Microsoft zdążył wszystko przebudować. Najbardziej ironiczne jest to że zawsze w odświeżonym produkcie MS nigdy niema tego pola które najbardziej ułatwiało  nam pracę… Specjaliści wymyślą za to jakąś nową konsolę w której trzeba wpisać półkilometrowe wyrażenie aby osiągnąć jakiś prymitywny cel.  Myślałem że czasy ortodoksyjnego Unixa mijają bezpowrotnie, tymczasem Microsoft który poniekąd rozpropagował idee GUI zaczyna się uwsteczniać. Dosyć jednak tych gorzkich dygresji, czas wrócić do meritum… Otóż jako reformator, człowiek renesansu, buntownik znany z niesamowitej charyzmy, odwagi i światłości umysłu (nadaje się na profil postaci do gry RPG 🙂 ) powiadam wam że dziś się to zmieni. Miałem sen, sen w którym napisałem małą poradę na temat Exchange 2010 a wszyscy po jej przeczytaniu stwierdzili że jest to coś co zmieniło ich życie. 😉

Po pierwsze, jak już wcześniej pisałem, wystawianie Exchange na świat to jak postrzelenie się w nogę, przez łeb, serce i dupę. Tak wiec sytuacja jest następująca – nasz serwer Exchange jak bozia przykazała stoi sobie w DMZ a my przez małą szparę w drzwiach podajemy mu maile. Sytuacja jest klarowana, wszystko działa, jest bajka. Pytanie tylko, jak to działa? Maile dostaje przez szparę, ale jak je wysyła? Otóż to zależy od ustawień naszego serwera. Przyjmijmy że dobrze by było aby nasz nieporadny Exchange odbierał i wysyłał pocztę przez ten sam serwer. Oczywiście zaraz odezwą się głosy że no tak ale ten sam może się nie obrobić z wysyłaniem i odbieraniem, że jak ma się duże środowisko to bla, bla, bla. Tak macie rację, ale my tu piszemy o małym środowisku gdzie wszystko jest proste i może nie działać miesiącami 😉

Dobra dość gadania, zaczynamy… Ustawienia wysyłania od wersji 2010 jest w nieco innym miejscu niż w wersjach poprzednich. Aby tam dotrzeć uruchamiamy Exchange Management Console (EMC) i udajemy się do Organization Configuration -> Hub Trasport i tam do zakładki Send Connectors. Tu znajdują się nasze reguły co jak ma działać – gdzie się wysłać, jaką drogą ma lecieć. Tak wiec klikamy na guziol New Send Connector.

Pojawiło się nam okienko… wpisujemy tu nazwę naszego konektora. Za namowami MS postanowiłem wybrać najbardziej przyjazną nazwę, wybrałem „Cały lamerski ruch nic nieznaczących użytkowników.”, tak żeby od razu wiedzieć z czym mam do czynienia. Następnie wybrałem opcję Internet z menu poniżej i Next.

W kolejnym kroku kliknąłem Add, i wpisałem w polu Address wartość „*” co ma oznaczać, że wszystko ma iść za pomocą tego konektora. Dodatkowo zaznaczyłem opcję Include All Subdomains… i OK, NEXT!

Krok ten jest najbardziej dla nas interesujący. Ustawiamy tu adres serwera  który ma przekazywać pocztę na świat. Tak wiec na początku przestawiamy na opcję Route mail through the fallowing smart hosts:, klikamy Add i polu adres IP wpisujemy odpowiednie dla naszej sieci wartości.  OK, NEXT.

Karta ta pozwala nam skonfigurować sposób w który serwer Exchange ma się autentykować  z serwerem przekazującym. Nie ma tu dla nas zbyt wiele do ustawiania, gdyż mamy zamiar połączyć Exchange z Eximem… tak więc ustawiamy None.

To już w zasadzie koniec ustawień dla naszego konektora. Resztę zostawiamy domyślnie i kończymy kreatora. Po pomyślnym stworzeniu, aby wszystko zadziałało należy zrestartować jedną z usług Exchange – Microsoft Exchange Transport.

Czas przejść do konfiguracji Exima. Warto by było tu zaznaczyć, że równie dobrze może to być każdy inny linuxowy serwer pocztowy. Jednak ja akurat mam do dyspozycji Exima, wiec będzie na Eximie. Zakładam, że jest on już wstępnie skonfigurowany – nie sypie fatalami i przekazuje maile przychodzące do Exchange itp. Dodatkowo wypadałby, aby był on zainstalowany z paczki a nie jakoś finezyjnie kompilowany. Jeżeli środowisko jest choć trochę podobne do opisanego to zaczynamy. Po pierwsze logujemy się na serwer brzegowy który ma być naszym przekazywaczem i udajemy się do pliku /etc/exim/exim.conf gdzie odnajdujemy linie i dopisujemy nasz serwer Exchange:

host list    relay_from_hosts = 127.0.0.1 : 192.168.1.10/32

Zapisujemy i restartujemy Exima. Powinno wszystko działać… ale! Właśnie nad tym ale spędziłem najwięcej czasu. Ale jest takie, że maile wychodzące z naszego serwera są nieeleganckie, maja źle skrojony garnitur i w ogóle są be… Dobrze już uchylam rąbka tajemnicy. Nasz wewnętrzny serwer nazywa się, przyjmijmy SSIJPAUE.local a serwer zewnętrzny natomiast mail. cmentarnapolka.pl. Wypadałoby aby SSIJPAUE nie cieszył swoją nazwą innych poza nami… jednak przy powyższej konfiguracji mail dochodzący do serwera naszego odbiorcy w nagłówku i logach odkrywa tajemnicę:

Aug 19 09:22:51 serwer amavis[24330]: (24330-15) Passed CLEAN, [666.666.666.666] [666.666.666.666] <panizocha@cmentarnapolka.pl > -> <nudnyodbiorca@szatan.pl>, Message-ID: <C337717429266D4D886E6C851A3C340ABF403F@SSIJPAUE.local>, mail_id: MYK9dSNnvVu3, Hits: 0.026, queued_as: 23D0F911F949, 16914 ms

Jak ukryć nasze co by tu nie mówić mało wyrafinowane poczucie humoru? Jest na to tajemny sposób. Udajmy się do konfiguracji Exima. Tworzymy plik /etc/exim/filter.conf i wklejamy tam

if not first_delivery then
finish
endif

if error_message then
finish
endif

if „${if def:h_Message-Id {yes}}” is yes and
$h_Message-Id matches „@.* SSIJPAUE.local.*” then
headers remove Message-Id
headers add „Message-Id: <${message_id}@ mail. cmentarnapolka.pl>”
endif

Wydaje mi się, że w miarę oczywiste jest co mamy zmienić w tym pliku aby przystosować to do własnych potrzeb. Jednak jeżeli ktoś jest na tyle ułomy to należy wymienić SSIJPAUE.local na nazwę swojego serwera Exchange, natomiast mail. cmentarnapolka.pl na co tam chcemy. Następnie w pliku /etc/exim/exim.conf gdzieś na początku (przed pierwszym begin) dodajemy następującą komendę:

system_filter = /etc/exim/filter.conf

Dodatkowo szukamy linii:

headers_remove = Received : Message-ID

i zmieniamy ją na:

headers_remove = Received

Wszystko zapisujemy i restartujemy Exima. Wysyłamy maila a tam w logach/nagłówku ku naszej uciesze pojawia się:

Aug 19 10:20:51 serwer amavis[24331]: (24331-15) Passed CLEAN, [666.666.666.666] [666.666.666.666] <panizocha@cmentarnapolka.pl > -> <nudnyodbiorca@szatan.pl>, Message-ID: < 1OlzhD-0002cF-IF@mail. cmentarnapolka.pl >, mail_id: Cw3b2G4weVQq, Hits: 0.026, queued_as: Cw3b2G4weVQq, 16914 ms

Koniec. Zapraszam do rozważań w komentarzach.

About the author

Bloger i niezależny konsultant z wieloletnim doświadczeniem w branży IT. Specjalizujący się w wirtualizacji i cloud computingu. Posiada tytuły MCP, MCTS, VCP oraz VMware vExpert.

Leave a Reply