Postfix Posta Sunucusu ve Güvercin Veritabanı (MariaDB) ile Güvenli Bir Şekilde Kurulumu - Bölüm 1


Bu 3 makalelik dizide, CentOS 7 kutusunda antivirüs ve spam korumalı bir Postfix posta sunucusunun nasıl kurulacağını tartışacağız. Lütfen bu talimatların RHEL/Fedora ve Debian/Ubuntu gibi diğer dağıtımlarda da çalıştığını unutmayın.

Planımız, e-posta hesaplarını ve takma adları, bizim rahatlığımız için phpMyAdmin aracılığıyla yönetilecek bir MariaDB veritabanında depolamaktan ibarettir.

phpMyAdmin'i kurmamayı tercih ederseniz veya yalnızca CLI sunucusuyla çalışıyorsanız, bu seri boyunca kullanılacak veritabanı tablolarını oluşturmak için eşdeğer kodu da sağlayacağız.

Bir posta sunucusunu çalışır durumda tutmak, genellikle sistem yöneticilerine ve mühendislere verilen temel görevlerden biri olduğundan, bu kritik hizmeti üretim ortamında verimli bir şekilde çalıştırmak için birkaç ipucu da sunacağız.

DNS'de Etki Alanı için A ve MX Kayıtları Oluşturma

Devam etmeden önce yerine getirilmesi gereken birkaç önkoşul vardır:

1. Bir alan adı kayıt kuruluşu aracılığıyla kaydedilmiş geçerli bir alan adına ihtiyacınız olacak. Bu seride GoDaddy aracılığıyla kaydedilen www.linuxnewz.com adresini kullanacağız.

2. Bu alan adı, VPS'nizin veya bulut barındırma sağlayıcınızın harici IP'sine yönlendirilmelidir. Posta sunucunuzu kendiniz barındırıyorsanız FreeDNS'in sunduğu hizmeti kullanabilirsiniz (kayıt gerektirir).

Her durumda, alanınız için A ve MX kayıtlarını da ayarlamanız gerekir (MX kayıtları hakkında daha fazla bilgiyi Google'ın bu SSS bölümünden edinebilirsiniz).

Eklendikten sonra, doğru şekilde kurulduklarından emin olmak için MxToolbox veya ViewDNS gibi çevrimiçi bir araç kullanarak bunları arayabilirsiniz.

Önemli: DNS kayıtlarının yayılması ve alan adınızın kullanılabilir hale gelmesinin biraz (1-2 gün) sürebileceğini lütfen unutmayın. Bu arada aşağıda belirtilen görevleri gerçekleştirmek için VPS'nize IP adresi üzerinden erişebilirsiniz.

3. VPS'nizin FQDN'sini (Tam Nitelikli Alan Adı) yapılandırın:

hostnamectl set-hostname yourhostname

sistem ana bilgisayar adını ayarlamak için /etc/hosts'u aşağıdaki gibi düzenleyin (AAA.BBB.CCC.DDD, anasistem adınız ve ile değiştirin) >alanınız ile sunucunuzun genel IP'si, ana makine adınız ve kayıtlı alan adınız):

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

burada anasistem adınız, daha önce hostnamectl komutu kullanılarak ayarlanan sistem ana bilgisayar adıdır.

Gerekli Yazılım Paketlerinin Kurulumu

4. Apache, Postfix, Dovecot, MariaDB, PhpMyAdmin, SpamAssassin, ClamAV vb. gibi gerekli yazılım paketlerini yüklemek için EPEL deposunu etkinleştirmeniz gerekir:

yum install epel-release

5. Yukarıdaki adımları izledikten sonra gerekli paketleri yükleyin:

CentOS Tabanlı Sistemlerde:

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

Debian ve türevlerinde:

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. Web ve veritabanı sunucularını başlatın ve etkinleştirin:

CentOS Tabanlı Sistemlerde:

systemctl enable httpd mariadb
systemctl start httpd mariadb

Debian ve türevlerinde:

systemctl enable apache2 mariadb
systemctl start apache2 mariadb

Kurulum tamamlandığında ve yukarıdaki hizmet etkinleştirilip çalıştırıldığında, Postfix posta hesapları hakkındaki bilgileri saklayacak veritabanını ve tabloları ayarlayarak başlayacağız.

Postfix Posta Hesapları Veritabanı Oluşturma

Basit olması açısından, MySQL/MariaDB veritabanlarının yönetimini bir web arayüzü aracılığıyla yönetmeyi, oluşturmayı ve yönetmeyi amaçlayan bir araç olan phpMyAdmin'i kullanacağız. e-posta veritabanı.

Ancak bu araca giriş yapıp kullanabilmek için şu adımları izlememiz gerekiyor:

7. MariaDB hesabını etkinleştirin (bunu komut satırından mysql_secure_installation yardımcı programını çalıştırarak, root kullanıcısı için bir şifre atayarak ve "Uzaktan kök oturum açmaya izin verilsin mi?" HARİCİNDE araç tarafından önerilen varsayılan ayarların ayarlanması:

veya başka bir şekilde yeni bir veritabanı kullanıcısı oluşturun:

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

Apache'yi Sertifikayla Güvenli Hale Getirin

8. E-posta sunucusu veritabanını yönetmek için bir web uygulaması kullanacağımızdan, sunucuya olan bağlantıları korumak için gerekli önlemleri almamız gerekmektedir. Aksi takdirde, phpMyAdmin kimlik bilgilerimiz düz metin olarak kablo üzerinden aktarılacaktır.

Sunucunuzda Aktarım Katmanı Güvenliği'ni (TLS) ayarlamak için RHCE serisinin Bölüm 8'inde özetlenen adımları izleyin: TLS aracılığıyla HTTPS'yi Uygulama Devam etmeden önce Apache için Ağ Güvenlik Hizmeti'ni (NSS) kullanma.

Not: Sunucunun konsoluna erişiminiz yoksa, anahtar oluşturma sırasında gerekli entropiyi oluşturmanın başka bir yolunu bulmanız gerekecektir. Bu durumda, rng-tools'u yüklemeyi ve rngd -r /dev/urandom'u çalıştırmayı düşünebilirsiniz.

PhpMyAdmin'i Yapılandırma ve Güvenliğini Sağlama

9. /etc/httpd/conf.d/phpMyAdmin.conf (CentOS) veya /etc/phpmyadmin/apache'de. conf (Debian ve türevleri), aşağıdaki satırların tüm oluşumlarını bulun ve sunucunuzun genel IP'sini işaret ettiğinden emin olun:

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

Ek olarak, phpMyAdmin giriş sayfanıza erişmek için varsayılan takma adları devre dışı bırakın ve yeni bir tane oluşturun. Bu, www.alanadiniz.com/phpmyadmin veya www.alanadiniz.com/phpMyAdmin'i hedef alan botlara ve harici saldırganlara karşı sitenin güvenliğinin sağlanmasına yardımcı olacaktır.

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

Ayrıca içine aşağıdaki satırı ekleyin:

Require all granted

Etki Alanı için Apache VirtualHost Oluşturun

10. Alan adınızın etkin sitelere eklendiğinden emin olun. /etc/httpd/sites-available/linuxnewz.com.conf (CentOS) veya /etc/apache2/sites-available/linuxnewz.com oluşturun Strong> (Debian) ile aşağıdaki içeriklere sahip olun (DocumentRoot, sites-available ve sites-enabled olduğundan emin olun > dizinler mevcut):

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

ve sembolik bağlantı:

CentOS'ta:
ln -s /etc/httpd/sites-available/linuxnewz.com.conf /etc/httpd/sites-enabled/linuxnewz.com.conf
Debian'da:
a2ensite linuxnewz.com

ve işin bitti.

Postfix E-posta Veritabanını Kur

11. Artık phpMyAdmin arayüzünüzü https://www.yourdomain.com/managedb adresinde açabilirsiniz (managedb< olduğunu unutmayın) daha önce phpMyAdmin veri dizini için kurduğumuz takma addır).

Bu işe yaramazsa (bunun nedeni DNS kayıtlarının yayılmasındaki gecikme veya yapılandırma eksikliği olabilir) şimdilik www.alanadiniz.com yerine sunucunuzun genel IP adresini kullanmayı deneyebilirsiniz. :

Her durumda, phpMyAdmin'de oturum açtıktan sonra aşağıdaki arayüzü göreceksiniz. Sol bölümde Yeni'yi tıklayın:

Veritabanı için bir ad girin (EmailServer_db bu durumda, Harmanlama seçmenize gerek yoktur) ve Oluştur'u tıklayın:

12. Bir sonraki ekranda, ilk tablo için bir ad seçin (bu posta sunucusunun yöneteceği etki alanlarını saklayacağımız yer).

Bu seride yalnızca bir alan adını yöneteceğimizi (daha sonra daha fazlasını ekleyebileceğinizi) ve içinde olmasını istediğiniz alan sayısını yöneteceğimizi lütfen unutmayın ve ardından Git'i tıklayın. Aşağıdaki görsellerde gösterildiği gibi güvenle ilerleyebileceğiniz bu iki alanı adlandırmanız ve yapılandırmanız istenecektir:

Etki Alanı Kimliği için Dizin altında Birincil'i seçtiğinizde, varsayılan değerleri kabul edin ve Git'i tıklayın:

Alternatif olarak, kodu ayrıntılı olarak görmek için SQL'i önizle'yi tıklayabilirsiniz:

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

Hazır olduğunuzda değişiklikleri onaylamak için Kaydet'i tıklayın. Daha sonra tablo oluşturmaya devam etmek için EmailServer_db altında Yeni'yi tıklayabileceksiniz:

13. Şimdi tabloların geri kalanını oluşturmak için bu adımları izleyin. SQL sekmesine tıklayın ve her veritabanı nesnesi için belirtilen kodu girin.

Bu durumda, farklı tablolar arasında kurulması gereken ilişkiler nedeniyle tabloyu bir SQL sorgusu kullanarak oluşturmayı seçtiğimizi unutmayın:

Kullanıcılar_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; 

Bir onay mesajı almalısınız (eğer değilse, phpMyAdmin sözdizimi hatalarını soracaktır):

Takma ad_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;

(Tabloyu oluşturmaya devam etmek için alttaki Git'i tıklayın).

Bu noktaya kadar aşağıdaki veritabanı yapısına sahip olmalısınız:

Bu, bir sonraki bölümde bazı kayıtları eklemeye hazır olduğunuz anlamına gelir.

Postfix Etki Alanı, Kullanıcılar ve Takma Adlar Oluşturma

14. Şimdi aşağıdaki kayıtları üç tabloya ekleyeceğiz. [email  ve [email  şifreleri şifrelenecek ve INSERT INTO Users_tbl ifadesi şifrelenecektir.

Ayrıca, [e-posta korumalı] adresine gönderilen e-postaların [e-posta korumalı] adresine yönlendirileceğini lütfen unutmayın:

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

Alanımızı, iki kullanıcı hesabımızı ve bir e-posta takma adımızı ekledikten sonra, Dovecot ve Postfix'i yapılandıracağımız bu serinin sonraki makalesinde e-posta sunucumuzun kurulumuna devam etmeye hazırız. güçlü>.

Özet

Bu yazıda CentOS 7 VPS'ye Postfix e-posta sunucusu kurmak için gerekli paketleri listeledik ve phpMyAdmin kullanarak temel veritabanının nasıl yönetileceğini açıkladık.

Sonraki iki makalede, alanımız için e-posta dağıtımıyla ilgilenecek iki programın yapılandırmasını inceleyeceğiz (Bölüm 2) ve size spam ve virüslere karşı korumayı nasıl ekleyeceğinizi göstereceğiz ( >Bölüm 3) sunucunuz için.

O zamana kadar herhangi bir sorunuz veya yorumunuz varsa aşağıdaki formu kullanarak bizimle iletişime geçmekten çekinmeyin.