Postfixi meiliserveri ja Dovecoti koos andmebaasiga (MariaDB) turvaline seadistamine - 1. osa


Selles 3-artiklises seerias arutleme, kuidas seadistada CentOS 7 kasti viirusetõrje ja rämpspostikaitsega Postfixi meiliserver. Pange tähele, et need juhised toimivad ka muude distributsioonide puhul, näiteks RHEL/Fedora ja Debian/Ubuntu.

Meie plaan seisneb meilikontode ja varjunimede salvestamises MariaDB andmebaasi, mis on meie mugavuse huvides ja mida hallatakse phpMyAdmini kaudu.

Kui otsustate phpMyAdmini mitte installida või kui tegelete ainult CLI-serveriga, pakume kogu seerias kasutatavate andmebaasitabelite loomiseks samaväärse koodi.

Kuna meiliserveri töökorras hoidmine on üks põhilisi ülesandeid, mis tavaliselt määratakse süsteemiadministraatoritele ja inseneridele, anname ka mõned näpunäited selle kriitilise teenuse tõhusaks käitamiseks tootmiskeskkonnas.

Looge DNS-is domeeni jaoks A- ja MX-kirjed

Enne edasi liikumist peavad olema täidetud mõned eeldused:

1. Teil on vaja kehtivat domeeni, mis on registreeritud domeenide registripidaja kaudu. Selles seerias kasutame www.linuxnewz.com , mis registreeriti GoDaddy kaudu.

2. Sellisele domeenile tuleb osutada teie VPS-i või pilvemajutusteenuse pakkuja välisele IP-le. Kui hostite oma meiliserverit ise, võite kasutada FreeDNS-i pakutavat teenust (nõuab registreerimist).

Igal juhul peate oma domeeni jaoks seadistama ka A ja MX kirjed (MX-kirjete kohta saate lisateavet Google'i KKK-st).

Pärast lisamist saate neid otsida veebitööriista abil, näiteks MxToolbox või ViewDNS, et tagada nende nõuetekohane seadistamine.

Tähtis. Pange tähele, et DNS-kirjete levitamiseni ja teie domeeni kättesaadavuseni võib minna aega (1-2 päeva). Vahepeal saate oma VPS-ile juurde pääseda selle IP-aadressi kaudu, et täita allpool nimetatud ülesandeid.

3. Konfigureerige oma VPS-i FQDN (täielikult kvalifitseeritud domeeninimi):

# hostnamectl set-hostname yourhostname

süsteemi hostinime määramiseks muutke faili/etc/hosts järgmiselt (asendage AAA.BBB.CCC.DDD, teie hostinimi ja domeen oma serveri, hostinime ja registreeritud domeeni avaliku IP-ga):

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

kus teie hostinimi on süsteemi hostinimi, mis oli eelnevalt määratud käsuga hostnamectl.

Nõutavate tarkvarapakettide installimine

4. Nõutavate tarkvarapakettide nagu Apache, Postfix, Dovecot, MariaDB, PhpMyAdmin, SpamAssassin, ClamAV jne installimiseks peate lubama EPEL-i hoidla:

# yum install epel-release

5. Kui olete ülaltoodud samme järginud, installige vajalikud paketid:

# 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. Käivitage ja lubage veebi- ja andmebaasiserverid:

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

Kui installimine on lõpule jõudnud ja ülaltoodud teenus on lubatud ja töötab, alustame andmebaasi ja tabelite seadistamisega Postfixi meilikontode kohta teabe salvestamiseks.

Postfixi meilikontode andmebaasi loomine

Lihtsuse huvides kasutame e-posti andmebaasi loomiseks ja haldamiseks tööriista phpMyAdmin, mis on mõeldud MySQL/MariaDB andmebaaside haldamiseks veebiliidese kaudu.

Selle tööriista sisselogimiseks ja kasutamiseks peame siiski järgima neid samme:

7. Lubage MariaDB konto (saate seda teha, käivitades käsurealt utiliidi mysql_secure_installation , määrates kasutajajuurele parooli ja määrates tööriista pakutavad vaikesätted VÄLJA „Keela juur sisselogimine eemalt ? ":

või loote muul viisil uue andmebaasi kasutaja:

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

Turvaline Apache sertifikaadiga

8. Kuna me kasutame e-posti serveri andmebaasi haldamiseks veebirakendust, peame serveriga ühenduste kaitsmiseks võtma vajalikud ettevaatusabinõud. Vastasel juhul liiguvad meie phpMyAdmini mandaadid lihttekstina üle traadi.

Transpordikihi turvalisuse (TLS) seadistamiseks oma serveris järgige RHCE-seeria 8. osas toodud juhiseid: HTTPS-i juurutamine TLS-i kaudu Apache'i võrgu turvateenuse (NSS) abil, enne kui jätkate.

Märkus. Kui teil pole juurdepääsu serveri konsoolile, peate võtme loomise ajal leidma teise võimaluse vajaliku entroopia genereerimiseks. Sel juhul võiksite kaaluda rng-toolsi installimist ja rngd -r/dev/urandom käivitamist.

PhpMyAdmini konfigureerimine ja turvamine

9. Leidke jaotises /etc/httpd/conf.d/phpMyAdmin.conf (CentOS) või /etc/phpmyadmin/apache.conf (Debian ja derivaadid) kõik järgmiste ridade esinemised ja veenduge, et need osutaksid avalikule IP-le oma serveri kohta:

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

Lisaks keelake vaikenimed ja looge uus, et pääseda juurde oma phpMyAdmini sisselogimislehele. See aitab kaitsta saiti robotite ja väliste ründajate eest, kes sihivad www.yourdomain.com/phpmyadmin või www.yourdomain.com/phpMyAdmin.

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

Lisaks lisage järgmine rida sisse:

Require all granted

Looge domeeni jaoks Apache VirtualHost

10. Veenduge, et teie domeen oleks lubatud saitidele lisatud. Looge /etc/httpd/sites-available/linuxnewz.com.conf (CentOS) või /etc/apache2/sites-available/linuxnewz.com (Debian) järgmise sisuga (veenduge, et DocumentRoot, saidid saadaval ja saidid on olemas lubatavad kataloogid):

<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>

ja sümboolne link:

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

ja ongi valmis.

Postfixi meiliandmebaasi seadistamine

11. Nüüd saate oma phpMyAdmini liidese avada aadressil https://www.yourdomain.com/managedb (pange tähele, et managedb on alias, mille seadistasime varem phpMyAdmini andmekataloogi jaoks).

Kui see ei toimi (mille põhjuseks võib olla DNS-kirjete levitamise viivitamine või konfiguratsiooni puudumine), võite proovida kasutada oma serveri avalikku IP-aadressi www.yourdomain.com asemel:

Igal juhul näete pärast phpMyAdmini sisselogimist järgmist liidest. Klõpsake vasakpoolses jaotises nuppu Uus:

Sisestage andmebaasi nimi (sellisel juhul tuleb meiliaadress Serveri_db, pole vaja kogumit valida) ja klõpsake nuppu Loo:

12. Valige järgmisel ekraanil esimesele tabelile nimi (kuhu me salvestame domeenid, mida see meiliserver haldab.

Pange tähele, et isegi kui selles seerias haldame ainult ühte domeeni, saate hiljem lisada rohkem) ja selles soovitud väljade arvu, seejärel klõpsake nuppu Mine. Teil palutakse nimetada ja konfigureerida need kaks välja, kus saate turvaliselt jätkata, nagu on näidatud järgmistel piltidel:

Kui valite jaotises DomainId register jaotises PRIMARY, aktsepteerige vaikeväärtusi ja klõpsake nuppu Go:

Teise võimalusena võite klõpsata SQL-i eelvaate kuvamiseks, et näha kapoti all olevat koodi:

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

Kui olete valmis, klõpsake muudatuste kinnitamiseks nuppu Salvesta. Seejärel saate tabelite loomise jätkamiseks klõpsata jaotises EmailServer_db nuppu Uus:

13. Järgige ülejäänud tabelite loomiseks neid samme. Klõpsake vahekaarti SQL ja sisestage iga andmebaasiobjekti jaoks näidatud kood.

Pange tähele, et sel juhul valisime tabeli loomise SQL-päringu abil erinevate tabelite vaheliste seoste tõttu:

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; 

Peaksite saama kinnitusteate (kui ei, küsib phpMyAdmin süntaksivigu):

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;

(Tabeli loomise jätkamiseks klõpsake allosas nuppu Mine).

Siiani peaks teil olema järgmine andmebaasistruktuur:

Mis tähendab, et olete valmis järgmises jaotises mõnda kirjet lisama.

Postfixi domeeni, kasutajate ja varjunimede loomine

14. Lisame nüüd kolme tabelisse järgmised kirjed. [Email paroolid krüpteeritakse ja käsk INSERT INTO Users_tbl.

Pange tähele, et meiliaadressile [email saadetud meilid:

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 ');

Lisades oma domeeni, kaks kasutajakontot ja e-posti pseudonüümi, oleme selle sarja järgmises artiklis valmis jätkama oma e-posti serveri seadistamist, kus konfigureerime Dovecot ja Postfix.

Kokkuvõte

Selles artiklis oleme loetlenud paketid, mis on vajalikud Postfixi e-posti serveri installimiseks CentOS 7 VPS-i, ja selgitasime, kuidas hallata aluseks olevat andmebaasi phpMyAdmini abil.

Järgmises kahes artiklis vaatame üle kahe programmi konfiguratsiooni, mis hoolitsevad meie domeeni e-posti levitamise eest (2. osa) ja näitavad teile, kuidas lisada oma serverisse kaitset rämpsposti ja viiruste eest (3. osa).

Seni võite küsimuste või kommentaaride korral meiega ühendust võtta, kasutades allolevat vormi.