Kako sigurno postaviti Postfix mail server i Dovecot sa bazom podataka (MariaDB) - 1. dio


U ovoj seriji 3 članka raspravljat ćemo o tome kako postaviti Postfix mail server sa antivirusnom i zaštitom od neželjene pošte u CentOS 7 kutiji. Imajte na umu da ove upute rade i na drugim distribucijama kao što su RHEL/Fedora i Debian/Ubuntu.

Naš plan se sastoji od pohranjivanja naloga e-pošte i pseudonima u bazi podataka MariaDB koja je za našu udobnost upravljana putem phpMyAdmina.

Ako odlučite da ne instalirate phpMyAdmin ili imate posla sa CLI serverom, takođe ćemo obezbediti ekvivalentni kod za kreiranje tabela baze podataka koje će se koristiti u ovoj seriji.

Pošto je održavanje i rad servera e-pošte jedan od osnovnih zadataka koji se obično dodeljuju sistemskim administratorima i inženjerima, takođe ćemo dati nekoliko saveta za efikasno pokretanje ove kritične usluge u proizvodnom okruženju.

Kreirajte A i MX zapise za domenu u DNS-u

Prije nego što nastavite dalje, postoji nekoliko preduslova koji moraju biti ispunjeni:

1. Biće vam potrebna važeća domena registrovana preko registratora domena. U ovoj seriji ćemo koristiti www.linuxnewz.com, koji je registrovan preko GoDaddya.

2. Takva domena mora biti usmjerena na vanjski IP vašeg VPS ili cloud hosting provajdera. Ako sami hostujete svoj mail server, možete koristiti uslugu koju nudi FreeDNS (zahteva registraciju).

U svakom slučaju, morate također postaviti A i MX zapise za svoju domenu (više o MX zapisima možete saznati u ovom FAQ od Google-a).

Kada ih dodate, možete ih potražiti koristeći online alat kao što je MxToolbox ili ViewDNS kako biste bili sigurni da su pravilno postavljeni.

Važno: Imajte na umu da može proći neko vrijeme (1-2 dana) dok se DNS zapisi ne propagiraju i vaša domena ne bude dostupna. U međuvremenu, svom VPS-u možete pristupiti preko njegove IP adrese kako biste izvršili dolje navedene zadatke.

3. Konfigurirajte FQDN (Potpuno kvalificirani naziv domene) vašeg VPS-a:

hostnamectl set-hostname yourhostname

da postavite sistemsko ime hosta, zatim uredite /etc/hosts na sljedeći način (zamijenite AAA.BBB.CCC.DDD, ime vašeg hosta i vaša domena sa javnom IP-om vašeg servera, vašim imenom hosta i vašom registrovanom domenom):

AAA.BBB.CCC.DDD yourhostname.yourdomain.com       yourhostname

gdje je yourhostname sistemsko ime hosta koje je prethodno postavljeno pomoću naredbe hostnamectl.

Instaliranje potrebnih softverskih paketa

4. Da biste instalirali potrebne softverske pakete kao što su Apache, Postfix, Dovecot, MariaDB, PhpMyAdmin, SpamAssassin, ClamAV, itd., morate omogućiti EPEL spremište:

yum install epel-release

5. Nakon što ste slijedili gore navedene korake, instalirajte potrebne pakete:

U sistemima baziranim na CentOS-u:

yum update && yum install httpd httpd-devel postfix dovecot dovecot-mysql spamassassin clamav clamav-scanner clamav-scanner-systemd clamav-data clamav-update mariadb mariadb-server php phpMyAdmin

U Debianu i derivatima:

aptitude update && aptitude install apache2 postfix dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-mysql spamassassin clamav clamav-daemon clamav-base mariadb-client mariadb-server php5 phpMyAdmin

6. Pokrenite i omogućite web i servere baze podataka:

U sistemima baziranim na CentOS-u:

systemctl enable httpd mariadb
systemctl start httpd mariadb

U Debianu i derivatima:

systemctl enable apache2 mariadb
systemctl start apache2 mariadb

Kada se instalacija završi i gore navedeni servisi budu omogućeni i pokrenuti, počet ćemo postavljanjem baze podataka i tabela za pohranjivanje informacija o Postfix nalozima pošte.

Kreiranje baze podataka Postfix naloga pošte

Radi jednostavnosti, koristit ćemo phpMyAdmin, alat namijenjen za upravljanje administracijom MySQL/MariaDB baza podataka putem web sučelja, za kreiranje i upravljanje bazu podataka e-pošte.

Međutim, da bismo se prijavili i koristili ovaj alat, moramo slijediti ove korake:

7. Omogućite MariaDB račun (to možete učiniti pokretanjem mysql_secure_installation uslužnog programa iz komandne linije, dodjeljivanjem lozinke za root korisnika i postavljanje zadanih postavki koje je predložio alat OSIM “Zabraniti daljinsku prijavu na root?“:

ili na drugi način kreirajte novog korisnika baze podataka:

MariaDB [(none)]> CREATE USER 'dba'@'localhost' IDENTIFIED BY 'YourPasswordHere';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON * . * TO 'dba'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;

Osigurajte Apache s certifikatom

8. Budući da ćemo koristiti web aplikaciju za upravljanje bazom podataka servera e-pošte, moramo poduzeti potrebne mjere opreza da zaštitimo veze sa serverom. U suprotnom, naši phpMyAdmin akreditivi će putovati u običnom tekstu preko žice.

Da postavite Transport Layer Security (TLS) na vašem serveru, slijedite korake navedene u 8. dijelu serije RHCE: Implementacija HTTPS-a putem TLS-a koristeći uslugu mrežne sigurnosti (NSS) za Apache prije nego što nastavite dalje.

Napomena: ako nemate pristup konzoli servera, morat ćete pronaći drugi način da generišete potrebnu entropiju tokom kreiranja ključa. U tom slučaju, možda biste trebali razmisliti o instalaciji rng-alata i pokretanju rngd -r /dev/urandom.

Konfigurirajte i osigurajte PhpMyAdmin

9. U /etc/httpd/conf.d/phpMyAdmin.conf (CentOS) ili /etc/phpmyadmin/apache. conf (Debian i derivati), locirajte sva pojavljivanja sljedećih redova i provjerite da li upućuju na javnu IP adresu vašeg poslužitelja:

Require ip AAA.BBB.CCC.DDD
Allow from AAA.BBB.CCC.DDD

Osim toga, onemogućite zadane pseudonime i kreirajte novi za pristup vašoj stranici za prijavu na phpMyAdmin. Ovo će pomoći da se stranica zaštiti od botova i vanjskih napadača koji ciljaju www.yourdomain.com/phpmyadmin ili www.yourdomain.com/phpMyAdmin.

#Alias /phpMyAdmin /usr/share/phpMyAdmin
#Alias /phpmyadmin /usr/share/phpMyAdmin
Alias /managedb /usr/share/phpMyAdmin

Također, dodajte sljedeći red unutar :

Require all granted

Kreirajte Apache VirtualHost za domenu

10. Provjerite je li vaša domena dodana na omogućene stranice. Kreirajte /etc/httpd/sites-available/linuxnewz.com.conf (CentOS) ili /etc/apache2/sites-available/linuxnewz.com (Debian) sa sljedećim sadržajem (uvjerite se da su DocumentRoot, dostupne stranice i omogućene web stranice direktoriji postoje):

<VirtualHost *:80>
    ServerName www.linuxnewz.com
    ServerAlias linuxnewz.com
    DocumentRoot /var/www/linuxnewz.com/public_html
    ErrorLog /var/www/linuxnewz.com/error.log
    CustomLog /var/www/linuxnewz.com/requests.log combined
    Options Indexes FollowSymLinks
</VirtualHost>

i simbolički link:

Na CentOS-u:
ln -s /etc/httpd/sites-available/linuxnewz.com.conf /etc/httpd/sites-enabled/linuxnewz.com.conf
Na Debianu:
a2ensite linuxnewz.com

i gotovi ste.

Podešavanje Postfix baze podataka e-pošte

11. Sada možete otvoriti svoj phpMyAdmin interfejs na https://www.yourdomain.com/managedb (imajte na umu da managedb< je alias koji smo ranije postavili za phpMyAdmin direktorij podataka).

Ako to ne uspije (što može biti uzrokovano kašnjenjem u širenju ili nedostatkom konfiguracije DNS zapisa) za sada možete pokušati koristiti javnu IP adresu vašeg servera umjesto www.yourdomain.com :

U svakom slučaju, nakon što se prijavite na phpMyAdmin vidjet ćete sljedeće sučelje. Kliknite na Novo u lijevom odjeljku:

Unesite naziv baze podataka (EmailServer_db u ovom slučaju, nema potrebe za odabirom Collation) i kliknite Kreiraj:

12. Na sljedećem ekranu odaberite ime za prvu tabelu (gdje ćemo pohraniti domene kojima će ovaj mail server upravljati.

Imajte na umu da čak i kada ćemo u ovoj seriji upravljati samo jednom domenom, kasnije možete dodati više) i broj polja koji želite u njoj, a zatim kliknite Idi. Od vas će biti zatraženo da imenujete i konfigurirate ta dva polja, gdje možete sigurno nastaviti kako je prikazano na sljedećim slikama:

Kada odaberete PRIMARNA pod Indeks za DomainId, prihvatite zadane vrijednosti i kliknite Idi:

Alternativno, možete kliknuti Pregled SQL da vidite kod ispod haube:

CREATE TABLE `EmailServer_db`.`Domains_tbl` ( `DomainId` INT NOT NULL AUTO_INCREMENT , `DomainName` VARCHAR(50) NOT NULL , PRIMARY KEY (`DomainId`)) ENGINE = InnoDB;

Kada budete spremni, kliknite na Sačuvaj da potvrdite promjene. Tada ćete moći kliknuti Novo pod EmailServer_db da nastavite kreirati tabele:

13. Sada slijedite ove korake da kreirate ostatak tabela. Kliknite na karticu SQL i unesite naznačeni kod za svaki objekt baze podataka.

Imajte na umu da smo u ovom slučaju odabrali kreiranje tablice koristeći SQL upit zbog odnosa koji se moraju uspostaviti između različitih tablica:

Users_tbl

CREATE TABLE `Users_tbl` ( 
    `UserId` INT NOT NULL AUTO_INCREMENT,  
    `DomainId` INT NOT NULL,  
    `password` VARCHAR(100) NOT NULL,  
    `Email` VARCHAR(100) NOT NULL,  
    PRIMARY KEY (`UserId`),  
    UNIQUE KEY `Email` (`Email`),  
    FOREIGN KEY (DomainId) REFERENCES Domains_tbl(DomainId) ON DELETE CASCADE 
) ENGINE = InnoDB; 

Trebali biste dobiti poruku potvrde (ako nije, phpMyAdmin će zatražiti sintaksičke greške):

Alias_tbl

CREATE TABLE `Alias_tbl` (
    `AliasId` INT NOT NULL AUTO_INCREMENT, 
    `DomainId` INT NOT NULL, 
    `Source` varchar(100) NOT NULL, 
    `Destination` varchar(100) NOT NULL, 
    PRIMARY KEY (`AliasId`), 
    FOREIGN KEY (DomainId) REFERENCES Domains_tbl(DomainId) ON DELETE CASCADE
) ENGINE = InnoDB;

(Kliknite na Idi na dnu da nastavite sa kreiranjem tabele).

Do ove tačke, trebali biste imati sljedeću strukturu baze podataka:

Što znači da ste spremni za početak dodavanja nekih zapisa u sljedećem odjeljku.

Kreiranje Postfix domene, korisnika i aliasa

14. Sada ćemo umetnuti sljedeće zapise u tri tabele. Lozinke za [email  i [email  će biti šifrirane i izjava INSERT INTO Users_tbl.

Također, imajte na umu da će e-poruke poslane na [email  biti preusmjerene na [email :

INSERT INTO Domains_tbl (DomainName) VALUES ('linuxnewz.com');  
INSERT INTO Users_tbl (DomainId, password, Email) VALUES (1, ENCRYPT('PasswordForFirstEmailAccount', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), '[email ');  
INSERT INTO Users_tbl (DomainId, password, Email) VALUES (1, ENCRYPT('PasswordForSecondEmailAccount', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), '[email ');  
INSERT INTO Alias_tbl (DomainId, Source, Destination) VALUES (1, '[email ', '[email ');

Nakon što smo dodali našu domenu, dva korisnička računa i pseudonim e-pošte spremni smo da nastavimo sa postavljanjem našeg email servera u sljedećem članku ove serije, gdje ćemo konfigurirati Dovecot i Postfix jako>.

Sažetak

U ovom članku smo naveli pakete potrebne za instaliranje Postfix servera e-pošte u CentOS 7 VPS i objasnili kako upravljati bazom podataka koristeći phpMyAdmin.

U sljedeća dva članka pregledat ćemo konfiguraciju dva programa koji će se pobrinuti za distribuciju e-pošte za našu domenu (2. dio) i pokazati vam kako dodati zaštitu od neželjene pošte i virusa ( >3. dio) za vaš server.

Do tada, slobodno nas kontaktirajte putem donjeg obrasca ako imate bilo kakvih pitanja ili komentara.