Konfiguriranje Postfixa i Dovecota na Ubuntuu

Mnogi korisnici Ubuntua koriste sustav ne samo za kućne potrebe. Ovaj pristup je u potpunosti opravdan, jer je na Linux-sustavima mnogo prikladnije raditi programiranje, kreiranje poslužitelja i web stranica. Jedna od pogodnosti je stvaranje poslužitelja e-pošte. Za početnike, ovaj zadatak će se činiti strašno teškim, ali ako shvatite kako instalirati i konfigurirati poslužitelj e-pošte za Ubuntu, zadatak se neće činiti toliko težim za vas.

Kako postaviti poslužitelj e-pošte na temelju Ubuntua.

Malo teorije

Prije specifičnih uputa i fermentacije kod ne može bez djelića teorijskog materijala. Važno je razumjeti što je poslužitelj e-pošte i kako radi.

Konfigurirani poslužitelj pošte, jednostavno rečeno, poštar je koji prima "pismo" od jednog klijenta e-pošte i daje ga drugom. U ovom, u načelu, cijela bit rada ovog softvera. Poslužitelj e-pošte potreban je ne samo za slanje e-pošte. Na stranicama je odgovoran za registraciju korisnika, slanje obrazaca i drugih važnih akcija, bez kojih bi stranica postala poput knjige, koju možete pogledati samo okretanjem stranica, ali je teško nešto učiniti.

Mail poslužitelji na Linuxu značajno se razlikuju od onih na Windows i drugim sustavima. U sustavu Windows, ovo je gotovi zatvoreni program, koji može početi koristiti. Linux distribucije također zahtijevaju samopodešavanje svih komponenti. A poslužitelj će se na kraju sastojati od ne jednog programa, već nekoliko. Postfix ćemo koristiti u kombinaciji s Dovecot i MySQL.

Zašto Postfix?

U Ubuntuu postoji nekoliko klijenata e-pošte, ali još uvijek smo odabrali ovaj. Postavljanje Posfixa na Ubuntu je mnogo lakše nego isti SendMail, a to je važno za početničkog korisnika. U kombinaciji s Dovecotom, Postfix može učiniti sve što se obično traži od poslužitelja e-pošte.

Postfix je izravno agent za prijenos pošte. On će igrati glavnu ulogu u cijelom podnošenju. To je program otvorenog koda koji mnogi poslužitelji i web-mjesta koriste prema zadanim postavkama. Dovecot je agent za dostavu pošte. Njegova glavna uloga je osigurati sigurnost poslužitelja. MySQL je idealan sustav za upravljanje bazom podataka (DBMS) za sve stranice. Potrebno je rukovati informacijama koje primamo od korisnika našeg poslužitelja.

Dakle, s teoretskim dijelom je gotovo. Sada vrijedi ići u praksu.

Stvorite poslužitelj e-pošte

Što treba konfigurirati prije instaliranja poslužitelja e-pošte?

  • MySQL;
  • DNS zona, morate imati osobni FDQN. Zatim ćemo koristiti ime.

instalacija

Instalirajte program:

apt-get instalacija postfix postfix-mysql dovecot-core dovecot-imapd dovecot-lmtpd dovecot-mysql

Kada se pojavi Postfix konfiguracijski prozor, morat ćemo odabrati "Internetsku stranicu".

U nastavku ćemo tražiti da unesete naziv domene, koristite "primer.ru".

MySQL postavljanje

Sada trebamo konfigurirati tri tablice za podatke u MySQL-u: za domene, korisnike i za takozvane Alias-aliasove ili dodatne korisničke poštanske sandučiće. Ovdje nećemo detaljno raspravljati o konfiguraciji MySQL baze podataka.

Nazovimo primjer baze podataka primjera. Izradite bazu podataka sa sljedećim nazivom:

mysqladmin -p stvoriti servermail

Prijava u MySQL:

mysql -u root –p

Zatim unesite zaporku. Ako je sve učinjeno ispravno, na terminalu će se pojaviti unos:

mysql>

Stvorite novog korisnika za prijavu na mrežu:

mysql> GRANT SELECT ON Primjer. * TO 'usermail'@'127.0.0.1' IDENTIFIED BY 'lozinku';

Sada ponovno pokrenite MySQL kako biste bili sigurni da su sve promjene uspješno primijenjene.

Koristimo našu bazu podataka za izradu tablica na temelju nje:

mysql> USE primjer;

Izradite tablicu za domene:

CREATE TABLE `virtual_domains` (

`id` INT NOT NULL AUTO_INCREMENT,

`name` VARCHAR (50) NIJE NULL,

PRIMARY KEY (`id`)

) MOTOR = InnoDB DEFAULT CHARSET = utf8;

Izradite tablicu za korisnike:

CREATE TABLE `virtual_users '(

`id` INT NOT NULL AUTO_INCREMENT,

`domain_id` INT NOT NULL,

`password` VARCHAR (106) NIJE NULL,

`email` VARCHAR (120) NE NULL,

PRIMARY KEY (`id`),

JEDINSTVENI KLJUČ `email` (` email`),

STRANI KLJUČ (domain_id) REFERENCE virtualni_domeni (id) NA DELETE CASCADE

) MOTOR = InnoDB DEFAULT CHARSET = utf8;

Ovdje, kao što možete vidjeti, dodana e-pošta i zaporka. Svaki je korisnik vezan za domenu.

Naposljetku izradite tablicu za pseudonime:

CREATE TABLE `virtual_aliases` (

`id` INT NOT NULL AUTO_INCREMENT,

`domain_id` INT NOT NULL,

`izvor` varchar (100) NE NULL,

`odredište` varchar (100) NE NULL,

PRIMARY KEY (`id`),

STRANI KLJUČ (domain_id) REFERENCE virtualni_domeni (id) NA DELETE CASCADE

) MOTOR = InnoDB DEFAULT CHARSET = utf8;

Uspješno smo konfigurirali MySQL i stvorili tri potrebne tablice. Sada trebate nositi s domenama i e-poštom.

Domene, adrese e-pošte i pseudonime

Dodajmo domenu tablici s domenama. Tamo se mora unijeti FDQN:

INSERT INTO `examplemail`.`virtual_domains`

(`id`, ` name`)

VRIJEDNOSTI

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

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

Dodajte podatke o adresi e-pošte u korisničku tablicu:

INSERT INTO `examplemail`.`virtual_users`

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

VRIJEDNOSTI

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

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

Sada dodajte informacije u posljednju tablicu:

INSERT INTO `examplemail`.`virtual_aliases`

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

VRIJEDNOSTI

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

Zatvori MySQL:

mysql> exit

Postfix Postavljanje

Prelazak izravno na parametre Postfix. Potreban nam je klijent za e-poštu za slanje poruka u ime korisnika unesenih u bazu podataka i rukovanje SMTP vezom. Za početak ćemo izraditi sigurnosnu kopiju konfiguracijske datoteke, u kojem slučaju je moguće vratiti zadane postavke:

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

Sada otvorite konfiguracijsku datoteku:

nano /etc/postfix/main.cf

Umjesto nano, možete koristiti bilo koji uređivač teksta koji vam odgovara.

Komentirat ćemo TLS parametre i dodavati druge. Ovdje se koristi besplatni SSL:

# TLS parametri

# 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

Nakon toga ćemo dodati još nekoliko parametara:

smtpd_sasl_type = golubinjak

smtpd_sasl_path = private / auth

smtpd_sasl_auth_enable = da

smtpd_recipient_restrictions =

permit_sasl_authenticated,

permit_mynetworks,

reject_unauth_destination

Moramo također komentirati postavke za mydestination i promijeniti ih na localhost:

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

mydestination = localhost

Parametar myhostname treba sadržavati naš naziv domene:

myhostname = namehost.example.com

Sada dodajte redak za slanje poruka svim domenama navedenim u MySQL tablici:

virtual_transport = lmtp: unix: private / dovecot-lmtp

Dodajte još tri parametra kako bi se Postfix mogao povezati s MySQL tablicama:

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

Postavljanje MySQL i Postfix datoteka

Stvorite datoteku

mysql-virtual-mailbox-domains.cf

Dodajte mu te vrijednosti:

user = usermail

password = mailpassword

hosts = 127.0.0.1

dbname = examplemail

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

Ponovo pokreni Postfix:

Ponovno pokretanje postfix usluge

Probna domena za Postfix:

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

Izradite drugu datoteku:

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'

Ponovno pokreni Postfix:

Ponovno pokretanje postfixa usluge

Zatim ponovno provjerite Postfix:

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

Ako je učinjeno ispravno, treba se prikazati

Izradite posljednju datoteku za pseudonime:

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

user = usermail

password = mailpassword

hosts = 127.0.0.1

dbname = examplemail

query = SELECT odredište OD virtual_aliases WHERE izvor = '% s'

ponovo pokrenuti:

Ponovno pokretanje postfixa usluge

Posljednji put testirali smo:

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

Podešavanje golubarnika

Izrađujemo sigurnosne kopije za sedam datoteka koje ćemo promijeniti:

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

Ovo je uzorak naredbe. Unesite šest više istih za te datoteke:

/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

Otvori prvu datoteku:

nano /etc/dovecot/dovecot.conf

Provjerite je li ovaj parametar komentiran:

uključuju conf.d / *. conf

upišite:

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

protocol = imap lmtp

Umjesto:

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

Uredite sljedeću datoteku:

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

Pronađite liniju mail_location, uklonite komentar, postavite sljedeći parametar:

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

Pronađi mail_privileged_group, stavi tamo:

mail_privileged_group = mail

Provjeravamo pristup. Unesite naredbu:

ls -ld / var / mail

Pristup bi trebao izgledati ovako:

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

Izradite mapu za svaku registriranu domenu:

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

Stvorite korisnika i grupu s ID-om 5000:

groupadd -g 5000 vmail

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

Promjena vlasnika korisnika VMail:

chown -R vmail: vmail / var / mail

Uredite sljedeću datoteku:

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

Poništite komentare teksta autentifikacije i dodajte redak:

disable_plaintext_auth = da

Promijenite sljedeći parametar:

auth_mechanisms = obična prijava

Komentirajući ovaj redak:

#! include auth-system.conf.ext

Dodavanje ovlaštenja za MySQL, komentiranje retka:

! uključuje auth-sql.conf.ext

Izradite datoteku s podacima za provjeru autentičnosti:

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

Unesite tamo sljedeće:

passdb {

driver = sql

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

}

userdb {

driver = statički

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

}

Uredite sljedeću datoteku:

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

Postavite MySQL parametar i komentirajte:

driver = mysql

Ukloni komentar i unesite:

connect = host = 127.0.0.1 dbname = servermail korisnik = lozinka za usermail = mailpassword

Pronađite redak default_pass_scheme, uklonite komentar i unesite parametar:

default_pass_scheme = SHA512-CRYPT

Ukloni komentar i unesite novi parametar:

password_query = SELECT e-mail kao korisnik, lozinka OD virtual_users WHERE email = '% u';

Promijeni vlasnika:

chown -R vmail: dovecot / etc / dovecot

chmod -R o-rwx / etc / dovecot

Otvaranje i uređivanje datoteke:

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

Ukloni komentar i unesite parametar:

usluga imap-login {

inet_listener imap {

port = 0

}

upišite:

service lmtp {

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

mod = 0600

user = postfix

group = postfix

}

#inet_listener lmtp {

# Izbjegavajte da LMTP postane vidljiv za internet

#address =

#port =

#}

}

Promijenite sljedeću konfiguraciju:

autorizacija usluge {

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

mod = 0666

user = postfix

group = postfix

}

unix_listener auth-userdb {

mod = 0600

user = vmail

#group =

}

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

# način = 0666

#}

user = dovecot

}

Promijenite posljednju konfiguraciju u ovoj datoteci:

službenik za autorizaciju {

# Provjera radnog procesa

# / etc / shadow. Ako to nije potrebno

# $ default_internal_user.

user = vmail

}

Tako smo konačno postavili poslužitelj e-pošte na Ubuntuu. Također možete tamo dodati SSL konfiguraciju ili koristiti zadanu. Da biste zaštitili od neželjene pošte, možete konfigurirati Spam Assassin da radi s našim poslužiteljem.

Pomoću standardnog klijenta e-pošte unesite te informacije:

  • Korisničko ime:
  • Zaporka: email1
  • IMAP: primjer.com
  • SMTP: example.com