Weboldal keresés

A Postfix levelezőkiszolgáló és a Dovecot biztonságos beállítása adatbázissal (MariaDB) – 1. rész


Ebben a 3 cikkből álló sorozatban megvitatjuk, hogyan állíthat be Postfix levelezőszervert vírus- és spamvédelemmel egy CentOS 7 dobozban. Kérjük, vegye figyelembe, hogy ezek az utasítások más disztribúciókon is működnek, mint például az RHEL/Fedora és a Debian/Ubuntu.

Tervünk abból áll, hogy az e-mail fiókokat és az álneveket egy MariaDB adatbázisban tároljuk, amely a kényelmünket szolgálja, a phpMyAdmin segítségével kezeljük.

Ha úgy dönt, hogy nem telepíti a phpMyAdmin programot, vagy csak CLI-kiszolgálóval foglalkozik, akkor az ezzel egyenértékű kódot is biztosítjuk a sorozatban használt adatbázistáblák létrehozásához.

Mivel a levelezőszerver üzemben tartása az egyik alapvető feladat, amelyet általában a rendszergazdákra és a mérnökökre bíznak, adunk néhány tippet is ennek a kritikus szolgáltatásnak az éles környezetben való hatékony futtatásához.

Hozzon létre A és MX rekordokat a DNS-tartományhoz

Mielőtt továbblépne, meg kell felelnie néhány előfeltételnek:

1. Egy domainregisztrátoron keresztül regisztrált érvényes domainre lesz szüksége. Ebben a sorozatban a www.linuxnewz.com címet fogjuk használni, amelyet a GoDaddy-n keresztül regisztráltunk.

2. Az ilyen domainnek a VPS vagy felhőtárhely-szolgáltató külső IP-címére kell mutatnia. Ha a levelezőszerverét saját maga tárolja, használhatja a FreeDNS szolgáltatását (regisztráció szükséges).

Mindenesetre be kell állítania az A és az MX rekordokat a domainjéhez is (az MX rekordokról többet tudhat meg a Google ezen GYIK-ben).

Miután hozzáadta őket, megkeresheti őket egy online eszköz, például az MxToolbox vagy a ViewDNS segítségével, hogy megbizonyosodjon arról, hogy megfelelően vannak beállítva.

Fontos: Kérjük, vegye figyelembe, hogy eltarthat egy ideig (1-2 nap), amíg a DNS-rekordok terjesztése megtörténik, és domainje elérhetővé válik. Addig is hozzáférhet a VPS-hez annak IP-címén keresztül az alább jelzett feladatok végrehajtásához.

3. Konfigurálja VPS-je FQDN-jét (Fullly Qualified Domain Name):

hostnamectl set-hostname yourhostname

a rendszer gazdagépnevének beállításához, majd szerkessze az /etc/hosts elemet az alábbiak szerint (cserélje ki az AAA.BBB.CCC.DDD, yourhostname és >saját domain szervere nyilvános IP-címével, gazdagépnevével és regisztrált domainjével):

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

ahol yourhostname a rendszer gazdagépneve, amelyet korábban a hostnameectl paranccsal állítottak be.

A szükséges szoftvercsomagok telepítése

4. A szükséges szoftvercsomagok (például Apache, Postfix, Dovecot, MariaDB, PhpMyAdmin, SpamAssassin, ClamAV stb.) telepítéséhez engedélyeznie kell az EPEL tárolót:

yum install epel-release

5. Miután követte a fenti lépéseket, telepítse a szükséges csomagokat:

CentOS alapú rendszerekben:

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

Debianban és származékaiban:

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. Indítsa el és engedélyezze a web- és adatbázisszervereket:

CentOS alapú rendszerekben:

systemctl enable httpd mariadb
systemctl start httpd mariadb

Debianban és származékaiban:

systemctl enable apache2 mariadb
systemctl start apache2 mariadb

Ha a telepítés befejeződött, és a fenti szolgáltatás engedélyezve van és fut, akkor kezdjük az adatbázis és a táblák beállításával a Postfix levelezési fiókokkal kapcsolatos információk tárolására.

Postfix levelezési fiókok adatbázisának létrehozása

Az egyszerűség kedvéért a phpMyAdmin eszközt fogjuk használni, amely a MySQL/MariaDB adatbázisok webes felületen keresztüli adminisztrálására szolgál, létrehozásához és kezeléséhez. az e-mail adatbázis.

Ahhoz azonban, hogy bejelentkezhessünk és használhassuk ezt az eszközt, az alábbi lépéseket kell követnünk:

7. Engedélyezze a MariaDB fiókot (ezt úgy teheti meg, hogy a parancssorból futtatja a mysql_secure_installation segédprogramot, hozzárendel egy jelszót a root felhasználóhoz, és az eszköz által javasolt alapértelmezett beállítások megadása, KIVÉVE „Letiltja a root bejelentkezést távolról?”:

vagy más módon hozzon létre egy új adatbázis-felhasználót:

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

Biztonságos Apache tanúsítvánnyal

8. Mivel webalkalmazást fogunk használni az e-mail szerver adatbázisának kezelésére, meg kell tennünk a szükséges óvintézkedéseket a szerverrel való kapcsolatok védelme érdekében. Ellenkező esetben a phpMyAdmin hitelesítési adataink sima szövegben továbbítják a vezetéket.

A Transport Layer Security (TLS) beállításához a szerveren kövesse az RHCE sorozat 8. részében leírt lépéseket: HTTPS megvalósítása TLS-en keresztül. használja az Apache számára készült Network Security Service (NSS) szolgáltatást, mielőtt továbblépne.

Megjegyzés: ha nem fér hozzá a szerver konzoljához, más módot kell találnia a szükséges entrópia létrehozására a kulcs létrehozása során. Ebben az esetben érdemes megfontolni az rng-tools telepítését és az rngd -r /dev/urandom futtatását.

A PhpMyAdmin konfigurálása és biztonságossá tétele

9. Itt: /etc/httpd/conf.d/phpMyAdmin.conf (CentOS) vagy /etc/phpmyadmin/apache. conf (Debian és származékai), keresse meg a következő sorok összes előfordulását, és győződjön meg arról, hogy azok a szerver nyilvános IP-címére mutatnak:

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

Ezenkívül tiltsa le az alapértelmezett álneveket, és hozzon létre egy újat a phpMyAdmin bejelentkezési oldalának eléréséhez. Ez segít megvédeni a webhelyet a www.yourdomain.com/phpmyadmin vagy a www.yourdomain.com/phpMyAdmin webhelyet megcélzó robotok és külső támadók ellen.

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

Ezenkívül adja hozzá a következő sort a -hoz:

Require all granted

Hozzon létre Apache VirtualHost tartományhoz

10. Győződjön meg arról, hogy domainjét hozzáadta az engedélyezett webhelyekhez. Hozzon létre /etc/httpd/sites-available/linuxnewz.com.conf (CentOS) vagy /etc/apache2/sites-available/linuxnewz.com (Debian) a következő tartalommal (győződjön meg arról, hogy a DocumentRoot, sites-available és sites-enabled > léteznek könyvtárak):

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

és a szimbolikus link:

CentOS-en:
ln -s /etc/httpd/sites-available/linuxnewz.com.conf /etc/httpd/sites-enabled/linuxnewz.com.conf
Debianon:
a2ensite linuxnewz.com

és kész.

Állítsa be a Postfix e-mail adatbázist

11. Most megnyithatja phpMyAdmin felületét a https://www.yourdomain.com/managedb címen (vegye figyelembe, hogy managedb< az az álnév, amelyet korábban beállítottunk a phpMyAdmin adatkönyvtárhoz).

Ha ez nem működik (amit a DNS-rekordok terjedésének késése vagy konfigurációjának hiánya okozhat), akkor megpróbálhatja a szerver nyilvános IP-címét használni a www.yourdomain.com helyett. >:

Mindenesetre, miután bejelentkezik a phpMyAdminba, a következő felületet fogja látni. Kattintson az Új lehetőségre a bal oldali részben:

Adja meg az adatbázis nevét (ebben az esetben EmailServer_db, nem kell leválogatást választani), majd kattintson a Létrehozás gombra:

12. A következő képernyőn válasszon egy nevet az első táblázathoz (ahol tároljuk a levelezőszerver által kezelt domaineket.

Felhívjuk figyelmét, hogy még akkor is, ha ebben a sorozatban csak egy domaint kezelünk, később továbbiakat is hozzáadhat) és a kívánt mezők számát, majd kattintson az Ugrás gombra. A rendszer kéri, hogy nevezze el és konfigurálja azt a két mezőt, ahol biztonságosan folytathatja az alábbi képeken látható módon:

Ha az Elsődleges lehetőséget választja az Index alatt a DomainId mezőben, fogadja el az alapértelmezett értékeket, és kattintson a Ugrás gombra:

Alternatív megoldásként kattintson az SQL előnézete lehetőségre a motorháztető alatti kód megtekintéséhez:

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

Ha készen áll, kattintson a Mentés gombra a módosítások megerősítéséhez. Ezután kattintson az Új elemre az EmailServer_db alatt a táblázatok létrehozásának folytatásához:

13. Most kövesse ezeket a lépéseket a többi táblázat létrehozásához. Kattintson az SQL fülre, és írja be a jelzett kódot minden adatbázis-objektumhoz.

Vegye figyelembe, hogy ebben az esetben a tábla létrehozását SQL lekérdezéssel választottuk a különböző táblák közötti kapcsolatok miatt:

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; 

Megerősítő üzenetet kell kapnia (ha nem, a phpMyAdmin szintaktikai hibákat fog kérni):

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;

(Kattintson a Ugrás gombra alul a táblázat létrehozásának folytatásához.)

Eddig a pontig a következő adatbázis-struktúrával kell rendelkeznie:

Ez azt jelenti, hogy készen áll néhány rekord hozzáadására a következő részben.

Postfix tartomány, felhasználók és álnevek létrehozása

14. Most a következő rekordokat illesztjük be a három táblázatba. Az [email  és [email  jelszavak titkosítva lesznek, és az INSERT INTO Users_tbl utasítás.

Kérjük, vegye figyelembe, hogy a(z) [email  címre küldött e-maileket a rendszer átirányítja a(z) [email  címre:

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

Miután hozzáadtuk a domaint, két felhasználói fiókot és egy e-mail aliast, készen állunk arra, hogy folytassuk e-mail szerverünk beállítását a sorozat következő cikkében, ahol konfiguráljuk a Dovecot és a Postfixt..

Összegzés

Ebben a cikkben felsoroltuk a Postfix e-mail-kiszolgáló CentOS 7 VPS-be történő telepítéséhez szükséges csomagokat, és elmagyaráztuk, hogyan kell kezelni az alapul szolgáló adatbázist a phpMyAdmin használatával.

A következő két cikkben áttekintjük annak a két programnak a konfigurációját, amelyek a domain e-mailek terjesztéséről gondoskodnak (2. rész), és megmutatjuk, hogyan adhatunk védelmet a spam és a vírusok ellen ( >3. rész) a szerveréhez.

Addig is, ha kérdése vagy észrevétele van, forduljon hozzánk bizalommal az alábbi űrlap segítségével.