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