VExim alapú levelező szerver (Jessie)
Fejlesztés alatt, hiányos, lehet benne zsákutca - ne vedd komolyan!
Tartalomjegyzék
A megoldás vázlata
Telepítés
A komponensek telepítését az alábbi sorrendben fogjuk elvégezni:
- MySQL adatbázis és adatbázis-felhasználó elkészítése;
- Exim4 heavy (mail transfer agent, MTA);
- ClamAV (malware scanner);
- SpamAssassin (spam scanner);
- VExim2 Plus (a fentiek működését vezérlő MySQL adminisztráció LAMP webfelületen);
Megjegyzendő, hogy a VExim semmilyen file műveletet nem végez, kizárólag a hozzá tartozó Exim router és transport MySQL-en keresztüli vezérlésével működik! Nézetem szerint ez egy igen biztonságos megközelítés.
- Dovecot (IMAP, POP3 szerverprogram postafiókok kezeléséhez);
- RoundCube (webfelületű IMAP kliens).
MySQL adatbázis elkészítése
Készítsük el a MySQL adatbázist, amelynek egyetlen, az adatbázisra nézve teljes jogú felhasználója van. Az adatbázist és a felhasználót a MySQL root hozzáféréssel hozzuk létre.
mysql --defaults-file=/etc/mysql/root.cnf mysql> CREATE DATABASE vexim character set utf8; mysql> GRANT ALL PRIVILEGES ON vexim.* TO 'vexim'@'localhost' IDENTIFIED BY 'PASSWORD'; mysql> FLUSH PRIVILEGES;
ahol a PASSWORD egy megfelelő jelszó. Relatív megjegyezhető, mégis erős jelszó a pwgen segédprogrammal is generálható, pl. a következőképpen:
/usr/bin/pwgen -s -n -c 12 1
Ellenőrizzük, hogy a felhasználó megfelelően létrejött-e:
mysql> SELECT host, user, password FROM mysql.user; +-----------+------------------+-------------------------------------------+ | host | user | password | +-----------+------------------+-------------------------------------------+ | localhost | vexim | *A9.............censored................E | [...] +-----------+------------------+-------------------------------------------+ mysql> quit
Ezután próbáljunk a létrehozott felhasználó nevében és jelszavával belépni. Az alábbi parancsokkal ellenőrizhetjük, hogy a felhasználó jogosultságai valóban csak erre az adatbázisra terjednek ki:
mysql -u vexim -p Enter password: mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | vexim | +--------------------+ mysql> quit
A felhasználó felvételét és kipróbálását követően töröljük le a .mysql_history állományt, mert ebben a jelszó szabad szöveges formában benne van:
rm ~/.mysql_history
Az adatbázis iniciális feltöltését a VExim2 Plus telepítője végzi.
Az exim4-daemon-heavy telepítése
Az alapértelmezetten települő Exim4 (light) nem tartalmazza a MySQL kezeléshez és a külső (antimalware és spam) scannerekhez szükséges kiegészítéseket, így ezt le kell cserélnünk a teljes funkcionalitású exim4-daemon-heavy csomagra:
apt-get install exim4-daemon-heavy
Ezután ellenőrizzük az Exim beállításait:
mount -o remount,exec /var dpkg-reconfigure exim4-config
- internetes gép konfiguráció;
- mail host név maradhat alapértelmezett (külön fogjuk beállítani);
- az SMTP figyeljen minden IP-n, ne csak localhoston (tényleges levélfogadás lehetősége);
- saját domainek listája maradhat alapértelmezett (VExim fogja kezelni);
- relay domainek listája maradhat alapértelmezetten üres (VExim fogja kezelni);
- relay hostok listája maradhat alapértelmezetten üres (VExim fogja kezelni);
- DNS kérésekkel nem szükséges takarékoskodni;
- a helyi kézbesítési mód legyen hagyományos mailbox (nem Maildir);
- legyen sok kis beállítóállomány.
Ellenőrizzük továbbá, hogy a szerver milyen FQHN-vel (Fully Qualified HostName) jelentkezik be levélküldéskor:
echo "Teszt" | mail -s Teszt helocheck@cbl.abuseat.org; tail -f /var/log/exim4/mainlog
Ez egy azonnal visszapattanó levelet eredményez, amelybe a helocheck beleírja az általunk ténylegesen használt FQHN-et. Ha ez nem egyezne meg a
dig -x IP.IP.IP.IP # szerver publikus IP címe
paranccsal megtudható reverse-zel, akkor manuálisan állítsuk be a helyes (reverse) FQHN-et. Ehhez készítsük el az alábbi extra konfigurációs állományt:
-rw-r--r-- root root /etc/exim4/conf.d/main/99_exim4-config_custom_settings [...] # Custom settings - nor provided by maintainer, # nor customizable by Debian automagic REMOTE_SMTP_HELO_DATA = "helyes.reverse.FQHN"
Érvényesítsük a beállításokat és ismételjük meg a helocheck tesztet:
/usr/sbin/update-exim4.conf; systemctl reload exim4 echo "Teszt" | mail -s Teszt helocheck@cbl.abuseat.org; tail -f /var/log/exim4/mainlog
Siker esetén állítsuk helyre a /var szigorú csatolását:
mount -o remount /var
A ClamAV telepítése
VExim Plus telepítése
A VExim Plus a jelen megoldás egyetlen, saját fejlesztésű (nem Debian) komponense. Alapját a 2002 óta fejlesztett Virtual Exim szoftver 2014 májusi állapotú kódbázisa képezi, amelyet gyakorlatilag teljesen átírtam.
A kódkészlet telepítése
Még alakul!
Töltsük le a vexim-plus legfrissebb változatát, és tartalmát rendszergazdaként, a /usr írhatóan újracsatolása után, a könyvtárszerkezet és a jogosultságok megtartásával csomagoljuk ki! Ezután (még minidg írható /usr mellett) indítsuk el a telepítő scriptet a
/usr/local/share/vexim-plus/update_vexim.sh
paranccsal. A telepítő script igyekszik biztonságosan dolgozni, azaz minden lényeges lépéshez engedélyt kér, meglévő telepítést, adatbázist, stb. nem ír felül, így akár többször is, biztonsággal elindítható.
- Az elindított telepítő engedélyt kér a PHP kód kicsomagolására, és ha engedjük (y), létrehozza az alábbi könyvtárstruktúrát:
/usr/local/share/vexim-versions /vexim2+-X.Y-pYYYYMMDD
ahol X.Y a kódbázis verziószáma, bYYYYMMDD az aktuális build azonosítója. A későbbi frissítések hasonló könyvtárakba kerülnek, ezek közül az aktuálisan használt kódverziót symlinkeléssel választhatjuk ki (a symlinket a telepítő lefutása után készíthetjük el):
# Symlink az aktuális verzióra ln -s vexim-versions/vexim2+-X.Y-bYYYYMMDD /usr/local/share/vexim chown -h root:www-data /usr/local/share/vexim # Csak szépség :-)
Ez a symlink biztosítja, hogy esetleges frissítés után is a mindenkori webszolgáltatás kódkészlete a /usr/local/share/vexim útvonalon látsszék.
- A PHP kód kicsomagolása után a telepítő engedélyt kér a MySQL adatbázis feltöltésére.
Jelenleg a telepítő ezt a lépést csak akkor tudja végrehajtani, ha a MySQL root hozzáférés a házirendünk szerinti /etc/mysql/root.cnf állománnyal biztosított és a vexim adatbázis létezik (más helyzetek kezelése: TODO!). Engedjük az adatbázis feltöltését (y), de a telepítő további lépéseit (Exim4 és Courier konfigurációk beállítása) most még ne futtassuk le (n).