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는 바로 사용할 수 있으며, 빌드에는 아래 나열된 서비스 및 옵션 구성도 포함되어 있습니다:
- SpamAssasin 스팸 방지 필터 설치 및 구성, Postfix Debian 서비스용 스팸 폴더로 메시지 그룹화
- Dovecot 메일 서버에 사서함 할당량 설치 및 구성
- Roundcube 웹메일에 대한 달력 설정
- Fail2Ban을 사용하여 비밀번호 추측으로부터 메일 서버 보호
- Roundcube 웹 메일에 대한 ManageSieve 이메일 필터 구성
- PostfixAdmin을 통해 사서함 폴더 삭제
- postfixAdmin에서 메일 수집기 설정
- imapsync를 통해 메일 전송 및 동기화
- Postfix에서 SPF 검사 구성
- Postfix에서 DKIM 디지털 서명 설정
- Postfix를 통한 스팸 방지
- 스팸 폴더의 자가 학습 Spamassassin
- PDF 보고서를 통한 Postfix 메일 서버 모니터링