Kā droši iestatīt Postfix pasta serveri un Dovecot ar datu bāzi (MariaDB) - 1. daļa


Šajā 3 rakstu sērijā mēs apspriedīsim, kā CentOS 7 lodziņā iestatīt Postfix pasta serveri ar pretvīrusu un surogātpasta aizsardzību. Lūdzu, ņemiet vērā, ka šīs instrukcijas darbojas arī citos izplatījumos, piemēram, RHEL/Fedora un Debian/Ubuntu.

Mūsu plāns ietver e-pasta kontu un aizstājvārdu glabāšanu MariaDB datu bāzē, kas ir mūsu ērtībai un tiks pārvaldīta, izmantojot phpMyAdmin.

Ja izvēlaties neinstalēt phpMyAdmin vai jums ir darīšana ar tikai CLI serveri, mēs nodrošināsim arī līdzvērtīgu kodu, lai izveidotu datu bāzes tabulas, kas tiks izmantotas visā šajā sērijā.

Tā kā pasta servera uzturēšana un darbība ir viens no būtiskākajiem uzdevumiem, kas parasti tiek piešķirts sistēmas administratoriem un inženieriem, mēs sniegsim arī dažus padomus, kā efektīvi palaist šo kritisko pakalpojumu ražošanas vidē.

Izveidojiet domēnā A un MX ierakstus DNS

Pirms turpināt darbu, ir jāievēro daži priekšnoteikumi:

1. Jums būs nepieciešams derīgs domēns, kas reģistrēts, izmantojot domēna reģistratoru. Šajā sērijā mēs izmantosim www.linuxnewz.com , kas tika reģistrēts, izmantojot GoDaddy.

2. Šādam domēnam ir jānorāda uz jūsu VPS vai mākoņa mitināšanas pakalpojumu sniedzēja ārējo IP. Ja pats mitināt savu pasta serveri, varat izmantot pakalpojumu FreeDNS (nepieciešama reģistrācija).

Jebkurā gadījumā jums ir jāiestata A un MX ieraksti arī savam domēnam (vairāk par MX ierakstiem varat uzzināt šajā Google bieži uzdotajā FAQ sadaļā).

Pēc pievienošanas jūs varat tos meklēt, izmantojot tiešsaistes rīku, piemēram, MxToolbox vai ViewDNS, lai nodrošinātu, ka tie ir pareizi iestatīti.

Svarīgi: Lūdzu, ņemiet vērā, ka var paiet zināms laiks (1-2 dienas), līdz DNS ieraksti tiek pavairoti un jūsu domēns ir pieejams. Tikmēr varat piekļūt savam VPS caur tā IP adresi, lai veiktu turpmāk norādītos uzdevumus.

3. Konfigurējiet sava VPS FQDN (pilnībā kvalificētu domēna vārdu):

# hostnamectl set-hostname yourhostname

lai iestatītu sistēmas resursdatora nosaukumu, pēc tam rediģējiet/etc/hosts šādi (aizstājiet AAA.BBB.CCC.DDD, yourhostname un yourdomain ar sava servera publisko IP, jūsu resursdatora nosaukumu un reģistrēto domēnu):

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

kur yourhostname ir sistēmas resursdatora nosaukums, kas iepriekš tika iestatīts, izmantojot komandu hostnamectl.

Nepieciešamo programmatūras pakotņu instalēšana

4. Lai instalētu nepieciešamās programmatūras paketes, piemēram, Apache, Postfix, Dovecot, MariaDB, PhpMyAdmin, SpamAssassin, ClamAV utt., Jums jāiespējo EPEL repozitorijs:

# yum install epel-release

5. Kad esat izpildījis iepriekš minētās darbības, instalējiet nepieciešamās pakotnes:

# 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. Sāciet un iespējojiet tīmekļa un datu bāzes serverus:

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

Kad instalēšana ir pabeigta un iepriekš minētais pakalpojums ir iespējots un darbojas, mēs sāksim, izveidojot datu bāzi un tabulas, lai saglabātu informāciju par Postfix pasta kontiem.

Postfix pasta kontu datu bāzes izveide

Vienkāršības labad mēs izmantosim phpMyAdmin, rīku, kas paredzēts MySQL/MariaDB datu bāzu administrēšanai, izmantojot tīmekļa saskarni, e-pasta datu bāzes izveidošanai un pārvaldībai.

Tomēr, lai pieteiktos un izmantotu šo rīku, mums ir jāveic šādas darbības:

7. Iespējojiet MariaDB kontu (to varat izdarīt, palaižot komandrindā utilītu mysql_secure_installation , piešķirot lietotāja root paroli un iestatot rīka piedāvātos noklusējuma iestatījumus, IZŅEMOT “Attāli neatļaut root pieteikšanos. ? “:

vai citādi izveidojiet jaunu datu bāzes lietotāju:

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

Nodrošiniet Apache ar sertifikātu

8. Tā kā e-pasta servera datu bāzes pārvaldībai izmantosim tīmekļa lietojumprogrammu, mums jāveic nepieciešamie piesardzības pasākumi, lai aizsargātu savienojumus ar serveri. Pretējā gadījumā mūsu phpMyAdmin akreditācijas dati ceļos vienkāršā tekstā pa vadu.

Lai serverī iestatītu transporta slāņa drošību (TLS), veiciet RHCE sērijas 8. daļā norādītās darbības: Pirms turpināt, veiciet HTTPS ieviešanu, izmantojot TLS, izmantojot Apache tīkla drošības pakalpojumu (NSS).

Piezīme: ja jums nav piekļuves servera konsolei, atslēgas izveidošanas laikā jums būs jāatrod cits veids, kā ģenerēt nepieciešamo entropiju. Tādā gadījumā jūs varētu apsvērt iespēju instalēt rng-tools un palaist rngd -r/dev/urandom.

Konfigurēt un aizsargāt PhpMyAdmin

9. Sadaļā /etc/httpd/conf.d/phpMyAdmin.conf (CentOS) vai /etc/phpmyadmin/apache.conf (Debian un atvasinājumi) atrodiet visus nākamo rindiņu gadījumus un pārliecinieties, ka tie norāda uz publisko IP sava servera:

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

Turklāt atspējojiet noklusējuma aizstājvārdus un izveidojiet jaunu, lai piekļūtu jūsu phpMyAdmin pieteikšanās lapai. Tas palīdzēs aizsargāt vietni pret robotiem un ārējiem uzbrucējiem, kuru mērķis ir www.yourdomain.com/phpmyadmin vai www.yourdomain.com/phpMyAdmin.

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

Pievienojiet arī šādu rindu iekšpusē:

Require all granted

Izveidojiet Apache VirtualHost domēnam

10. Pārliecinieties, vai jūsu domēns ir pievienots iespējotajām vietnēm. Izveidojiet /etc/httpd/sites-available/linuxnewz.com.conf (CentOS) vai /etc/apache2/sites-available/linuxnewz.com (Debian) ar šādu saturu (pārliecinieties, vai DocumentRoot, vietnes ir pieejamas un vietnes - pastāv iespējotie direktoriji):

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

un simboliskā saite:

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

un viss ir pabeigts.

Iestatiet Postfix e-pasta datu bāzi

11. Tagad jūs varat atvērt savu phpMyAdmin saskarni vietnē https://www.yourdomain.com/managedb (ņemiet vērā, ka managedb ir aizstājvārds, ko mēs iepriekš iestatījām phpMyAdmin datu direktorijai).

Ja tas nedarbojas (ko var izraisīt DNS ierakstu izplatīšanas aizkavēšanās vai konfigurācijas trūkums), pagaidām varat mēģināt izmantot sava servera publisko IP adresi, nevis www.yourdomain.com:

Jebkurā gadījumā pēc pieteikšanās phpMyAdmin jūs redzēsiet šādu saskarni. Kreisajā sadaļā noklikšķiniet uz Jauns:

Ievadiet datu bāzes nosaukumu (šajā gadījumā EmailServer_db, nav jāizvēlas apkopojums) un noklikšķiniet uz Izveidot:

12. Nākamajā ekrānā izvēlieties pirmās tabulas nosaukumu (kur mēs glabāsim domēnus, kurus pārvaldīs šis pasta serveris.

Lūdzu, ņemiet vērā, ka pat tad, ja šajā sērijā mēs pārvaldīsim tikai vienu domēnu, vēlāk tos varēsit pievienot vairāk) un tajā vēlamo lauku skaitu, pēc tam noklikšķiniet uz Sākt. Jums tiks piedāvāts nosaukt un konfigurēt šos divus laukus, kur jūs varat droši rīkoties, kā norādīts šādos attēlos:

Kad sadaļā DomainId Index izvēlaties PRIMARY, pieņemiet noklusējuma vērtības un noklikšķiniet uz Go:

Varat arī noklikšķināt uz Priekšskatīt SQL, lai redzētu kodu zem pārsega:

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

Kad esat gatavs, noklikšķiniet uz Saglabāt, lai apstiprinātu izmaiņas. Pēc tam sadaļā EmailServer_db varēsit noklikšķināt uz Jauns, lai turpinātu veidot tabulas:

13. Tagad izpildiet šīs darbības, lai izveidotu pārējās tabulas. Noklikšķiniet uz cilnes SQL un ievadiet norādīto kodu katram datu bāzes objektam.

Ņemiet vērā, ka šajā gadījumā mēs izvēlējāmies izveidot tabulu, izmantojot SQL vaicājumu, jo ir jāveido attiecības starp dažādām tabulām:

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; 

Jums vajadzētu saņemt apstiprinājuma ziņojumu (ja nē, phpMyAdmin pieprasīs sintakses kļūdas):

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;

(Lai turpinātu izveidot tabulu, apakšdaļā noklikšķiniet uz Go).

Līdz šim jums vajadzētu būt šādai datu bāzes struktūrai:

Tas nozīmē, ka esat gatavs sākt pievienot dažus ierakstus nākamajā sadaļā.

Postfix domēna, lietotāju un aizstājvārdu izveide

14. Tagad mēs trīs tabulās ievietosim šādus ierakstus. Paroles [aizsargāts ar e-pastu] tiks šifrētas un INSERT INTO Users_tbl.

Lūdzu, ņemiet vērā, ka e-pasta ziņojumi, kas nosūtīti uz [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 ');

Pēc mūsu domēna, divu lietotāju kontu un e-pasta aizstājvārda pievienošanas mēs esam gatavi turpināt iestatīt e-pasta serveri nākamajā šīs sērijas rakstā, kur mēs konfigurēsim Dovecot un Postfix.

Kopsavilkums

Šajā rakstā mēs esam uzskaitījuši pakotnes, kas nepieciešamas, lai instalētu Postfix e-pasta serveri CentOS 7 VPS, un paskaidrojām, kā pārvaldīt pamatā esošo datu bāzi, izmantojot phpMyAdmin.

Nākamajos divos rakstos mēs pārskatīsim divu programmu konfigurāciju, kas rūpēsies par mūsu domēna e-pasta izplatīšanu (2. daļa), un parādīsim, kā serverim pievienot aizsardzību pret surogātpastu un vīrusiem (3. daļa).

Līdz tam droši sazinieties ar mums, izmantojot zemāk esošo veidlapu, ja jums ir kādi jautājumi vai komentāri.