В това 3-статия серия ще обсъдим как да настроите a Postfix пощенски сървър с антивирусна и спам защита в a CentOS 7 кутия. Моля, обърнете внимание, че тези инструкции работят и за други дистрибуции, като например RHEL/Fedora и Debian/Ubuntu.
Част 1: Как да създадете и настроите сигурно база данни на Postfix Mail Server (MariaDB)
Нашият план се състои в съхраняване на имейл акаунти и псевдоними в a MariaDB базата данни, която е за наше удобство, ще се управлява чрез phpMyAdmin.
Ако решите да не инсталирате phpMyAdmin, или имате работа само със CLI сървър, ние също ще предоставим еквивалентен код за създаване на таблици на базата данни, които ще се използват през цялата тази поредица.
Тъй като поддържането и работата на пощенския сървър е една от основните задачи, които обикновено се възлагат на системата администратори и инженери, ние също ще предоставим няколко съвета за ефективно изпълнение на тази критична услуга в производството околен свят.
Преди да продължите, има няколко предпоставки, които трябва да бъдат изпълнени:
1. Ще ви е необходим валиден домейн, регистриран чрез регистратор на домейни. В тази серия ще използваме www.linuxnewz.com
, която е регистрирана чрез GoDaddy.
2. Такъв домейн трябва да бъде насочен към външния IP на вашия VPS или облачен хостинг доставчик. Ако самостоятелно хоствате своя пощенски сървър, можете да използвате услугата, предлагана от FreeDNS (изисква регистрация).
Във всеки случай трябва да настроите А
и MX
записи и за вашия домейн (можете да научите повече за MX записите в този FAQ от Google).
След като бъдат добавени, можете да ги потърсите с помощта на онлайн инструмент, като например MxToolbox или ViewDNS за да се гарантира, че са правилно настроени.
Важно: Моля, имайте предвид, че може да отнеме известно време (1-2 дни), докато DNS записите се разпространят и вашият домейн е наличен. Междувременно можете да получите достъп до вашия VPS чрез неговия IP адрес, за да изпълнявате посочените по -долу задачи.
3. Конфигурирайте FQDN (Напълно квалифицирано име на домейн) на вашия VPS:
# hostnamectl set-hostname вашето име на хост.
, за да зададете системното име на хост, след това редактирайте /etc/hosts както следва (заменете AAA.BBB.CCC.DDD, вашето име на хост, и вашиядомен с публичния IP на вашия сървър, вашето име на хост и регистрирания ви домейн):
AAA.BBB.CCC.DDD yourhostname.yourdomain.com yourhostname.
където вашето име на хост е системното име на хост, което е било зададено преди това hostnamectl команда.
4. За да инсталирате необходимите софтуерни пакети като Apache, Postfix, Dovecot, MariaDB, PhpMyAdmin, SpamAssassin, ClamAV и др., Трябва да активирате EPEL хранилище:
# yum инсталирайте epel-release.
5. След като изпълните горните стъпки, инсталирайте необходимите пакети:
# 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-клиент mariadb-сървър php5 phpMyAdmin.
6. Стартирайте и активирайте уеб и сървъри на бази данни:
# systemctl активирайте httpd mariadb. # systemctl стартирайте httpd mariadb.
# systemctl активира apache2 mariadb. # systemctl стартирайте apache2 mariadb.
Когато инсталацията приключи и горната услуга е активирана и стартирана, ще започнем с настройването на базата данни и таблици за съхраняване на информация за пощенските акаунти в Postfix.
За простота ще използваме phpMyAdmin, инструмент, предназначен да се справи с администрирането на MySQL / MariaDB бази данни чрез уеб интерфейс, за създаване и управление на имейл базата данни.
Въпреки това, за да влезете и да използвате този инструмент, трябва да изпълним следните стъпки:
7. Активирайте MariaDB акаунт (можете да направите това, като стартирате mysql_secure_installation
помощна програма от командния ред, задаване на парола за root на потребителя и задаване на настройките по подразбиране, предложени от инструмента, ОСВЕН „Да се забрани отдалечено влизане в root?“:
или по друг начин създайте нов потребител на база данни:
MariaDB [(няма)]> СЪЗДАВАНЕ НА ПОТРЕБИТЕЛЯ 'dba'@'' localhost 'ИДЕНТИФИЦИРАНО ОТ' YourPasswordHere '; MariaDB [(няма)]> ПРЕДОСТАВЕТЕ ВСИЧКИ ПРИВИЛЕГИИ НА *. * TO 'dba'@'localhost'; MariaDB [(няма)]> FLUSH PRIVILEGES;
8. Тъй като ще използваме уеб приложение за управление на базата данни на имейл сървъра, трябва да вземем необходимите предпазни мерки, за да защитим връзките със сървъра. Иначе нашият phpMyAdmin идентификационните данни ще пътуват в чист текст по кабела.
Нагласям Защита на транспортния слой (TLS) във вашия сървър, следвайте стъпките, описани в Част 8 от поредицата RHCE: Внедряване на HTTPS чрез TLS чрез услуга за мрежова сигурност (NSS) за Apache, преди да продължите по -нататък.
Забележка: ако нямате достъп до конзолата на сървъра, ще трябва да намерите друг начин за генериране на необходимата ентропия по време на създаването на ключа. В този случай може да помислите за инсталиране rng-инструменти и бягане rngd -r /dev /urandom.
9. В /etc/httpd/conf.d/phpMyAdmin.conf (CentOS) или /etc/phpmyadmin/apache.conf (Debian и производни), намерете всички събития на следните редове и се уверете, че сочат към публичния IP на вашия сървър:
Изисква ip AAA.BBB.CCC.DDD. Разрешаване от AAA.BBB.CCC.DDD.
Освен това деактивирайте псевдонима по подразбиране и създайте нов, за да получите достъп до страницата си за вход в phpMyAdmin. Това ще помогне за защитата на сайта срещу ботове и външни нападатели, които се насочват www.yourdomain.com/phpmyadmin или www.yourdomain.com/phpMyAdmin.
#Alias /phpMyAdmin /usr /share /phpMyAdmin. #Alias /phpmyadmin /usr /share /phpMyAdmin. Псевдоним /managedb /usr /share /phpMyAdmin.
Също така добавете следния ред вътре :
Изисква всички предоставени.
10. Уверете се, че вашият домейн е добавен към разрешените сайтове. Създайте /etc/httpd/sites-available/linuxnewz.com.conf (CentOS) или /etc/apache2/sites-available/linuxnewz.com (Debian) със следното съдържание (уверете се, че DocumentRoot, налични сайтове, и активирани сайтове съществуват директории):
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 комбинирани индекси на опции FollowSymLinks.
и символичната връзка:
# ln -s /etc/httpd/sites-available/linuxnewz.com.conf /etc/httpd/sites-enabled/linuxnewz.com.conf.
# a2ensite linuxnewz.com.
и сте готови.
11. Сега можете да отворите своя phpMyAdmin интерфейс при https://www.yourdomain.com/managedb
(отбележи, че управляванb е псевдонимът, който създадохме по -рано за директорията с данни phpMyAdmin).
Ако това не работи (което може да бъде причинено от забавяне на разпространението или липса на конфигурация на DNS записи), засега можете да опитате да използвате публичния IP адрес на вашия сървър вместо www.yourdomain.com:
Във всеки случай, след като влезете в phpMyAdmin, ще видите следния интерфейс. Щракнете Нов в лявата секция:
Въведете име за базата данни (EmailServer_db в този случай няма нужда да избирате Сравнение) и щракнете Създайте:
12. На следващия екран изберете a име за първата таблица (където ще съхраняваме домейните, които този пощенски сървър ще управлява.
Моля, обърнете внимание, че дори когато в тази серия ще управляваме само един домейн, можете да добавите още по -късно) и броя полета, които искате в него, след което щракнете върху Отивам. Ще бъдете подканени да посочите и конфигурирате тези две полета, където можете безопасно да продължите, както е посочено на следните изображения:
Когато избирате ОСНОВНИ под Индекс за DomainId, приемете стойностите по подразбиране и щракнете Отивам:
Като алтернатива можете да щракнете Визуализация на SQL за да видите кода под капака:
CREATE TABLE `EmailServer_db`.`Domains_tbl` (` DomainId` INT NOT NULL AUTO_INCREMENT, `DomainName` VARCHAR (50) NOT NULL, PRIMARY KEY (` DomainId`)) ENGINE = InnoDB;
Когато сте готови, щракнете върху Запазване за да потвърдите промените. След това ще можете да щракнете Нов под EmailServer_db за да продължите да създавате таблици:
13. Сега следвайте тези стъпки, за да създадете останалите таблици. Кликнете върху SQL раздел и въведете посочения код за всеки обект от базата данни.
Имайте предвид, че в този случай избрахме да създадем таблицата, използвайки SQL заявка, поради връзките, които трябва да бъдат установени между различните таблици:
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) РЕФЕРЕНЦИИ Domains_tbl (DomainId) НА ИЗТРИВАНЕ НА КАСКАДА) ДВИГАТЕЛ = InnoDB;
Трябва да получите съобщение за потвърждение (ако не, phpMyAdmin ще ви подкани за синтаксични грешки):
CREATE TABLE `Alias_tbl` (` AliasId` INT NOT NULL AUTO_INCREMENT, `DomainId` INT NOT NULL,` Source` varchar (100) NOT NULL, „Дестинация“ varchar (100) НЕ Е НУЛ, ПРИМАРЕН КЛЮЧ (`AliasId`), ЧУЖДЕН КЛЮЧ (DomainId) РЕФЕРЕНЦИИ Domains_tbl (DomainId) НА ИЗТРИВАНЕ КАСКАД. ) ДВИГАТЕЛ = InnoDB;
(Щракнете Отивам в долната част, за да продължите със създаването на таблицата).
До този момент трябва да имате следната структура на базата данни:
Което означава, че сте готови да започнете да добавяте някои записи в следващия раздел.
14. Сега ще вмъкнем следните записи в трите таблици. Паролите за [защитен имейл] и [защитен имейл] ще бъде шифрован и ВМЕСТВАНЕ В ПОТРЕБИТЕЛИ_tbl изявление.
Също така, имайте предвид, че имейлите, изпратени до [защитен имейл] ще бъде пренасочен към [защитен имейл]:
ВМЕСТВАНЕ В Domains_tbl (DomainName) VALUES ('linuxnewz.com'); INSERT INTO Users_tbl (DomainId, password, Email) VALUES (1, ENCRYPT ('PasswordForFirstEmailAccount', CONCAT ('$ 6 $', SUBSTRING (SHA (RAND ()), -16))), '[защитен имейл]'); INSERT INTO Users_tbl (DomainId, password, Email) VALUES (1, ENCRYPT ('PasswordForSecondEmailAccount', CONCAT ('$ 6 $', SUBSTRING (SHA (RAND ()), -16))), '[защитен имейл]'); ВМЕСТВАНЕ В Alias_tbl (DomainId, Source, Destination) VALUES (1, '[защитен имейл]', '[защитен имейл]');
След като добавихме нашия домейн, два потребителски акаунта и имейл псевдоним, ние сме готови да продължим настройката на нашия имейл сървър в следващата статия от тази поредица, където ще конфигурираме Гълъбарник и Postfix.
В тази статия сме изброили пакетите, необходими за инсталиране на имейл сървър Postfix в CentOS 7 VPS, и обяснихме как да управляваме основната база данни с помощта на phpMyAdmin.
В следващите две статии ще прегледаме конфигурацията на двете програми, които ще се грижат за разпространението на имейли за нашия домейн (Част 2) и ще ви покаже как да добавите защита срещу спам и вируси (Част 3) за вашия сървър.
Дотогава не се колебайте да се свържете с нас чрез формата по -долу, ако имате въпроси или коментари.