Image

(마지막 변경: 04.05.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, который позволяет перенести все почтовые ящики и все папки соблюдая первоначальную структуру, Вам нужно будет только настроить сами правила сортировки в веб интерфейсе почтового ящика.

  • Я получу сразу готовый сервер и после создания почтовых ящиков в административном интерфейсе они будут работать?

    Да, сервер полностью настроен и готов к работе, нужно будет только прописать MX запись в DNS редакторе и указать ip адрес почтового сервера для Вашего домена.

  • Если возникнут вопросы по правильности настройки DNS записей, миграции почтовых ящиков и другие, Вы можете внести эти настройки?

    Да, так как у Всех доменные имена разные, сервер поставляется с тестовым доменом для примера, нужно будет добавить свой, это не занимает много времени и при необходимости мы можем внести эти настройки за Вас, Вам нужно будет просто сообщить доменные имена.

  • Можно ли самому изменять настройки служб, а также устанавливать свои, к примеру разместить на почтовом сервере несколько сайтов?

    Да, конечно. После оплаты Вы получаете настроенный, согласно описанию сервер, логин и пароль для управления ящиками, а также полноценный root доступ. Приведенное руководство значительно сокращает время как на саму настройку так и на тестирование, а что именно мы настроили, приведено в описании. Основным преимуществом является работоспособная конфигурация почтового сервера без каких либо ограничений.

  • Мы хотим, чтобы все данные находились у нас. Можете ли Вы произвести всю эту настройку на нашем оборудовании?

    Да, Вы можете заказать установку и настройку данной конфигурации на Вашем оборудовании по ссылке.

  • Готовая сборка как понимаем предлагается только на VPS сервере, а нам хотелось бы заказать у Вас VDS сервер по ряду причин.

    Мы можем произвести конфигурацию данного описания при оплате 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