Kako sigurno postaviti poslužitelj pošte Postfix i Dovecot s bazom podataka (MariaDB) - 1. dio


U ovoj seriji od 3 članka raspravit ćemo kako postaviti Postfix poslužitelj pošte s antivirusnom i neželjenom zaštitom u CentOS 7 okvir. Imajte na umu da ove upute rade i na drugim distribucijama kao što su RHEL/Fedora i Debian/Ubuntu.

Naš se plan sastoji od spremanja računa e-pošte i pseudonima u bazu podataka MariaDB koja će, radi naše udobnosti, biti upravljana putem phpMyAdmin.

Ako odlučite ne instalirati phpMyAdmin ili imate posla s poslužiteljem samo s CLI-jem, pružit ćemo i ekvivalentni kôd za stvaranje tablica baze podataka koje će se koristiti u ovoj seriji.

Budući da je održavanje poslužitelja pošte jedan od osnovnih zadataka koji se obično dodjeljuju administratorima sustava i inženjerima, pružit ćemo i nekoliko savjeta za učinkovito pokretanje ove ključne usluge u proizvodnom okruženju.

Stvorite A i MX zapise za domenu u DNS-u

Prije nego što nastavite dalje, mora se ispuniti nekoliko preduvjeta:

1. Trebat će vam valjana domena registrirana putem registra domene. U ovoj ćemo seriji koristiti www.linuxnewz.com , koji je registriran putem GoDaddy.

2. Takva domena mora biti usmjerena na vanjsku IP vašeg VPS-a ili pružatelja usluga hostinga u oblaku. Ako sami hostirate svoj poslužitelj pošte, možete koristiti uslugu koju nudi FreeDNS (potrebna je registracija).

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

Jednom dodani, možete ih potražiti pomoću mrežnog alata kao što su 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 prošire i vaša domena ne postane dostupna. U međuvremenu, svom VPS-u možete pristupiti putem njegove IP adrese za obavljanje dolje navedenih zadataka.

3. Konfigurirajte FQDN (potpuno kvalificirano ime domene) vašeg VPS-a:

# hostnamectl set-hostname yourhostname

da biste postavili ime hosta sustava, a zatim uredite/etc/hosts na sljedeći način (zamijenite AAA.BBB.CCC.DDD, vašeime hosta i vašu domenu javnom IP adresom vašeg poslužitelja, vašim imenom hosta i vašom registriranom domenom):

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

gdje je yourhostname sistemsko ime računala 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 spremište EPEL:

# yum install epel-release

5. Nakon što slijedite gornje korake, instalirajte potrebne pakete:

# 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
# 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 poslužitelje baze podataka:

# systemctl enable httpd mariadb
# systemctl start httpd mariadb
# systemctl enable apache2 mariadb
# systemctl start apache2 mariadb

Kad se instalacija dovrši i gore navedena usluga bude omogućena i pokrenuta, započet ćemo postavljanjem baze podataka i tablica za pohranu podataka o Postfix računima pošte.

Stvaranje baze podataka poštanskih računa Postfix

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

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 uslužnog programa mysql_secure_installation iz naredbenog retka, dodjeljivanjem lozinke za korijen korisnika i postavljanjem zadanih postavki koje je predložio alat OSIM "Daljinsko onemogućavanje prijave za root" ? “:

ili na drugi način stvorite 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 certifikatom

8. Budući da ćemo za upravljanje bazom podataka poslužitelja e-pošte koristiti web aplikaciju, moramo poduzeti potrebne mjere predostrožnosti kako bismo zaštitili veze s poslužiteljem. U suprotnom, naši phpMyAdmin vjerodajnice putovat će u običnom tekstu preko žice.

Da biste postavili sigurnost transportnog sloja (TLS) na vašem poslužitelju, slijedite korake opisane u dijelu 8 serije RHCE: Implementacija HTTPS-a putem TLS-a pomoću Network Security Service (NSS) za Apache prije nego što nastavite dalje.

Napomena: ako nemate pristup konzoli poslužitelja, morat ćete pronaći drugi način generiranja potrebne entropije tijekom izrade ključa. U tom slučaju, možda biste trebali razmisliti o instaliranju 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), pronađite sve pojave sljedećih redaka i pobrinite se da vode prema javnoj IP vašeg poslužitelja:

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

Uz to, onemogućite zadane pseudonime i stvorite novi za pristup vašoj stranici za prijavu phpMyAdmin. To će pomoći u zaštiti web stranice 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 redak unutar :

Require all granted

Stvorite Apache VirtualHost za domenu

10. Provjerite je li vaša domena dodana na omogućene web lokacije. Stvorite /etc/httpd/sites-available/linuxnewz.com.conf (CentOS) ili /etc/apache2/sites-available/linuxnewz.com (Debian) sa sljedećim sadržajem (pobrinite se za DocumentRoot, web stranice dostupne i web stranice) -omogućeni 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čka poveznica:

# ln -s /etc/httpd/sites-available/linuxnewz.com.conf /etc/httpd/sites-enabled/linuxnewz.com.conf
# a2ensite linuxnewz.com

i gotovi ste

Postavljanje baze podataka e-pošte Postfix

11. Sada svoje phpMyAdmin sučelje možete otvoriti na https://www.yourdomain.com/managedb (imajte na umu da je managedb pseudonim koji smo ranije postavili za direktorij podataka phpMyAdmin).

Ako to ne uspije (što može biti uzrokovano kašnjenjem širenja ili nedostatkom konfiguracije DNS zapisa), zasad možete pokušati koristiti javnu IP adresu svog poslužitelja umjesto www.yourdomain.com:

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

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

12. Na sljedećem zaslonu odaberite naziv za prvu tablicu (gdje ćemo pohraniti domene kojima će upravljati ovaj poslužitelj pošte.

Imajte na umu da čak i kada ćemo u ovoj seriji upravljati samo jednom domenom, kasnije možete dodati još njih) i broj polja koja želite u njoj, a zatim kliknite Go. Od vas će se zatražiti da imenujete i konfigurirate ta dva polja, gdje možete sigurno postupiti kako je naznačeno na sljedećim slikama:

Kada odaberete PRIMARY pod Index for DomainId, prihvatite zadane vrijednosti i kliknite Go:

Možete i kliknuti Pregled SQL-a da biste vidjeli kôd 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 Spremi da biste potvrdili promjene. Tada ćete moći kliknuti Novo pod EmailServer_db da biste nastavili stvarati tablice:

13. Sada slijedite ove korake za izradu ostatka tablica. Kliknite karticu SQL i unesite naznačeni kod za svaki objekt baze podataka.

Imajte na umu da smo u ovom slučaju odlučili stvoriti tablicu koristeći SQL upit zbog odnosa koji se moraju uspostaviti između različitih tablica:

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 za potvrdu (ako nije, phpMyAdmin će zatražiti sintaksne pogreške):

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 Go na dnu da biste nastavili s izradom tablice).

Do ovog trenutka trebali biste imati sljedeću strukturu baze podataka:

Što znači da ste spremni početi dodavati neke zapise u sljedećem odjeljku.

Stvaranje domene Postfix, korisnika i pseudonima

14. Sad ćemo u tri tablice umetnuti sljedeće zapise. Lozinke za [email bit će šifrirane i stavka INSERT INTO Users_tbl.

Također, imajte na umu da su e-poruke poslane na [zaštićena e-pošta]:

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 nastaviti postavljati naš poslužitelj e-pošte u sljedećem članku ove serije, gdje ćemo konfigurirati Dovecot i Postfix.

Sažetak

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

U sljedeća dva članka pregledat ćemo konfiguraciju dvaju 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 svoj poslužitelj.

Do tada, slobodno nas kontaktirajte putem donjeg obrasca ako imate pitanja ili komentare.