Saját e-mail szerver + naptár, címtár, cloud storage minimális költségből

Több helyen is felmerült már az igény arra, hogy elhagyjuk a nagy szolgálatókat és a helyére valami saját megoldást tegyünk. Az a helyzet, hogy teljesen saját megoldást csak akkor csinálhatunk, ha mi magunk fejlesztjük vagy legalábbis átolvassuk és meg is értjük egy-egy szoftver forráskódját. Szerintem ennek kicsi az esélye. Ettől kezdve pedig kénytelenek vagyunk bízni a tájékoztatókban és a többi fejlesztőben illetve felhasználóban.

Az adataink elméletileg a saját tulajdonunkban és saját felügyeletünk alatt lesznek és senki nem fog belenézni és semmilyen statisztikák nem készülnek róla. A valóság egy picit más, mert nem fizikai szervert bérelünk (egyébként azt is ellophatják vagy lefoglalja a hatóság, stb.) hanem VPS-t, azaz virtuális szervert. Ez annyit jelent, hogy kapunk egy ip-címet és egy shellből elérjük a szerverünket aminek van internetkapcsolata és azt kezdünk vele amit akarunk. Van rajta egy általunk listából előre kiválasztott operációs rendszer (ez jellemzően valamilyen Linux, a Windowsért felárat szoktak kérni ha egyáltalán opció).

Sziasztok!

Valószínűleg ez a blogbejegyzés több részből fog állni, mert előreláthatólag nem lesz időm egyben lezongorázni.

Egyszer régen már elkövettem egy hasonló merényletet, de most újra összerakok egy, a címben említett rendszert. Kezdésnek felejtsük el a magas rendelkezésreállást, ezt egyelőre bizonyos szinten rábízom a VPS szolgáltatóra. Próbálok egy olyan megoldást összeszedni, ami feltehetően hosszabb távon is támogatott és működőképes megoldás lehet.

 

I. DOMAIN VÁLASZTÁS

Kezdésnek jó, ha kitalálunk egy domain nevet. valami.hu vagy valami.com. A kommentekben javasolták még a .org TLD-t is. A pont után jobbra eső rész mindig a TLD, vagyis top level domain. Fontos, hogy valami normális címet válasszunk, tehát ne az olcsó .xyz vagy .tech vagy .in és társait, mert sok címzett esetén beleeshetünk a spam mappába. Jobban járunk egy .hu vagy .com, esetleg .eu végződéssel. Nekem volt működő e-mail szerverem .eu végződéssel, minden gond nélkül működött. Jelenlegi tervek szerint .hu regisztráció lesz.

Keressünk számunkra tetsző, nem foglalt domain címet. Erre van többféle lehetőség is attól függően, hogy milyen TLD-t szeretnénk. Ne lepődjünk meg, ha elsőre nem találunk szabad címet. Vagy másodikra... vagy sokadikra :) Megpróbálok úgy választani mind vps-t, mind pedig domaint, hogy lehetőleg ne legyen drága és ha van rá lehetőség akkor egy helyen vásároljunk, mert ez a későbbiek során könnyebbé teheti a dolgunk.

Mivel .hu domaint szeretnék, így valószínűleg a rackhost-nál fogom megvásárolni.

update-2020.09.23.

Megvettem a .hu domaint 2 évre a rackhostnál 1905 Ft-ért.

II. A SZOLGÁLTATÁS

Alapvetően kétféle megoldásban gondolkodtam.

a) Az egyik úgy nézett volna ki, hogy van egy alap szerver: Debian vagy Ubuntu. Az Ubuntut előnyben részesítem a tárolók miatt. Erre feldobok egy Dockert Portainerrel, aztán keresek olyan konténereket, amik megfelelnek számomra. Egy komolyabb e-mail szerver konténert találtam, ez pedig a mailu. Valószínűleg kellene játszani vele, hogy működjön és alaposan át kellene rágnom a dokumentációt. Nem láttam arra irányló információt, hogy a kontakokat lehet-e integrálni, esetleg a naptárba. Elméletileg emellé elegendő lehet egy NextCloud. Valószínűleg ez lesz az első, amit meg fogok próbálni.

b) Másik megoldásként ott van a mail-in-a-box. Ez nm konténerből fut, viszont szinte mindent tud amire szükség lehet és van egy áttekinthető adminisztrációs felület, ahol az esetleges hibákra és teendőkre is felhívja a figyelmet, könnyedén lehet ssl tanúsítványt regisztrálni és egyszerűen naprakészen tartható. Mindenképpen ez az egyszerűbb út, viszont ha mellette szükségem van még valamire, amit nem tartalmaz a csomag, akkor vagy telepítés tárolókból vagy mellé ugyanúgy teszek egy dockert.  

update-2020.09.23.

Miközben olvastam a dokumentációt, találtam még itt két érdekes képződményt, amiket a jövőben valószínűleg ki fogok próbálni:
1. modoboa
2. sovereign

Kényelem szempontjából a Mail-in-a-box lett volna. Mivel ezt használtam régebben is, úgy emlékszem, hogy mindenben megfelelő volt. Egy fontos dolgot kell ezzel kapcsolatban figyelembe venni:

Can I modify my box after / use my box for something else too? (Advanced.)
No. Mail-in-a-Box must be installed on a fresh machine that will be dedicated to Mail-in-a-Box, and you cannot modify the box after installation (configuration changes will get overwritten by the box’s self-management). If you are looking for something more advanced, try iRedMail, Sovereign, or Modoboa.

 

Végülis aztán olvasgattam a dokumentációt, blogot és kiderült, hogy egy disztrófrissítés a rendszer alatt kb. lehetetlen fresh install nélkül és emellett az owncloud részeket felejtsd is el. Inkább akkor így mégiscsak megpróbálkozom a mailu-val, mert az konténerben fut -> sokkal egyszerűbb naprakészen tartani a rendszert + mellé konténerekbe mehet még ez-az. Olvasom a dokumentációt amíg készül a szerver. Szerintem holnap neki is vágok a tesztelésnek. Ubuntu 20.04 lesz az alap, hozzá adunk egy csipetnyi Dockert, némi Compose és az utóíz végett jöhet a Portainer. Ebből szerintem már majdnem bármit ki lehet főzni így.

III. VPS

Nézegettem külföldi és magyar hosting szolgáltatókat:

-hostinger.com: 1CPU, 1GB RAM, 20GB SSD, 1TB/hó adatforgalom : 3,95USD/hó (viszont ez akciós, kitudja meddig tart az akció)
-ionos.com: 2CPU, 2 GB RAM, 80GB SSD, korlátlan adatforgalom: 5USD/hó (első hónap 2USD és határozatlan idejű)
-rackforest.hu: előző konfiguráció (30T adatforgalommal) havonta 4396 Ft-ra jön ki
-hostinger.hu : valószínűleg ugyanaz, mint a com csak forintban, de akkor nézzük a 2 processzoros változatot 40GB SSD-vel: 2525 Ft/hó
-olcso-vps.hu: 2CPU, 4GB RAM, 70GB SSD, Ubuntu: 3531 Ft/hó
néztem még az ezit.hu-t és a szervernetet. Itthon a 20GB körüli tárhely 1GB RAM és 1 CPU mag az elterjedt hozzávetőleg 1000-2000Ft/hó értékben. Persze találtam drágábban 512MB RAM és 10GB verziót is. Digitaloccean-nél hasonló.

Az jövőbeli igényeket figyelembe véve érdemes az erőforrásokat tervezni. Mivel cloud storage-et is tervezek, nem hátrány a 80 GB SSD, viszont nem is követelmény. Nagyjából 15 évnyi e-mailem elfér ~5GB tárhelyen most is. Azt tegyük hozzá, hogy van két fiókom, így ezt duplázhatjuk. A rendszer mérete előreláthatólag 5GB alatt fog maradni. Számomra mérlegelendő még az, hogy jelenleg van Google Fotók és Drive. A Drive-on nem igazán van semmi fontos, ami máshol ne lenne meg. Leginkább csak akkor kerül oda valami, ha nagy vagy/és úgy egyszerűbb megosztani másokkal. Ez a szempont lényeges lehet, de max. 5GB-ot tartanék fenn erre a célra. Erre van egy B és egy C terv is. A névjegyzék és a naptár adatok elhanyagolható mennyiségű adatot tartalmaznak. A jelenlegi névjegyzékem Google fiókban van, ezt exportálom majd. A naptárbejegyzések nem érdekelnek túlságosan. Majd a jövőben beírogatom ami fontos. Egy ideig még együtt fogom használni őket, csak a régibe nem fogok bejegyzéseket létrehozni.

Google Drive kiváltása:
Otthoni több lemezes NASsal tökéletesen megoldható. Noip-vel még távolról is elérem ha kell és akár linket is tudok adni. Valószínűleg ott is lesz egy NextCloud.

Google Fotók hasonlóképp kerülnek kiváltásra, mint a Drive. 

Többen javasolták, hogy nézzek rá a hetznerre is valamint a contabora. Egész jó áraik vannak, a hetzner ráadásul EUn-belüli szolgáltató (contabot nem néztem).

A hetzner, az ionos és a contabo van most versenyben. A contabo viszont messze több erőforrást ad hasonló áron. 2 CPU, 4GB RAM, 300GB storage: 4EUR/hó. Úgy gondolom, teszek egy próbát.

Kérdés már csak az, hogy szükségem van-e webmin-re. Individual reverse DNS entry-re valószínűleg igen, bár ezekben a LAN-on kívüli dolgokban nem vagyok túlságosan jártas ezen a szinten. Megpróbálok utánanézni mielőtt hülyeséget veszek.

update-2020.09.23.

Elméletileg megvan a VPS is. Contabo lett.

IV. BACKUP

A biztonsági mentést rsync-el vagy valamilyen módon iSCSI segítségével tervezem megoldani az otthoni NAS-ra, hogy onnan szükség esetén bármikor bárhova visszaállítható legyen. 

update 2020.09.24.

V. KONFIG

Miután elkészült a szerver, e-mailben megkaptam a hozzáférési adatokat. Innentől kezdve ismert a gép IP címe. Be is állítottam A rekordnak a domainem alá. Egyelőre csak átírtam a gyári alap ip-ket.

Ssh-val bejelentkeztem a kapott adatokkal. Javasolt a root jelszót megváltoztatni a passwd paranccsal. Első körben kiadtam az 

apt update && apt upgrade

  parancsot. mivel nem működött az ifconfig, feldobtam a net-tools-t.

apt install net-tools

Következő lépés, hogy a hostnevet mail-re változtattam.

hostname mail

Megnéztem melyik hálózati portok vannak használatban:

lsof -i -P -n | grep LISTEN

Szerencsére csak az 53 és a 22. Mailu esetén arra kell figyelni, hogy a telepítés előtt a 25, 80, 110, 143, 443, 465, 587, 993 és 995 portok szabadon legyenek, mert ezek lesznek majd használatban.

Alapjáraton 70MB RAM igénye volt a rendszernek :)

Docker telepítése

Ez alapján csináltam.

Miután fut a docker hello-world, még szükségünk lesz a compose-ra.

Telepítési leírás itt.

A portainer is felkerült, 2 parancs elég volt hozzá:

$ docker volume create portainer_data
$ docker run -d -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce

A mailu telepítést elkezdtem csinálni a leírás alapján, de voltak bökkenők
Először is letöltöttem a generált docker-compose.yml és mailu.env szöveges állományokat.
A yml fájl elejét át kelett írnom, mert nem akartak elindulni a szolgáltatások:

  # Core services
  front:
    image: ${DOCKER_ORG:-mailu}/${DOCKER_PREFIX:-}nginx:${MAILU_VERSION:-1.7}
    restart: always
    env_file: mailu.env
    logging:
      driver: json-file
    ports:
      - "80:80"
#      - "::1:80:80"
      - "443:443"
#      - "::1:443:443"
      - "25:25"
#      - "::1:25:25"
      - "465:465"
#      - "::1:465:465"
      - "587:587"
#      - "::1:587:587"
      - "110:110"
#      - "::1:110:110"
      - "995:995"
#      - "::1:995:995"
      - "143:143"
#      - "::1:143:143"
      - "993:993"
#      - "::1:993:993"
    volumes:
      - "/mailu/certs:/certs"
      - "/mailu/overrides/nginx:/overrides"

Miután úgy tűnt, hogy minden működik, mégsem értem el webes felületen a szervert. Mindig 403-as hiba történt.
Azt sem tudtam hol kezdjem a dolgokat. Először megnéztem a

 lsof -i -P -n | grep LISTEN

paranccsal a nyitott portokat. Meglepetésemre azt láttam, hogy minden docker által használt port IPV6.

Arra gondoltam, hogy akkor felveszem az AAAA rekordokat a DNS zónában és működni fog minden. Sajnos nem így lett, nem volt hatása.
Ezután belemásztam az /etc/hosts fájlba és mádosítottam a tartalmát:

127.0.0.1       localhost
127.0.0.1       mail.domainnevem.hu
#127.0.1.1      vmixyz.contaboserver.net     vmixyz

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

676.342.332.221 mail.domainnevem.hu
#207.180.220.221 vmixyz.contaboserver.net vmixyz

2h02:g207:2045:1u91::1 mail.domainnevem.hu

Nem lett eredménye.

Elvasgattam és itt találtam megoldást:

docker run -d --restart=always -v /var/run/docker.sock:/var/run/docker.sock:ro --privileged --net=host robbertkl/ipv6nat

Amint elindult a szolgáltatás, azonnal elértem a webes felületet.

Hozzászólások

VPS-re esetleg nézd még meg a contabo.com-ot.

Szerkesztve: 2020. 09. 22., k - 20:01

-törölve

Rackforesttel vigyázz, itt hirdet a hup-on.

Kezdésnek felejtsük el a magas rendelkezésreállást, ezt rábízom a VPS szolgáltatóra.

Ezt rá lehet bízni? Oké, ha leáll a gép, majd indít egy másikat, de hogy lesz mondjuk emögött konzisztens adatbázis, vagy automatikus failover?

Lesz majd az is. Azért írtam, hogy kezdésnek. A virtuális gép rendelkezésére állását a szolgáltató biztosítja. Failover valószínűleg nem lesz, mert irreálisan megdrágítja a projektet, de van 2 tervem, ha ott tartunk majd leírom.

- Indítsd újra a gépet! - Az egészet? - Nem, a felét...

Szerkesztve: 2020. 09. 22., k - 19:47

2G ram lófasz mailszervernek. pl clamd most 1.2G eszik az alap db-jével, egyik gépemen, ha meg több vírus db-t behuzok alá, még több lesz, és akkor többi komponensről szó se esett. Min 4G ha jót akarsz :D

Fedora 32, Thinkpad x220

Hát akkor ? se spam se vírus se semmilyen szűrés ? Vagy erre külső szolgáltatás lesz ?  Nem mondom, hogy ezek feltétlenül kellenek. Van nekem is ilyen szerver, ahol kb csak postfix van meg local user. De abban is 2G ram (httpd, sql), van es "jatszos" szervernek használom :D

Fedora 32, Thinkpad x220

Néhány éve használom a TransIP BladeVPS szolgáltatását. A jelenlegi konfiguráció 2 CPU, 4GB RAM, 350GB SSD, 2db IPv4, 1db IPv6 címmel, Ubuntu 20.04-el. Ez a config havi netto € 37. Ebben benne vannak a backup és snapshot szolgáltatások is.

Előtte stabil Debian ment rajta, később Ubuntu 18.04-ra váltottam Owncloud és Nextcloud repo-k miatt.

Szolgáltatások:

  • Email - Postfix, Dovecot, amavisd-new, spamassassin, SPF, DMARC, DKIM, DANE, etc.
  • WWW & Felhő - Apache2, Let's Encrypt certbot, Nextcloud, Collabora office, Roundcube.
  • XMPP txt, a/v - Prosody, Coturn.
  • Egyéb időleges projektek, pl. SIP, jitsi, etc.

Náluk vannak a domainek is. Nem a legolcsóbb, de stabil és jó a support.

Ami a domaint illeti, szerintem egy .org megfelelőbb egy .com-nál ha családi szerverről van szó.

hat ebbol a sajat email szerver ami nincs benne egy nextcloudban, a tobbi pipa.

A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!

A mail szerver "GUI-ját" szerintem sehogy nem fogja kezelni, ha itt a szerver oldali adminisztrációra gondolt a költő. A Nextcloud webmail klienst tud (meg naptárt, kontaktot etc) adni. Egyébként szerintem a "hivatalos" webmail kliense nagyon gagyi. De be lehet húzni alá egyéb klienseket pluginnel. Pl. Rainloop.

Ha nem akarsz kínlódni a mailszerver beállításával (vagy épp nem értesz hozzá és nincs energiád megtanulni),  akkor nem hülyeség egy email-csomagra előfizetni - nem biztos, hogy drágábban jössz ki, és talán megbízhatóbb is, mintha saját magad próbálnál egy(-két) VPS-sel magas rendelkezésreállást csinálni.

Zentyal manapság mennyire megy? Támogatott, fejlesztik? Annó a Czakó Krisztiánnak voltak képzései, akkoriban kipróbáltam. Ránézek. Bár, ha ez is úgy ingyenes ahogy pl. a FreePBX, akkor az nem annyira jó, mert pont ami kellene, általában az kerül vastag pénzekbe :D

- Indítsd újra a gépet! - Az egészet? - Nem, a felét...

Két szerveremen is van, két cégnél.

Egyik 4.2.12 , a másik 6.2 verzió.

Na verzióváltásnál vannak gondok, ezért nem akarok a 4.2-ből feljebb lépni az első szerveren. Ez már így marad ...

De amit leírtál, azt mindkettő verzió tudja.

Nálunk mailszervernek a MailCow jött be nagyon (szintén docker), file szervernek pedig seafile vagy nextcloud