Linux
  • << DEBIAN >>

  •   Сървър на отделни хостове
  •     DNS Сървър
  •     SQL Сървър
  •     WEB Сървър
  •     Пощенски Сървър
  •   PXE Server
  •   PXE UEFI Server - TFTP
  •   Debian 9
  •     Инсталиране на Debian 9
  •     Първоначални настройки (мрежа, VIM, Кирилизация)
  •     Инсталиране и настройка на SSH
  •     Инсталиране и настройка на DNS
  •     Инсталиране и настройка на NTP
  •     Инсталиране и настройка на Apache
  •     Инсталиране и настройка на MySQL (MariaDB)
  •     Инсталиране и настройка на PHPMyAdmin
  •     Инсталиране и настройка на собствен облак
  •     Инсталиране и настройка на SAMBA
  •     Инсталиране и настройка на FTP сървър
  •     Инсталиране и настройка на OSCAM
  •     Инсталиране и настройка на Mail server
  •       Първоначално конфигуриране на базата данни
  •       Инсталиране и конфигуриране на PostFix
  •       Инсталиране и конфигуриране на Dovecot
  •       PostFix дефинира Dovecot да удостоверява
  •       RoundCube
  •       Тестване доставката на поща
  •       Създаване на TLS криптиран ключ и сертификат
  •       WEB администриране
  •       Антиспам със SpamAssassin
  •       Антиспам с RSpmad
  •   Debian 11
  •     Как зарежда Linux
  •     Разпределение на диска при BIOS и UEFI
  •     Debian 11 на BIOS върху LVM и RAID
  •     Инсталиране на Debian 11 на BIOS и ZFS
  •     Инсталиране на Debian 11 на BIOS и ZFS-1
  •     Инсталиране на Debian 11 на UEFI и ZFS
  •     ZFS Замяна на развален огледален диск
  •     Ремонт на GRUB и INITRAMFS
  •   Debian 12
  •     Първоначални настройки
  •     DNS Сървър
  •     Добавяне на втори диск
  •     Файлов сървър + WEBMIN
  •     SAMBA
  •     Инсталиране и настройка на Apache
  •     Инсталиране и настройка на Nginx
  •     MySQL и PHPMyAdmin
  •     Елементарен MAIL сървър
  •       Подобрение SSL/TLS, Maildir, LMTP
  •       Подобрение ВИРТУАЛИЗАЦИЯ без MySQL
  •       Подобрение ВИРТУАЛИЗАЦИЯ и MySQL
  •       Подобрение Антиспам - SpamAssasin
  •       Подобрение Антиспам - RSpamd
  •       Защита - SPF, DKIM и DMARK
  •       Подобрение Антивирус
  •     Пълноценен MAIL сървър
  •     Пощенски сървър с iRedMail и PHPMyAdmin
  •       DKIM, SPF и DMARK
  •     MAIL сървър за вътрешна мрежа
  •     NextCloud
  •     Сървър за отдалечен достъп - RustDESK
  • << UBUNTU >>
  •   Ubuntu SERVER 22.04
  •     Инсталиране на Ubuntu 22.04 Server
  •     Първоначални настройки на Ubuntu 22.04 Server
  •     DNS в Ubuntu 22.04 Server
  •     MySQL Apache PHPMyAdmin
  •     Пощенски сървър
  •       Пощенски сървър в опростен вариант
  •       PostFix, Dovecot по-подробно
  •   Ubuntu mini
  • << RAID >>
  •     BIOS RAID1+MSDOS
  •     BIOS RAID1+MSDOS+LVM
  •     UEFI RAID1
  • << BTRFS >>
  •     BTRFS - създаване монтиране fstab размер
  •     BTRFS - RAID
  •     BTRFS - subvolume и snapshot
  • << КОНТЕЙНЕРИ >>
  •     Инсталиране на LXC/LXD
  •     Образи (image) в LXC/LXD
  •     Контейнери в LXC/LXD
  •     Команди в LXC/LXD
  • << ОТСТРАНЯВАНЕ НА ГРЕШКИ >>
  •     SWAP
  •     InitRAMFs
  • Инсталиране и конфигуриране на PostFix

    Инсталиране и конфигуриране на Postfix

    Инсталираме PostFix от репозиторите.

    # apt-get install postfix


    Pic01
    Pic02

    Избераме Internet Sait


    Pic03

    Независимо, че избрахме mail name да е home.tlan.net, това не е от значение, защото тука хост името и домейн името няма да се присъединяват към пощенския домейн. Пощенския домейн и адресите ще се дефинират в MySQL базата. Горе казаното не е точно така. За пояснение: - домейна ни е home.tlan.net. - хоста също се казва по пълно име (FQDN) home.tlan.net. И тъй като си съпадат това е проблем. Реално би трябвало FQDN да е home.home.tlan.net. Нарочно сега ще оставим нещата така. На по-късен етап когато проверяваме правилността на работа на PostFix ще изясним нещата.


    Postfix взема данни от MySQL

    За да може да работи Postfix заедно с MySQL е нужна приставка към Postfix която ще инсталираме сега

    # apt-get install postfix-mysql

    Самата инсталация протича много бързо. В Postfix има два основни конфигуриращи файла. Това са /etc/postfix/main.cf и /etc/postfix/master.cf. Първото нещо е да направим копие на оригиналните файлове

    # cp /etc/postfix/main.cf /etc/postfix/main.cf.original # cp /etc/postfix/master.cf /etc/postfix/master.cf.original

    Особено важен файл за връзката Postfix-MySQL е /etc/postfix/main.cf. Малко отклонение: В гореспоменатия файл ще има много променливи но обърнете внимание на virtual_mailbox_domains, virtual_mailbox_maps и virtual_alias_maps. Тези променливи ще извикват други конфигурационни файлове в които ще е описана комуникацията с MySQL. Сложно малко но като създадем файловете ще стане ясно. Има два подхода за коригиране на /etc/postfix/main.cf. Единия е редакция чрез текстов редактор (примерно vi) и другия е чрез команди писани в терминал и те да попълват файла. За малко разнообразие и повишаване на знанията ще възприемем втория


    Виртуални домейни.


    # postconf virtual_mailbox_domains=mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf

    Тази команда записа конфигурационен ред във файла /etc/postfix/main.cf, където се каза: - Postfix ще приеме данни за виртуалните домейни от базата на MySQL, където името на базата , потребителя който ще борави с тази база ще се опишат във файла /etc/postfix/mysql-virtual-mailbox-domains.cf. Това налага създаването и на самия файл

    # vi /etc/postfix/mysql-virtual-mailbox-domains.cf user = pfuser password = pfpass hosts = 127.0.0.1 dbname = pfdb query = SELECT 1 FROM virtual_domains WHERE name='%s'

    Няколко думи за файла. Дефинирахме потребителя pfuser с парола pfpass който се подвизава на хост 127.0.0.1 ще борави с базата pfdb и ще изпълни заявка към MySQL. Резултата от тази заявка ще е 1. Веднага проверка за верността на гореказаното. Не забравяйте, че всяка промяна по конфигурационните файлове на Postfix влизат в действие след рестарт на услугата Postfix.

    # /etc/init.d/postfix restart # /etc/init.d/postfix status

    Няма грешки , продължаваме с теста


    # postmap -q home.tachko.com mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf 1


    # postmap -q home.tlan.net mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf 1

    Прекрасно всичко работи. Отново отклонение: От лакомия да е шарено и красиво, настроих си vim редактора с много екстри. Сложих в него добавки които слагаха скрити символи в конфигурационните файлове. Та доста дни изгубих докато си открия грешката. Стъпките ми бяха следните. - Проверка на файла mysql-virtual-mailbox-domains.cf. Макар, че точно там бяха грешките но невидими, аз се съгласявах, че потребителя, паролата, хоста, базата и заявката са с правилен синтаксис. - Щом синтаксиса е верен остава да е в правата на потребителя към базата или грешки в данните в самата база. Затова имитирах, че аз съм Postfix и изпълнявах стъпка по стъпка което той щеше да прави, а именно: Логвах се с потребителя pfuser дефиниран във файла към базата pfdb указана също във файла

    # mysql -u pfuser -h 127.0.0.1 -p Enter password: pfpass


    Сменях базата да е pfdb

    MariaDB [(none)]> use pfdb; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A
    Database changed


    Изпълнявах заявката от файла към MySQL

    MariaDB [pfdb]> SELECT 1 FROM virtual_domains WHERE name='home.tlan.net'; 1 1 1 row in set (0.00 sec)

    В случая само заменях %s с home.tachko.com Всичко това показваше, че логиката е правилна и работи вярно, но скритите символи във файла mysql-virtual-mailbox-domains.cf караха Postfix да се бърка. Правата на потребителя който се мъчи да се свърже към MySQL са органични. Забърсах конфигурационния файл, написах го на ръка внимателно и всичко се оправи.


    Виртуални пощенски кутии


    # postconf virtual_mailbox_maps=mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf

    Отново въведохме конфигурационен ред в /etc/postfix/main.cf където указахме, че чрез файла /etc/postfix/mysql-virtual-mailbox-maps.cf ще се търсят виртуалните пощенски кутии в базата на MySQL. Създаваме и самия файл

    # vi /etc/postfix/mysql-virtual-mailbox-maps.cf user = pfuser password = pfpass hosts = 127.0.0.1 dbname = pfdb query = SELECT 1 FROM virtual_users WHERE email='%s'


    И отново да проверим как работи конфигурационния файл

    # postmap -q tachko@home.tlan.net mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf 1

    Прекрасно и това работи


    Виртуални псевдоними.


    # postconf virtual_alias_maps=mysql:/etc/postfix/mysql-virtual-alias-maps.cf # vi /etc/postfix/mysql-virtual-alias-maps.cf user = pfuser password = pfpass hosts = 127.0.0.1 dbname = pfdb query = SELECT destination FROM virtual_aliases WHERE source='%s'


    И проба

    # postmap -q tit@home.tlan.net mysql:/etc/postfix/mysql-virtual-alias-maps.cf tachko@home.tlan.net

    Правилно tit@home.tlan.net пренасочва към tachko@home.tlan.net Има обаче един много важен момент. Примерно решавате всичко което идва до @home.tlan.net да се препраща до tachko@home.tlan.net. До тука добре. Това ще се изпълни, но тъй като @home.tlan.net е специфичен псевдоним той е с най-висок приоритет и това ще спре на практика пощата до другите потребители и само tachko@home.tlan.net ще получава поща. За да се избегне това се прави трик. Описват се в алиасите потребителите да получават поща до себе си

    Адрес Дестинация
    @home.tachko.com tachko@home.tlan.net
    tit@home.tlan.net tit@home.tlan.net

    Поради всичко това е нужно да създадем още един конфигурационен ред в /etc/postfix/main.cf., той на практика ще препокрие горният, който създадохме за виртуалните псевдоними.

    # postconf virtual_alias_maps=mysql:/etc/postfix/mysql-virtual-alias-maps.cf,mysql:/etc/postfix/mysql-email2email.cf


    Съответно се налага да създадете още един файл

    # vi /etc/postfix/mysql-email2email.cf user = pfuser password = pfpass hosts = 127.0.0.1 dbname = pfdb query = SELECT email FROM virtual_users WHERE email='%s'


    Тест към този файл.

    # postmap -q tit@home.tlan.net mysql:/etc/postfix/mysql-email2email.cf tit@home.tlan.net


    Проверяваме кой има право да чете файловете които създадохме

    # ls -l /etc/postfix/mysql-* -rw-r--r-- 1 root root 121 Apr 24 23:08 /etc/postfix/mysql-email2email.cf -rw-r--r-- 1 root root 130 Apr 24 23:08 /etc/postfix/mysql-virtual-alias-maps.cf -rw-r--r-- 1 root root 118 Apr 24 23:06 /etc/postfix/mysql-virtual-mailbox-domains.cf -rw-r--r-- 1 root root 117 Apr 24 23:07 /etc/postfix/mysql-virtual-mailbox-maps.cf


    Тези файлове трябва да могат да се четат само от root и postfix потребители, все пак паролата на базата данни е тука.

    # chgrp postfix /etc/postfix/mysql-*.cf # chmod u=rw,g=r,o= /etc/postfix/mysql-*.cf # ls -l /etc/postfix/mysql-* -rw-r----- 1 root postfix 121 Apr 24 23:08 /etc/postfix/mysql-email2email.cf -rw-r----- 1 root postfix 130 Apr 24 23:08 /etc/postfix/mysql-virtual-alias-maps.cf -rw-r----- 1 root postfix 118 Apr 24 23:06 /etc/postfix/mysql-virtual-mailbox-domains.cf -rw-r----- 1 root postfix 117 Apr 24 23:07 /etc/postfix/mysql-virtual-mailbox-maps.cf


    Разположение на пощенските кутии


    Следващия момент е разположението на пощенските кутии. Добра практика е да са на отделен дял. Когато инсталирахме Debian, папката /home беше създадена на отделен дял именно с такава цел. Така, че сега е нормално пощата да се разположи в /home/vmail. В бъдеще това ще позволи да се сложи много голям отделен диск и там да се складира цялата поща (ако има много поща). Така дяла /home на практика ще бъде отделен диск. Щом ще има домашна папка за електронната поща то трябва да има и собственик на тази папка. Собсвеника ще се казва vmail и ще е член на групата vmail

    # groupadd -g 5000 vmail

    До тука създадохме група vmail с GID 5000


    # useradd -g vmail -u 5000 vmail -d /home/vmail -m

    В групата vmail присъединихме потребител vmail с UID 5000 който е собственик на /home/vmail.

    Параметъра –m пък създаде папката /home/vmail


    Проверка на това което създадохме

    # groups vmail vmail : vmail

    Има създаден потребител и група vmail


    # ls -ld /home/vmail/ drwxr-xr-x 2 vmail vmail 4096 Apr 14 15:33 /home/vmail/

    Има създадена директория /home/vmail/ която е собственост на потребителя vmail който пък е член на групата vmail. Потребителя има пълни права върху директорията.


    # id vmail uid=5000(vmail) gid=5000(vmail) groups=5000(vmail)


    Ако не бяхме създали автоматично папката /home/vamil, то можеше всичко това да се направи после стъпка по стъпка

    # mkdir -p /home/vmail/ # chown -R vmail:vmail /home/vmail/ # chmod -R 0700 /home/vmail/


    Но това за сега не се налага. От чисто любопитство да надникнем в самия конфигурационен файл

    # vi /etc/postfix/main.cf


    Най отдолу съдържа следното

    virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf,mysql:/etc/postfix/mysql-email2email.cf


    За сега приключваме с PostFix. Следва да се забавляваме с Dovecot