Konfiguriranje Postfixa in Dovecota v Ubuntuju

Mnogi uporabniki Ubuntuja uporabljajo sistem ne samo za domače potrebe. Ta pristop je popolnoma upravičen, saj je na Linux-sistemih veliko bolj priročno programiranje, ustvarjanje strežnikov in spletnih strani. Ena od ugodnosti je ustvarjanje e-poštnega strežnika. Za začetnike se bo ta naloga zdela zelo težka, če pa ugotovite, kako namestite in konfigurirate poštni strežnik za Ubuntu, se vam ta naloga ne bo zdela tako težka.

Kako nastaviti poštni strežnik na osnovi Ubuntuja.

Malo teorije

Pred določenimi navodili in fermentacijo kode ne moremo narediti brez dela teoretičnega gradiva. Pomembno je razumeti, kaj je e-poštni strežnik in kako deluje.

Konfiguriran poštni strežnik, povedano preprosto, je poštar, ki prejme »pismo« od enega e-poštnega odjemalca in ga posreduje drugemu. V tem, načeloma, celotno bistvo dela te programske opreme. Strežnik za pošto ni potreben samo za pošiljanje e-pošte. Na spletnih straneh je odgovoren za registracijo uporabnikov, pošiljanje obrazcev in drugih pomembnih akcij, brez katerih bi spletna stran postala kot knjiga, ki jo lahko pogledate le z obračanjem strani, vendar je težko nekaj storiti.

Poštni strežniki v Linuxu se bistveno razlikujejo od tistih v Windows in drugih sistemih. V operacijskem sistemu Windows je to že pripravljen zaprti program, ki ga lahko začnete uporabljati. Distribucije Linuxa zahtevajo tudi samoprilagajanje vseh komponent. In strežnik bo sčasoma sestavljen iz ne enega programa, ampak več. Postfix bomo uporabili v kombinaciji z Dovecot in MySQL.

Zakaj Postfix?

Na Ubuntuju je več e-poštnih odjemalcev, vendar smo še vedno izbrali to. Namestitev Posfixa na Ubuntu je veliko lažja kot ista SendMail, kar je pomembno za začetnike. V kombinaciji z Dovecotom lahko Postfix naredi vse, kar je običajno potrebno od poštnih strežnikov.

Postfix je neposredno posrednik za pošiljanje pošte. Imel bo pomembno vlogo pri celotni predložitvi. To je odprtokodni program, ki ga privzeto uporabljajo mnogi strežniki in spletna mesta. Dovecot je agent za dostavo pošte. Njegova glavna naloga je zagotoviti varnost strežnika. MySQL je idealen sistem za upravljanje baz podatkov (DBMS) za vse strani. Potrebno je za obdelavo podatkov, ki jih prejmemo od uporabnikov našega strežnika.

Torej, s teoretičnim delom je konec. Zdaj je vredno iti v prakso.

Ustvarite poštni strežnik

Kaj je treba konfigurirati pred namestitvijo poštnega strežnika?

  • MySQL;
  • DNS cono, morate imeti osebni FDQN. Naprej bomo uporabili namehost.

Namestitev

Namestite program:

apt-get install postfix postfix-mysql dovecot-jedro dovecot-imapd dovecot-lmtpd dovecot-mysql

Ko se prikaže konfiguracijsko okno Postfix, bomo morali izbrati »spletno stran«.

Spodaj boste morali vnesti ime domene, uporabite "primer.ru".

Nastavitev MySQL

Zdaj moramo konfigurirati tri tabele za podatke v MySQL: za domene, uporabnike in za ti Alias ​​- alias ali dodatne uporabniške nabiralnike. Tukaj ne bomo podrobno razpravljali o konfiguraciji baze podatkov MySQL.

Pokličimo zbirko podatkov primerkov. Ustvarite bazo podatkov z naslednjim imenom:

mysqladmin -p ustvarjanje strežnika

Prijava v MySQL:

mysql -u root –p

Nato vnesite geslo. Če je vse narejeno pravilno, bo v terminalu vpisan:

mysql>

Ustvarite novega uporabnika, posebej za prijavo v omrežje:

mysql> GRANT SELECT ON na primer. * TO 'usermail'@'127.0.0.1' IDENTIFIED BY 'password';

Zdaj znova zaženite MySQL in se prepričajte, da so vse spremembe uspešno izvedene.

S svojo bazo podatkov ustvarjamo tabele, ki temeljijo na njej:

mysql> Primer uporabnika USE;

Ustvarite tabelo za domene:

CREATE TABLE "virtual_domains" (

`id` INT NOT NULL AUTO_INCREMENT,

`name` VARCHAR (50) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE = InnoDB DEFAULT CHARSET = utf8;

Ustvarite tabelo za uporabnike:

CREATE TABLE "virtual_users" (

`id` INT NOT NULL AUTO_INCREMENT,

`domain_id 'INT NOT NULL,

`password` VARCHAR (106) NOT NULL,

`email` VARCHAR (120) NOT NULL,

PRIMARY KEY ("id"),

UNIQUE KEY "email" ("email"),

ZUNANJA KLJUČ (domain_id) REFERENCE virtual_domains (id) ON DELETE CASCADE

) ENGINE = InnoDB DEFAULT CHARSET = utf8;

Tukaj, kot lahko vidite, dodate e-pošto in geslo. In vsak uporabnik je vezan na domeno.

Končno ustvarite tabelo za psevdonime:

CREATE TABLE `virtual_aliases` (

`id` INT NOT NULL AUTO_INCREMENT,

`domain_id 'INT NOT NULL,

"source" varchar (100) NOT NULL,

`destinacija` varchar (100) NOT NULL,

PRIMARY KEY ("id"),

ZUNANJA KLJUČ (domain_id) REFERENCE virtual_domains (id) ON DELETE CASCADE

) ENGINE = InnoDB DEFAULT CHARSET = utf8;

MySQL smo uspešno konfigurirali in ustvarili tri potrebne tabele. Zdaj morate obravnavati domene in e-pošto.

Domene, e-poštni naslovi in ​​vzdevki

Dodamo domeno v tabelo z domenami. Vnesite FDQN:

INSERT INTO `examplemail`.`virtual_domains`

(`id`, ` name`)

VREDNOSTI

('1', 'example.com'),

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

V tabelo uporabnikov dodajte podatke o e-poštnem naslovu:

INSERT INTO `examplemail`.`virtual_users`

(`id`, ` domain_id`, `password`, ` email`)

VREDNOSTI

('1', '1', ENCRYPT ('firstpassword', CONCAT ('$ 6 $', SUBSTRING (SHA (RAND ()), -16))), ' '),

('2', '1', ENCRYPT ('secondpassword', CONCAT ('$ 6 $', SUBSTRING (SHA (RAND ()), -16))), ' ');

Sedaj dodajte podatke v zadnjo tabelo:

INSERT INTO `examplemail`.`virtual_aliases`

(`id`, ` domain_id`, `source`, ` destination`)

VREDNOSTI

('1', '1', ' ', ' ');

Zapri MySQL:

mysql> exit

Postfix Postavljanje

Premik neposredno na parametre Postfix. Potrebujemo poštnega odjemalca za pošiljanje sporočil v imenu uporabnikov, ki so vneseni v bazo podatkov in za upravljanje povezave SMTP. Za začetek bomo izdelali varnostno kopijo konfiguracijske datoteke, pri čemer se je bilo mogoče vrniti na privzete nastavitve:

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

Zdaj odprite konfiguracijsko datoteko:

nano /etc/postfix/main.cf

Namesto nano lahko uporabite kateri koli urejevalnik besedila, ki vam ustreza.

Opredelili bomo parametre TLS in dodali še druge. Tu se uporablja prost SSL:

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

#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

Po tem bomo dodali še nekaj parametrov:

smtpd_sasl_type = dovecot

smtpd_sasl_path = private / auth

smtpd_sasl_auth_enable = da

smtpd_recipient_restrictions =

permit_sasl_authenticated,

allow_mynetworks

reject_unauth_destination

Prav tako moramo komentirati nastavitve mydestination in jih spremeniti v localhost:

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

mydestination = localhost

Parameter myhostname mora vsebovati naše ime domene:

myhostname = namehost.example.com

Sedaj dodajte vrstico za pošiljanje sporočil vsem domenam, ki so navedene v tabeli MySQL:

virtual_transport = lmtp: unix: private / dovecot-lmtp

Dodajte še tri parametre, da se lahko Postfix poveže s tabelami 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

Nastavitev datotek MySQL in Postfix

Ustvarite datoteko

mysql-virtual-mailbox-domains.cf

Dodajte te vrednosti:

user = usermail

password = mailpassword

hosts = 127.0.0.1

dbname = examplemail

query = SELECT 1 FROM virtual_domains WHERE ime = '% s'

Znova zaženite Postfix:

ponovni zagon postfixa

Preizkusite domeno za Postfix:

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

Ustvari drugo datoteko:

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

user = usermail

password = mailpassword

hosts = 127.0.0.1

dbname = examplemail

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

Ponovni zagon Postfixa:

ponovni zagon postfixa

Nato znova preverite Postfix:

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

Če je pravilno opravljeno, se prikaže

Ustvarite zadnjo datoteko za vzdevke:

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

user = usermail

password = mailpassword

hosts = 127.0.0.1

dbname = examplemail

query = IZBERI destinacijo OD virtual_aliases WHERE vir = '% s'

Ponovni zagon:

ponovni zagon postfixa

Zadnjič, ko testiramo:

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

Nastavitev golobčkov

Izdelujemo varnostne kopije za sedem datotek, ki bodo spremenjene:

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

To je vzorčni ukaz. Za te datoteke vnesite šest več:

/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

Odprite prvo datoteko:

nano /etc/dovecot/dovecot.conf

Preverite, ali je ta parameter komentiran:

vključujejo conf.d / * .konf

Vnesite:

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

protocol = imap lmtp

Namesto:

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

Uredite naslednjo datoteko:

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

Poiščite vrstico mail_location, odstranite komentar, nastavite naslednji parameter:

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

Poišči mail_privileged_group, postavi:

mail_privileged_group = mail

Preverjamo dostop. Vnesite ukaz:

ls -ld / var / mail

Dostop mora izgledati takole:

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

Ustvarite mapo za vsako registrirano domeno:

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

Ustvarite uporabnika in skupino z ID-jem 5000:

groupadd -g 5000 vmail

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

Spremenite lastnika v uporabnika VMail:

chown -R vmail: vmail / var / mail

Uredite naslednjo datoteko:

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

Odkomentirajte besedilo za preverjanje pristnosti in dodajte vrstico:

disable_plaintext_auth = da

Spremenite naslednji parameter:

auth_mechanisms = navadna prijava

Komentiranje te vrstice:

#! include auth-system.conf.ext

Dodajte pooblastilo MySQL, komentirajte vrstico:

! vključuje auth-sql.conf.ext

Ustvarite datoteko s podatki za preverjanje pristnosti:

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

Vnesite naslednje:

passdb {

driver = sql

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

}

userdb {

voznik = statična

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

}

Uredite naslednjo datoteko:

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

Nastavite parameter MySQL in komentirajte:

voznik = mysql

Odstrani komentar in vnesite:

connect = gostitelj = 127.0.0.1 dbname = servermail uporabnik = usermail geslo = mailpassword

Poiščite vrstico default_pass_scheme, uncomment in vnesite parameter:

default_pass_scheme = SHA512-CRYPT

Razveljavitev komentarjev in uvedba novega parametra:

password_query = IZBERI e-pošto kot uporabnika, geslo OD virtual_users WHERE email = '% u';

Spremeni lastnika:

chown -R vmail: dovecot / etc / dovecot

chmod -R o-rwx / etc / dovecot

Odpri in uredi datoteko:

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

Odstrani komentar in vnesite parameter:

storitev imap-login {

inet_listener imap {

port = 0

}

Vnesite:

storitev lmtp {

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

način = 0600

user = postfix

group = postfix

}

#inet_listener lmtp {

# Izogibajte se vidljivosti LMTP za internet

#address =

#port =

#}

}

Spremenite naslednjo konfiguracijo:

storitev auth {

unix_listener / var / spool / postfix / private / auth {

način = 0666

user = postfix

group = postfix

}

unix_listener auth-userdb {

način = 0600

user = vmail

#group =

}

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

# način = 0666

#}

uporabnik = dovecot

}

Spremenite zadnjo konfiguracijo v tej datoteki:

storitev za avtorja storitve {

# Avt

# / etc / shadow. Če to ni potrebno

# $ default_internal_user.

user = vmail

}

Torej smo na Ubuntuju končno postavili poštni strežnik. Tukaj lahko dodate tudi konfiguracijo SSL ali uporabite privzeto konfiguracijo. Za zaščito pred neželeno pošto lahko konfigurirate neželeno pošto za delo z našim strežnikom.

Za vnos teh podatkov uporabite standardni e-poštni odjemalec:

  • Uporabniško ime:
  • Geslo: email1
  • IMAP: primer.com
  • SMTP: example.com