In acest 3-articol serie vom discuta despre modul de configurare a Postfix server de mail cu protecție antivirus și spam într-un CentOS 7 cutie. Vă rugăm să rețineți că aceste instrucțiuni funcționează și pe alte distribuții, cum ar fi RHEL/Fedora și Debian/Ubuntu.
Partea 1: Cum se creează și se configurează în siguranță baza de date Postfix Mail Server (MariaDB)
Planul nostru constă în stocarea conturilor de e-mail și aliasurilor într-un MariaDB baza de date care este pentru confortul nostru, va fi gestionată prin phpMyAdmin.
Dacă alegeți să nu instalați
phpMyAdmin, sau aveți de-a face cu un server numai CLI, vom furniza, de asemenea, codul echivalent pentru a crea tabelele bazei de date care vor fi utilizate pe parcursul acestei serii.Întrucât menținerea și rularea unui server de poștă electronică este una dintre sarcinile esențiale care sunt de obicei atribuite sistemului administratori și ingineri, vom oferi, de asemenea, câteva sfaturi pentru a rula eficient acest serviciu critic într-o producție mediu inconjurator.
Înainte de a continua, există câteva condiții preliminare care trebuie îndeplinite:
1. Veți avea nevoie de un domeniu valid înregistrat printr-un registrator de domenii. În această serie vom folosi www.linuxnewz.com
, care a fost înregistrat prin Hai tăticu.
2. Un astfel de domeniu trebuie să fie îndreptat către IP-ul extern al furnizorului dvs. de găzduire VPS sau cloud. Dacă vă găzduiți serverul de e-mail, puteți utiliza serviciul oferit de FreeDNS (necesită înregistrare).
În orice caz, trebuie să vă configurați A
și MX
înregistrări și pentru domeniul dvs. (puteți afla mai multe despre înregistrările MX în acest FAQ de la Google).
Odată adăugate, le puteți căuta folosind un instrument online, cum ar fi MxToolbox sau ViewDNS pentru a vă asigura că sunt configurate corespunzător.
Important: Vă rugăm să rețineți că poate dura ceva timp (1-2 zile) până când înregistrările DNS sunt propagate și domeniul dvs. este disponibil. Între timp, vă puteți accesa VPS-ul prin adresa IP a acestuia pentru a efectua sarcinile indicate mai jos.
3. Configurați fișierul FQDN (Numele de domeniu complet calificat) din VPS:
# hostnamectl set-hostname yourhostname.
pentru a seta numele gazdei sistemului, apoi editați /etc/hosts după cum urmează (înlocuiți AAA.BBB.CCC.DDD, numele tău de gazdă, și domeniul tău cu IP-ul public al serverului dvs., numele gazdei și domeniul dvs. înregistrat):
AAA.BBB.CCC.DDDnumelehostei.domeniul dvs..comnumelehostei.
Unde numele tău de gazdă este numele de gazdă al sistemului care a fost setat anterior folosind hostnamectl comanda.
4. Pentru a instala pachetele software necesare, cum ar fi Apache, Postfix, Dovecot, MariaDB, PhpMyAdmin, SpamAssassin, ClamAV, etc., trebuie să activați EPEL repertoriu:
# yum instala epel-release.
5. După ce ați urmat pașii de mai sus, instalați pachetele necesare:
# 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. Porniți și activați serverele web și de baze de date:
# systemctl activate httpd mariadb. # systemctl start httpd mariadb.
# systemctl activate apache2 mariadb. # systemctl start apache2 mariadb.
Când instalarea este finalizată și serviciul de mai sus sunt activate și rulează, vom începe prin configurarea bazei de date și a tabelelor pentru a stoca informații despre conturile de poștă Postfix.
Pentru simplitate, vom folosi phpMyAdmin, un instrument destinat gestionării administrării MySQL / MariaDB baze de date printr-o interfață web, pentru a crea și gestiona baza de date de e-mail.
Cu toate acestea, pentru a ne conecta și a utiliza acest instrument, trebuie să urmăm acești pași:
7. Activați MariaDB cont (puteți face acest lucru executând fișierul mysql_secure_installation
utilitar din linia de comandă, atribuirea unei parole pentru root utilizator și setarea setărilor implicite propuse de instrument EXCEPȚIE „Nu permiteți conectarea la root de la distanță?“:
sau altfel creați un nou utilizator de bază de date:
MariaDB [(none)]> CREATE USER 'dba' @ 'localhost' IDENTIFICAT DE 'YourPasswordHere'; MariaDB [(none)]> ACORDĂ TOATE PRIVILEGIILE PENTRU *. * TO 'dba' @ 'localhost'; MariaDB [(none)]> PRIVILEGII DE FLUSH;
8. Deoarece vom folosi o aplicație web pentru a gestiona baza de date a serverului de e-mail, trebuie să luăm măsurile de precauție necesare pentru a proteja conexiunile la server. În caz contrar, a noastră phpMyAdmin acreditările vor călători în text simplu peste fir.
A înscena Securitatea stratului de transport (TLS) pe serverul dvs., urmați pașii descriși în Partea 8 din seria RHCE: Implementarea HTTPS prin TLS folosind Network Security Service (NSS) pentru Apache înainte de a continua mai departe.
Notă: dacă nu aveți acces la consola serverului, va trebui să găsiți o altă modalitate de a genera entropia necesară în timpul creării cheii. În acest caz, vă recomandăm să luați în considerare instalarea rng-tools și alergând rngd -r / dev / urandom.
9. În /etc/httpd/conf.d/phpMyAdmin.conf (CentOS) sau /etc/phpmyadmin/apache.conf (Debian și derivate), localizați toate aparițiile următoarelor linii și asigurați-vă că acestea indică adresa IP publică a serverului dvs.:
Necesită ip AAA.BBB.CCC.DDD. Permiteți de la AAA.BBB.CCC.DDD.
În plus, dezactivați aliasurile implicite și creați unul nou pentru a accesa pagina de autentificare phpMyAdmin. Acest lucru va ajuta la securizarea site-ului împotriva roboților și a atacatorilor externi care vizează www.yourdomain.com/phpmyadmin sau www.yourdomain.com/phpMyAdmin.
#Alias / phpMyAdmin / usr / share / phpMyAdmin. #Alias / phpmyadmin / usr / share / phpMyAdmin. Alias / managedb / usr / share / phpMyAdmin.
De asemenea, adăugați următoarea linie în interior :
Solicitați toate acordate.
10. Asigurați-vă că domeniul dvs. este adăugat la site-urile activate. Crea /etc/httpd/sites-available/linuxnewz.com.conf (CentOS) sau /etc/apache2/sites-available/linuxnewz.com (Debian) cu următorul conținut (asigurați-vă că DocumentRoot, site-uri disponibile, și activat de site-uri directoare există):
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 indexuri de opțiuni combinate FollowSymLinks.
și legătura simbolică:
# ln -s /etc/httpd/sites-available/linuxnewz.com.conf /etc/httpd/sites-enabled/linuxnewz.com.conf.
# a2ensite linuxnewz.com.
și ai terminat.
11. Acum puteți deschide fișierul phpMyAdmin interfață la https://www.yourdomain.com/managedb
(Rețineți că gestionatb este aliasul pe care l-am configurat mai devreme pentru directorul de date phpMyAdmin).
Dacă acest lucru nu funcționează (care poate fi cauzat de o întârziere în propagarea sau lipsa de configurare a înregistrărilor DNS) pentru moment, puteți încerca să utilizați adresa IP publică a serverului în loc de www.yourdomain.com:
În orice caz, după ce vă conectați la phpMyAdmin, veți vedea următoarea interfață. Clic Nou în secțiunea din stânga:
Introduceți un nume pentru baza de date (EmailServer_db în acest caz, nu este nevoie să selectați o colație) și să faceți clic pe Crea:
12. În ecranul următor, alegeți un Nume pentru primul tabel (unde vom stoca domeniile pe care le va gestiona acest server de mail.
Vă rugăm să rețineți că, chiar și atunci când în această serie vom gestiona un singur domeniu, puteți adăuga mai multe mai târziu) și numărul de câmpuri pe care le doriți în acesta, apoi faceți clic pe Merge. Vi se va solicita să denumiți și să configurați aceste două câmpuri, unde puteți continua în siguranță, așa cum este indicat în următoarele imagini:
Când alegi PRIMAR sub Index pentru DomainId, acceptați valorile implicite și faceți clic pe Merge:
Alternativ, puteți face clic Previzualizați SQL pentru a vedea codul sub capotă:
CREATE TABLE `EmailServer_db`.`Domains_tbl` (` DomainId` INT NOT NULL AUTO_INCREMENT, `DomainName` VARCHAR (50) NOT NULL, PRIMARY KEY (` DomainId`)) ENGINE = InnoDB;
Când sunteți gata, dați clic salva pentru a confirma modificările. Apoi veți putea face clic Nou sub EmailServer_db pentru a continua crearea tabelelor:
13. Acum urmați acești pași pentru a crea restul tabelelor. Faceți clic pe SQL fila și introduceți codul indicat pentru fiecare obiect de bază de date.
Rețineți că, în acest caz, am ales să creăm tabelul folosind o interogare SQL din cauza relațiilor care trebuie stabilite între diferite tabele:
CREATE TABLE `Users_tbl` (` UserId` INT NOT NULL AUTO_INCREMENT, `DomainId` INT NOT NULL,` password` VARCHAR (100) NOT NULL, `Email` VARCHAR (100) NOT NULL, CHEIE PRIMARĂ („UserId”), CHEIE UNICĂ „Email” („Email”), CHEIE STRĂINĂ (DomainId) REFERINȚE Domenii_tbl (DomainId) PE ȘTERGEREA CASCADEI) MOTOR = InnoDB;
Ar trebui să primiți un mesaj de confirmare (dacă nu, phpMyAdmin va solicita erori de sintaxă):
CREATE TABLE `Alias_tbl` (` AliasId` INT NOT NULL AUTO_INCREMENT, `DomainId` INT NOT NULL,` Source` varchar (100) NOT NULL, `Destinație` varchar (100) NU NUL, CHEIE PRIMARĂ (` AliasId`), CHEIE STRĂINĂ (DomainId) REFERINȚE Domenii_tbl (DomainId) PE ȘTERGERE CASCADĂ. ) MOTOR = InnoDB;
(Clic Merge în partea de jos pentru a continua cu crearea tabelului).
Până în acest moment, ar trebui să aveți următoarea structură a bazei de date:
Ceea ce înseamnă că sunteți gata să începeți să adăugați câteva înregistrări în secțiunea următoare.
14. Acum vom insera următoarele înregistrări în cele trei tabele. Parolele pentru [e-mail protejat] și [e-mail protejat] va fi criptat și INSERT INTO Users_tbl afirmație.
De asemenea, vă rugăm să rețineți că e-mailurile trimise către [e-mail protejat] va fi redirecționat către [e-mail protejat]:
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))), '[e-mail protejat]'); INSERT INTO Users_tbl (DomainId, password, Email) VALUES (1, ENCRYPT ('PasswordForSecondEmailAccount', CONCAT ('$ 6 $', SUBSTRING (SHA (RAND ()), -16))), '[e-mail protejat]'); INSERT INTO Alias_tbl (DomainId, Source, Destination) VALUE (1, '[e-mail protejat]',' nu[e-mail protejat]');
După ce am adăugat domeniul nostru, două conturi de utilizator și un alias de e-mail, suntem gata să continuăm să configurăm serverul nostru de e-mail în următorul articol din această serie, unde vom configura Porumbar și Postfix.
În acest articol am enumerat pachetele necesare pentru instalarea unui server de e-mail Postfix într-un CentOS 7 VPS și am explicat cum să gestionați baza de date subiacentă utilizând phpMyAdmin.
În următoarele două articole vom examina configurația celor două programe care se vor ocupa de distribuirea e-mailurilor pentru domeniul nostru (Partea 2) și vă arată cum să adăugați protecție împotriva spamului și a virușilor (Partea 3) pentru serverul dvs.
Până atunci, nu ezitați să ne contactați folosind formularul de mai jos dacă aveți întrebări sau comentarii.