Linux
  • << DEBIAN >>
  •   < 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 Сървър
  •     DNS Практика
  •     Инсталиране и настройка на Apache
  •     MySQL и PHPMyAdmin
  •     Елементарен MAIL сървър
  •       Първо надграждане на MAIL сървъра
  •     Инсталиране и настройка на пощенски сървър
  •     Пощенски сървър с iRedMail и PHPMyAdmin
  •     WEB сървър с Nginx
  •   Сървър на отделни хостове
  •     DNS Сървър
  •     SQL Сървър
  •     WEB Сървър
  •     Пощенски Сървър
  •   PXE Server
  •   PXE UEFI Server - TFTP
  •   Сървър за отдалечен достъп - 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
  •   Ubuntu BUDGIE
  •     Инсталиране Ubuntu BUDGIE
  •     Първоначални настройки на Ubuntu BUDGIE
  •     Ubuntu BUDGIE като MAC OS
  •     Приложения за Ubuntu BUDGIE
  • GNOME работна среда
  •   Ubuntu GNOME
  •     Инсталиране на Ubuntu 21.04 GNOME
  •     Ubuntu 21.04 GNOME като MacOS
  • XFCE работна среда
  •   Debian - Install XFCE
  •     Debian XFCE - допълнение
  •     Debian XFCE като MacOS
  •   Ubuntu - Install XFCE
  •     Ubuntu XFCE - допълнение
  •     Ubuntu XFCE като MacOS
  • МАТЕ работна среда
  •   Debian - Install MATE
  •     Настройка на Debian MATE
  • PROGRAMS
  •   Conky
  •   Sublime Text
  • Пренасочване със SMTP удостоверяване

    Входяща поща

    Когато някой праща писмо от интернет, примерно john@example.org писмото ще се достави по протокола SMTP до нашия сървър. Нашия сървър одобрява example.org и приема писмото. John се връзва към нашия сървър и чрез протоколите POP3 или IMAP си получава писмото.

    Pic01

    Изходяща поща без удостоверение

    Приемаме, че John някъде в интернет изпраща съобщение до lisa@example.org. Нашия сървър не носи отговорност за домейна example.org. Просто не може да се опишат всички домейни в сървъра ни, и така тя ще получи писмото. Но представете си че сме указали на нашия сървър John да използва forward услугата до всички (примерно е маркетинг и автоматично праща реклами до всички). Това ще накара lisa@example.org също да получи тези реклами. Това за нея обаче е спам. По този начин работят хакерите(спамъри). Изпращат милиони съобщения от името на John и когато не е удостоверен няма как да се докаже , че писмото не е от John.

    Pic02

    Изходяща поща с удостоверение

    С удостоверяване на SMTP, John може да докаже своята идентичност. Това е както в първия случай но тогава John праща потребителското си име и парола. Разбира се всичко това се случва след като се уверим, че минава през криптирана връзка.

    Pic03

    mynetworks

    В допънение към използването на SMTP, може да се укаже на Postfix, от кои мрежи да обработва електронната поща. Самата променлива се намира в /etc/postfix/main.cf и съдържа набор от IP адреси и мрежи на които има доверие сървъра. Обикновено тук се указва локалната мрежа ако се ползва пощенски клиент по клиентските компютри, и същите компютри работят в локалната мрежа. Ако потребителя ползва само WEB пощенски клиент , работещ на пощенския сървър (примерно RoundCube) то mynetworks трябва да изглежда така mynetworks = localhost.


    Дефиниране на Postfix да използва Dovecot за удостоверяване

    Да се идентифицира SMTP с Postfix е малко остаряло понятие. Това се правеше, чрез SASL (Simple Authentication и Layer Security) библиотека, която е била част от Cyrus пощенски сървър. Така на практика е почти невъзможно да се проверяват грешки. В сегашно време Postfix иска от сървъра Dovecot за проверка на потребителското име и парола. Това просто трябва да се укаже в Postfix. В случая ще го изпълним с команди от конзолата, но може и да се редактира /etc/postfix/main.cf

    # postconf smtpd_sasl_type=dovecot # postconf smtpd_sasl_path=private/auth # postconf smtpd_sasl_auth_enable=yes

    Това позволява SMTP удостоверяване и задължава Postfix да ползва Dovecot, използвайки сокета /var/spool/postfix/private/auth. Трябва да си спомняте, че Postfix работеше в sandboxd chroot директория. Така дефинирахме Dovecot да сложи socket в директорията, за да може от там Postfix да комуникира.


    Активиране на криптацията

    Следните настройки позволяват криптиране (ключ и сертификат)

    # postconf smtpd_tls_security_level=may # postconf smtpd_tls_auth_only=yes # postconf smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem # postconf smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

    Последните два реда съществуват при инсталацията и няма смисъл да се правят. В по-предни версии бе необходимо да се ползва smtpd_recipient_restrictions за ограничение на нерегистрирани потребители. В новата версия на Postfix (Jessie 2.11) има по-добри настройки по подразбиране. Postfix предлага настройките smtpd_relay_restrictions. mtpd_tls_security_level е настроен в режим may (може), за да позволи криптирана комуникация, когато Postfix получава поща. Параметъра smtpd_tls_auth_only=yes следи да не би случайно или поради незнание потребителите да пратят паролите си по интернет не криптирано. Едно малко отклонение. В случая ползваме сертификат и ключ които се генерират с инсталацията на Debian. Продължителността им на валидация е малка, затова на по-късен етап ще генрираме нови и ще ги заменим.


    Как работи SMTP удостоверяването

    За да проверим работата ще ползваме telnet, който трябва да го инсталираме

    # apt-get install telnet


    Сега и самата проба

    # telnet localhost smtp Trying ::1... Connected to localhost. Escape character is '^]'. 220 home.tlan.net ESMTP Postfix (Debian/GNU) ehlo home.tlan.net 250-home.tlan.net 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN quit 221 2.0.0 Bye Connection closed by foreign host.

    250-home.tlan.net

    250-PIPELINING - Функция за ускоряване на SMTP комуникацията. Това позволява на отдалечените сървъри да изпращат заявки без да чакат отговор. Postfix просто ще съхрани тези команди и ще ги изпълни една по една. Тази функция се изключва предимно за защита от спам атаки. 250-SIZE 10240000 - Отдалечения сървър може да праща пощи максиму 10МБ. 250-VRFY - Позволява на отдалечени сървъри да проверят даден мейл адрес. Примерно отдалечения сървър запитва „VRFY tachko“ и нашия да отговори „250 John Doe 250-ETRN - Команда която отдалечения сървър може да изпрати на Postfix за промиване на опашката от съобщения за определен домейн. 250-STARTTLS - Казва на отдалечената система да премине от не криптирана на криптирана връзка с изпращане на “StartTLS” команда. Предимството е, че може SMTP да работи криптирано на ТСР порт 25 и не трябва да се отваря втори порт като ТСР 465 (SSMTP). 250-ENHANCEDSTATUSCODES - Дава възможност на повече трицифрени кодове на връщане за различни условия 250-8BITMIME - Много отдавна SMTP обработваше само 7 битови символи. Вече може да се прехвърлят специални символи без специално кодиране. Тази опция позволява предаване на 8 битови символи. Все още много мейли ползват кодиране ISO8859-1 или UTF-8 250 DSN - Позволява на подателя да котролира съобщенията които Postfix създава, когато мейла не може да бъде доставен по предназначение. 250-AUTH PLAN LOGIN – липсва. Казахме на Postfix да удостоверява само когато връзката е криптирана. Затова удостоверяване в прав (некриптиран) текст не се позволява. След всички тези пояснения да се върнем на терминала и да видим дали още сме свързани, ако не сме правим нова връзка

    # telnet localhost smtp Trying ::1... Connected to localhost. Escape character is '^]'. 220 home.tlan.net ESMTP Postfix (Debian/GNU) ehlo home.tlan.net 250-home.tlan.net 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN starttls 220 2.0.0 Ready to start TLS quit Connection closed by foreign host.

    На практика вече SMTP комуникира криптирано и ще трябва да пишем криптирани команди които ние не владеем. За целта използваме нова команда за тест

    # openssl s_client -connect localhost:25 -starttls smtp Появяват се много символи и накрая въвеждаме: ehlo home.tlan.net Резултата е следния: 250-home.tlan.net 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-AUTH PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN И сега трябва да се напише криптиран код AUTH PLAIN am9obkBleGFtcGxlLm9yZwBqb2huQGV4YW1wbGUub3JnAHN1bW1lcnN1bg == 501 5.5.4 Syntax: AUTH mechanism quit 221 2.0.0 Bye closed

    Кода не е верен защото егенериран за домейна example.com а ние сме с home.tlan.net.


    Генериране на 64 битова декодираща парола

    # perl -MMIME::Base64 -e 'print encode_base64("tachko\@home.tlan.net\0tachko\@home.tlan.net\0Iceman")'; dGFjaGtvQGhvbWUudGxhbi5uZXQAdGFjaGtvQGhvbWUudGxhbi5uZXQASWNlbWFu


    И пак да пробваме

    # openssl s_client -connect localhost:25 -starttls smtp ............................. 250 DSN ehlo home.tlan.net Резултата е следния: 250-home.tlan.net 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250-AUTH PLAIN LOGIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN atth 502 5.5.2 Error: command not recognized auth plain dGFjaGtvQGhvbWUudGxhbi5uZXQAdGFjaGtvQGhvbWUudGxhbi5uZXQASWNlbWFu 235 2.7.0 Authentication successful quit 221 2.0.0 Bye closed

    Работи прекрасно, продължаваме

    Портове за подаване

    Тук идеята е да се ползва порт 25 за транспортиране на имейла (МТА) от сървър до сървър и порт 587 (MSA) за имейл от един потребител към сървъра за електронна поща. Тъй като много потребители все още ползват SMTP по подразбиране то ще трябва да са активни и двата порта. За целта ще редактираме файла

    # vi /etc/postfix/master.cf # # Postfix master process configuration file. For details on the format # of the file, see the master(5) manual page (command: "man 5 master" or # on-line: http://www.postfix.org/master.5.html). # # Do not forget to execute "postfix reload" after editing this file. # # ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (no) (never) (100) # ========================================================================== smtp inet n - y - - smtpd #smtp inet n - y - 1 postscreen #smtpd pass - - y - - smtpd #dnsblog unix - - y - 0 dnsblog #tlsproxy unix - - y - 0 tlsproxy #submission inet n - y - - smtpd submission inet n - - - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth -o smtpd_sasl_security_options=noanonymous -o smtpd_sender_login_maps=mysql:/etc/postfix/mysql-email2email.cf -o smtpd_sender_restrictions=reject_sender_login_mismatch -o smtpd_sasl_local_domain=$myhostname -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_recipient_restrictions=reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_sasl_authenticated,reject # -o syslog_name=postfix/submission # -o smtpd_tls_security_level=encrypt # -o smtpd_sasl_auth_enable=yes # -o smtpd_reject_unlisted_recipient=no # -o smtpd_client_restrictions=$mua_client_restrictions # -o smtpd_helo_restrictions=$mua_helo_restrictions

    По принцип тази нова услуга ползва “smtpd” демона, който е част от софтуера и реагира ако се отвори SMTP връзка на порт 25. С въведените промени сложихме допълнителни опции. - в /var/log/mail.log се маркират връзките към порта за подаване, както е /postfix/submission/smtpd (syslog) - налагаме криптиране на този порт (ниво на сигурност) - налагаме идентификация на потребителя (SASL) - уверяваме се , че само заверен потребител може да изпрати имейл от свое име (sender_login_maps) След промените рестартираме Postfix

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

    Всичко е наред .

    Защита срещу фалшиви адреси на подателя

    Обърнете внимание на горната строфа която въведохме

    -o smtpd_sender_login_maps=mysql:/etc/postfix/mysql-email2email.cf

    Това изисква: - адреса на подателя - потребителско име което се ползва за проверка на достоверността на сървъра за електронна поща. В самия файл /etc/postfix/mysql-email2email.cf заявката на MySQL беще SELECT email FROM virtual_users WHERE email='%s'

    Така потребителя когато иска да предава пощи, Postfix проверява virtual_users таблицата и търси адреса на подателя. Ако не го намери в таблицата ще върне отговор “reject” Следва WEB интерфейса на пощенския сървър