Levelezőszerver
Összeállította: Sallai András
A levelezés eszközei Mail User Agent – levél írása ●
MUA
●
MSA
●
MTA
●
MDA
●
MS
Mail Submission Agent - fogad Mail Transfer Agent - továbbít Mail Delivery Agent – eloszt, átad Mail Storage - tárol
Feladó
Internet Levelezőszerver Levelezőszerver
Címzett
Levelezőszerver fogadja a levelet
SMTP
MS MDA MSA
SMTP
MTA
Majd tovább küldi
Levelezőszerver fogadja a levelet MS POP3 IMAP
MDA MSA MTA Majd tárolja
SMTP
Levelezőszerver MS
Courier
MDA MSA MTA
Postfix
SMTP SMTP
IMAP POP3
Levelek tárolása Maildir
mbox
Minden levél külön fájlban
Minden levél egy fájlban
Egy mappa egy könyvtár
Egy mappa Egy fájl
mbox helye Normál Linux felhasználók /var/mail/
Nagy forgalmú levelezőkön Használata nem javasolt Nagy fájloknál a levelek olvasása lassú
Maildir helye Normál Linux felhasználók /home/username/Maildir
Virtuális e-mail felhasználók /home/vmail/domainname/username/Maildir
Feladó
Címzett
Mi az a MUA?
MUA - Mail User Agent Levelező kliens ●
Thunderbird
●
Opera Mail
●
The Bat!
●
Microsoft Outlook
●
Outlook Express
●
Kmail
●
Mutt
Levélfejléc Return-Path:
X-Original-To: andras@matrix Delivered-To: andras@matrix Received: by matrix (Postfix, from userid 0) id 9336923441C; Sat, 28 Nov 2009 12:09:56 +0100 (CET) Date: Sat, 28 Nov 2009 12:09:55 +0100 From: root To: Sallai =?iso-8859-1?Q?Andr=E1s?= Subject: teszt Message-ID: <20091128110955.GA6077@matrix> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.18 (2008-05-17)
Alkalmazott protokollok Simple Mail Transfer Protocol Levélküldés ●
SMTP
●
POP3
●
IMAP
Post Office Protocol 3 Levél letöltés Internet Message Access Protocol Levél hozzáférés
220 piros.hu ESMTP Postfix (Debian/GNU) ehlo zold.hu 250-piros.hu 250-PIPELINING SMTP 250-SIZE 10240000 kommunikáció 250-VRFY 250-ETRN 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN mail from: <[email protected]> 250 2.1.0 Ok rcpt to: 250 2.1.5 Ok data 354 End data with .
SMTP alaputasítások
●
EHLO ki vagyok
●
MAIL FROM Kitől van a levél
●
RCPT TO Kinek szól a levél
●
DATA Adatok amit küldök
POP3 alaputasítások ●
USER felhasznalonev - felhasználónév
●
PASS jelszó - Jelszó megadása
●
STAT - levelek száma és összméret
●
LIST - levelek sorszámmal és mérettel
●
RETR – Letöltés
●
DELE – Törlése
POP3 teszt freemail-en telnet freemail.hu 110 Trying 195.228.245.1... Connected to freemail.hu. Escape character is '^]'. +OK <[email protected]> user jozsi +OK pass titok +OK
IMAP
A levelek nem töltődnek le, a szerveren tárolódnak. Sok funkció, üzenetállapotok, stb.
Protokollok és portok
Protokoll SMTP SMTPS POP3 IMAP POP3S IMAPS
Port 25 465 110 143 995 993
Postfix
Telepítés apt-get install postfix
Az így telepített postfix quota-át nem tud. Forrás foltozni kell, újrafodítani a quota-hoz.
Telepítés után
/etc/postfix main.cf master.cf
main.cf A legtöbb alapértelmezett beállítás használható
név = érték párosok A nevek újrahasználhatók másiknév = $név
Queue kezelés mailq - a queue tartalma sendmail -f postsuper -d queue-id
/etc/postfix/main.cf A gép teljes neve myhostname = gepnev.cegnev.hu Tartomány mydomain = cegnev.hu Helyben keletkezett levélbe írodik myorigin = $mydomain Mely gépnevekhez tartozó leveleket dolgozzuk fel mydestination = $myhostname, localhost
Szerveren átmenő levelek
mynetworks = 127.0.0.0/8 192.168.1.0/24
Rajtunk keresztül innen engedélyezett levélküldés
Levélküldő szerver relay_domains = Milyen szerver fogad tőlünk levelet Akkor is ha nem neki szól Általában az Internet szolgáltatónk fogad ilyen levelet csak Dedikált e-mail szervernél nem szoktunk ilyet beállítani
Álnevek alias_maps = hash:/etc/aliases newaliases Minden módosítás után /etc/aliases postmaster: jozsi root: jozsi A postmaster és a root felhasználóknak címzett levek is elfogadottak és a jozsi felhasználónak kapja
Álnevek 2 alias_database
Álnevek megadása szintén
alias_database = hash:/etc/aliases
Pl. NIS adatbázist is megadhatunk alias_maps alias_maps = hash:/etc/aliases, nis:mail.aliases
Értesítés új levélről biff = yes Ha a felhasználó belép login promptnál értesítést kap ha új levele érkezett
A linuxos biff csomag biff parancsa ugyanezt a feladatot látja el
MAIL FROM kiegészítése append_dot_mydomain = no
Ha a levelező nem ír pont domaint a mail from: sorba és a mydomain változónak adtunk értéket, akkor a postfix hozzáfűzi a mail from: sor végéhez
Olvasnivalók helye readme_directory = /usr/share/doc/postfix
A Postfix README fájlok helye, Amelyek leírják hogyan építsük, konfiguráljuk vagy kezeljük egy Postfix alrendszert vagy lehetőséget.
HTML olvasnivalók helye html_directory = /usr/share/doc/postfix/html
A Postfix HTML fájlok helye, Amelyek leírják hogyan építsük, konfiguráljuk vagy kezeljük egy Postfix alrendszert vagy lehetőséget.
Értesítés delay_warning_time = 4h Alapértelmezett: 0h Mennyi idő után kapjon a küldő üzenetet Levélfejrészek queue-ban tartózkodásáról. Engedélyezéshez nem nulla értéket kell beállítani Idő egységek: s (másodpercek), m (percek), h (órák), d (napok), w (hetek). Az alapértelmezett időegység: h (órák).
Procmail használata mailbox_command = procmail -a „$EXTENSION” Az érkező leveleket a procmail is feldolgozza. Alapértelmezetten nincs procmail konfiguráció Beállítva, de minden felhasználó írhat magának .procmailrc fájlt. Több változót is átadunk a procmail programnak
Postafiók mérete mailbox_size_limit = 0
Alapértelmezett: 51 200 000
0 érték korlátozás nélküliséget ad Nem lehet kisebb mint a message size limit
Elválasztó recipient_delimiter = + Felhasználónév és a kiterjesztés közötti elválasztó
Például spamszűrésnél használjuk: [email protected] [email protected]
Hálózati eszközök inet_interfaces = all
Melyik eszközön fogadjunk leveleket
Esetleg: inet_interfaces = 192.168.1.2, 127.0.0.1
POP3
POP3 szerver telepítése apt-get install courier-pop
POP3 ellenőrzése telnet localhost 110 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. +OK Hello there. user gabor +OK Password required. pass titok +OK logged in.
Sikertelen azonosítás Escape character is '^]'. +OK Hello there. user [email protected] +OK Password required. pass titok -ERR Login failed.
További pop3 parancsok list +OK POP3 clients that break here, they violate STD53. 1 445 2 445 3 445 4 418 5 418 6 418 .
RETR 1 parancs retr 1 +OK 445 octets follow. Return-Path: X-Original-To: andras Delivered-To: [email protected] Received: from vagyok (localhost [127.0.0.1]) by arasz.snet.and (Postfix) with ESMTP id B14F5187DF for ; Thu, 26 Nov 2009 23:53:28 +0100 (CET) Subject: test 001 Message-Id: <[email protected]> Date: Thu, 26 Nov 2009 23:53:28 +0100 (CET) From: [email protected] To: undisclosed-recipients:; Teszt levél
Ha nincs DNS beállítva
disable_dns_lookups = yes ignore_mx_lookup_error = yes relayhost = 192.168.5.3 Ahova küldeni akarunk smtp_host_lookup = dns,native
Egyéb beállítások
Maildir könyvtár Linux felhasználóknak mailbox_command = procmail -a „$EXTENSION” DEFAULT=$HOME/Maildir/ home_mailbox = Maildir/
Virtuális felhasználók
Naplófájlok figyelése
tail -f /var/log/syslog Folyamatosan használjuk!
Csoport és felhasználó groupadd -g 5000 vmail useradd -g vmail -u 5000 vmail -d /home/vmail -m
-m létrehozza a home könyvtárat
Maildirek helye virtual_mailbox_base = /home/vmail
/etc/postfix/main.cf
Maildirek uidje és gidje virtual_uid_maps = static:5000 virtual_gid_maps = static:5000
/etc/postfix/main.cf
Mailboxok útvonalának /etc/postfix/main.cf virtual_mailbox_maps = mysql:/etc/postfix/virtual/mailboxes.cf
Mailbox kikeresése /etc/postfix/virtual/mailboxes.cf
user = mail_admin password = titok dbname = mail query = SELECT CONCAT( SUBSTRING_INDEX(email,'@',-1),'/', SUBSTRING_INDEX(email,'@',1),'/') FROM user WHERE email = '%s' hosts = 127.0.0.1
Domainek helye /etc/postfix/main.cf virtual_mailbox_maps = mysql:/etc/postfix/virtual/domains.cf
Domain kikeresése /etc/postfix/virtual/domaines.cf
user = mail_admin password = titok dbname = mail query = SELECT domain FROM domains WHERE domain = '%s' hosts = 127.0.0.1
Emailek helye /etc/postfix/main.cf virtual_mailbox_maps = mysql:/etc/postfix/virtual/emails.cf
Email kikeresése /etc/postfix/virtual/emails.cf
user = mail_admin password = titok dbname = mail query = SELECT email FROM user WHERE email = '%s' hosts = 127.0.0.1
Jelszavas fájlok chmod o= /etc/postfix/virtual/*.cf chgrp postfix /etc/postfix/virtual/*.cf
Mivel jelszavakat tartalmaznak virtual könyvtárban lévő fájlok, ezért másoktól minden jogot elveszünk
Postfix tudjon MySQL haszálni
apt-get install postfix-mysql
MySQL telepítés, beállítás
Telepítés
apt-get install mysql-server-5.0
Adatbázis felvétele
mysql -u root -p CREATE DATABASE mail; use mail;
Domais tábla létrehozása
CREATE TABLE domains ( domain varchar(50) NOT NULL, PRIMARY KEY (domain) );
Users tábla létrehozása
CREATE TABLE user ( email varchar(80) NOT NULL, password(50) NOT NULL, PRIMARY KEY (email) );
Domain felvétele
INSERT INTO domains VALUES ( 'lila.hu');
Felhasználó felvétele
INSERT INTO user VALUES ('[email protected]', ENCRYPT('titok'));
mail_admin felhasználó a MySQLben GRANT ALL PRIVILEGES ON mail.* TO 'mail_admin'@'localhost' IDENTIFIED BY 'titok'; FLUSH PRIVILEGES;
Courier virtuális felhasználókkal
Courier telepítés
apt-get install courier-authlib-mysql
A curier eddig nem tud a virtuális felhasználókról
A Courier használja a MySQL-t /etc/courier/authdaemonrc
authmodulelist="authpam authmysql"
/etc/courier/authmysqlrc MYSQL_SERVER localhost MYSQL_USERNAME mail_admin MYSQL_PASSWORD titok MYSQL_PORT 0 MYSQL_DATABASE mail MYSQL_USER_TABLE user MYSQL_CRYPT_PWFIELD password MYSQL_UID_FIELD 5000 MYSQL_GID_FIELD 5000 MYSQL_LOGIN_FIELD email MYSQL_HOME_FIELD "/home/vmail" MYSQL_MAILDIR_FIELD CONCAT(SUBSTRING_INDEX(email,'@',-1),'/', SUBSTRING_INDEX(email,'@',1),'/')
Újraindítjuk a démonokat
/etc/init.d/courier-authdaemon restart /etc/init.d/courier-pop restart
MySQL naplózás beállítása /etc/mysql/my.cnf
#log log
/var/log/mysql/myslq.log /var/log/mysql/myslq.log tail -f /var/log/mysql/mysql.log
Ellenőrzés telnet localhost 110 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. +OK Hello there. user [email protected] +OK Password required. pass titok +OK logged in.
Ami még fontos lehet ●
SMTP auth
●
SSL
●
Spam
●
Vírus
Vége