Image

(마지막 변경: 10.09.2024)

Debian 12 Linux Mail Server (Nginx, MariaDB, PHP, Postfix (DNSBL, DKIM, SPF), Dovecot, PostfixAdmin, SpamAssassin (Base, Self-learning by Spam folder), Sieve, Quota, Fail2Ban, Roundcube (Calendar, Managesieve), Fetchmail, Imapsync)

이 가이드는 Linux Debian 12를 사용하여 VPS에서 본격적인 메일 서버를 설정하는 방법을 보여줍니다. 작업은 웹 인터페이스를 통해 도메인과 사서함을 관리할 수 있는 기능을 갖춘 기성 기업 서버를 얻는 것입니다. 기본 메일 서비스, 도메인, 메일 주소를 추가할 수 있는 postfixadmin 관리 도구 및 브라우저를 통한 편리한 메일 작업을 위한 roundcube 웹 인터페이스를 설치합니다. 이 가이드에서는 다음과 같은 경우 루트로 설치합니다. sudo 명령을 정상적으로 사용하십시오.


메일 및 관리 시스템의 웹 인터페이스 모양:

가장 자주 묻는 질문:

  • 스팸 및 바이러스로부터 보호하기 위해 Kaspersky Security를 ​​구매하고 싶습니다. 설치해 주실 수 있나요?

    예. 메일 서버 어셈블리와 Kaspersky Security 라이센스를 주문하면 설치 및 구성이 무료입니다. 주문 양식에 라이센스를 추가하고 필요한 사서함 수를 표시하세요.

  • 이 서버에는 구조의 전체 계층 구조를 존중하면서 모든 문자와 폴더를 전송할 수 있는 마이그레이션 도구가 있습니까?

    예, imapsync가 서버에 설치되어 있어 원래 구조를 유지하면서 모든 편지함과 모든 폴더를 전송할 수 있습니다. 편지함 웹 인터페이스에서 정렬 규칙만 구성하면 됩니다.

  • 기성 서버를 즉시 받게 되며 관리 인터페이스에서 사서함을 만든 후에 작동합니까?

    예, 서버가 완전히 구성되어 작동할 준비가 되었습니다. DNS 편집기에 MX 레코드를 등록하고 도메인에 대한 메일 서버의 IP 주소를 지정하기만 하면 됩니다.

  • DNS 레코드의 올바른 구성, 사서함 마이그레이션 등에 대해 질문이 있는 경우 이러한 설정을 할 수 있습니까?

    예, 모든 사람이 서로 다른 도메인 이름을 가지고 있기 때문에 서버에는 테스트 도메인이 함께 제공됩니다. 예를 들어, 직접 추가해야 하며 시간이 많이 걸리지 않으며 필요한 경우 이러한 설정을 수행할 수 있습니다. 도메인 이름을 제공합니다.

  • 서비스 설정을 직접 변경할 수 있을 뿐만 아니라 직접 설치할 수도 있습니다. 예를 들어 메일 서버에서 여러 사이트를 호스팅할 수 있습니까?

    그렇습니다. 결제 후 설명, 사서함 관리를 위한 로그인 및 비밀번호와 전체 루트 액세스에 따라 구성된 서버를 받게 됩니다. 제공된 가이드는 설정 및 테스트 시간을 크게 줄여주며, 정확히 무엇을 설정했는지는 설명에 나와 있습니다. 가장 큰 장점은 아무런 제한 없이 작동하는 메일 서버 구성입니다.

  • 우리는 모든 데이터가 우리와 함께 있기를 원합니다. 우리 장비에서 이 모든 설정을 할 수 있나요?

    예, 링크.

  • 우리가 알고 있듯이 완성된 어셈블리는 VPS 서버에서만 제공되지만 여러 가지 이유로 VDS 서버를 주문하고 싶습니다.

    1년치 VDS 서버(Debian 12) 비용을 한 번에 지불하면 이 설명을 구성할 수 있습니다. 설정에는 결제일로부터 2~3일이 소요됩니다.

사전 구성된 서버 구성은 주문 양식에서 확인할 수 있습니다.

1. 소프트웨어 패키지 업데이트

apt update
apt upgrade

2. LEMP 설치

LEMP 설치 어셈블리 중 하나에 설명됨, 메일 웹 인터페이스, 사서함 관리 및 관리 시스템의 작동을 위해 이 번들이 필요합니다. 설정을 저장하기 위한 데이터베이스입니다.

3. 메일 서비스에 대한 방화벽 설정

iptables -I INPUT 1 -p tcp --match multiport --dports 25,110,143,465,587,993,995 -j ACCEPT

규칙을 지키자 

apt install iptables-persistent
netfilter-persistent save

4. PostfixAdmin 설치 및 구성

이 패키지를 사용하면 콘솔을 사용하지 않고도 웹 인터페이스를 통해 메일 서버를 관리할 수 있습니다.

4.1 Install the package itself

apt install php-mysql php-mbstring php-imap
systemctl restart php8.2-fpm
wget https://sourceforge.net/projects/postfixadmin/files/latest/download -O postfixadmin.tar.gz
mkdir /usr/share/nginx/html/postfixadmin
tar -C /usr/share/nginx/html/postfixadmin -xvf postfixadmin.tar.gz --strip-components 1
mkdir /usr/share/nginx/html/postfixadmin/templates_c
chown -R www-data:www-data /usr/share/nginx/html/postfixadmin

4.2 이제 데이터베이스를 생성해 보겠습니다:

mysql -u root -p

> CREATE DATABASE postfix DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
> GRANT ALL ON postfix.* TO 'postfix'@'localhost' IDENTIFIED BY 'postfix1HuRaf92';
> \q

4.3 다음 내용으로 구성 파일을 만들어 보겠습니다:

vi /usr/share/nginx/html/postfixadmin/config.local.php


$CONF['configured'] = true;
$CONF['default_language'] = 'ru';
$CONF['database_password'] = 'postfix1HuRaf92';
$CONF['emailcheck_resolve_domain']='NO';

?>

브라우저를 열고 주소를 입력하세요 http://host-ip/postfixadmin/public/setup.php

해시를 생성하려면 비밀번호를 입력한 다음  setup_password 해시 생성 버튼을 클릭해야 합니다.

전체 줄을 복사하여 파일에 추가합니다:

 vi /usr/share/nginx/html/postfixadmin/config.local.php

저장한 후 http://host-ip/postfixadmin/public/setup.php 페이지를 새로 고치고 지정된 비밀번호로 로그인해야 합니다. PostfixAdmin이 설치됩니다.

다음으로 슈퍼유저(모든 권한을 가진 사용자)를 추가해야 합니다. 관리자 항목에는 메일 형식으로 사용자를 지정해야 합니다 root@mail-domain.tld

이제 http://host-ip/postfixadmin/public/login.php 페이지로 이동하여 생성된 사용자의 데이터를 입력해 보겠습니다:

5. Postfix 서비스 설치 및 구성

apt install postfix postfix-mysql

설치하는 동안 Postfix 구성 창이 나타납니다. 인터넷 사이트 항목을 그대로 둡니다

5.1 sweatbox 폴더로 작업할 그룹과 사용자를 만들어 보겠습니다

groupadd -g 1024 vmail
useradd -d /home/mail -g 1024 -u 1024 vmail -m
chown vmail:vmail /home/mail

5.2 구성 파일을 변경해 보겠습니다

 vi /etc/postfix/main.cf

mydestination = localhost.$mydomain, localhost, localhost.localdomain

...

inet_protocols = ipv4

...

smtpd_tls_cert_file = /etc/ssl/mail/public.pem
smtpd_tls_key_file = /etc/ssl/mail/private.key

그런 다음 구성 파일 끝에 다음 줄을 추가합니다:

 /etc/postfix/main.cf

virtual_mailbox_base = /home/mail
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 1024
virtual_uid_maps = static:1024
virtual_gid_maps = static:1024
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1

smtpd_sasl_auth_enable = yes
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth

smtp_use_tls = yes
smtpd_use_tls = yes
smtpd_tls_auth_only = yes
smtpd_helo_required = yes

데이터베이스 액세스를 위한 별칭 설정이 포함된 파일 생성

vi /etc/postfix/mysql_virtual_alias_maps.cf

user = postfix
password = postfix1HuRaf92
hosts = localhost
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'

데이터베이스 액세스를 위한 도메인 설정이 포함된 파일 생성

vi /etc/postfix/mysql_virtual_domains_maps.cf

user = postfix
password = postfix1HuRaf92
hosts = localhost
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%u'

데이터베이스에 액세스하기 위한 사서함 설정이 포함된 파일을 만들어 보겠습니다

vi /etc/postfix/mysql_virtual_mailbox_maps.cf

user = postfix
password = postfix1HuRaf92
hosts = localhost
dbname = postfix
query = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s' AND active = '1'

기본 구성 파일을 열고 줄 맨 끝에 추가하세요:

vi /etc/postfix/master.cf

submission   inet  n  -  n  -  -  smtpd
  -o smtpd_tls_security_level=may
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_sasl_type=dovecot
  -o smtpd_sasl_path=/var/spool/postfix/private/auth
  -o smtpd_sasl_security_options=noanonymous
  -o smtpd_sasl_local_domain=$myhostname
smtps   inet  n  -  n  -  -  smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
dovecot   unix  -  n  n  -  -  pipe
  flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}

다음 명령을 사용하여 보안 인증서를 생성해 보겠습니다: 

mkdir -p /etc/ssl/mail
openssl req -new -x509 -days 1461 -nodes -out /etc/ssl/mail/public.pem -keyout /etc/ssl/mail/private.key -subj "/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=mail-domain.tld"

이 경우 자체 서명된 인증서를 만들었으므로 보안 경고 없이 작동하려면 SSL 인증서를 구입해야 합니다.

Final service setup:

systemctl enable postfix
systemctl restart postfix

6. Dovecot 설치 및 구성

apt install dovecot-imapd dovecot-pop3d dovecot-mysql

6.1 메일 저장공간 설정

vi /etc/dovecot/conf.d/10-mail.conf

mail_location = maildir:/home/mail/%d/%u/

6.2 승인 설정

vi /etc/dovecot/conf.d/10-master.conf

service auth {
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }

  unix_listener auth-userdb {
    mode = 0600
    user = vmail
    group = vmail
  }
}

데이터베이스 인증 설정 변경

vi /etc/dovecot/conf.d/10-auth.conf

#!include auth-system.conf.ext
!include auth-sql.conf.ext

기본 줄을 주석 처리하고 텍스트에 sql이라는 단어가 포함된 줄을 활성화해 보겠습니다.

6.3 SSL 인증서 설정

vi /etc/dovecot/conf.d/10-ssl.conf

ssl = required
ssl_cert =
ssl_key =

사용자가 메일에서 처음 인증할 때 자동으로 폴더가 생성되도록 설정해 보겠습니다.

vi /etc/dovecot/conf.d/15-lda.conf

lda_mailbox_autocreate = yes

6.4 데이터베이스 연결 설정

vi /etc/dovecot/conf.d/auth-sql.conf.ext

passdb {
  …
  args = /etc/dovecot/dovecot-sql.conf.ext
}

userdb {
  …
  args = /etc/dovecot/dovecot-sql.conf.ext
}

6.5 구성 파일에 설정 추가

vi /etc/dovecot/dovecot-sql.conf.ext

driver = mysql
connect = host=localhost dbname=postfix user=postfix password=postfix1HuRaf92
default_pass_scheme = MD5-CRYPT
password_query = SELECT password FROM mailbox WHERE username = '%u'
user_query = SELECT maildir, 1024 AS uid, 1024 AS gid FROM mailbox WHERE username = '%u'
user_query = SELECT CONCAT('/home/mail/',LCASE(`domain`),'/',LCASE(`maildir`)), 1024 AS uid, 1024 AS gid FROM mailbox WHERE username = '%u'

6.6 서비스가 실행될 인터페이스 구성

vi /etc/dovecot/dovecot.conf

listen = *

Final service setup

systemctl enable dovecot
systemctl restart dovecot

7. 도메인 및 메일함 설정

웹 인터페이스로 이동하여 메일과 작동하도록 도메인을 구성해 보겠습니다: http://host-ip/postfixadmin/public/.

다음으로 상단 메뉴에 도메인을 추가하세요:

도메인을 추가한 후 메일함을 만들어 보겠습니다.

8. 웹메일 서비스 Roundcube 설치 및 구성

패키지의 최신 LTS 버전을 다운로드하여 서버에 배포하세요

wget https://github.com/roundcube/roundcubemail/releases/download/1.6.2/roundcubemail-1.6.2-complete.tar.gz
mkdir /usr/share/nginx/html/webmail
tar -C /usr/share/nginx/html/webmail -xvf roundcubemail-*.tar.gz --strip-components 1
cp /usr/share/nginx/html/webmail/config/config.inc.php.sample /usr/share/nginx/html/webmail/config/config.inc.php
chown -R www-data:www-data /usr/share/nginx/html/webmail

구성 파일을 열고 편집하세요

vi /usr/share/nginx/html/webmail/config/config.inc.php

$config['db_dsnw'] = 'mysql://roundcube:roundcube1Yusm24M@localhost/roundcubemail';
$config['enable_installer'] = true;

매개변수도 찾아서 비워두자: $config['smtp_pass'] = '';  

이 구성 파일에 타이밍을 추가해 보겠습니다:

vi /usr/share/nginx/html/webmail/config/config.inc.php

$config['drafts_mbox'] = 'Drafts';
$config['junk_mbox'] = 'Junk';
$config['sent_mbox'] = 'Sent';
$config['trash_mbox'] = 'Trash';
$config['create_default_folders'] = true;

구성 파일에 지정된 MariaDB에 roundcubemail에 대한 기반을 생성해 보겠습니다:

mysql -uroot -p

> CREATE DATABASE roundcubemail DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
> GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost IDENTIFIED BY 'roundcube1Yusm24M';
> quit

데이터베이스 가져오기:

mysql -uroot -p roundcubemail < /usr/share/nginx/html/webmail/SQL/mysql.initial.sql

필요한 PHP 패키지 설치:

apt install php-pear php-intl php-ldap php-net-smtp php-gd php-imagick php-zip php-curl php-dom php-xml php-mcrypt

php-mcrypt 설치 중 오류가 발생하면 수동으로 설치하세요

apt install php-dev libmcrypt-dev
pecl channel-update pecl.php.net
pecl install mcrypt-1.0.5

vi /etc/php/8.2/fpm/conf.d/99-mcrypt.ini

extension=mcrypt.so

Set up php service:

vi /etc/php/8.2/fpm/php.ini

date.timezone = "Europe/Moscow"
post_max_size = 50M
upload_max_filesize = 50M

50MB의 제한이 예시로 표시되어 있으며 직접 설정할 수 있으며 편지에 더 큰 첨부 파일을 첨부할 수 있습니다.

systemctl restart php8.2-fpm

nginx 자체의 제한을 수정해 보겠습니다

vi /etc/nginx/nginx.conf

http {

    ...
    client_max_body_size 50M;
    ...
systemctl restart nginx

다음으로 링크를 사용하여 브라우저에서 설치를 계속하겠습니다 http://host-ip/webmail/installer/

지침에 따라 rouncube를 설치하고 다음 페이지에서 모든 항목이 OK 상태인지 확인합니다. 설치 완료.

설치 프로그램을 제거하고 구성 파일에서 설치를 비활성화합니다

rm -rf /usr/share/nginx/html/webmail/installer
vi /usr/share/nginx/html/webmail/config/config.inc.php

$config['enable_installer'] = false;

링크를 따라가보자 http://host-ip/webmail/ and go to the web mail using the full email address and password as a login.

9. 최종 설정 단계

VPS 서버는 메일과 함께 작동하도록 구성되었으므로 이제 도메인 이름 설정에서 MX 레코드를 서버의 IP 주소로 등록하거나 바꿔야 합니다:

DNS 편집기에서 줄은 다음과 같습니다:

항목이 등록된 후에는 IP 주소(PTR)에 대한 역방향 영역을 지정해야 합니다

Linux Debain 12 Enterprise Mail Server는 바로 사용할 수 있으며, 빌드에는 아래 나열된 서비스 및 옵션 구성도 포함되어 있습니다:




No Comments Yet