Összeállította: Sallai András Levelezőszerver
A levelezés eszközei MUA MSA MTA MDA MS Mail User Agent levél írása 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 MS SMTP MDA MSA SMTP MTA Majd tovább küldi
Levelezőszerver fogadja a levelet MS SMTP POP3 IMAP MDA MSA MTA Majd tárolja
Levelezőszerver MS Courier MDA MSA Postfix MTA
SMTP SMTP IMAP POP3
Levelek tárolása Maildir mbox Minden levél külön fájlban Egy mappa egy könyvtár Minden levél egy fájlban 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 /home/username/maildir Normál Linux felhasználók Virtuális e-mail felhasználók /home/vmail/domainname/username/maildir
Feladó Mi az a MUA? Címzett
MUA - Mail User Agent Levelező kliens Thunderbird Opera Mail The Bat! Microsoft Outlook Outlook Express Kmail Mutt
Levélfejléc Return-Path: <root@matrix> 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 <root@matrix> To: Sallai =?iso-8859-1?q?andr=e1s?= <andras@matrix> 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 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN mail from: <jozsi@zold.hu> 250 2.1.0 Ok rcpt to: <kati@piros.hu> 250 2.1.5 Ok data 354 End data with <CR><LF>.<CR><LF> SMTP kommunikáció
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 <24999.1259006863@freemail.hu> 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 Port SMTP 25 SMTPS 465 POP3 110 IMAP 143 POP3S 995 IMAPS 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.
/etc/postfix main.cf master.cf Telepítés után
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
mailq - a queue tartalma sendmail -f postsuper -d queue-id Queue kezelés
/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 /etc/aliases postmaster: jozsi root: jozsi newaliases Minden módosítás után 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 alias_maps Pl. NIS adatbázist is megadhatunk 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: bela+ham@foo.fu bela+spam@foo.hu
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 jozis@lila.hu +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: <valaki@valahol.hu> X-Original-To: andras Delivered-To: andras@arasz.snet.and Received: from vagyok (localhost [127.0.0.1]) by arasz.snet.and (Postfix) with ESMTP id B14F5187DF for <andras>; Thu, 26 Nov 2009 23:53:28 +0100 (CET) Subject: test 001 Message-Id: <20091126225328.B14F5187DF@arasz.snet.and> Date: Thu, 26 Nov 2009 23:53:28 +0100 (CET) From: valaki@valahol.hu 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 ('jozsi@lila.hu', 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 /var/log/mysql/myslq.log 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 jozsi@lila.hu +OK Password required. pass titok +OK logged in.
Ami még fontos lehet SMTP auth SSL Spam Vírus
Vége