Az írás inkább tanulási célra, mint hogy éles serverre való.. :)
Telepítés
Kiindulópont egy pl.:
netinstall-os Debian Lenny. Legyen
fix IP címünk, mert különben leveleink más servereken valószínűleg SPAM-ként lesznek megjelölve [
sources.list-ed is legyen rendben]. Telepítéskor én egy "gipszj" nevű felhasználót hoztam létre:D , +
VirtualBox-ban dolgoztam+
Vim-el szerkesztettem a config fájlokat, az ":syntax enable" hasznos dolog, szöveg kiemelés színesen.
Vim fent van,
esetleg ez még hasznos lehet.
Az időzóna legyen jól beállítva!! És legyen fent egy időszinkronizáló:
Először kézzel helyesbítsük azért az időt:
Állítsuk át a telepítéskori üzeneteket bőbeszédűvé:
Itt válasszuk a "párbeszédes, alacsony", azaz "dialog, low" beállításokat.
Az SMTP, és az IMAP szolgáltatásokhoz külön programok/csomagok vannak:
SMTP:
apt-get install exim4-daemon-heavy
|
Az "exim4-daemon-light" alapból fent van, de nekünk az említett heavy szükséges, mivel azzal már meg lehet valósítani egy mailservert, annak adatbázissal való kommunikációját, ldap, vírusszűrés, spamszűrés, van beépített perl interpreter-e, kávét is főz [C. Krisztián mondta :D], stb.
Állítsunk be egy pár dolgot rajta:
dpkg-reconfigure exim4-config
|
-al láthatjuk a beállításokat [menürendszerben]:
- General type of mail configuration:
- internet site; mail is sent and received directly using SMTP
- Normál internetes mailserver. "Direktbe" küldünk, és fogadunk leveleket.
- mail sent by smarthost; received via SMTP or fetchmail
- Pl.: irodai/céges mailservernél, a kimenő levelekre a szolgáltatód ügyel ["smarthost"], ő majd kézbesíti, ahova kell. Beérkező levelek pl.: fetchmail-el, POP3-al jönnek be.
- mail sent by smarthost; no local mail
- Nem egy igazi mailserver, hanem pl.: a gép egy fileserver, amin "nincs levelezés", de a hibaüzeneteket azért meg szeretnénk kapni.
- local delivery only; not on a network
- Megint nem igazi mailserver, nem küldünk kifele semmilyen levelet, nem fogadunk befele semmilyen levelet, csak helyben kézbesítünk. Pl.: a rendszergazdának szánt rendszerüzenetek, de ezen kívül nincs levelezés.
- no configuration at this time
Tehát
- Válasszuk a legfelsőt [internet site; mail is sent and received directly using SMTP].
- The 'mail name': itt állíthatjuk be, hogy mi a gépünk levelezésben használt neve [tehát a levélben a "@" utáni rész]. Valamint a géped az internetről érkező, az erre a címre jövő leveleket elfogadja. A default neved jó.
- Itt jön az, hogy milyen IP címen fogadja a kapcsolatokat az SMTP server. Ha ez nem egy rendes internetes mailserver, és csak az a célod, hogy helyileg küldjél, vagy kézbesíts leveleket, akkor a "127.0.0.1" elég, szóval csak a localhoston, sehol máshol.
Ha azt akarod, hogy ez egy rendes internetes mailserver legyen, akkor ezt kitörlöd.
Vagy ha azt akarod, hogy olyan servered van, hogy a leveleket POP3-al a szolgáltatódtól töltöd le rá, és a helyi usereid ezen keresztül küldenek kifele levelet a világba, és mondjuk ez a gép egyszerre látja az intranetet, és az internetet, akkor itt csak az intranetes IP címet adod meg, hogy az SMTP szolgáltatás csak az intranetes gép számára legyen elérhető.
- Milyen "@" után levő nevekről érkező leveleket fogadjon el a server. És helyileg kézbesíti őket. Arra vigyázz, hogy amit megadsz, levelezési név [az elején, hogy mi az alapértelmezett neve], és amiket itt felsorolt neveket, azokat helyi levelezési neveknek/címeknek fogja tekinteni. Az erre a címekre menő leveleket helyben akarja kézbesíteni. Tehát ha ide beírod a pl.: "t-online.hu"-t, akkor attól a pillanattól t-online-os ügyfélnek levelet nem fogsz tudni küldeni [pl.: visszapattan ismeretlen userrel]. Ha több domaint akarsz kiszolgálni ezzel a serverrel [localhost alapból benne van a listában], akkor itt tudod felsorolni őket [a domainek felsorolása kettősponttal történik].
- [Domains to relay mail for] Itt felsorolhatod, hogy melyek azok a domain nevek, amiknek továbbítani szeretnéd a leveleit [tehát te relay server vagy, fogadod, és továbbítod a levelet egy másik mail servernek, pl.: tartalék server funkció - nem smarthost!].
Ez arról szól, hogy egy adott domain-nek úgy van beállítva az interneten a DNS-ben az MX-e, hogy van két server: az elsődleges, amin a levelek vannak, a másodlagos server a relay server, ha te vagy egy ilyen másodlagos server, akkor azokat a domaineket sorolod fel, aminek te a másodlagos serverre vagy, és akkor ha az elsődleges serverre nem tudnak majd levelet kézbesíteni, kapod te, mint másodlagos server [ha írtad, hogy azt a domaint elfogadod]. De ha DNS-ből látod, hogy van elsődleges server, akkor nem fogod helyileg kézbesíteni, hanem próbálod továbbadni az elsődleges servernek. Ha helyreállt, akkor tovább is adod neki [tehát ezzel egy tartalék servert tudsz csinálni a hálózatodon]. Hagyd üresen, ha nem vagy relay server [portszámot "::portszám"-al tudsz megadni]. Szóval röviden erről a részről: itt sorolhatjuk fel, hogy mik azok a domain-ek, amikre bárki küldhet rajtunk keresztül levelet. Alapból hagyd üresen.
- [Machines to relay mail for]: Mik azok az IP címek/tartományok, ahonnan jövő kapcsolattal az illető bárhova küldhet rajtunk keresztül levelet [Ide NE adjuk meg a pl.: "0.0.0.0"-át, vagy a "0.0.0.0/0", mert akkor a világban bárki küldhet rajtunk keresztül levelet. Ezt tilos beállítani az említett módon, mert a neten folyamatosan léteznek, scannelnek olyan botok, amik keresnek olyan címet, amin keresztül tudnak bárhova levelet küldeni - spammerek. Open Relay]. Hagyd üresen.
- [Keep number of DNS-queries minimal?] Ha csak nincs egy rendkívülien lassú kapcsolatod [ISDN, stb], "No".
- "mbox format in /var/mail/": minden felhasználónévnek egy külön fájl, abban az egy darab fájlban minden levél, lassú, nehezen kezelhető.
- "Maildir format in home directory": A felhasználó saját könyvtárába kerülnek a levelek, egy "Maildir" nevű mappába, azon belül is egy "cur", "new", és egy "tmp" alkönyvtárba, minden egyes levél külön fájlba. Ez jobb, mert a felhasználó saját dolgai a saját mappájában van, a levelek hozzáférése is gyorsabb, mert nem egy több gigás fájlban kell megkeresnünk a levelet, ami mellesleg egy sima textfile lenne, amit indexelni nem igazán lehetne. Tehát a választás inkább a Maildir legyen.
- [Split configuration into small files?]: Alapértelmezetten "No", de válaszd a "Yes"-t. Rakja a configokat külön kis fájlokba, egy nagy helyett - pl.: az átláthatóság miatt ["/etc/exim4/conf.d/"-be rakja őket]. Igazából a "/var/lib/exim4/config.autogenerated" fájlban lesznek a valódi beállítások, amik az Exim újraindításakor kerülnek generálásra ["/etc/init.d/exim4 restart"].
- Esetleg még megkérdi, hogy kinek menjenek a rendszerüzenetek, válaszd azt, akit szeretnél erre a célra [nem root, hanem hozz létre egy felhasználót].
IMAP:
apt-get install dovecot-imapd
|
Egyéb:
Vírus ellenőrzés:
apt-get install clamav clamav-daemon clamav-freshclam
|
A ClamAV fusson pl.: Daemon-ként, és válassz egy közeli mirror-t az adatbázisának frissítéséhez.
WebGUI a levelezéshez:
apt-get install horde3 imp4 turba2
|
Kérdezni fog egy pár dolgot, pl.: megjelenítésről, válaszd a default-okat, vagy pedig célod szerint.
További konfig
Hozzunk létre a megfelelő helyen egy "00_local" nevű saját config fájlt. Ezt az Exim észreveszi, és pl.: az esetlegesen saját filébe leírt/definiált változókat később nem fogja már feltétlenül legenerálni a gyári default-ra, hanem megmaradnak az általunk megadottak:
vim /etc/exim4/conf.d/main/00_local
|
A file [00_local]:
# Mondjuk meg az Exim-nek, hogy ki a virusscanner [tobb viruskeresot is be lehet allítani, de akkor az acl-nel kell allitgatni, de eleg a ClamAV]:
av_scanner = clamd:/var/run/clamav/clamd.ctl
# legyen egy file, amibe szeretnenk irni egy par szabalyt
CHECK_DATA_LOCAL_ACL_FILE = /etc/exim4/local_data_acl
|
Itt kereshetünk local változókat [de nincs mindegyik gyárilag definiálva]: "/etc/exim4/exim4.conf.template", pl.: a "00_local"-ba definiálhatunk dolgokat, ha kell.
Exim4-hez az ACL file tartalma, amire előbb hivatkoztunk [kinézete: 1 - megmondom, hogy mit akarok, 2 - milyen feltételekkel]:
vim /etc/exim4/local_data_acl
|
Így néz ki a file [local_data_acl]:
accept hosts = 127.0.0.1 # ha localhost-rol jon a level, akkor nem kell virusellenorzes
deny # deny, azaz SMTP REJECT-et kap az illeto, at sem veszem a levelet, RFC szerint [de "drop"-olni is lehet, a kuldo nem fogja tudni, hogy en azt a levelet eldobtam]
message = Tiltott kiterjesztes: $found_extension
demime = com:ovl:sys:dll:vbs:exe:msi:bat:cmd
#deny # ha el szeretnenk dobni a virusos leveleket [hashmark-ba raktam, mert most csak proba]
# message = Virusos tartalom ($malware_name), hasznalj inkabb Linuxot.
# malware = *
warn # csak egy figyelmeztetest rakjon a virusos levelek vegere
message = Virusos tartalom ($malware_name), hasznalj inkabb Linuxot.
malware = *
warn # a levelek vegere szurhatunk sajat uzenetet, felteve ha a level atment minden szuron
message = X-Reklam-Helye: virusellenoriztuk a levelet.
|
A nemrégi telepítéskori 9)-es pontban említetten a :
/etc/init.d/exim4 restart
|
paranccsal tudod a saját configjaidat bevinni az Exim-be, mármint ekkor ő legenerálja neked a "/var/lib/exim4/config.autogenerated" fájlt, amiben valóban tárolja a beállításokat, csak mi szétszedtük őket, a könnyebb kezelhetőség miatt.
Ez után adjuk hozzá a "clamav" felhasználót a "Debian-exim"-csoporthoz, mert különben a clamav nem fogja tudni elérni a megfelelő könyvtárakat:
adduser clamav Debian-exim
|
Nézzük meg, hogy biztos hozzá-e lett adva az adott user a csoporthoz:
Ha azt írja, hogy: "clamav Debian-exim", akkor ok.
Még hátra van az authentikáció beállítása. [Megjegyzés: authentikáció: pl.: felhasználónév/jelszó párossal azonosítani valamit/valakit. Authorizáció: Meggyőződni a fél, vagy felek személyazonosságáról, pl.: tanúsítványok használatával.]
Smarthost használata esetén [csak akkor] a "/etc/exim4/passwd.client"-fájlba kell beleírni a mailserver nevét, kettőspont felhasználónév, kettőspont jelszó. Azon túl az Exim a kimenő leveleknél authentikálni fogja magát, azon a serveren, ahová küld [csak vigyázz, hogy a tényleges neve legyen a server neve].
A bejövő SMTP authentikációhoz a "/etc/exim4/conf.d/auth/" mappában találhatsz "mintákat". Módosítsd benne egy pár dolgot [hashmark jelet vedd ki egy pár sor elől], tehát:
vim /etc/exim4/conf.d/auth/30_exim4-config_examples
|
és a "
plain_server:"-résztől kezdődően vedd ki a sorok elől a hasmark jelet, egészen a "
.endif" részig. Ugyan így a "
.endif" részig vedd ki a commenteket a "
login_server:"-rész elől is. Még vedd ki a megjegyzésből a "
cram_md5_server"-el kezdődő sorokat is, egészen a "
server_set_id = $auth1"-ig.
A felhasználóknak a "/etc/exim4/passwd" filében kell lenniük [usernev:md5-elkodolt-jelszo:simajelszo]. [de "htpasswd"-el is kompatibilis] tehát:
A file [passwd]:
gipszj:md5-elkodolt-jelszo:simajelszo
usernev1:md5-elkodolt-jelszo:simajelszo
usernev2:md5-elkodolt-jelszo2:simajelszo2
|
Ha nincs cleartext jelszó [sima jelszó], akkor nem fognak működni a
challenge-response alapú authentikációk, mint pl.: a
cram-md5, ami egy fokkal biztonságosabb, ha nem TLS-t [titkosított kapcsolatot] használunk. Ha beleírjuk a cleartext jelszót, akkor menni fognak ezek, de viszont érthető okokból nem a legjobb.
Ellenőrizzük, hogy működik-e
Küldjünk egy levelet a "gipszj" felhasználónak.
Tudjuk, hogy mit adtunk meg domain névnek anno. [
A "valami.hu" helyére a pl.: hostname menjen],
off]:
echo "ez a mailszoveg" | mail -s "valami-targy" gipszj@valami.hu
|
Nézzük meg, hogy meg-e érkezett az e-mail a user "Maildir" mappájába:
cd /home/gipszj/Maildir/new
|
Ok, megérkezett, csak próbáljunk ki egy másik "módszert" :) :
A "$ "-el jelzem, hogy azt gépelni kell, "."-al jelezzük, hogy vége az e-mailnek.]
$ telnet IPCIM 25
Trying IPCIM...
Connected to IPCIM
Escape character is '^]'.
220 valami.hu ESMTP Exim 4.69 Fri, 7 Aug 2009 15:00:00 +0200
$ mail from: gipszj@valami.hu
250 OK
$ rcpt to: gipszj@localhost
$ data
$ From: Gipszj <gipszj@valami.hu>
$ To: Gipszj <gipszj@valami.hu>
$ Subject: barmi
$ safasdfsafas
$ asdfasdf
$ .
$ quit
|
A "/home/usernev/Maildir" mappában kellene lennie a levélnek, a "new"-ban.
Webmail beállítása
Lehessenek logok:
touch /var/log/horde/horde3.log
chown root:www-data /var/log/horde/horde3.log
chmod 770 /var/log/horde/horde3.log
|
Most vagy állítsuk be az apache config-jában, hogy hol van a horde mappája, vagy pedig készítsünk egy
symlink-et.
ln -s /usr/share/horde3 /var/www/
|
Telepítsük fel a
mysql-server-5.0-át:
apt-get install mysql-server-5.0
|
Adjunk egy jó jelszót a telepítéskor, majd válasszuk a "
No-t" [Support MySQL connections from hosts running Debian "sarge" or older?].
Ez után a mysql-es example-t másoljunk a pl.: "/tmp"-be:
cp /usr/share/doc/horde3/examples/scripts/sql/create.mysql.sql.gz /tmp/
|
Majd tömörítsük ki a ".gz" filét:
cd /tmp/
gunzip create.mysql.sql.gz
|
Majd szerkesszük meg Vim-el:
vim /tmp/create.mysql.sql
REPLACE INTO user (host, user, password)
VALUES (
'localhost',
'horde',
-- IMPORTANT: Change this password.
PASSWORD('horde')
);
|
A "horde" password-öt módosítsuk másra, pl.: valami értelmes jelszóra.
Ez után:
mysql -u root -p < /tmp/create.mysql.sql
|
A "/etc/horde/horde3/"-ban szerkesszük meg a "registry.php" filét, miszerint nekünk kell "active"-á tenni az egyed "modulokat":
vim /etc/horde/horde3/registry.php
|
És az "
imp" résznél, a "
statust" állítsuk "
active"-ra, az "
inactive"-ról. Ugyan így a "
turba" résznél is legyen a "
status" "
active".
Még az IMP, és a Turba SQL-es részét adjuk hozzá:
mysql -u root -p horde < /usr/share/doc/imp4/examples/scripts/sql/imp.sql
mysql -u root -p horde < /usr/share/doc/turba2/examples/scripts/sql/turba.sql
|
A "/etc/horde/imp4"-en belül a "servers.php"-t módosítsd a "$servers['imap']" résznél:
vim /etc/horde/imp4/servers.php
|
- A " 'server' => 'imap.example.com' " helyett legyen: " 'server => 'localhost' "
- A " 'protocol' => 'imap/notls' " helyett legyen: " 'protocol' => 'imap/ssl/novalidate-cert' "
- A " 'port' => 143 " helyett legyen: " 'port' => 993 "
- A " 'maildomain' => 'example.com' " helyett legyen pl.: : " 'maildomain' => 'localhost.lan' "
- A " 'smtphost' => 'smtp.example.com' " helyett legyen " 'smtphost' => 'localhost' "
Most módosítsd a jogosultságokat egy pár
filénél, hogy a webes felületen beállíthassunk egy-két dolgot:
chmod 777 /etc/horde/horde3/conf.php
touch /etc/horde/horde3/conf.bak.php
chmod 777 /etc/horde/horde3/conf.bak.php
|
ifconfig-al tudjuk meg a gépünk IP címét, és írjuk be egy másik gépen egy böngészőbe azt, pl.: "XXX.XXX.XXX.XXX/horde3/". Egy üzenet fogad bennünket: "Horde3 configuration disabled by default because the administration/install wizard gives the whole world too much access to the system. Read /usr/share/doc/horde3/README.Debian.gz on how to allow access." - Ezt javítsuk ki:
vim /etc/horde/horde3/conf.php
|
Szóval megnyitottuk szerkesztésre a "conf.php" filét, itt vegyük ki a második, és a harmadik sort [ügyelve, hogy a "<?php" maradjon meg az elején! :D]. Az általunk kitörölt üzenettel találkoztunk előzőleg a böngészőben [+ a harmadik sorban van egy "exit (0)", amit szintén törlünk]. De nem muszáj kitörölni ezeket a sorokat, "//"-eket is rakhatunk eléjük, ezzel commentbe helyezve őket.
Most következik egy pár webes felületen történő beállítás [ekkor még hibaüzeneteket láthatunk bőven "webgui"-n, és a jogosultságokat kell majd állítani előtte a serveren]:
IMP-nél:
chmod 777 /etc/horde/imp4/conf.php
touch /etc/horde/imp4/conf.bak.php
chmod 777 /etc/horde/imp4/conf.bak.php
|
A "
http://serverIPcíme/horde3/"-re lépve menjünk az Administration-Setup részben a "Mail (imp)"-re kattintva menjünk a "Generate"-re, ok, legenerálta a config filéjét, most módosítsuk vissza a jogosultságokat:
chmod 644 /etc/horde/imp4/conf.php
chmod 600 /etc/horde/imp4/conf.bak.php
|
Most a
Turba2:
chmod 777 /etc/horde/turba2/conf.php
touch /etc/horde/turba2/conf.bak.php
chmod 777 /etc/horde/turba2/conf.bak.php
|
Ok, super, miután kész, még a turba2-őt is generáljuk le, lépjünk az "Administration/Setup"-on belül az "Address Book (turba)"-ra, majd "Generate Address Book Configuration".
Állítsuk megint vissza a jogokat:
chmod 644 /etc/horde/turba2/conf.php
chmod 700 /etc/horde/turba2/conf.bak.php
|
A "
Horde (horde)"-re kattintva előjön "rengeteg" fül:
- Database fül:
- A "$conf[sql][phptype]"-nál válaszd a "MySQL"-t.
- $conf[sql][username]: horde
- $conf[sql][password]: sql-jelszod
- $conf[sql][socket]: /var/run/mysqld/mysqld.sock
- $conf[sql][database]: horde
- $conf[sql][charset]: utf-8
- Authentication fül:
- $conf[auth][admins]: gipszj
- $conf[auth][driver]: "Let a Horde application handle authentication"
- $conf[auth][params][app]: imp
- Logging fül:
- $conf[log][enabled]: "Yes"
- Preference System fül:
- $conf[prefs][driver]: "SQL Database"
- Alarm System fül:
- $conf[alarms][driver]: "SQL Database"
- DataTree System fül:
- $conf[datatree][driver]: "SQL Database"
Most katt a "Generate Horde Configuration"-ra.
Állítsuk vissza a jogokat:
chmod 644 /etc/horde/horde3/conf.php
chmod 600 /etc/horde/horde3/conf.bak.php
|
Reboot, majd majd bejelentkezés, az én esetemben "gipszj" felhasználóval [mármint webes felületen egy logout után].
ui.:
_Czakó Krisztián és Haluska György szavai alapján_ [egy Rossz minőségű diktafon felvételből+".bash_history"-ból+kevés idő megbeszélésre :D], szóval ha bármi hiba: FIXME. Bármilyen helyesbítést/kiegészítést szívesen várok.
ui2.:
Configuring Horde Debian Wiki
ui3.: Utólag találtam 1-2 howto-t:
Exim4 + Courier + SSL on Debian etch mini-HOWTO
ui4.:
Exim4 + ClamAV + SpamAssassin + Greylistd on Debian etch mini-HOWTO
ui5.:
Exim4 + Mailman + Apache2 on Debian etch mini-HOWTO
ui6.:
még egy link,
link2,
link3,
link4,
link5,
link6.
Nincsenek megjegyzések:
Megjegyzés küldése