Kuinka asentaa Postfix-postipalvelin ja Dovecot tietokannan (MariaDB) avulla turvallisesti - Osa 1


Tässä kolmen artikkelin sarjassa keskustelemme Postfix -postipalvelimen määrittämisestä, jossa on virustorjunta- ja roskapostisuojaus CentOS 7 -laatikossa. Huomaa, että nämä ohjeet toimivat myös muissa jakeluissa, kuten RHEL/Fedora ja Debian/Ubuntu.

Suunnitelmamme koostuu sähköpostitilien ja aliasten tallentamisesta MariaDB-tietokantaan, jota hallitaan phpMyAdminin kautta.

Jos päätät olla asentamatta phpMyAdminia tai olet tekemisissä vain CLI-palvelimen kanssa, toimitamme myös vastaavan koodin tietokantataulukoiden luomiseksi, joita käytetään tässä sarjassa.

Koska sähköpostipalvelimen pitäminen käynnissä on yksi tärkeimmistä tehtävistä, jotka yleensä annetaan järjestelmänvalvojille ja insinööreille, annamme myös muutamia vinkkejä tämän tärkeän palvelun tehokkaaseen suorittamiseen tuotantoympäristössä.

Luo A- ja MX-tietueet DNS-verkkotunnukselle

Ennen kuin jatkat eteenpäin, on muutama ehto, jotka on täytettävä:

1. Tarvitset kelvollisen verkkotunnuksen, joka on rekisteröity verkkotunnuksen rekisteröijän kautta. Tässä sarjassa käytämme www.linuxnewz.com-osoitetta, joka on rekisteröity GoDaddyn kautta.

2. Tällainen verkkotunnus on osoitettava VPS- tai pilvipalveluntarjoajasi ulkoiseen IP-osoitteeseen. Jos isännöit itse sähköpostipalvelintasi, voit käyttää FreeDNS:n tarjoamaa palvelua (vaatii rekisteröitymisen).

Joka tapauksessa sinun on määritettävä myös verkkotunnuksellesi A- ja MX-tietueet (lisätietoja MX-tietueista on tästä Googlen usein kysytyistä kysymyksistä).

Kun ne on lisätty, voit etsiä ne verkkotyökalulla, kuten MxToolbox tai ViewDNS varmistaaksesi, että ne on määritetty oikein.

Tärkeää: Huomaa, että saattaa kestää hetken (1–2 päivää), ennen kuin DNS-tietueet levitetään ja verkkotunnuksesi on käytettävissä. Sillä välin voit käyttää VPS:ääsi sen IP-osoitteen kautta suorittaaksesi alla mainitut tehtävät.

3. Määritä VPS:si FQDN (Fullly Qualified Domain Name):

hostnamectl set-hostname yourhostname

Aseta järjestelmän isäntänimi ja muokkaa sitten /etc/hosts seuraavasti (korvaa AAA.BBB.CCC.DDD, your hostname ja >verkkotunnuksesi palvelimesi julkisella IP-osoitteella, isäntänimelläsi ja rekisteröidyllä verkkotunnuksellasi):

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

jossa yourhostname on järjestelmän isäntänimi, joka määritettiin aiemmin hostnamectl-komennolla.

Vaadittujen ohjelmistopakettien asentaminen

4. Jotta voit asentaa tarvittavat ohjelmistopaketit, kuten Apache, Postfix, Dovecot, MariaDB, PhpMyAdmin, SpamAssassin, ClamAV jne., sinun on otettava käyttöön EPEL-tietovarasto:

yum install epel-release

5. Kun olet suorittanut yllä olevat vaiheet, asenna tarvittavat paketit:

CentOS-pohjaisissa järjestelmissä:

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

Debianissa ja johdannaisissa:

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äynnistä ja ota verkko- ja tietokantapalvelimet käyttöön:

CentOS-pohjaisissa järjestelmissä:

systemctl enable httpd mariadb
systemctl start httpd mariadb

Debianissa ja johdannaisissa:

systemctl enable apache2 mariadb
systemctl start apache2 mariadb

Kun asennus on valmis ja yllä oleva palvelu on otettu käyttöön ja käynnissä, aloitamme asettamalla tietokannan ja taulukot tallentamaan tietoja Postfix-sähköpostitileistä.

Postfix-postitilitietokannan luominen

Yksinkertaisuuden vuoksi käytämme luomiseen ja hallintaan phpMyAdmin -työkalua, joka on tarkoitettu hallitsemaan MySQL/MariaDB-tietokantoja verkkokäyttöliittymän kautta. sähköpostitietokanta.

Kuitenkin, jotta voimme kirjautua sisään ja käyttää tätä työkalua, meidän on noudatettava näitä vaiheita:

7. Ota MariaDB-tili käyttöön (voit tehdä tämän suorittamalla mysql_secure_installation-apuohjelman komentoriviltä, määrittämällä salasanan root-käyttäjälle ja työkalun ehdottamien oletusasetusten määrittäminen PAITSI "Etäpääkäyttäjän etäkirjautuminen?":

tai muuten luo uusi tietokannan käyttäjä:

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

Suojaa Apache sertifikaatilla

8. Koska käytämme verkkosovellusta sähköpostipalvelimen tietokannan hallintaan, meidän on ryhdyttävä tarvittaviin varotoimiin palvelinyhteyksien suojaamiseksi. Muussa tapauksessa phpMyAdmin-kirjautumistietomme kulkevat pelkkänä tekstinä langan yli.

Voit määrittää Transport Layer Securityn (TLS) palvelimellesi noudattamalla RHCE-sarjan osassa 8: HTTPS:n käyttöönotto TLS:n kautta. käyttämällä Apachen verkkoturvapalvelua (NSS), ennen kuin jatkat.

Huomaa: jos sinulla ei ole pääsyä palvelimen konsoliin, sinun on löydettävä toinen tapa luoda tarvittava entropia avaimen luomisen aikana. Siinä tapauksessa sinun kannattaa harkita rng-toolsin asentamista ja rngd -r /dev/urandom-komentoa.

Määritä ja suojaa PhpMyAdmin

9. Kohdassa /etc/httpd/conf.d/phpMyAdmin.conf (CentOS) tai /etc/phpmyadmin/apache. conf (Debian ja johdannaiset), etsi kaikki seuraavien rivien esiintymät ja varmista, että ne osoittavat palvelimesi julkiseen IP-osoitteeseen:

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

Lisäksi poista oletusaliakset käytöstä ja luo uusi päästäksesi phpMyAdmin-kirjautumissivullesi. Tämä auttaa suojaamaan sivustoa botteja ja ulkoisia hyökkääjiä vastaan, jotka kohdistavat kohteen www.yourdomain.com/phpmyadmin tai www.yourdomain.com/phpMyAdmin.

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

Lisää myös seuraava rivi kohtaan :

Require all granted

Luo Apache VirtualHost verkkotunnukselle

10. Varmista, että verkkotunnuksesi on lisätty käytössä oleviin sivustoihin. Luo /etc/httpd/sites-available/linuxnewz.com.conf (CentOS) tai /etc/apache2/sites-available/linuxnewz.com (Debian) seuraavalla sisällöllä (varmista, että DocumentRoot, sites-available ja sites-enabled > hakemistoja on olemassa):

<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 symbolinen linkki:

CentOS:ssä:
ln -s /etc/httpd/sites-available/linuxnewz.com.conf /etc/httpd/sites-enabled/linuxnewz.com.conf
Debianissa:
a2ensite linuxnewz.com

ja olet valmis.

Asenna Postfix-sähköpostitietokanta

11. Nyt voit avata phpMyAdmin-käyttöliittymän osoitteessa https://www.yourdomain.com/managedb (huomaa, että managedb< on alias, jonka määritimme aiemmin phpMyAdmin-tietohakemistolle).

Jos tämä ei auta (joka voi johtua DNS-tietueiden leviämisen viivästyksestä tai konfiguroinnin puutteesta), voit yrittää käyttää palvelimesi julkista IP-osoitetta www.omaverkkotunnus.com sijaan. >:

Joka tapauksessa, kun kirjaudut sisään phpMyAdminiin, näet seuraavan käyttöliittymän. Napsauta vasemmassa osiossa Uusi:

Anna tietokannan nimi (tässä tapauksessa EmailServer_db, lajittelua ei tarvitse valita) ja napsauta Luo:

12. Valitse seuraavassa näytössä nimi ensimmäiselle taulukolle (johon tallennamme tämän sähköpostipalvelimen hallitsemat verkkotunnukset.

Huomaa, että vaikka tässä sarjassa hallinnoimme vain yhtä verkkotunnusta, voit lisätä lisää myöhemmin) ja siihen haluamasi kenttien lukumäärän ja napsauta sitten Siirry. Sinua pyydetään nimeämään ja määrittämään nämä kaksi kenttää, joissa voit turvallisesti jatkaa seuraavien kuvien osoittamalla tavalla:

Kun valitset ENSISIJAINEN kohdassa Hakemisto kohdassa DomainId, hyväksy oletusarvot ja napsauta Siirry:

Vaihtoehtoisesti voit napsauttaa Esikatsele SQL:ää nähdäksesi koodin konepellin alla:

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

Kun olet valmis, vahvista muutokset napsauttamalla Tallenna. Tämän jälkeen voit jatkaa taulukoiden luomista napsauttamalla Uusi kohdassa EmailServer_db:

13. Luo loput taulukot noudattamalla näitä ohjeita. Napsauta SQL-välilehteä ja anna kullekin tietokantaobjektille ilmoitettu koodi.

Huomaa, että tässä tapauksessa päätimme luoda taulukon SQL-kyselyllä, koska eri taulukoiden välille on luotava suhteita:

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; 

Sinun pitäisi saada vahvistusviesti (jos ei, phpMyAdmin pyytää syntaksivirheitä):

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;

(Jatka taulukon luomista napsauttamalla alareunassa Siirry).

Tähän asti sinulla pitäisi olla seuraava tietokantarakenne:

Tämä tarkoittaa, että olet valmis aloittamaan joidenkin tietueiden lisäämisen seuraavassa osiossa.

Postfix-verkkotunnuksen, käyttäjien ja aliasten luominen

14. Lisäämme nyt seuraavat tietueet kolmeen taulukkoon. Salasanat [sähköposti suojattu] ja [sähköposti suojattu] salataan ja INSERT INTO Users_tbl -lauseke.

Huomaa myös, että osoitteeseen [sähköpostisuojattu] lähetetyt sähköpostit ohjataan osoitteeseen [sähköpostisuojattu]:

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

Kun olemme lisänneet verkkotunnuksemme, kaksi käyttäjätiliä ja sähköpostialiaksen, olemme valmiita jatkamaan sähköpostipalvelimemme määrittämistä tämän sarjan seuraavassa artikkelissa, jossa määritämme Dovecot ja Postfix. vahva>.

Yhteenveto

Tässä artikkelissa olemme luetelleet paketit, joita tarvitaan Postfix-sähköpostipalvelimen asentamiseen CentOS 7 VPS:ään, ja selitetty, kuinka hallita taustalla olevaa tietokantaa phpMyAdminin avulla.

Kahdessa seuraavassa artikkelissa käymme läpi verkkotunnuksemme sähköpostin jakelusta huolehtivien kahden ohjelman määritykset (Osa 2) ja näytämme, kuinka voit lisätä suojausta roskapostia ja viruksia vastaan ( >Osa 3) palvelimellesi.

Siihen asti voit ottaa meihin yhteyttä alla olevalla lomakkeella, jos sinulla on kysyttävää tai kommentteja.