Konfigurácia Postfix a Dovecot na Ubuntu

Mnohí používatelia Ubuntu používajú systém nielen pre domáce potreby. Tento prístup je úplne opodstatnený, pretože na systémoch Linux je oveľa pohodlnejšie robiť programovanie, vytvárať servery a webové stránky. Jednou z možností je vytvorenie e-mailového servera. Pre začiatočníkov sa táto úloha bude zdať strašne náročná, ale ak zistíte, ako nainštalovať a nakonfigurovať poštový server pre Ubuntu, úloha nebude pre vás tak ťažká.

Ako nastaviť poštový server založený na Ubuntu.

obsah

  • 1 Trochu teórie
    • 1.1 Prečo Postfix?
  • 2 Vytvorte poštový server
    • 2.1 inštalácia
    • 2.2 Nastavenie MySQL
    • 2.3 Domény, e-mailové adresy a prezývky
    • 2.4 Postfix Setup
    • 2.5 Nastavenie súborov MySQL a Postfixu
    • 2.6 Dovecot nastavenie

Trochu teórie

Pred špecifickými pokynmi a fermentáciou kódu nemôžete robiť bez zlomku teoretického materiálu. Je dôležité pochopiť, čo je e-mailový server a ako funguje.

Konfigurovaný poštový server, aby to jednoducho povedal, je poštár, ktorý obdrží "list" od jedného e-mailového klienta a dáva ho inému. V tomto, v podstate, celú podstatu práce tohto softvéru. Poštový server je potrebný nielen na odosielanie e-mailov.Na týchto stránkach je zodpovedný za registráciu používateľov, odosielanie formulárov a iné dôležité akcie, bez ktorých by sa stránka stala ako kniha, na ktorú sa môžete pozrieť iba obrátením stránok, ale je ťažké niečo urobiť.

Poštové servery v systéme Linux sa výrazne odlišujú od systémov Windows a iných systémov. V systéme Windows je to hotový uzavretý program, ktorý sa môže začať používať. Linuxové distribúcie vyžadujú aj samoladenie všetkých komponentov. A server bude nakoniec pozostávať nie z jedného programu, ale niekoľkých. Budeme používať Postfix v kombinácii s Dovecotom a MySQL.

Prečo Postfix?

Existuje niekoľko e-mailových klientov na Ubuntu, ale stále sme si to vybrali. Nastavenie programu Posfix na Ubuntu je oveľa jednoduchšie ako ten istý SendMail, čo je dôležité pre začínajúceho používateľa. V kombinácii s Dovecot je Postfix schopný robiť všetko, čo sa z poštových serverov zvyčajne vyžaduje.

Postfix je priamo poštovým agentom. Bude hrať dôležitú úlohu v celom podaní. Ide o program s otvoreným zdrojovým kódom, ktorý v predvolenom nastavení používa mnoho serverov a webových stránok. Dovecot je poštový agent. Jeho hlavnou úlohou je zaistiť bezpečnosť servera. MySQL je ideálny systém správy databáz (DBMS) pre všetky lokality.Je potrebné spracovať informácie, ktoré dostávame od používateľov nášho servera.

Takže teoretická časť je ukončená. Teraz stojí za to praxi.

Vytvorte poštový server

Čo je potrebné nakonfigurovať pred inštaláciou poštového servera?

  • MySQL;
  • Zóna DNS, musíte mať osobný FDQN. Ďalej budeme používať názov.

inštalácia

Inštalácia programu:

apt-get nainštalovať postfix postfix-mysql dovecot-jadro dovecot-imapd dovecot-lmtpd dovecot-mysql

Keď sa zobrazí okno konfigurácie Postfix, bude potrebné vybrať položku "Internetová stránka".

Nižšie sa zobrazí výzva na zadanie názvu domény, použite "primer.ru".

Nastavenie MySQL

Teraz musíme nakonfigurovať tri tabuľky pre dáta v MySQL: pre domény, pre používateľov a pre tzv. Alias ​​- aliasy alebo ďalšie poštové schránky používateľa. Tu nebudeme detailne diskutovať o konfigurácii databázy MySQL.

Zavolajte databázu examplemail. Vytvorte databázu s nasledujúcim názvom:

mysqladmin -p vytvoriť servermail

Prihlásenie do MySQL:

mysql -u root -p

Potom zadajte heslo. Ak je všetko vykonané správne, bude v termináli zadaná položka:

mysql>

Vytvorte nového používateľa špeciálne na prihlásenie do siete:

mysql> GRANT SELECT ON examplemail. * TO 'usermail'@'127.0.0.1' IDENTIFIED BY 'heslo';

Teraz reštartujte MySQL, aby ste sa uistili, že všetky zmeny sú úspešne použité.

Našu databázu používame na vytvorenie tabuliek založených na nej:

mysql> USE examplemail;

Vytvorte tabuľku pre domény:

CREATE TABLE 'virtual_domains' (
'id' INT NIE NULL AUTO_INCREMENT,
'meno' VARCHAR (50) NIE NULL,
PRIMÁRNY KĽÚČ ('id')
) MOTOR = InnoDB DEFAULT CHARSET = utf8;

Vytvoriť tabuľku pre používateľov:

CREATE TABLE 'virtual_users' (
'id' INT NIE NULL AUTO_INCREMENT,
'domain_id' INT NOT NULL,
'heslo' VARCHAR (106) NIE NULL,
'email' VARCHAR (120) NIE NULL,
PRIMÁRNY KĽÚČ ("id"),
UNIQUE KEY "e-mail" ("e-mail"),
FOREIGN KEY (doména_id) REFERENCIE virtual_domains (id) ON DELETE CASCADE
) MOTOR = InnoDB DEFAULT CHARSET = utf8;

Tu, ako vidíte, pridali e-mail a heslo. Každý používateľ je viazaný na doménu.

Nakoniec vytvorte tabuľku pre pseudonymá:

CREATE TABLE 'virtual_aliases' (
'id' INT NIE NULL AUTO_INCREMENT,
'domain_id' INT NOT NULL,
'zdroj' varchar (100) NOT NULL,
"cieľ" varchar (100) NOT NULL,
PRIMÁRNY KĽÚČ ("id"),
FOREIGN KEY (doména_id) REFERENCIE virtual_domains (id) ON DELETE CASCADE
) MOTOR = InnoDB DEFAULT CHARSET = utf8;

Úspešne sme nakonfigurovali MySQL a vytvorili tri potrebné tabuľky. Teraz sa musíte zaoberať doménami a e-mailmi.

Domény, e-mailové adresy a prezývky

Pridajme našu doménu k tabuľke s doménami. Tu musí byť zadané FDQN:

INSERT IN '' examplemail '' 'Virtual_domains'
("id", "meno")
HODNOTY
('1', 'example.com'),
('2', 'namehost.example.com');

Pridajte údaje o e-mailovej adrese do tabuľky používateľov:

INSERT INTO 'examplemail'. 'Virtual_users'
('id', 'domain_id', 'heslo', 'e-mail')
HODNOTY
('1', '1', ENCRYPT ('firstpassword', CONCAT ('$ 6 $', SUBSTRING (SHA (RAND ()
('2', '1', ENCRYPT ('secondpassword', CONCAT ('$ 6 $', SUBSTRING (SHA (RAND ()), -16))), '[email protected]');

Teraz pridajte informácie do poslednej tabuľky:

INSERT INTO 'examplemail', 'Virtual_aliases'
("id", "domain_id", "zdroj", "cieľ")
HODNOTY
('1', '1', '[email protected]', '[email protected]');

Zavrieť MySQL:

mysql> exit

Postfix Setup

Presunutím priamo na parametre Postfix. Potrebujeme poštový klient posielať správy v mene používateľov zadaných do databázy a zvládnuť pripojenie SMTP. Najprv vytvoríme zálohu konfiguračného súboru, v takom prípade sa vrátili na štandardné nastavenia:

cp /etc/postfix/main.cf/etc/postfix/main.cf.orig

Teraz otvorte konfiguračný súbor:

nano /etc/postfix/main.cf

Namiesto nano môžete použiť ľubovoľný textový editor, ktorý uprednostňujete.

Budeme komentovať parametre TLS a pridáme aj ďalšie. Voľný SSL sa používa tu:

# TLS parametrov
# smtpd_tls_cert_file = / etc / ssl / certs / ssl-cert-snakeoil.pem
# smtpd_tls_key_file = / etc / ssl / private / ssl-cert-snakeoil.key
# smtpd_use_tls = áno
#smtpd_tls_session_cache_database = btree: $ {data_directory} / smtpd_scache
#smtp_tls_session_cache_database = btree: $ {data_directory} / smtp_scache
smtpd_tls_cert_file = / etc / ssl / certs / dovecot.pem
smtpd_tls_key_file = / etc / ssl / private / dovecot.pem
smtpd_use_tls = áno
smtpd_tls_auth_only = áno

Potom pridáme ďalšie parametre:

smtpd_sasl_type = dovecot
smtpd_sasl_path = private / auth
smtpd_sasl_auth_enable = áno
smtpd_recipient_restrictions =
permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination

Musíme tiež komentovať nastavenia mydestination a zmeniť ich na localhost:

#mydestination = example.com, namehost.example.com, localhost.example.com, localhost
mydestination = localhost

Parameter myhostname by mal obsahovať názov našej domény:

myhostname = menohost.example.com

Teraz pridajte riadok na odosielanie správ do všetkých domén uvedených v tabuľke MySQL:

virtual_transport = lmtp: unix: private / dovecot-lmtp

Pridajte tri ďalšie parametre, aby sa mohol Postfix pripojiť k tabuľkám MySQL:

virtual_mailbox_domains = mysql: /etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql: /etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql: /etc/postfix/mysql-virtual-alias-maps.cf

Nastavenie súborov MySQL a Postfixu

Vytvorte súbor

mysql-virtual-mailbox-domains.cf

Pridajte tieto hodnoty:

user = usermail
heslo = mailpassword
hostitelia = 127.0.0.1
dbname = examplemail
dotaz = SELECT 1 FROM virtu_domains WHERE name = "% s"

Reštartujte Postfix:

reštartujte službu postfix

Testovať doménu pre Postfix:

postmap -q example.com mysql: /etc/postfix/mysql-virtual-mailbox-domains.cf

Vytvoriť ďalší súbor:

nano /etc/postfix/mysql-virtual-mailbox-maps.cf
user = usermail
heslo = mailpassword
hostitelia = 127.0.0.1
dbname = examplemail
dotaz = SELECT 1 FROM virtual_users WHERE email = "% s"

Reštartujte Postfix:

reštartujte službu postfix

Potom znova skontrolujte Postfix:

postmap -q [email protected] mysql: /etc/postfix/mysql-virtual-mailbox-maps.cf

Ak sa to vykoná správne, malo by sa zobraziť

Vytvoriť posledný súbor pre aliasy:

nano /etc/postfix/mysql-virtual-alias-maps.cf
user = usermail
heslo = mailpassword
hostitelia = 127.0.0.1
dbname = examplemail
query = SELECT cieľ z virtuálnych_klipov WHERE source = "% s"

Restart:

reštartujte službu postfix

Naposledy sme testovali:

postmap -q [email protected] mysql: /etc/postfix/mysql-virtual-alias-maps.cf

Dovecot nastavenie

Vytvárame zálohy pre sedem súborov, ktoré sa zmenia:

cp /etc/dovecot/dovecot.conf/etc/dovecot/dovecot.conf.orig

Toto je príkaz vzorky. Zadajte ďalších šest z týchto súborov:

/etc/dovecot/conf.d/10-mail.conf
/etc/dovecot/conf.d/10-auth.conf
/etc/dovecot/dovecot-sql.conf.ext
/etc/dovecot/conf.d/10-master.conf
/etc/dovecot/conf.d/10-ssl.conf

Otvorte prvý súbor:

nano /etc/dovecot/dovecot.conf

Skontrolujte, či je tento parameter komentovaný:

! include conf.d / *. conf

zadajte:

! include_try /usr/share/dovecot/protocols.d/*.protocol
protokol = imap lmtp

Namiesto:

! include_try /usr/share/dovecot/protocols.d/*.protocol line

Upravte nasledujúci súbor:

nano /etc/dovecot/conf.d/10-mail.conf

Nájdite linku mail_location, odstráňte komentár, nastavte nasledujúci parameter:

mail_location = mailová adresa: / var / mail / vhosts /% d /% n

Nájsť mail_privileged_group, vložte tam:

mail_privileged_group = pošta

Kontrolujeme prístup. Zadajte príkaz:

ls -ld / var / pošta

Prístup by mal vyzerať takto:

drwxrwsr-x 3 koreň vmail 4096 Jan 24 21:23 / var / mail

Vytvorte priečinok pre každú zaregistrovanú doménu:

mkdir -p /var/mail/vhosts/example.com

Vytvorte používateľa a skupinu s ID 5000:

groupadd -g 5000 vmail
useradd -g vmail-u 5000 vmail -d / var / mail

Zmeniť vlastníka na používateľa VMail:

chown -R vmail: vmail / var / mail

Upravte nasledujúci súbor:

nano /etc/dovecot/conf.d/10-auth.conf

Odomknite text autentizácie a pridajte riadok:

disable_plaintext_auth = yes

Zmeňte nasledujúci parameter:

auth_mechanisms = jednoduché prihlásenie

Pri komentovaní tohto riadku:

#! include auth-system.conf.ext

Pridajte autorizáciu MySQL, komentujte riadok:

! include auth-sql.conf.ext

Vytvorte súbor s údajmi na overenie totožnosti:

nano /etc/dovecot/conf.d/auth-sql.conf.ext

Zadajte nasledovné:

passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
ovládač = statický
args = uid = vmail gid = vmail domov = / var / mail / vhosts /% d /% n
}

Upravte nasledujúci súbor:

nano /etc/dovecot/dovecot-sql.conf.ext

Nastavte parameter MySQL a vyslovte komentár:

driver = mysql

Odkomentujte a zadajte:

connect = host = 127.0.0.1 názov dbname = servermail user = usermail heslo = mailpassword

Nájdite riadok default_pass_scheme, odkomentujte a zadajte parameter:

default_pass_scheme = SHA512-CRYPT

Odkomentovať a uviesť nový parameter:

password_query = SELECT e-mail ako používateľ, heslo FROM virtual_users WHERE email = "% u";

Zmeniť vlastníka:

chown -R vmail: dovecot / etc / dovecot
chmod -Ro-rwx / etc / dovecot

Otvoriť a upraviť súbor:

nano /etc/dovecot/conf.d/10-master.conf

Odkomentujte a zadajte parameter:

služba imap-login {
inet_listener imap {
port = 0
}

zadajte:

service lmtp {
unix_listener / var / spool / postfix / súkromný / dovecot-lmtp {
režim = 0600
user = postfix
skupina = postfix
}
#inet_listener lmtp {
# Vyhnite sa viditeľnosti LMTP pre internet
#address =
#port =
#}
}

Zmeňte nasledujúcu konfiguráciu:

service auth {
unix_listener / var / spool / postfix / private / auth {
režim = 0666
user = postfix
skupina = postfix
}
unix_listener auth-userdb {
režim = 0600
user = vmail
#group =
}
#unix_listener / var / spool / postfix / súkromný / auth {
# mode = 0666
#}
user = dovecot
}

Zmena poslednej konfigurácie v tomto súbore:

service auth-worker {
# Auth worker process
# / etc / shadow. Ak to nie je potrebné
# $ default_internal_user.
user = vmail
}

Takže sme nakoniec vytvorili poštový server na Ubuntu. A tam môžete pridať aj konfiguráciu SSL alebo použiť predvolenú. Na ochranu proti spamu môžete nakonfigurovať Spam Assassin na prácu s naším serverom.

Použite štandardný e-mailový klient na zadanie týchto informácií: