Levelezőrendszer modernizálása (Microsoft Exchange 2003/2007) part 1.

 ( khiraly | 2015. december 26., szombat - 21:36 )

Remélem, van olyan, akinek segítség lesz ez a cikksorozat.

A levelezőszerver modernizálásának apropóját az adta,
hogy Exchange Online által küldött levelek egy része nem érkezik meg.

A jelenlegi felállás egyszerű: fix IP mögött csücsül az Exchange Server Eset vírusszűrővel.

Ebben a részben egy Haraka levelezőszervert teszek az Exchange szerver elé,
ami fogadja az internetről érkező leveleket, és anélkül,
hogy bármit csinálna a levéllel, továbbítja (protokoll szinten) a levelet az Exchange szervernek.

Így a jövőben csak ezt az egy komponenst kell frissíteni,
hogyha az interneten valamely nagyobb szereplő már csak újabb TLS-sel
hajlandó levelet küldeni nekünk (pl. most Exchange Online, Outlook.com)

Ez a megoldás nem Exchange specifikus, bármely más levelezőszerver elé lehet tenni.

Rövid bemutató

Ez egy Haraka SMTP proxy docker konténerben, bármilyen (nem szerver) gépen is elfut.
Mivel a gépen magán nem tárolunk adatot, így bármikor indítható egy másik gép hardverhiba esetén.
Kb. 40-60 sec szolgáltatáskieséssel (az én esetemben).

Mi az SMTP proxy?

És mi a különbség az SMTP forwarding között?
Az SMTP protokoll egy soronként jövő protokoll,
a proxy ezeket rögtön (MAIL FROM -tól) továbbküldi a végső SMTP szervernek (Exchange a mi esetünkben).

SMTP forwarding esetén fogadjuk a teljes levelet, majd miután valahova lementettük,
nyitunk egy kapcsolatot a végső szerver felé és küldjük el a levelet. Ha spam-et szeretnénk szűrni,
vagy csatolmányt ellenőrizni, akkor csak így oldható meg.

SMTP proxy-t mindig érdemes a levelezőszerver elé tenni.
Rengeteg hibás kapcsolatot ki lehet vele szűrni az elején.

Tutorial

0. Haraka-t töltsük le a git-ről:
https://github.com/haraka/Haraka

0/b. Vegyünk egy certificate-et a domainhez, ha nem lenne.

Ez pár napot igénybevehet. Én a "mail.megalol.io" domainre vettem.

Az alábbi konfigurációs fájlokat kell módosítani:

1. Hosztokat (domaineket) be allitottam, ahonnan levelet fogadhat.


$ vi Haraka/config/host_list

"""
# add hosts in here we want to accept mail for
haraka.local
mail.megalol.io
megalol.io
"""

2. Dockerfile-t módosítottam:


vi /Haraka/Dockerfile
EXPOSE 25
helyette:
EXPOSE 25 465 587

modositasok, amiket meg hozzaadtam:
ADD ./config/plugins /usr/local/haraka/config/plugins
ADD ./config/loglevel /usr/local/haraka/config/loglevel
ADD ./config/smtpgreeting /usr/local/haraka/config/smtpgreeting
ADD ./config/host_list /usr/local/haraka/config/host_list

# copy over the modified plugins config files too:
ADD ./config/tls.ini /usr/local/haraka/config/tls.ini
ADD ./config/smtp_proxy.ini /usr/local/haraka/config/smtp_proxy.ini

# add certificates too
ADD ./config/tls_cert.pem /usr/local/haraka/config/tls_cert.pem
ADD ./config/tls_key.pem /usr/local/haraka/config/tls_key.pem

3. A következő három pluginre lesz mindösszesen szükségünk

plugins:
tls
rcpt_to.in_host_list
queue/smtp_proxy

tls.ini:
ciphers=ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA3

rejectUnauthorized=false
requestCert=true

host_list:
haraka.local
mail.megalol.io
megalol.io

smtp_proxy.ini:
host=192.168.121.10
port=25

smtpgreeting:
mail.megalol.io Haraka MAIL Service, Version: 6.0.3790.4675

4. A szerveren a lebuildelt docker konténert így indítom el:


$ sudo docker run --restart=always \
--name haraka_`date +%Y%m%d-%H%M%S` \
-d \
-e "NODE_ENV=production" \
-p 25:25 \
-p 465:465 \
-p 587:587 \
$NAME

5. Autoboot

Bónuszként a célgépen érdemes még a BIOS-ból engedélyezni az autoboot
opciót. Áramkimaradás esetén automatán újraindul.

A router úgy van beállítva,
hogy a bejövő portokat erre a helyi IP címre írányítja (ami a docker konténert futtatja).

Így a levelezés csak akkor akad meg, hogyha a gép fizikai hibával áll meg.

Ezt SNMP-vel és egy watchdoggal lehet kiküszöbölni.
Ha ilyennel nem akarunk
szórakozni, akkor szegény ember megoldásaként valamely ingyenes szolgáltatóhoz
beregisztrálunk, és ha nem megy a levelezés, akkor emailt kapunk róla egy másik email címre.

Végső helye majd egy igazi szerver hardver lesz az én esetemben.

Jelenleg a célgépem egy régi 32bites gép, ami egyébként is le lett selejtezve.

6. 32bites gép

Ha valaki még 32biten akar docker konténert futtatni, akkor
a Dockerfileban még ezeket módosítsa:

#FROM phusion/baseimage:latest
FROM 32bit/ubuntu:14.04

RUN rm -rf /var/lib/apt/lists
RUN DEBIAN_FRONTEND=noninteractive apt-get update --fix-missing

RUN DEBIAN_FRONTEND=noninteractive apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 16126D3A3E5C1192
RUN DEBIAN_FRONTEND=noninteractive apt-get -y -q update --fix-missing
RUN dpkg-divert --local --rename --add /sbin/initctl
RUN ln -sf /bin/true /sbin/initctl

RUN DEBIAN_FRONTEND=noninteractive apt-get -y -q install runit
RUN DEBIAN_FRONTEND=noninteractive apt-get -y -q install openssh-server
RUN mkdir /etc/my_init.d
ADD ./00_regen_ssh_host_keys.sh /etc/my_init.d/
RUN chmod 777 /etc/my_init.d/00_regen_ssh_host_keys.sh

És a végén:

ADD my_init /sbin/

A fájlokat a phusion/baseimage projektből lehet összevadászni:
https://github.com/phusion/baseimage-docker

Harakától nem kell félni, egy normálisan konfigurálható levelezőszerver.
Igazi felüdülés qmail, postfix vagy éppen a kattintgatós Exchange után.

Ha van igény akkor a következő részeket is megírom,
ami smtp_forward,
egy content scanner szerver: https://github.com/haraka/haraka-content-scanning-server/wiki/Overview
és rspamd, dspam.

Természetesen az Exchange modernizációja itt nem áll meg:),
a névjegyeket lecseréltem Carddav-ra, a naptárat Caldav-ra, a kliensek
outlook-jára pedig EVO Collaboratort tettem.
Így mire a cikksorozat végére érünk,
addigra az Exchange szerver is kukázva lesz...

Az Exchange szerver kukázásának a
fő mozgatórugója kliensoldalon egyre népszerűbb Apple iPad terjedése,
valamint a Microsoft Office 2013 (dobta az Exchange 2003-at) és 2016 (dobta az Exchange 2007-et).

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

"RUN mkdir /etc/mc_init.d"

Ez egy elírás?

Jöhet a többi is! ;)

Igazad van, elutottem: my_init.d
(javitottam a bejegyzesben)

---
Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....

SMTP proxy-t mindig érdemes a levelezőszerver elé tenni. Rengeteg hibás kapcsolatot ki lehet vele szűrni az elején.

ez elegge exchange specifikus, modernebb mta-k ezt meg tudjak oldani.

Ezt SNMP-vel és egy watchdoggal lehet kiküszöbölni. Ha ilyennel nem akarunk szórakozni, akkor szegény ember megoldásaként valamely ingyenes szolgáltatóhoz beregisztrálunk, és ha nem megy a levelezés, akkor emailt kapunk róla egy másik email címre.

ez a normalis megoldas imho. Valahonnan / kivulrol monitorozod a 25-os port elerhetoseget, es ha nem valaszol, akkor sms/whatever alert megy.

Harakától nem kell félni, egy normálisan konfigurálható levelezőszerver.
Igazi felüdülés qmail, postfix vagy éppen a kattintgatós Exchange után.

ha nem mondod, hogy nem lehet a postfixet normalisan konfiguralni, tan sosem tudom meg :O

azt nem mondtad, hogy az exchange kukazasa utan mi lett a haraka mogott

--
"nem tárgyszerűen nézem a dolgot, hanem a vádló szerepéből. Sok bosszúságot okoztak, örülnék ha megbüntetnék őket - tudom gyarló dolog, de hát nem vagyok tökéletes." (BehringerZoltan)

>> SMTP proxy-t mindig érdemes a levelezőszerver elé tenni. Rengeteg hibás
>> kapcsolatot ki lehet vele szűrni az elején.

> ez elegge exchange specifikus, modernebb mta-k ezt meg tudjak oldani.

Ket dolog miatt jo:
1. Csak az smtp proxynak lesz tanusitvanya, es utana a lancban mar mindenki titkositatlanul van.
2. Van par kapcsolat amit eldob, es nem a mogotte levo emailszerver logjait szemeteli. Pl:
[NOTICE] [9F387426-8C8A-4AAC-9949-A777714263F2] [core] disconnect ip=107.182.20.19x rdns="DNSERROR" helo="ylmf-pc" relay=N early=N esmtp=
Y tls=N pipe=N errors=1 txns=0 rcpts=0/0/0 msgs=0/0/0 bytes=0 lr="500 Unrecognized command" time=0.44

> azt nem mondtad, hogy az exchange kukazasa utan mi lett a haraka mogott

Ez meg egy nyitott kerdes. Meg nem tortent meg. Most per pillanat az Exchange vissza lesz redukalva egy IMAP levelezoszerverre.

Es akkor a kliensek frissitve lesznek MS Office 2013-ra (most 2007,2010 van vegyesen).

Meg IMAP levelezoszervert se valasztottam ki. Olyat kellene valasztanom ahol normalis kereses van.
Es kell meg egy webmailt is valasztanom. Ha ez a ketto megvan, akkor lehet az Exchange-et kukazni. De addig meg rengeteg resz lesz a sorozatban, ha van ra igeny...

---
Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....

1. Csak az smtp proxynak lesz tanusitvanya, es utana a lancban mar mindenki titkositatlanul van.

ez egyaltalan nem biztos, hogy jo.

2. Van par kapcsolat amit eldob, es nem a mogotte levo emailszerver logjait szemeteli.

erre irtam, hogy egy rendes mta (nem az exchange 2003) ezt meg tudja oldani

Meg IMAP levelezoszervert se valasztottam ki. Olyat kellene valasztanom ahol normalis kereses van.

a dovecot eleg kulturalt

Ha ez a ketto megvan, akkor lehet az Exchange-et kukazni. De addig meg rengeteg resz lesz a sorozatban, ha van ra igeny...

tegyel be email archivalast is ;-)

--
"nem tárgyszerűen nézem a dolgot, hanem a vádló szerepéből. Sok bosszúságot okoztak, örülnék ha megbüntetnék őket - tudom gyarló dolog, de hát nem vagyok tökéletes." (BehringerZoltan)

igazából egy ilyen smtp proxy-t bármelyik levelezőrendszer elé oda lehet tenni, ha van rá igazán szükség, ha nincs. Nem kér enni....
(130MB ram-ot(VIRT) eszik plusz a docker.)

Ha más nem, statisztikát egy-egy sor megcsinálni.

---
Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....

sub
--
WP8.x kritika: http://goo.gl/udShvC

+1
-------------------------------------------------------------------------------
Az életben csak egy dolog a szép, de az épp nem jut eszembe.

Slackware Linux 14.1 | 3.10.84-janos