Jinsi ya Kusanidi Seva ya Barua ya Postfix na Dovecot na Hifadhidata (MariaDB) kwa Usalama - Sehemu ya 1


Katika mfululizo huu wa makala 3 tutajadili jinsi ya kusanidi seva ya posta ya Postfix yenye kingavirusi na ulinzi wa barua taka kwenye kisanduku cha CentOS 7. Tafadhali kumbuka maagizo haya pia hufanya kazi kwenye usambazaji mwingine kama vile RHEL/Fedora na Debian/Ubuntu.

Mpango wetu unajumuisha kuhifadhi akaunti za barua pepe na lakabu katika hifadhidata ya MariaDB ambayo ni kwa ajili ya kutufaa, itadhibitiwa kupitia phpMyAdmin.

Ukichagua kutosakinisha phpMyAdmin, au unashughulika na seva ya CLI pekee, pia tutatoa msimbo sawa ili kuunda jedwali la hifadhidata ambazo zitatumika katika mfululizo huu wote.

Kwa kuwa kuweka seva ya barua pepe na kufanya kazi ni mojawapo ya kazi muhimu ambazo kwa kawaida hupewa wasimamizi na wahandisi wa mfumo, pia tutatoa vidokezo vichache ili kuendesha huduma hii muhimu kwa ufanisi katika mazingira ya uzalishaji.

Unda Rekodi za A na MX za Kikoa katika DNS

Kabla ya kuendelea zaidi, kuna masharti machache ambayo lazima yatimizwe:

1. Utahitaji kikoa halali kilichosajiliwa kupitia msajili wa kikoa. Katika mfululizo huu tutatumia www.linuxnewz.com, ambayo ilisajiliwa kupitia GoDaddy.

2. Kikoa kama hicho lazima kielekezwe kwa IP ya nje ya VPS yako au mtoaji mwenyeji wa wingu. Ikiwa unajipangisha mwenyewe seva yako ya barua, unaweza kutumia huduma inayotolewa na FreeDNS (inahitaji usajili).

Kwa vyovyote vile, unapaswa kusanidi A na MX rekodi za kikoa chako pia (unaweza kupata maelezo zaidi kuhusu rekodi za MX katika Maswali Yanayoulizwa Mara kwa Mara kutoka Google).

Baada ya kuongezwa, unaweza kuzitafuta kwa kutumia zana ya mtandaoni kama vile MxToolbox au ViewDNS ili kuhakikisha kuwa zimesanidiwa ipasavyo.

Muhimu: Tafadhali kumbuka kuwa inaweza kuchukua muda (siku 1-2) hadi rekodi za DNS zienezwe na kikoa chako kipatikane. Wakati huo huo, unaweza kufikia VPS yako kupitia anwani yake ya IP ili kutekeleza kazi zilizoonyeshwa hapa chini.

3. Sanidi FQDN (Jina la Kikoa Lililohitimu Kamili) la VPS yako:

# hostnamectl set-hostname yourhostname

ili kuweka jina la mpangishi wa mfumo, kisha uhariri /etc/hosts kama ifuatavyo (badilisha AAA.BBB.CCC.DDD, jina la mwenyeji wako, na kikoa chako na IP ya umma ya seva yako, jina la mwenyeji wako, na kikoa chako kilichosajiliwa):

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

ambapo jina la mwenyeji ni jina la mwenyeji wa mfumo ambalo liliwekwa hapo awali kwa kutumia amri ya hostnamectl.

Inasakinisha Vifurushi vya Programu Zinazohitajika

4. Ili kusakinisha vifurushi vya programu vinavyohitajika kama vile Apache, Postfix, Dovecot, MariaDB, PhpMyAdmin, SpamAssassin, ClamAV, n.k, unahitaji kuwezesha hazina ya EPEL:

# yum install epel-release

5. Baada ya kufuata hatua zilizo hapo juu, sakinisha vifurushi vinavyohitajika:

# 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. Anzisha na uwashe seva za wavuti na hifadhidata:

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

Usakinishaji utakapokamilika na huduma iliyo hapo juu imewezeshwa na kufanya kazi, tutaanza kwa kusanidi hifadhidata na majedwali ili kuhifadhi taarifa kuhusu akaunti za barua za Postfix.

Kuunda Hifadhidata ya Akaunti za Barua za Postfix

Kwa urahisi, tutatumia phpMyAdmin, chombo kinachokusudiwa kushughulikia usimamizi wa hifadhidata za MySQL/MariaDB kupitia kiolesura cha wavuti, kuunda na kudhibiti hifadhidata ya barua pepe.

Walakini, ili kuingia na kutumia zana hii, tunahitaji kufuata hatua hizi:

7. Washa akaunti ya MariaDB (unaweza kufanya hivyo kwa kutumia mysql_secure_installation shirika kutoka kwa mstari wa amri, kugawa nenosiri kwa mizizi ya mtumiaji, na kuweka mipangilio ya chaguo-msingi iliyopendekezwa na zana ISIPOKUWA Ondoa kuingia kwa mizizi kwa mbali. ?“:

au vinginevyo unda mtumiaji mpya wa hifadhidata:

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

Salama Apache na Cheti

8. Kwa kuwa tutakuwa tukitumia programu ya wavuti kudhibiti hifadhidata ya seva ya barua pepe, tunahitaji kuchukua tahadhari zinazohitajika ili kulinda miunganisho kwenye seva. Vinginevyo, vitambulisho vyetu vya phpMyAdmin vitasafiri kwa maandishi wazi juu ya waya.

Ili kusanidi Usalama wa Tabaka la Usafiri (TLS) kwenye seva yako, fuata hatua zilizoainishwa katika Sehemu ya 8 ya mfululizo wa RHCE: Utekelezaji wa HTTPS kupitia TLS kwa kutumia Huduma ya Usalama ya Mtandao (NSS) kwa Apache kabla ya kuendelea zaidi.

Kumbuka: ikiwa huna upatikanaji wa console ya seva utahitaji kutafuta njia nyingine ya kuzalisha entropy muhimu wakati wa uundaji wa ufunguo. Katika hali hiyo, unaweza kutaka kuzingatia kusakinisha rng-tools na kukimbia rngd -r /dev/urandom.

Sanidi na Ulinde PhpMyAdmin

9. Katika /etc/httpd/conf.d/phpMyAdmin.conf (CentOS) au /etc/phpmyadmin/apache.conf (Debian na derivatives), tafuta matukio yote ya mistari ifuatayo na uhakikishe yanaelekeza kwa IP ya umma. ya seva yako:

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

Zaidi ya hayo, zima lakabu chaguo-msingi na uunde mpya ili kufikia ukurasa wako wa kuingia wa phpMyAdmin. Hii itasaidia kulinda tovuti dhidi ya roboti na washambuliaji wa nje wanaolenga www.yourdomain.com/phpmyadmin au www.yourdomain.com/phpMyAdmin.

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

Pia, ongeza laini ifuatayo ndani ya :

Require all granted

Unda Apache VirtualHost kwa Kikoa

10. Hakikisha kikoa chako kimeongezwa kwenye tovuti zilizowezeshwa. Unda /etc/httpd/sites-available/linuxnewz.com.conf (CentOS) au /etc/apache2/sites-available/linuxnewz.com (Debian) na maudhui yafuatayo (hakikisha DocumentRoot, tovuti-zinapatikana, na tovuti - saraka zilizowezeshwa zipo):

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

na kiungo cha mfano:

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

na umemaliza.

Sanidi Hifadhidata ya Barua pepe ya Postfix

11. Sasa unaweza kufungua kiolesura chako cha phpMyAdmin kwenye https://www.yourdomain.com/managedb (kumbuka kuwa manageb ni lakabu ambayo tuliweka awali kwa saraka ya data ya phpMyAdmin).

Ikiwa hiyo haitafanya kazi (ambayo inaweza kusababishwa na kuchelewa kwa uenezi au ukosefu wa usanidi wa rekodi za DNS) kwa sasa unaweza kujaribu kutumia anwani ya IP ya seva yako badala ya www.yourdomain.com:

Kwa hali yoyote, baada ya kuingia kwenye phpMyAdmin utaona kiolesura kifuatacho. Bonyeza Mpya katika sehemu ya kushoto:

Ingiza jina la hifadhidata (EmailServer_db katika kesi hii, hakuna haja ya kuchagua Mkusanyiko) na ubofye Unda:

12. Kwenye skrini inayofuata, chagua jina la jedwali la kwanza (ambapo tutahifadhi vikoa ambavyo seva hii ya barua itasimamia.

Tafadhali kumbuka kuwa hata wakati katika mfululizo huu tutasimamia kikoa kimoja pekee, unaweza kuongeza zaidi baadaye) na idadi ya sehemu unazotaka ndani yake, kisha ubofye Nenda. Utaulizwa kutaja na kusanidi sehemu hizo mbili, ambapo unaweza kuendelea kwa usalama kama ilivyoonyeshwa kwenye picha zifuatazo:

Unapochagua PRIMARY chini ya Index for DomainId, kubali maadili chaguo-msingi na ubofye Nenda:

Vinginevyo, unaweza kubofya Hakiki SQL ili kuona msimbo chini ya kofia:

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

Ukiwa tayari, bofya Hifadhi ili kuthibitisha mabadiliko. Kisha utaweza kubofya Mpya chini ya EmailServer_db ili kuendelea kuunda majedwali:

13. Sasa fuata hatua hizi ili kuunda majedwali mengine. Bofya kwenye kichupo cha SQL na uweke msimbo ulioonyeshwa kwa kila kitu cha hifadhidata.

Kumbuka kuwa katika kesi hii tulichagua kuunda jedwali kwa kutumia swala la SQL kwa sababu ya uhusiano ambao lazima uanzishwe kati ya jedwali tofauti:

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; 

Unapaswa kupata ujumbe wa uthibitisho (ikiwa sivyo, phpMyAdmin itasababisha makosa ya syntax):

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;

(Bofya Nenda chini ili kuendelea na uundaji wa jedwali).

Kufikia hatua hii, unapaswa kuwa na muundo wa hifadhidata ufuatao:

Inayomaanisha kuwa uko tayari kuanza kuongeza rekodi katika sehemu inayofuata.

Kuunda Kikoa cha Postfix, Watumiaji na Lakabu

14. Sasa tutaingiza rekodi zifuatazo kwenye majedwali matatu. Manenosiri ya [barua pepe iliyolindwa] yatasimbwa kwa njia fiche na taarifa ya INSERT INTO Users_tbl.

Pia, tafadhali kumbuka kuwa barua pepe zinazotumwa kwa [barua pepe zimelindwa]:

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

Baada ya kuongeza kikoa chetu, akaunti mbili za watumiaji, na lakabu ya barua pepe tuko tayari kuendelea kusanidi seva yetu ya barua pepe katika nakala inayofuata ya safu hii, ambapo tutasanidi Dovecot na Postfix.

Muhtasari

Katika makala hii tumeorodhesha vifurushi vinavyohitajika ili kusakinisha seva ya barua pepe ya Postfix katika CentOS 7 VPS, na tukaeleza jinsi ya kusimamia hifadhidata ya msingi kwa kutumia phpMyAdmin.

Katika makala mbili zinazofuata tutapitia usanidi wa programu mbili ambazo zitashughulikia usambazaji wa barua pepe kwa kikoa chetu (Sehemu ya 2) na kukuonyesha jinsi ya kuongeza ulinzi dhidi ya barua taka na virusi (Sehemu ya 3) kwa seva yako.

Hadi wakati huo, jisikie huru kuwasiliana nasi kwa kutumia fomu iliyo hapa chini ikiwa una maswali au maoni.