Задача: Хочу рассмотреть, как на купленную VPS (OS: Ubuntu 22.04 Server)
от AdminVPS
и доменное имя развернуть собственный почтовый сервер на базе iRedMail
, на момент составления данной заметки версия 1.6.3
, т.е. у меня не собственные мощности, а покупные, но я уже имею WAN-IP
статический который мне выдается при покупке (за него я не плачу). Постараюсь ничего не упустить и также покажу с чем столкнулся и чего впредь больше делать не буду (или буду внимательнее). Также преследуемая цель уйти от Yandex
— почта для домена в пользу своего.
Предварительные действия:
Куплено доменное имя ekzorchikdom.ru за 179руб в год
Куплена VPS система (CPU 1, RAM = 2Gb, HDD = 30Gb NVMe)
В качестве дистрибутива установки я придерживаюсь только использование Ubuntu
систем, точнее LTS
релизов.
Шаг №1
: Получаю на почту данные на подключение к купленной VPS:
На заметку: в поддержку AdminVPS
нужно написать чтобы прописали у себя PTR
запись для WAN-IP
и имени хоста mail.ekzorchikdom.ru
— это нужно чтобы почта ходила.
Шаг №2:
Изменяю имя хоста на купленной VPS
системе:
ekzorchik@srv-site2a:~$ sudo nano /etc/hostname mail ekzorchik@srv-site2a:~$ sudo nano /etc/hosts # Generated by SolusVM 127.0.0.1 localhost localhost.localdomain ::1 localhost localhost.localdomain 45.128.204.144 mail.ekzorchikdom.ru mail
Шаг №3:
Обновляю информацию по установленным пакетам и в рамках текущего релиза Ubuntu 22.04 LTS:
ekzorchik@srv-site2a:~$ sudo nano /etc/update-manager/release-upgrades [DEFAULT] Prompt=never ekzorchik@srv-site2a:~$ sudo rm -Rf /var/lib/apt/lists ekzorchik@srv-site2a:~$ sudo apt-get update && sudo apt-get upgrade -y ekzorchik@mail:~$ sudo reboot ekzorchik@mail:~$ uname -a && lsb_release -a Linux mail 5.15.0-73-generic #80-Ubuntu SMP Mon May 15 15:18:26 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.2 LTS Release: 22.04 Codename: jammy ekzorchik@mail:~$
Шаг №4:
Настраиваю SSH
сервис для удаленного взаимодействия с купленной VPS
системой, для администрирования: (я использую авторизацию только через SSH
-ключи если что)
SSH
ключ (публичный и приватный) создаю через PuttyGen
на Windows
системе, т.к. с работы я взаимодействую с нее со всеми, Вы же на свое усмотрение делаете как Вам удобно.
ekzorchik@mail:~$ sudo nano /etc/ssh/sshd_config Include /etc/ssh/sshd_config.d/*.conf Port 33222 PermitRootLogin no PubkeyAuthentication yes AuthorizedKeysFile /etc/ssh/authorized_keys PasswordAuthentication yes PermitEmptyPasswords no KbdInteractiveAuthentication no UsePAM yes X11Forwarding yes PrintMotd no PrintLastLog yes TCPKeepAlive yes AcceptEnv LANG LC_* Subsystem sftp /usr/lib/openssh/sftp-server AllowGroups sshauth ekzorchik@mail:~$ sudo service ssh restart
Шаг №5:
Скачиваю пакет iRedMail
самой последней версии на момент написания заметки, а именно 1.6.3
и устанавливаю в систему:
На заметку: Проверьте перед установкой, что у Вас ID=2000
в файле /etc/password
не используется, т.к. под этим ID
в процессе установке iRedMail
создается учетная запись vmail
, я с этим столкнулся, так как после того как получил данные для подключения к VPS
создал вручную пользователя:
sudo useradd -m -p password -s /bin/bash -u 2000 -U ekzorchik
и долго не мог понять почему не стартует служба dovecot
доступ через Web
-интерфейс (не внимательный был)
ekzorchik@mail:~$ wget https://github.com/iredmail/iRedMail/archive/refs/tags/1.6.3.tar.gz ekzorchik@mail:~$ tar zxf 1.6.3.tar.gz ekzorchik@mail:~$ cd iRedMail-1.6.3/ ekzorchik@mail:~/iRedMail-1.6.3$ chmod +x iRedMail.sh ekzorchik@mail:~/iRedMail-1.6.3$ sudo ./iRedMail.sh Adding component(s) 'multiverse' to all repositories. Press [ENTER] to continue or Ctrl-c to cancel. Нажимаю клавишу "ENTER" Adding component(s) 'universe' to all repositories. Press [ENTER] to continue or Ctrl-c to cancel. Нажимаю клавишу "ENTER" Welcome and thanks for your use: нажимаю Yes Please specify a directory (in lowercase) used to store user mailboxes. Default is: /var/vmail нажимаю Enter Choose a web server you want to run: выбираю Nginx и нажимаю Enter Choose preferred backend used to store mail accounts: выбираю MariaDB клавишей "ПРОБЕЛ" и нажимаю Enter Please specify password for MySQL administrator root on server 127.0.0.1: указываю 712mbddr@ и нажимаю Enter Please specify your first mail domain name: указываю ekzorchikdom.ru и нажимаю Enter Please specify password for the mail domain administrator: (postmaster@ekzorchikdom.ru): password и нажимаю Enter Optional components: отмечаю только Roundcubemail, SOGo, netdata, iRedAdmin и нажимаю Enter < Question > Continue? [y|N] нажимаю клавишу "y" и нажимаю Enter < Question > Would you like to use firewall rules provided by iRedMail? < Question > File: /etc/nftables.conf, with SSHD ports: 33222. [Y|n] нажимаю клавишу "n" и нажимаю Enter ekzorchik@mail:~/iRedMail-1.6.3$ sudo reboot
См. все настройки установленного iRedMail:
ekzorchik@mail:~$ cat ~/iRedMail-1.6.3/iRedMail.tips Admin of domain ekzorchikdom.ru: * Account: postmaster@ekzorchikdom.ru * Password: password You can login to iRedAdmin with this account, login name is full email address. First mail user: * Username: postmaster@ekzorchikdom.ru * Password: password * SMTP/IMAP auth type: login * Connection security: STARTTLS or SSL/TLS You can login to webmail with this account, login name is full email address. * Enabled services: rsyslog postfix mysql nginx php8.1-fpm dovecot clamav-daemon amavis clamav-freshclam sogo memcached cron nftables SSL cert keys (size: 4096): - /etc/ssl/certs/iRedMail.crt - /etc/ssl/private/iRedMail.key Mail Storage: - Mailboxes: /var/vmail/vmail1 - Mailbox indexes: - Global sieve filters: /var/vmail/sieve - Backup scripts and backup copies: /var/vmail/backup MySQL: * Root user: root, Password: "712mbddr@" (without quotes) * Bind account (read-only): - Username: vmail, Password: AONLCdD83Hh4RUyG1m5pbirMHXvVHpcn * Vmail admin account (read-write): - Username: vmailadmin, Password: zmY48WFwDgyuEN3mW2zwFIc0I3q7fPkB * Config file: /etc/mysql/my.cnf * RC script: /etc/init.d/mysql Virtual Users: - /home/ekzorchik/iRedMail-1.6.3/samples/iredmail/iredmail.mysql - /home/ekzorchik/iRedMail-1.6.3/runtime/*.sql Backup MySQL database: * Script: /var/vmail/backup/backup_mysql.sh * See also: # crontab -l -u root Postfix: * Configuration files: - /etc/postfix - /etc/postfix/aliases - /etc/postfix/main.cf - /etc/postfix/master.cf * SQL/LDAP lookup config files: - /etc/postfix/mysql Dovecot: * Configuration files: - /etc/dovecot/dovecot.conf - /etc/dovecot/dovecot-ldap.conf (For OpenLDAP backend) - /etc/dovecot/dovecot-mysql.conf (For MySQL backend) - /etc/dovecot/dovecot-pgsql.conf (For PostgreSQL backend) - /etc/dovecot/dovecot-used-quota.conf (For real-time quota usage) - /etc/dovecot/dovecot-share-folder.conf (For IMAP sharing folder) * Syslog config file: - /etc/rsyslog.d/1-iredmail-dovecot.conf (present if rsyslog >= 8.x) * RC script: /etc/init.d/dovecot * Log files: - /var/log/dovecot/dovecot.log - /var/log/dovecot/sieve.log - /var/log/dovecot/lmtp.log - /var/log/dovecot/lda.log (present if rsyslog >= 8.x) - /var/log/dovecot/imap.log (present if rsyslog >= 8.x) - /var/log/dovecot/pop3.log (present if rsyslog >= 8.x) - /var/log/dovecot/sieve.log (present if rsyslog >= 8.x) * See also: - /var/vmail/sieve/dovecot.sieve - Logrotate config file: /etc/logrotate.d/dovecot Nginx: * Configuration files: - /etc/nginx/nginx.conf - /etc/nginx/sites-available/00-default.conf - /etc/nginx/sites-available/00-default-ssl.conf * Directories: - /etc/nginx - /var/www/html * See also: - /var/www/html/index.html php-fpm: * Configuration files: /etc/php/8.1/fpm/pool.d/www.conf PHP: * PHP config file for Nginx: * Disabled functions: posix_uname,eval,pcntl_wexitstatus,posix_getpwuid,xmlrpc_entity_decode,pcntl_wifstopped,pcntl_wifexited,pcntl_wifsignaled,phpAds_XmlRpc,pcntl_strerror,ftp_exec,pcntl_wtermsig,mysql_pconnect,proc_nice,pcntl_sigtimedwait,posix_kill,pcntl_sigprocmask,fput,phpinfo,system,phpAds_remoteInfo,ftp_login,inject_code,posix_mkfifo,highlight_file,escapeshellcmd,show_source,pcntl_wifcontinued,fp,pcntl_alarm,pcntl_wait,ini_alter,posix_setpgid,parse_ini_file,ftp_raw,pcntl_waitpid,pcntl_getpriority,ftp_connect,pcntl_signal_dispatch,pcntl_wstopsig,ini_restore,ftp_put,passthru,proc_terminate,posix_setsid,pcntl_signal,pcntl_setpriority,phpAds_xmlrpcEncode,pcntl_exec,ftp_nb_fput,ftp_get,phpAds_xmlrpcDecode,pcntl_sigwaitinfo,shell_exec,pcntl_get_last_error,ftp_rawlist,pcntl_fork,posix_setuid ClamAV: * Configuration files: - /etc/clamav/clamd.conf - /etc/clamav/freshclam.conf - /etc/logrotate.d/clamav * RC scripts: + /etc/init.d/clamav-daemon + /etc/init.d/clamav-freshclam Amavisd-new: * Configuration files: - /etc/amavis/conf.d/50-user - /etc/postfix/master.cf - /etc/postfix/main.cf * RC script: - /etc/init.d/amavis * SQL Database: - Database name: amavisd - Database user: amavisd - Database password: GSaB14IsuCten8S07r9BkXq7EvcQYvtB DNS record for DKIM support: ; key#1 2048 bits, s=dkim, d=ekzorchikdom.ru, /var/lib/dkim/ekzorchikdom.ru.pem dkim._domainkey.ekzorchikdom.ru. 3600 TXT ( "v=DKIM1; p=" "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArzgQ9cjqJtBiiDgKCVmJ" "TlWfbzS0ecey5CVUcSSyrG0dbeopjNJ+JZMfKIh35K8cHEOm/vY2/WF3Gzwos0zX" "/gMqqsR4PXHihFid4MenYDsXqdtwaKbCZiO9VBQVUaItcSYU2qRI8k47d8xOvMYU" "sH1yX7NInOJgB2F30aXela9ExS5zt3AsYiT+urGDuLI+1MzMIFvMOIBXtilYSrLj" "AM2LI/Od7kEvoFjAcCwYvRzPOidh/pkX504NaOhojRpnEEl7FlwTM6Up21C/ngdt" "6zphfHxogNINwthqMguVAlClq+wtx3oKxNkChwbHxkJ0xfvCSUT8790VToIRPvlM" "3wIDAQAB") SpamAssassin: * Configuration files and rules: - /etc/mail/spamassassin - /etc/mail/spamassassin/local.cf iRedAPD - Postfix Policy Server: * Version: 5.3 * Listen address: 127.0.0.1, port: 7777 * SQL database account: - Database name: iredapd - Username: iredapd - Password: 3v6AzPMtVFIUAKmY0oc6f8MGBudNBpst * Configuration file: - /opt/iredapd/settings.py * Related files: - /opt/iRedAPD-5.3 - /opt/iredapd (symbol link to /opt/iRedAPD-5.3 iRedAdmin - official web-based admin panel: * Version: 2.3 * Root directory: /opt/www/iRedAdmin-2.3 * Config file: /opt/www/iRedAdmin-2.3/settings.py * Web access: - URL: https://mail.ekzorchikdom.ru/iredadmin/ - Username: postmaster@ekzorchikdom.ru - Password: password * SQL database: - Database name: iredadmin - Username: iredadmin - Password: biAHnoo81W5eWmyDqCzQYunMIyXwu6kP Roundcube webmail: /opt/www/roundcubemail-1.6.1 * Config file: /opt/www/roundcubemail-1.6.1/config * Web access: - URL: http://mail.ekzorchikdom.ru/mail/ (will be redirected to https:// site) - URL: https://mail.ekzorchikdom.ru/mail/ (secure connection) - Username: postmaster@ekzorchikdom.ru - Password: password * SQL database account: - Database name: roundcubemail - Username: roundcube - Password: 4VLmVLv1c6et53PzzikRsoLJYbg1zSap * Cron job: - Command: "crontab -l -u root" SOGo Groupware: * Web access: httpS://mail.ekzorchikdom.ru/SOGo/ * Main config file: /etc/sogo/sogo.conf * Nginx template file: /etc/nginx/templates/sogo.tmpl * Database: - Database name: sogo - Database user: sogo - Database password: YkrAR5Ad1lraOYDzYkVxDF6zGpyNnoUH * SOGo sieve account (Warning: it's a Dovecot Master User): - file: /etc/sogo/sieve.cred - username: sogo_sieve_master@not-exist.com - password: 7GJYa44JcK1hVm2wVuEXt2emfjFJlCs1 * See also: - cron job of system user: sogo netdata (monitor): - Config files: - All config files: /opt/netdata/etc/netdata - Main config file: /opt/netdata/etc/netdata/netdata.conf - Modified modular config files: - /opt/netdata/etc/netdata/go.d - /opt/netdata/etc/netdata/python.d - HTTP auth file (if you need a new account to access netdata, please update this file with command like 'htpasswd' or edit manually): - /etc/nginx/netdata.users - Log directory: /opt/netdata/var/log/netdata - SQL: - Username: netdata - Password: 0hdbsUkGBgQ4$Mobpxkw8AUrKaC07e5W - NOTE: No database required by netdata. ekzorchik@mail:~$
Шаг №6:
Проверяю, что службы подняты: dovecot, postfix:
ekzorchik@mail:~$ sudo systemctl status dovecot | head -n5 ● dovecot.service - Dovecot IMAP/POP3 email server Loaded: loaded (/lib/systemd/system/dovecot.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2023-06-23 08:56:58 UTC; 2min 55s ago Docs: man:dovecot(1) https://doc.dovecot.org/ ekzorchik@mail:~$ sudo systemctl status postfix | head -n5 ● postfix.service - Postfix Mail Transport Agent Loaded: loaded (/lib/systemd/system/postfix.service; enabled; vendor preset: enabled) Active: active (exited) since Fri 2023-06-23 08:57:28 UTC; 2min 32s ago Docs: man:postfix(1) Process: 1912 ExecStart=/bin/true (code=exited, status=0/SUCCESS) ekzorchik@mail:~$
Шаг №7:
Открываю Web
—интерфейс администрирования:
* Web access:
- URL: https://mail.ekzorchikdom.ru/iredadmin/
- Username: postmaster@ekzorchikdom.ru
- Password: password
Браузер Google Chrome: URL: https://mail.ekzorchikdom.ru/iredadmin/ - Дополнительные - Перейти на сайт mail.ekzorchikdom.ru (небезопасно)
Авторизуюсь с Административными учетными данными:
Username: postmaster@ekzorchikdom.ru
Password: password
и нажимаю Login
Вижу привычный Web
-интерфейс Администрирования своим почтовым сервером
Шаг №8:
Создаю пользователя
alektest@ekzorchikdom.ru:
Pass: password
Шаг №9:
Пробую зайти в Web
—интерфейс почтового ящика alektest:
https://mail.ekzorchikdom.ru/mail/
и нажимаю "Войти"
успешно
Шаг №10:
Пробую отправить из Web
—интерфейса ящика alektest
письмо
и нажимаю "Отправить"
Шаг №11:
Проверяю ящик support@ekzorchik.com
и вижу письмо
инициирую ответ на него
и нажимаю "Отправить"
Шаг №12:
Проверяю ящик alektest@ekzorchikdom.ru
письма нет, смотрю логи
Jun 23 09:16:15 mail postfix/smtpd[2811]: NOQUEUE: reject: RCPT from mail.ekzorchik.com[2.57.186.62]: 451 4.7.1 <alektest@ekzorchikdom.ru>: Recipient address rejected: Intentional policy rejection, please try again later; from=<support@ekzorchik.com> to=<alektest@ekzorchikdom.ru> proto=ESMTP helo=<ekzorchik.com> Jun 23 09:16:15 mail postfix/smtpd[2811]: using backwards-compatible default setting smtpd_relay_before_recipient_restrictions=no to reject recipient "alektest@ekzorchikdom.ru" from client "mail.ekzorchik.com[2.57.186.62]" Jun 23 09:16:15 mail postfix/smtpd[2811]: disconnect from mail.ekzorchik.com[2.57.186.62] ehlo=2 starttls=1 mail=1 rcpt=0/1 data=0/1 rset=1 quit=1 commands=6/8
отключаю плагин Greylist
ekzorchik@mail:~$ sudo nano /opt/iredapd/settings.py # Enabled plugins. #plugins = ["reject_null_sender", "wblist_rdns", "reject_sender_login_mismatch", "greylisting", "throttle", "amavisd_wblist", "sql_alias_access_policy", "sql_ml_access_policy"] plugins = ["reject_null_sender", "wblist_rdns", "reject_sender_login_mismatch", "throttle", "amavisd_wblist", "sql_alias_access_policy", "sql_ml_access_policy"] ekzorchik@mail:~$ sudo systemctl restart iredapd.service
и после письмо успешно пришло
Шаг №13:
Устанавливаю SSL
сертификат от Let's Encrypt
, чтобы взаимодействие через Web
проходило только через https
и с "замочком":
ekzorchik@mail:~$ sudo apt-get install -y certbot ekzorchik@mail:~$ sudo certbot certonly --webroot --agree-tos --email support@ekzorchik.com -d mail.ekzorchikdom.ru -w /var/www/html/ Saving debug log to /var/log/letsencrypt/letsencrypt.log - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing, once your first certificate is successfully issued, to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y Account registered. Requesting a certificate for mail.ekzorchikdom.ru Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/mail.ekzorchikdom.ru/fullchain.pem Key is saved at: /etc/letsencrypt/live/mail.ekzorchikdom.ru/privkey.pem This certificate expires on 2023-09-21. These files will be updated when the certificate renews. Certbot has set up a scheduled task to automatically renew this certificate in the background. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - If you like Certbot, please consider supporting our work by: * Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate * Donating to EFF: https://eff.org/donate-le - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ekzorchik@mail:~$
Шаг №14:
Чтобы полученный сертификат от Let's Encrypt
обновлялся самостоятельно каждые 90
дней (по умолчанию) нужно:
sudo crontab -e # DO NOT EDIT THIS FILE - edit the master and reinstall. # (/tmp/crontab.LsX4s3/crontab installed on Fri Jun 23 09:32:24 2023) # (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $) 30 3 * * * /bin/bash /var/vmail/backup/backup_mysql.sh # iRedAPD: Clean up expired tracking records hourly. 1 * * * * python3 /opt/iredapd/tools/cleanup_db.py >/dev/null # iRedAPD: Convert SPF DNS record of specified domain names to IP # addresses/networks hourly. 2 * * * * python3 /opt/iredapd/tools/spf_to_greylist_whitelists.py >/dev/null # iRedMail: Cleanup Amavisd database 1 2 * * * python3 /opt/www/iredadmin/tools/cleanup_amavisd_db.py >/dev/null # iRedAdmin: Clean up sql database. 1 * * * * python3 /opt/www/iredadmin/tools/cleanup_db.py >/dev/null 2>&1 # iRedAdmin: Delete mailboxes on file system which belong to removed accounts. 1 * * * * python3 /opt/www/iredadmin/tools/delete_mailboxes.py # iRedMail: Cleanup Roundcube SQL database 2 2 * * * /usr/bin/php /opt/www/roundcubemail/bin/cleandb.sh >/dev/null # iRedMail: Cleanup Roundcube temporary files under 'temp/' directory 2 2 * * * /usr/bin/php /opt/www/roundcubemail/bin/gc.sh >/dev/null # iRedMail: Backup SOGo data databases on 04:01AM 1 4 * * * /bin/bash /var/vmail/backup/backup_sogo.sh @daily letsencrypt renew --quiet && systemctl reload postfix dovecot nginx
Шаг №15:
После получения сертификата TLS
, давайте сконфигурируем nginx:
ekzorchik@mail:~$ sudo nano /etc/nginx/templates/ssl.tmpl #ssl_certificate /etc/ssl/certs/iRedMail.crt; #ssl_certificate_key /etc/ssl/private/iRedMail.key; ssl_certificate /etc/letsencrypt/live/mail.ekzorchikdom.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/mail.ekzorchikdom.ru/privkey.pem; ekzorchik@mail:~$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful ekzorchik@mail:~$ sudo systemctl restart nginx.service
Шаг №16:
Проверяем что теперь доступ в Web
—интерфейс администрирования ("/iredadmin")
и Web
—интерфейс почтового ящика ("/mail")
идет исключительно через полученный сертификат от Let's Encrypted:
— ответ "Да"
, теперь вместо самоподписанного сертификата используется нормальный.
Шаг №17:
Формирую DKIM
запись и прописываю ее на DNS
—хостере:
либо через команду sudo amavisd-new showkeys
либо смотрим в cat ~/iRedMail-1.6.3/iRedMail.tips
ekzorchik@mail:~$ sudo amavisd-new showkeys ; key#1 2048 bits, s=dkim, d=ekzorchikdom.ru, /var/lib/dkim/ekzorchikdom.ru.pem dkim._domainkey.ekzorchikdom.ru. 3600 TXT ( "v=DKIM1; p=" "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArzgQ9cjqJtBiiDgKCVmJ" "TlWfbzS0ecey5CVUcSSyrG0dbeopjNJ+JZMfKIh35K8cHEOm/vY2/WF3Gzwos0zX" "/gMqqsR4PXHihFid4MenYDsXqdtwaKbCZiO9VBQVUaItcSYU2qRI8k47d8xOvMYU" "sH1yX7NInOJgB2F30aXela9ExS5zt3AsYiT+urGDuLI+1MzMIFvMOIBXtilYSrLj" "AM2LI/Od7kEvoFjAcCwYvRzPOidh/pkX504NaOhojRpnEEl7FlwTM6Up21C/ngdt" "6zphfHxogNINwthqMguVAlClq+wtx3oKxNkChwbHxkJ0xfvCSUT8790VToIRPvlM" "3wIDAQAB") ekzorchik@mail:~$
Т.к у меня VPS
куплена в AdminVPS
, то в личном кабинете создаю TXT
запись:
URL: https://my.adminvps.ru/login
Email-адрес:
Пароль:
и нажимаю "Войти" - Домены - DNS хостинг
— в текущем домене нажимаю "Редактировать"
— Нажимаю "Добавить запись"
Имя записи: dkim._domainkey.
Тип: TXT
TTL: 3600
Значение: вставляю после форматирования
v=DKIM1; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArzgQ9cjqJtBiiDgKCVmJTlWfbzS0ecey5CVUcSSyrG0dbeopjNJ+JZMfKIh35K8cHEOm/vY2/WF3Gzwos0zX/gMqqsR4PXHihFid4MenYDsXqdtwaKbCZiO9VBQVUaItcSYU2qRI8k47d8xOvMYUsH1yX7NInOJgB2F30aXela9ExS5zt3AsYiT+urGDuLI+1MzMIFvMOIBXtilYSrLjAM2LI/Od7kEvoFjAcCwYvRzPOidh/pkX504NaOhojRpnEEl7FlwTM6Up21C/ngdt6zphfHxogNINwthqMguVAlClq+wtx3oKxNkChwbHxkJ0xfvCSUT8790VToIRPvlM3wIDAQAB
после нажимаю "Добавить запись", "Сохранить изменения".
Проверяем, что все правильно сделали:
ekzorchik@mail:~$ sudo amavisd-new testkeys TESTING#1 ekzorchikdom.ru: dkim._domainkey.ekzorchikdom.ru => invalid (public key: not available) ekzorchik@mail:~$ sudo amavisd-new testkeys TESTING#1 ekzorchikdom.ru: dkim._domainkey.ekzorchikdom.ru => pass ekzorchik@mail:~$
Шаг №18:
Формирую DMARC
запись и прописываю ее на DNS
—хостере:
DMARC
запись — отвечает за проверку подлинности отправителя. В настройках регистратора создадим новую запись:
Т.к у меня VPS
куплена в AdminVPS
, то в личном кабинете создаю TXT
запись:
URL: https://my.adminvps.ru/login
Email-адрес:
Пароль:
и нажимаю "Войти" - Домены - DNS хостинг
— в текущем домене нажимаю "Редактировать"
— Нажимаю "Добавить запись"
Имя записи: dkim._domainkey.
Тип: TXT
TTL: 3600
Значение: v=DMARC1; p=none; pct=100; rua=mailto:dmarc-reports@ekzorchik.com
после нажимаю "Добавить запись", "Сохранить изменения".
Шаг №19:
Реализуем схему подключения к почтовому серверу через почтовые клиенты, как на домене @ekzorchik.com:
IMAP:
ekzorchik.com
993
SSL/TLS
SMTP:
ekzorchik.com
465
SSL/TLS
ekzorchik@mail:~$ sudo nano /etc/postfix/main.cf #smtpd_tls_key_file = /etc/ssl/private/iRedMail.key #smtpd_tls_cert_file = /etc/ssl/certs/iRedMail.crt #smtpd_tls_CAfile = /etc/ssl/certs/iRedMail.crt smtpd_tls_key_file = /etc/letsencrypt/live/mail.ekzorchikdom.ru/privkey.pem smtpd_tls_cert_file = /etc/letsencrypt/live/mail.ekzorchikdom.ru/cert.pem smtpd_tls_CAfile = /etc/letsencrypt/live/mail.ekzorchikdom.ru/chain.pem smtpd_tls_CApath = /etc/ssl/certs ekzorchik@mail:~$ sudo nano /etc/postfix/master.cf 465 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 -o smtpd_sasl_type=dovecot -o content_filter=smtp-amavis:[127.0.0.1]:10026 ekzorchik@mail:~$ sudo postconf ekzorchik@mail:~$ sudo systemctl restart postfix
Шаг №20:
Закрываю порты надстройкой над iptables - firewalld:
ekzorchik@mail:~$ sudo apt-get install net-tools -y ekzorchik@mail:~$ apt-cache show firewalld | grep Version Version: 1.1.1-1ubuntu1 ekzorchik@mail:~$ sudo apt-get install -y firewalld ekzorchik@mail:~$ sudo ufw disable Firewall stopped and disabled on system startup ekzorchik@mail:~$ sudo systemctl enable firewalld ekzorchik@mail:~$ sudo systemctl start firewalld ekzorchik@mail:~$ ip r | awk '{print $5}' | head -n1 eth0 ekzorchik@mail:~$ sudo firewall-cmd --zone=public --change-interface=eth0 --permanent success ekzorchik@mail:~$ sudo firewall-cmd --add-port=25/tcp --permanent success ekzorchik@mail:~$ sudo firewall-cmd --add-port=80/tcp --permanent success ekzorchik@mail:~$ sudo firewall-cmd --add-port=993/tcp --permanent success ekzorchik@mail:~$ sudo firewall-cmd --add-port=465/tcp --permanent success ekzorchik@mail:~$ sudo firewall-cmd --add-port=443/tcp --permanent success ekzorchik@mail:~$ sudo firewall-cmd --add-port=33222/tcp --permanent success ekzorchik@mail:~$ sudo firewall-cmd --zone=public --remove-service=ssh --permanent success ekzorchik@mail:~$ sudo firewall-cmd --reload success ekzorchik@mail:~$ ekzorchik@mail:~$ sudo firewall-cmd --zone=public --list-all public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client ports: 25/tcp 80/tcp 993/tcp 465/tcp 443/tcp 33222/tcp protocols: forward: yes masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: ekzorchik@mail:~$
Отлично, теперь наружу, т.е. в интернет смотрят лишь те сервисы функционал которых задействуется, в моем случае это функционал почтового сервера.
Итого: Почтовый сервер на VPS
успешно развернут, личный почтовый сервер — процесс не сложен, ну это когда все уже разобрано от и до и написана на основе задачи заметка. Теперь нужно рассмотреть, как прикрутить антивирусную защиту, об этом будет отдельная заметка.
А пока собственно все, с уважением автор блога Олло Александр aka ekzorchik.