이에 3개 항목 시리즈를 설정하는 방법에 대해 논의할 것입니다. 접미사 바이러스 백신 및 스팸 방지 기능이 있는 메일 서버 센트OS 7 상자. 이 지침은 다음과 같은 다른 배포판에서도 작동합니다. 렐/페도라 그리고 데비안/우분투.
1 부: Postfix 메일 서버 데이터베이스(MariaDB)를 안전하게 만들고 설정하는 방법
우리의 계획은 이메일 계정과 별칭을 마리아DB 우리의 편의를 위한 데이터베이스는 다음을 통해 관리됩니다. phpMyAdmin.
설치하지 않기로 선택한 경우 phpMyAdmin, 또는 CLI 전용 서버를 다루는 경우 이 시리즈 전체에서 사용할 데이터베이스 테이블을 생성하기 위한 동등한 코드도 제공할 것입니다.
메일 서버를 유지하고 실행하는 것은 일반적으로 시스템에 할당되는 필수 작업 중 하나이기 때문에 관리자 및 엔지니어를 포함하여 프로덕션 환경에서 이 중요한 서비스를 효율적으로 실행하기 위한 몇 가지 팁도 제공합니다. 환경.
계속 진행하기 전에 충족해야 하는 몇 가지 전제 조건이 있습니다.
1. 도메인 등록 대행자를 통해 등록된 유효한 도메인이 필요합니다. 이 시리즈에서 우리가 사용할 www.linuxnewz.com
를 통해 등록된 대디.
2. 이러한 도메인은 VPS 또는 클라우드 호스팅 공급자의 외부 IP를 가리켜야 합니다. 메일 서버를 자체 호스팅하는 경우 다음에서 제공하는 서비스를 사용할 수 있습니다. 무료DNS (등록이 필요합니다).
어떤 경우에도 설정해야 합니다. NS
그리고 MX
도메인에 대한 레코드도 포함합니다(MX 레코드에 대한 자세한 내용은 이 FAQ 구글에서).
추가되면 다음과 같은 온라인 도구를 사용하여 검색할 수 있습니다. MxToolbox 또는 ViewDNS 제대로 설정되었는지 확인합니다.
중요한: 다소 시간이 소요될 수 있습니다(1-2 일) DNS 레코드가 전파되고 도메인을 사용할 수 있을 때까지 한편, 아래 표시된 작업을 수행하기 위해 해당 IP 주소를 통해 VPS에 액세스할 수 있습니다.
3. 구성 FQDN (정규화된 도메인 이름) 귀하의 VPS:
# hostnamectl set-hostname yourhostname.
시스템 호스트 이름을 설정한 다음 편집 /etc/hosts 다음과 같이 (교체 AAA.BBB.CCC.DDD, 호스트 이름, 그리고 귀하의 도메인 서버의 공개 IP, 호스트 이름 및 등록된 도메인):
AAA.BBB.CCC.DDD yourhostname.yourdomain.com yourhostname.
어디 호스트 이름 이전에 다음을 사용하여 설정한 시스템 호스트 이름입니다. hostnamectl 명령.
4. Apache, Postfix, Dovecot, MariaDB, PhpMyAdmin, SpamAssassin, ClamAV 등과 같은 필수 소프트웨어 패키지를 설치하려면 다음을 활성화해야 합니다. 에펠 저장소:
# yum은 epel-release를 설치합니다.
5. 위 단계를 수행한 후 필요한 패키지를 설치합니다.
# yum 업데이트 && yum 설치 httpd httpd-devel 접미사 dovecot dovecot-mysql spamassassin clamav clamav-scanner clamav-scanner-systemd clamav-data clamav-update mariadb mariadb-server php phpMyAdmin.
# 적성 업데이트 && 적성 설치 apache2 접미사 dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-mysql 스팸어쌔신 clamav clamav-daemon clamav-base mariadb-client mariadb-server php5 phpMyAdmin.
6. 웹 및 데이터베이스 서버를 시작하고 활성화합니다.
# systemctl은 httpd mariadb를 활성화합니다. # systemctl httpd mariadb를 시작합니다.
# systemctl은 apache2 mariadb를 활성화합니다. # systemctl apache2 mariadb를 시작합니다.
설치가 완료되고 위의 서비스가 활성화되고 실행되면 Postfix 메일 계정에 대한 정보를 저장할 데이터베이스와 테이블을 설정하는 것으로 시작합니다.
단순함을 위해 우리는 다음을 사용할 것입니다. phpMyAdmin, 의 관리를 처리하기 위한 도구 MySQL / 마리아DB 웹 인터페이스를 통해 데이터베이스를 생성하고 이메일 데이터베이스를 관리합니다.
그러나 이 도구에 로그온하여 사용하려면 다음 단계를 따라야 합니다.
7. 활성화 마리아DB 계정(이 작업은 다음을 실행하여 수행할 수 있습니다. mysql_secure_installation
명령줄에서 유틸리티, 사용자 루트에 대한 암호 할당 및 도구에서 제안한 기본 설정 설정 EXCEPT "원격으로 루트 로그인을 허용하지 않습니까?“:
또는 그렇지 않으면 새 데이터베이스 사용자를 만듭니다.
MariaDB [(없음)]> CREATE USER 'dba'@'localhost' IDENTIFIED BY 'YourPasswordHere'; MariaDB [(없음)]> *에 대한 모든 권한 부여. * TO 'dba'@'localhost'; MariaDB [(없음)]> FLUSH 권한;
8. 웹 애플리케이션을 사용하여 이메일 서버 데이터베이스를 관리할 것이기 때문에 서버 연결을 보호하기 위해 필요한 예방 조치를 취해야 합니다. 그렇지 않으면 우리의 phpMyAdmin 자격 증명은 유선을 통해 일반 텍스트로 이동합니다.
설정하기 전송 계층 보안 (TLS) 서버에서 에 설명된 단계를 따르십시오. 8부 RHCE 시리즈: NSS(Network Security Service)를 사용하여 TLS를 통해 HTTPS 구현 계속 진행하기 전에 Apache용.
메모: 서버 콘솔에 액세스할 수 없는 경우 키 생성 중에 필요한 엔트로피를 생성하는 다른 방법을 찾아야 합니다. 이 경우 설치를 고려할 수 있습니다. rng 도구 그리고 달리기 rngd -r /dev/urandom.
9. 입력 /etc/httpd/conf.d/phpMyAdmin.conf (센트OS) 또는 /etc/phpmyadmin/apache.conf (데비안 및 파생 상품), 다음 행의 모든 항목을 찾아 서버의 공용 IP를 가리키는지 확인하십시오.
IP AAA.BBB.CCC.DDD가 필요합니다. AAA.BBB.CCC.DDD에서 허용합니다.
또한 기본 별칭을 비활성화하고 새 별칭을 만들어 phpMyAdmin 로그인 페이지에 액세스합니다. 이는 봇 및 외부 공격자로부터 사이트를 보호하는 데 도움이 됩니다. www.yourdomain.com/phpmyadmin 또는 www.yourdomain.com/phpMyAdmin.
#별칭 /phpMyAdmin /usr/share/phpMyAdmin. #별칭 /phpmyadmin /usr/share/phpMyAdmin. 별칭 /managedb /usr/share/phpMyAdmin.
또한 내부에 다음 줄을 추가하십시오. :
모든 부여를 요구합니다.
10. 활성화된 사이트에 도메인이 추가되었는지 확인하십시오. 창조하다 /etc/httpd/sites-available/linuxnewz.com.conf (센트OS) 또는 /etc/apache2/sites-available/linuxnewz.com (데비안) 다음 내용으로 문서 루트, 사용 가능한 사이트, 그리고 사이트 사용 가능 디렉토리 존재):
ServerName www.linuxnewz.com ServerAlias linuxnewz.com DocumentRoot /var/www/linuxnewz.com/public_html 오류 로그 /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
(참고 관리 phpMyAdmin 데이터 디렉토리에 대해 이전에 설정한 별칭입니다.
그것이 작동하지 않는 경우(DNS 레코드의 전파 지연 또는 구성 부족으로 인해 발생할 수 있음) 당분간 서버의 공용 IP 주소를 대신 사용해 볼 수 있습니다. www.yourdomain.com:
어쨌든 phpMyAdmin에 로그온하면 다음 인터페이스가 표시됩니다. 딸깍 하는 소리 새로운 왼쪽 섹션에서:
데이터베이스 이름을 입력하십시오(이메일서버_db 이 경우 Collation을 선택할 필요가 없음)을 클릭하고 창조하다:
12. 다음 화면에서 다음을 선택합니다. 이름 첫 번째 테이블(이 메일 서버가 관리할 도메인을 저장할 위치입니다.
이 시리즈에서는 하나의 도메인만 관리하지만 나중에 더 추가할 수 있음) 및 원하는 필드 수를 확인한 다음 가다. 다음 이미지에 표시된 대로 안전하게 진행할 수 있는 두 필드의 이름을 지정하고 구성하라는 메시지가 표시됩니다.
선택할 때 일 순위 아래의 색인 ~을위한 도메인 ID, 기본값을 수락하고 클릭 가다:
또는 SQL 미리보기 후드 아래에 있는 코드를 보려면:
CREATE TABLE `EmailServer_db`.`Domains_tbl` ( `DomainId` INT NOT NULL AUTO_INCREMENT, `DomainName` VARCHAR(50) NOT NULL, PRIMARY KEY(`DomainId`)) ENGINE = InnoDB;
준비가 되면 구하다 변경 사항을 확인합니다. 그러면 다음을 클릭할 수 있습니다. 새로운 아래의 이메일서버_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) REFERENCES Domains_tbl(DomainId) ON DELETE CASCADE ) ENGINE = 이노디비;
확인 메시지가 표시되어야 합니다(그렇지 않은 경우 phpMyAdmin은 구문 오류를 묻는 메시지를 표시합니다):
CREATE TABLE `Alias_tbl` ( `AliasId` INT NOT NULL AUTO_INCREMENT, `DomainId` INT NOT NULL, `소스` varchar(100) NOT NULL, `Destination` varchar(100) NOT NULL, PRIMARY KEY(`AliasId`), FOREIGN KEY(DomainId) REFERENCES Domains_tbl(DomainId) ON DELETE 종속. ) 엔진 = InnoDB;
(딸깍 하는 소리 가다 를 클릭하여 테이블 생성을 진행합니다.)
여기까지는 다음과 같은 데이터베이스 구조가 있어야 합니다.
이는 다음 섹션에서 일부 레코드를 추가할 준비가 되었음을 의미합니다.
14. 이제 다음 레코드를 세 개의 테이블에 삽입합니다. 에 대한 암호 [이메일 보호됨] 그리고 [이메일 보호됨] 암호화되고 INSERT INTO Users_tbl 성명.
또한 다음으로 전송된 이메일을 참고하십시오. [이메일 보호됨] 로 리디렉션됩니다 [이메일 보호됨]:
INSERT INTO Domains_tbl(도메인 이름) 값('linuxnewz.com'); INSERT INTO Users_tbl(도메인 ID, 비밀번호, 이메일) VALUES(1, ENCRYPT('PasswordForFirstEmailAccount', CONCAT('$6$', SUBSTRING(SHA(RAND())), -16))), '[이메일 보호됨]'); INSERT INTO Users_tbl(도메인 ID, 비밀번호, 이메일) VALUES(1, ENCRYPT('PasswordForSecondEmailAccount', CONCAT('$6$', SUBSTRING(SHA(RAND())), -16))), '[이메일 보호됨]'); INSERT INTO Alias_tbl(DomainId, 소스, 대상) VALUES(1, '[이메일 보호됨]', '[이메일 보호됨]');
도메인, 두 개의 사용자 계정 및 이메일 별칭을 추가했으면 이 시리즈의 다음 기사에서 계속해서 이메일 서버를 설정할 준비가 되었습니다. 비둘기장 그리고 접미사.
이 기사에서는 CentOS 7 VPS에 Postfix 이메일 서버를 설치하는 데 필요한 패키지를 나열하고 phpMyAdmin을 사용하여 기본 데이터베이스를 관리하는 방법을 설명했습니다.
다음 두 기사에서는 도메인의 이메일 배포를 처리하는 두 프로그램의 구성을 검토할 것입니다(2 부) 스팸 및 바이러스에 대한 보호 기능을 추가하는 방법을 보여줍니다(3부) 귀하의 서버에 대한.
그때까지 질문이나 의견이 있으면 아래 양식을 사용하여 언제든지 문의해 주십시오.