Configurarea Postfix și Dovecot pe Ubuntu

Mulți utilizatori de Ubuntu folosesc sistemul nu numai pentru nevoile de acasă. Această abordare este pe deplin justificată, deoarece pe sistemele Linux este mult mai convenabil să faceți programarea, să creați servere și site-uri Web. Una dintre facilități este crearea unui server de e-mail. Pentru începători, această sarcină va părea foarte dificilă, dar dacă vă dați seama cum să instalați și configurați serverul de poștă electronică pentru Ubuntu, sarcina nu va părea atât de greu pentru dvs.

Cum se configurează un server de poștă electronică bazat pe Ubuntu.

Un pic de teorie

Înainte de instrucțiunile specifice și fermentarea codului nu se poate face fără o fracțiune de material teoretic. Este important să înțelegeți ce este un server de e-mail și cum funcționează acesta.

Un server de poștă configurat, pentru a-l pune foarte simplu, este un poștaș care primește o "scrisoare" de la un client de e-mail și îl dă altui utilizator. În această, în principiu, întreaga esență a activității acestui software. Serverul de e-mail este necesar nu numai pentru trimiterea de e-mailuri. Pe site-uri, el este responsabil pentru înregistrarea utilizatorilor, trimiterea formularelor și a altor acțiuni importante, fără de care site-ul ar deveni ca o carte, pe care nu o puteți face decât prin transformarea paginilor, dar este dificil să faceți ceva.

Serverele de mail pe Linux sunt semnificativ diferite de cele de pe Windows și alte sisteme. Pe Windows, acesta este un program închis gata, care poate începe să fie utilizat. Distribuțiile Linux necesită și auto-reglarea tuturor componentelor. Și în cele din urmă serverul va consta nu dintr-un program, ci din mai multe. Vom folosi Postfix în combinație cu Dovecot și MySQL.

De ce Postfix?

Există mai mulți clienți de e-mail pe Ubuntu, dar încă l-am ales pe acesta. Configurarea Posfix pe Ubuntu este mult mai ușoară decât aceea de Sendmail, și acest lucru este important pentru un utilizator nou. În combinație cu Dovecot, Postfix este capabil să facă tot ce este de obicei necesar de la serverele de e-mail.

Postfix este direct agentul de transfer de mail. El va juca un rol major în întreaga depunere. Acesta este un program open source pe care mulți servere și site-uri web îl folosesc în mod implicit. Dovecot este un agent de livrare a corespondenței. Rolul său principal este asigurarea securității serverului. MySQL este un sistem ideal de gestionare a bazelor de date (DBMS) pentru orice site. Este necesar să se gestioneze informațiile pe care le primim de la utilizatorii serverului nostru.

Deci, cu partea teoretică sa terminat. Acum merită să mergem la practică.

Creați server de mail

Ce ar trebui să fie configurat înainte de instalarea serverului de e-mail?

  • MySQL;
  • Zona DNS, trebuie să aveți un FDQN personal. Apoi vom folosi numele.

instalare

Instalați programul:

apt-get instalează postfix postfix-mysql dovecot-core dovecot-imapd dovecot-lmtpd dovecot-mysql

Când apare fereastra de configurare Postfix, va trebui să selectați "site-ul Internet".

Mai jos ni se va cere să introduceți un nume de domeniu, utilizați "primer.ru".

Configurarea MySQL

Acum trebuie să configuram trei tabele pentru date în MySQL: pentru domenii, utilizatori și pentru așa-numitele aliasuri - aliasuri sau cutiile poștale de utilizator suplimentare. Aici nu vom discuta în detaliu configurația bazei de date MySQL.

Să sunăm baza de date exemplu. Creați o bază de date cu următorul nume:

mysqladmin -p crea servermail

Conectați-vă în MySQL:

mysql -u root -p

Apoi introduceți parola. Dacă totul se face corect, va exista o intrare în terminal:

mysql>

Creați un utilizator nou în mod special pentru a vă conecta la rețea:

mysql> GRANT SELECT ON examplemail. * TO 'usermail'@'127.0.0.1' IDENTIFICAT DE 'parola';

Acum, reporniți MySQL pentru a vă asigura că toate modificările sunt aplicate cu succes.

Folosim baza de date pentru a crea tabele bazate pe aceasta:

mysql> USE examplemail;

Creați un tabel pentru domenii:

CREATE TABLE `virtual_domains` (

`id` INT NOT NULL AUTO_INCREMENT,

`nume` VARCHAR (50) NU NULL,

TASTA PRIMARA (`id`)

) MOTOR = InnoDB DEFAULT CHARSET = utf8;

Creați un tabel pentru utilizatori:

CREATE TABLE `virtual_users` (

`id` INT NOT NULL AUTO_INCREMENT,

`domain_id` INT NOT NULL,

`parola 'VARCHAR (106) NU NULL,

`email` VARCHAR (120) NU NULL,

TASTA PRIMARA (`id`),

UNIQUE KEY `email` (` email`),

VALOARE CHEIE (domain_id) REFERINȚE virtual_domains (id) ON DELETE CASCADE

) MOTOR = InnoDB DEFAULT CHARSET = utf8;

Aici, după cum puteți vedea, ați adăugat e-mail și parolă. Și fiecare utilizator este legat de domeniu.

În cele din urmă, creați un tabel pentru pseudonime:

CREATE TABLE `virtual_aliases` (

`id` INT NOT NULL AUTO_INCREMENT,

`domain_id` INT NOT NULL,

`sursa` varchar (100) NOT NULL,

"destinație" varchar (100) NOT NULL,

TASTA PRIMARA (`id`),

VALOARE CHEIE (domain_id) REFERINȚE virtual_domains (id) ON DELETE CASCADE

) MOTOR = InnoDB DEFAULT CHARSET = utf8;

Am configurat cu succes MySQL și am creat trei tabele necesare. Acum trebuie să vă ocupați de domenii și e-mailuri.

Domenii, adrese de e-mail și pseudonime

Să adăugăm domeniul nostru la tabel cu domeniile. FDQN trebuie introdus acolo:

INSERTAȚI ÎN `examplemail`.`virtual_domains`

(`id`, ` nume`)

VALORI

("1", "example.com"),

('2', 'namehost.example.com');

Adăugați date despre adresa de e-mail în tabelul de utilizatori:

INSERTAȚI ÎN `examplemail`.`virtual_users`

(`id`, ` domain_id`, `parola`, ` email`)

VALORI

("1", "1", ENCRYPT ("primul cuvânt", CONCAT ("$ 6 $", SUBSTRING (SHA (RAND ()

('2', '1', ENCRYPT ('second password', CONCAT ('$ 6 $', SUBSTRING (SHA (RAND ());

Acum adăugați informațiile la ultimul tabel:

INSCRIEȚI-VĂ în `examplemail`.`virtual_aliases`

("id", "domain_id", "sursă", "destinație")

VALORI

("1", "1", " ", " ");

Închide MySQL:

mysql> ieșire

Postfix Setup

Trecerea direct la parametrii Postfix. Avem nevoie de clientul de e-mail pentru a trimite mesaje în numele utilizatorilor introduși în baza de date și de a gestiona conexiunea SMTP. În primul rând, vom crea o copie de siguranță a fișierului de configurare, caz în care a fost posibilă revenirea la setările implicite:

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

Deschideți acum fișierul de configurare:

nano /etc/postfix/main.cf

În loc de nano, puteți folosi orice editor de text care este convenabil pentru dvs.

Vom comenta parametrii TLS și vom adăuga și alții. Free SSL este folosit aici:

# Parametri TLS

# 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 = da

#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 = da

smtpd_tls_auth_only = da

După aceasta vom adăuga și alți parametri:

smtpd_sasl_type = dovecot

smtpd_sasl_path = privat / auth

smtpd_sasl_auth_enable = da

smtpd_recipient_restrictions =

permit_sasl_authenticated,

permit_mynetworks,

reject_unauth_destination

De asemenea, trebuie să comentăm setările de activitate și să le modificăm la localhost:

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

mydestination = localhost

Parametrul myhostname trebuie să conțină numele domeniului nostru:

myhostname = numehost.example.com

Acum adăugați o linie pentru a trimite mesaje către toate domeniile listate în tabela MySQL:

virtual_transport = lmtp: unix: privat / dovecot-lmtp

Adăugați încă trei parametri, astfel încât Postfix să se poată conecta la tabelele 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

Configurarea fișierelor MySQL și Postfix

Creați un fișier

mysql-virtual-mailbox-domains.cf

Adăugați aceste valori la acesta:

user = usermail

parola = mailpassword

gazde = 127.0.0.1

dbname = examplemail

interogare = SELECT 1 FROM virtual_domains WHERE nume = '% s'

Reporniți Postfix:

serviciu postfix repornire

Domeniu de testare pentru Postfix:

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

Creați un alt fișier:

nano /etc/postfix/mysql-virtual-mailbox-maps.cf

user = usermail

parola = mailpassword

gazde = 127.0.0.1

dbname = examplemail

interogare = SELECT 1 FROM virtual_users WHERE email = '% s'

Reinstalați Postfix:

serviciu postfix repornire

Verificați din nou Postfix:

postmap -q mysql: /etc/postfix/mysql-virtual-mailbox-maps.cf

Dacă este făcută corect, ar trebui afișată

Creați ultimul fișier pentru aliasuri:

nano /etc/postfix/mysql-virtual-alias-maps.cf

user = usermail

parola = mailpassword

gazde = 127.0.0.1

dbname = examplemail

interogare = SELECT destinație FROM virtual_aliases WHERE sursă = '% s'

Restart:

serviciu postfix repornire

Ultima dată când testăm:

postmap -q mysql: /etc/postfix/mysql-virtual-alias-maps.cf

Dovecot setup

Facem backup-uri pentru șapte fișiere care vor fi modificate:

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

Aceasta este o comandă de probă. Introduceți șase mai multe dintre aceleași fișiere:

/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

Deschideți primul fișier:

nano /etc/dovecot/dovecot.conf

Verificați dacă acest parametru este comentat:

! include conf.d / *. conf

introduceți:

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

protocol = imap lmtp

În loc de:

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

Editați următorul fișier:

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

Găsiți linia mail_location, eliminați comentariul, setați următorul parametru:

mail_location = maildir: / var / mail / vhosts /% d /% n

Găsiți mail_privileged_group, pus acolo:

mail_privileged_group = mail

Verificăm accesul. Introduceți comanda:

ls-lld / var / mail

Accesul ar trebui să arate astfel:

drwxrwsr-x 3 rădăcină vmail 4096 24 ianuarie 21 21:23 / var / mail

Creați un dosar pentru fiecare domeniu înregistrat:

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

Creați un utilizator și un grup cu ID 5000:

groupadd -g 5000 vmail

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

Schimbarea proprietarului la utilizatorul VMail:

chown -R vmail: vmail / var / mail

Editați următorul fișier:

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

Dezactivați textul de autentificare și adăugați linia:

disable_plaintext_auth = da

Modificați următorul parametru:

auth_mechanisms = autentificare simplă

Comentând pe această linie:

#! include auth-system.conf.ext

Adăugați autorizarea pentru MySQL, comentați linia:

! include auth-sql.conf.ext

Creați un fișier cu date pentru autentificare:

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

Introduceți următoarele:

passdb {

driver = sql

args = /etc/dovecot/dovecot-sql.conf.ext

}

userdb {

driver = static

args = uid = vmail gid = vmail acasă = / var / mail / vhosts /% d /% n

}

Editați următorul fișier:

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

Setați parametrul MySQL și comentați:

driver = mysql

Dezactivați și introduceți:

connect = gazdă = 127.0.0.1 dbname = servermail user = usermail parola = mailpassword

Găsiți linia default_pass_scheme, dezactivați și introduceți parametrul:

default_pass_scheme = SHA512-CRYPT

Dezactivați și introduceți un nou parametru:

password_query = SELECT email ca utilizator, parola FROM virtual_users WHERE email = '% u';

Schimbați proprietarul:

chown -R vmail: dovecot / etc / dovecot

chmod -Ro-rwx / etc / dovecot

Deschideți și editați fișierul:

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

Dezactivați și introduceți parametrul:

service imap-login {

inet_listener imap {

port = 0

}

introduceți:

service lmtp {

unix_listener / var / spool / postfix / privat / dovecot-lmtp {

mod = 0600

user = postfix

grup = postfix

}

#inet_listener lmtp {

# Evitați să vizionați LMTP pentru internet

#address =

#port =

#}

}

Schimbați următoarea configurație:

service auth {

unix_listener / var / spool / postfix / privat / auth {

mod = 0666

user = postfix

grup = postfix

}

unix_listener auth-userdb {

mod = 0600

user = vmail

#group =

}

#unix_listener / var / spool / postfix / privat / auth {

# mode = 0666

#}

user = dovecot

}

Modificați ultima configurație din acest fișier:

service auth-worker {

# Procesul lucrătorilor de autentificare

# / etc / shadow. Dacă acest lucru nu este necesar

# $ default_internal_user.

user = vmail

}

Deci, am stabilit în cele din urmă un server de poștă electronică pe Ubuntu. Și, de asemenea, puteți adăuga o configurație SSL acolo sau utilizați cea implicită. Pentru a vă proteja împotriva spamului, puteți configura Spam Assassin să lucreze cu serverul nostru.

Utilizați clientul standard de e-mail pentru a introduce aceste informații:

  • Nume utilizator:
  • Parola: email1
  • IMAP: example.com
  • SMTP: example.com