Otu esi edobe ihe nkesa ozi Postfix na Dovecot na nchekwa data (MariaDB) na nzuzo - Akụkụ 1


N'ime usoro isiokwu atọ a, anyị ga-atụle otu esi edobe ihe nkesa ozi Postfix nwere antivirus na nchedo spam na igbe CentOS 7. Biko mara na ntuziaka ndị a na-arụkwa ọrụ na nkesa ndị ọzọ dị ka RHEL/Fedora na Debian/Ubuntu.

Atụmatụ anyị gụnyere ịchekwa akaụntụ email na utu aha na nchekwa data MariaDB nke bụ maka ịdị mma anyị, a ga-ejikwa phpMyAdmin.

Ọ bụrụ n’ịhọrọ ịwụnye phpMyAdmin, ma ọ bụ na-emeso ihe nkesa naanị CLI, anyị ga-enyekwa otu koodu iji mepụta tebụl nchekwa data nke a ga-eji n’ime usoro isiokwu a.

Ebe ọ bụ na idobe ihe nkesa ozi na-arụ ọrụ bụ otu n'ime ọrụ ndị dị mkpa a na-ekenyekarị ndị na-ahụ maka sistemụ na ndị injinia, anyị ga-enyekwa ndụmọdụ ole na ole iji rụọ ọrụ nke ọma na ọrụ a dị oke mkpa na gburugburu mmepụta.

Mepụta ndekọ A na MX maka ngalaba na DNS

Tupu ịga n'ihu, enwere ihe ole na ole achọrọ nke a ga-emerịrị:

1. Ị ga-achọ ezigbo ngalaba aha site na ngalaba na-edeba aha. N'usoro isiokwu a, anyị ga-eji www.linuxnewz.com, nke edebara aha site na GoDaddy.

2. A ghaghị igosi ngalaba dị otú ahụ na IP mpụga nke VPS gị ma ọ bụ onye na-eweta igwe ojii. Ọ bụrụ na ị na-akwado nkesa ozi gị, ịnwere ike iji ọrụ FreeDNS na-enye (chọrọ ndebanye aha).

N'ọnọdụ ọ bụla, ị ga-edozi A na MX ndekọ maka ngalaba gị (ị nwere ike mụtakwuo maka ndekọ MX na FAQ a sitere na Google).

Ozugbo agbakwunyere, ị nwere ike lelee ha site na iji ngwa ịntanetị dị ka MxToolbox ma ọ bụ ViewDNS iji hụ na edobere ha nke ọma.

Ihe dị mkpa: Biko mara na ọ nwere ike iwe obere oge (1-2 ụbọchị) ruo mgbe agbasasịrị ndekọ ndekọ DNS yana ngalaba gị dị. Ka ọ dị ugbu a, ịnwere ike ịnweta VPS gị site na adreesị IP ya iji rụọ ọrụ ndị akọwapụtara n'okpuru.

3. Hazie FQDN (Aha ngalaba ruru eru zuru oke) nke VPS gị:

# hostnamectl set-hostname yourhostname

ka ịtọọ aha nnabata sistemụ, wee dezie /etc/hosts dị ka ndị a (dochie AAA.BBB.CCC.DDD, aha nnabata gị na ngalaba gị na IP ọha nke sava gị, aha nnabata gị na ngalaba aha gị):

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

ebe aha nnabata gị bụ aha nnabata sistemụ nke edobere na mbụ site na iji iwu hostnamectl.

Ịwụnye ngwugwu ngwanrọ achọrọ

4. Iji wụnye ngwugwu ngwanrọ achọrọ dị ka Apache, Postfix, Dovecot, MariaDB, PhpMyAdmin, SpamAssassin, ClamAV, wdg, ịkwesịrị ịme ka ebe nchekwa EPEL dị:

# yum install epel-release

5. Ozugbo ị gbasoro usoro ndị a dị n'elu, wụnye ngwugwu ndị dị mkpa:

# 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. Malite ma mee ka sava weebụ na nchekwa data nwee ike:

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

Mgbe echichi zuru ezu na ọrụ dị n'elu na-enyere aka ma na-agba ọsọ, anyị ga-amalite site na ịtọ ntọala nchekwa data na tebụl iji chekwaa ozi gbasara akaụntụ mail Postfix.

Ịmepụta nchekwa data Akaụntụ Mail Postfix

Maka mfe, anyị ga-eji phpMyAdmin, ngwá ọrụ ezubere iji jikwaa nchịkwa MySQL/MariaDB ọdụ data site na ntanetị weebụ, iji mepụta na jikwaa nchekwa data email.

Agbanyeghị, ka ịbanye na iji ngwa a, anyị kwesịrị ịgbaso usoro ndị a:

7. Kwado akaụntụ MariaDB (ị nwere ike ime nke a site n'ịgba ọsọ mysql_secure_installation ike sitere na ahịrị iwu, na-ekenye paswọọdụ maka mgbọrọgwụ onye ọrụ, na ịtọ ntọala ndabara nke ngwá ọrụ ahụ tụrụ aro EXCEPT Kwụsị mgbọrọgwụ nbanye remotely ? :

ma ọ bụ mepụta onye ọrụ nchekwa data ọhụrụ:

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

Chekwaa Apache na Asambodo

8. Ebe ọ bụ na anyị ga-eji ngwa weebụ iji jikwaa nchekwa data nkesa email, anyị kwesịrị ịkpachara anya iji chebe njikọ na ihe nkesa ahụ. Ma ọ bụghị ya, nzere phpMyAdmin anyị ga-aga na ederede doro anya na waya.

Iji melite Transport Layer Security (TLS) na nkesa gị, soro usoro ndị akọwapụtara na Nkebi 8 nke usoro RHCE: Ime HTTPS site na TLS site na iji Network Security Service (NSS) maka Apache tupu ịga n'ihu.

Mara: ọ bụrụ na ịnweghị ohere ịnweta njikwa ihe nkesa, ị ga-achọ ụzọ ọzọ iji mepụta entropy dị mkpa n'oge imepụta igodo. N'okwu ahụ, ị nwere ike ịchọrọ ịwụnye rng-tools na ịgba ọsọ rngd -r /dev/urandom.

Hazie ma chekwaa PhpMyAdmin

9. Na /etc/httpd/conf.d/phpMyAdmin.conf (CentOS) ma ọ bụ /etc/phpmyadmin/apache.conf (Debian na usoro), chọta ihe niile na-eme nke ndị a ahịrị ma jide n'aka na ha na-arụtụ aka na ọha IP. nke sava gị:

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

Na mgbakwunye, gbanyụọ utu aha ndabara wee mepụta nke ọhụrụ iji nweta ibe nbanye phpMyAdmin gị. Nke a ga-enyere aka chekwaa saịtị ahụ megide bots na ndị na-awakpo mpụga na-eche www.yourdomain.com/phpmyadmin ma ọ bụ www.yourdomain.com/phpMyAdmin.

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

Ọzọkwa, tinye na-esonụ ahịrị n'ime :

Require all granted

Mepụta Apache VirtualHost maka ngalaba

10. Jide n'aka na agbakwunyere ngalaba gị na saịtị ndị enyere. Mepụta /etc/httpd/sites-available/linuxnewz.com.conf (CentOS) ma ọ bụ /etc/apache2/sites-available/linuxnewz.com (Debian) na ọdịnaya ndị a (jide n'aka na DocumentRoot, saịtị-dị, na saịtị. akwụkwọ ndekọ aha nwere ike dị):

<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 njikọ ihe atụ:

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

i mechaa.

Melite Ebe nchekwa data Email Postfix

11. Ugbu a, ị nwere ike imeghe gị phpMyAdmin interface na https://www.yourdomain.com/managedb (mara na managedb bụ utu aha na anyị melite na mbụ maka phpMyAdmin data ndekọ).

Ọ bụrụ na nke ahụ anaghị arụ ọrụ (nke nwere ike ịkpata igbu oge na mgbasa ma ọ bụ enweghị nhazi nke ndekọ DNS) maka oge ị nwere ike ịnwale iji adreesị IP ọha nke sava gị kama www.yourdomain.com:

N'ọnọdụ ọ bụla, mgbe ịbanye na phpMyAdmin, ị ga-ahụ interface na-esonụ. Pịa Ọhụrụ n'akụkụ aka ekpe:

Tinye aha maka nchekwa data (EmailServer_db na nke a, ọ dịghị mkpa ịhọrọ mkpokọta) wee pịa Mepụta:

12. Na ihuenyo ọzọ, họrọ aha maka tebụl mbụ (ebe anyị ga-echekwa ngalaba nke ihe nkesa ozi a ga-ejikwa.

Biko mara na ọbụlagodi na usoro a, anyị ga-ejikwa naanị otu ngalaba, ị nwere ike itinyekwu ma emechaa) yana ọnụọgụ mpaghara ịchọrọ na ya, wee pịa Go. A ga-akpali gị ịkpọ aha na hazie mpaghara abụọ ahụ, ebe ị nwere ike ịga n'ihu n'enweghị nsogbu dịka egosiri na foto ndị a:

Mgbe ịhọrọ PRIMARY n'okpuru Index maka DomainId, nabata ụkpụrụ ndabara wee pịa Gaa na:

N'aka nke ọzọ, ị nwere ike pịa Preview SQL ka ịhụ koodu n'okpuru mkpuchi:

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

Mgbe ị dị njikere, pịa Chekwa ka ị gosi mgbanwe. Ị ga-enwe ike pịa Ọhụrụ n'okpuru EmailServer_db ka ịga n'ihu na-emepụta tebụl:

13. Ugbu a soro usoro ndị a ka ịmepụta tebụl ndị ọzọ. Pịa na taabụ SQL wee tinye koodu egosiri maka ihe nchekwa data ọ bụla.

Rịba ama na na nke a, anyị họọrọ ịmepụta tebụl site na iji ajụjụ SQL n'ihi mmekọrịta ndị a ga-emerịrị n'etiti tebụl dị iche iche:

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; 

Ị ga-enweta ozi nkwenye (ọ bụrụ na ọ bụghị, phpMyAdmin ga-akpali maka njehie 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;

(pịa Gaa na ala ka ịga n'ihu na ịmepụta tebụl).

Ruo ugbu a, ị ga-enwe usoro nchekwa data ndị a:

Nke pụtara na ị dịla njikere ịmalite ịgbakwunye ụfọdụ ndekọ na ngalaba na-esote.

Ịmepụta ngalaba Postfix, ndị ọrụ na utu aha

14. Ugbu a, anyị ga-etinye ihe ndekọ ndị a na tebụl atọ. A ga-ezoro ezo okwuntughe okwuntughe maka [email chedoro] yana nkwupụta INSERT INTO Users_tbl.

Ọzọkwa, biko mara na ozi-e ezigara na [email chedoro]:

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

N'ịbụ onye gbakwunyere ngalaba anyị, akaụntụ onye ọrụ abụọ, yana email utu aha anyị dị njikere ịga n'ihu na-edozi ihe nkesa email anyị n'isiokwu na-esote nke usoro isiokwu a, ebe anyị ga-ahazi Dovecot na Postfix.

Nchịkọta

N'isiokwu a, anyị edepụtala ngwugwu achọrọ iji wụnye ihe nkesa email Postfix na CentOS 7 VPS, ma kọwaa otu esi ejikwa nchekwa data dị n'okpuru site na iji phpMyAdmin.

N'ime isiokwu abụọ na-esote, anyị ga-enyocha nhazi nke mmemme abụọ ahụ nke ga-elekọta nkesa email maka ngalaba anyị (Nkebi nke 2) ma gosi gị otu esi etinye nchebe megide spam na nje (Nkebi nke 3) maka ihe nkesa gị.

Ruo mgbe ahụ, nweere onwe gị ịkpọtụrụ anyị site na iji ụdị dị n'okpuru ma ọ bụrụ na ị nwere ajụjụ ọ bụla ma ọ bụ kwuo.