Image

(Son değişiklik: 06.11.2024)

Debian 12 Linux E-posta Sunucusu (Nginx, MariaDB, PHP, Postfix (DNSBL, DKIM, SPF), Dovecot, PostfixAdmin, SpamAssassin (Base, Spam klasöründe kendiliğinden öğrenme), Sieve, Quota, Fail2Ban, Roundcube (Takvim, Managesieve), Fetchmail, Imapsync)

Bu kılavuz, bir VPS üzerinde tam donanımlı bir e-posta sunucusunun nasıl kurulacağını gösterir. Amaç, alan adları ve posta kutuları yönetmek için bir web arayüzü aracılığıyla yönetilebilen hazır bir kurumsal sunucu elde etmektir. Temel e-posta hizmetlerini, alan adı eklemek, e-posta adresleri oluşturmak ve Roundcube web arayüzü ile posta ile tarayıcı üzerinden rahat çalışmak için PostfixAdmin yönetim aracını kuracağız. Bu kılavuzda, root olarak kurulum yapacağız, normal kullanıcı iseniz sudo komutunu kullanın.


E-posta ve yönetim sisteminin web arayüzü görünümü:

Sıkça Sorulan Sorular:

  • Я хочу купить Kaspersky Security для защиты от спама и вирусов, Вы мне его установите?

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

  • Есть ли у данного сервера инструмент миграции, для переноса всех писем и папок соблюдая всю иерархию структуры?

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

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

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

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

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

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

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

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

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

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

    Мы можем произвести конфигурацию данного описания при оплате VDS сервера (DebFFian 12) сроком сразу на год. Настройка займет 2-3 дня с момента оплаты.

Önceden yapılandırılmış sunucu yapılandırması sipariş formunda mevcuttur.

1. Yazılım paketlerini güncelleyin

apt update
apt upgrade

2. LEMP kurulumunu yapın

LEMP kurulumu bir kurulumu açıklamaktadır, bu paket, e-posta web arayüzü, posta kutası yönetim sistemi ve ayarları saklamak için bir veritabanı için gereklidir.

3. E-posta hizmetleri için güvenlik duvarını yapılandırın

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

Kuralları kaydedelim 

apt install iptables-persistent
netfilter-persistent save

4. PostfixAdmin'i kurun ve yapılandırın

Bu paket, e-posta sunucumuzu web arayüzü aracılığıyla konsola başvurmadan yönetmemizi sağlar.

4.1 Paket kurulumunu yapalım

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 Şimdi veritabanını oluşturalım:

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 Aşağıdaki içeriği taşıyan bir yapılandırma dosyası oluşturalım:

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


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

?>

Bir tarayıcı açın ve adresi girin: http://host-ip/postfixadmin/public/setup.php

Bir şifre belirlemeniz gerekecek, ardından 'Generate setup_password hash' butonuna tıklayarak bir hash oluşturun.

Hash'i kopyalayın ve şu dosyaya ekleyin:

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

Kaydettikten sonra, sayfayı yenileyin (http://host-ip/postfixadmin/public/setup.php) ve verilen şifreyle giriş yapın. PostfixAdmin kurulumu tamamlanacaktır.

Şimdi süper kullanıcı (tam yetkili kullanıcı) eklememiz gerekiyor. Admin alanına mail root@mail-domain.tld formatında kullanıcıyı belirtmelisiniz.

Şimdi http://host-ip/postfixadmin/public/login.php adresine gidin ve oluşturduğunuz kullanıcının bilgilerini girin:

5. Postfix hizmetini kurun ve yapılandırın

apt install postfix postfix-mysql

Kurulum sırasında Postfix Yapılandırma penceresi görünecek - Internet Site öğesini bırakın.

5.1 Klasörlerde çalışacak grup ve kullanıcıları oluşturalım

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

5.2 Yapılandırma dosyasını düzenleyelim

 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

Yapılandırma dosyasının sonuna aşağıdaki satırları ekleyelim:

 /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 = $myn
etworks
smtpd_sasl_security_options = noanonymous
smtpd_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_tls_security_level = may
smtp_tls_note_starttls_offer = yes
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_use_tls = yes
smtpd_use_tls = evet
smtpd_tls_auth_only = evet
smtpd_helo_required = evet

Veritabanına erişim için alias ayarlarını içeren bir dosya oluşturun

vi /etc/postfix/mysql_virtual_alias_maps.cf

kullanıcı = postfix
şifre = postfix1HuRaf92
sunucular = localhost
veritabanı = postfix
sorgu = SELECT goto FROM alias WHERE address='%s' AND active = '1'

Veritabanına erişim için alan adı ayarlarını içeren bir dosya oluşturun

vi /etc/postfix/mysql_virtual_domains_maps.cf

kullanıcı = postfix
şifre = postfix1HuRaf92
sunucular = localhost
veritabanı = postfix
sorgu = SELECT domain FROM domain WHERE domain='%u'

Veritabanına erişim için posta kutası ayarlarını içeren bir dosya oluşturalım

vi /etc/postfix/mysql_virtual_mailbox_maps.cf

kullanıcı = postfix
şifre = postfix1HuRaf92
sunucular = localhost
veritabanı = postfix
sorgu = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s' AND active = '1'

Ana yapılandırma dosyasını açın ve satırın en sonuna ekleyin:

vi /etc/postfix/master.cf

submission   inet  n  -  n  -  -  smtpd
  -o smtpd_tls_security_level=may
  -o smtpd_sasl_auth_enable=evet
  -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=evet
  -o smtpd_sasl_auth_enable=evet
  -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}

Güvenlik sertifikalarını aşağıdaki komutla oluşturalım:

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"

Bu durumda, kendinden imzalı bir sertifika oluşturduk, bunun uyarı olmadan çalışabilmesi için SSL sertifikası satın almanız gerekir.

Son servis ayarları:

systemctl enable postfix
systemctl restart postfix

6. Dovecot'u yükleyin ve yapılandırın

apt install dovecot-imapd dovecot-pop3d dovecot-mysql

6.1 Posta depolama yapılandırması

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

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

6.2 Kimlik doğrulama ayarları

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

Veritabanı kimlik doğrulama ayarlarını değiştirin

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

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

Varsayılan satırı yorum satırına alalım ve sql kelimesi geçen satırı aktif edelim.

6.3 SSL sertifikalarını yapılandıralım

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

ssl = gerekli
ssl_cert =
ssl_key =

İlk kimlik doğrulaması sırasında kullanıcı için otomatik klasör oluşturulmasını ayarlayalım.

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

lda_mailbox_autocreate = evet

6.4 Veritabanı bağlantısını yapılandırın

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 Yapılandırma dosyasına ayarları ekleyin

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 Servisin çalışacağı arayüzü yapılandırın

vi /etc/dovecot/dovecot.conf

listen = *

Son servis ayarları

systemctl enable dovecot
systemctl restart dovecot

7. Alan adı ve posta kutuları yapılandırması

Web arayüzüne gidip alan adını e-posta ile çalışacak şekilde yapılandıralım: http://host-ip/postfixadmin/public/.

Sonra, üst menüye bir alan adı ekleyelim:

Alan adı eklendikten sonra, bir posta kutası oluşturalım.

8. Webmail servisini, Roundcube'u yükleyin ve yapılandırın

En son LTS sürüm paketini indirin ve sunucumuza dağıtalım

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

Yapılandırma dosyasını açın ve düzenleyin

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

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

Ayrıca şu parametreyi bulun ve boş bırakın: $config['smtp_pass'] = '';  

Bu yapılandırma dosyasına zamanlama ekleyelim:

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;

Roundcubemail için MariaDB veritabanını oluşturalım, yapılandırma dosyasında belirtilen:

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

Veritabanını içeri aktarma:

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

Gerekli php paketlerini yükleyin:

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

Eğer php-mcrypt yüklemesi sırasında hata oluştuysa, manuel olarak yükleyin

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

Php servisini yapılandıralım:

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

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

50 megabayt limitleri örnek olarak gösterilmiştir, kendinize göre ayar yapabilirsiniz, bu ayarlar e-postaya daha büyük ekler yüklemenizi sağlar.

systemctl restart php8.2-fpm

Ngxin'deki limitleri de düzelterek ayarlayalım

vi /etc/nginx/nginx.conf

http {

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

Sonra, tarayıcıda kurulumu http://host-ip/webmail/installer/ bağlantısına giderek devam edeceğiz.

Yönergeleri takip ederek Roundcube'u kurun ve sonraki sayfada tüm öğelerin "OK" durumda olduğunu kontrol edin. Kurulum tamamlandı.

Kurulum dosyasını silin ve yapılandırma dosyasında kurulumu devre dışı bırakın

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/ bağlantısına gidip, tam e-posta adresi ve şifreyi kullanarak web posta sistemine giriş yapalım.

9. Son yapılandırma adımı

VPS sunucumuz e-posta ile çalışacak şekilde yapılandırıldı, şimdi alan adı ayarlarında MX kaydını sunucumuzun IP adresi ile kaydetmemiz veya değiştirmemiz gerekiyor:

DNS Editörü'nde satırlar şöyle görünecektir:

Girişler kaydedildikten sonra, IP adresi için ters bölgeyi belirtmeniz gerekir (PTR)

Linux Debian 12 Enterprise Mail Server hazır, yapılandırmalar da aşağıdaki servislerin ve seçeneklerin kurulumu ile birlikte sağlanmıştır:




No Comments Yet