Содержание

Службы и программы

Postfix + Dovecot + RoundCube (Fedora 43)

Цель - запустить почтовый сервер со следующими возможностями:

В основном, отсюда

Установка:

dnf install postfix dovecot

Создание пользователя и хранилища виртуальных доменов и пользователей:

useradd -d /var/lib/vmail --uid 20000 --shell /sbin/nologin vmail

Postfix (SMTP)

/etc/postfix/main.cf

Изменить:
Разрешить внешние соединения:

inet_interfaces = all

Оставить только ipv4:

inet_protocols = ipv4

Если параметр просто закомментировать, виртуальные домены работать не будут, т.к. Postfix использует значение по умолчанию:

mydestination =

Хранилища виртуальных доменов и пользователей:

home_mailbox = /var/lib/vmail/%d/%n/Maildir

Добавить:
Обратная DNS запись для текущего внешнего реального IP адреса. Т.к. используется динамический адрес, то используется скрипт для замены обратного адреса в main.cf после смены IP. Данная опция необязательна:

rDNS = pat-31-128-130-116.pool.powernet.com.ru.
smtpd_banner = $rDNS ESMTP

Включение TLS/SSL:

smtpd_use_tls = yes
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache

Максимальный размер письма - 50 Мб:

message_size_limit = 51200000

Возможно, необязательные опции:

disable_vrfy_command = yes
smtpd_helo_required = yes

Включение SMTP аутентификации через dovecot:

# SMTP-Auth settings
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks, permit_auth_destination, permit_sasl_authenticated, reject

Виртуальные домены, ящики и алиасы:

# Virtual domains & mailboxes

Перечень виртуальных доменов:

virtual_mailbox_domains = homeserver.ok kochkin.mooo.com kochkin.tk

Хранилища виртуальных доменов и пользователей:

virtual_mailbox_base = /var/lib/vmail

Файл алиасов почтовых ящиков:

virtual_mailbox_maps = hash:/etc/postfix/virtual-mailbox

Файл алиасов доменов:

virtual_alias_maps = hash:/etc/postfix/virtual
virtual_uid_maps = static:20000
virtual_gid_maps = static:20000

/etc/postfix/master.cf

Раскоментировать:

submission inet n       -       n       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_sasl_auth_enable=yes

Добавить:

smtps     inet  n       -       n       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes

/etc/postfix/virtual

Основной домен: kochkin.tk, основной почтовый ящик: postmaster@kochkin.tk

# После правки, запустить:
# postmap /etc/postfix/virtual

# Алиасы для доменов
@homeserver.ok      @kochkin.tk
@kochkin.mooo.com   @kochkin.tk

# Почту ко всем неизвестным
@kochkin.tk      postmaster@kochkin.tk

/etc/postfix/virtual-mailbox

# create new
# user mailbox

postmaster@kochkin.tk   kochkin.tk/postmaster/Maildir/

# После правки запустить:
# postmap /etc/postfix/virtual-mailbox

/etc/postfix/postfix-rdns

#!/bin/bash

# Заменяет значение обратной DNS записи в конфигурации Postfix. Запускать после смены реального динамического IP.

CF=/etc/postfix/main.cf
Prev=$(postconf rDNS | cut -d" " -f3)
IP=$(curl --retry 10 --retry-delay 1 --retry-max-time 15 -s http://ifconfig.io)
if [[ $IP =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]];then
  Current=$(dig +short -x $IP)
  if [[ $Current != $Prev ]];then
    cp $CF $CF-$(date +%y%m%d-%H%M%S)
    echo "Change:"
    postconf rDNS
    sed -i "s/^rDNS = .*/rDNS = $Current/" $CF
    systemctl reload postfix
    echo "to:"
    postconf rDNS
  fi
fi

Dovecot (POP3, IMAP)

Устарело (конфиг версии 2.3.xx) /etc/dovecot/conf.d/10-auth.conf:
Закомментировать:

# !include auth-system.conf.ext

Раскомментировать:

!include auth-passwdfile.conf.ext
!include auth-static.conf.ext

/etc/dovecot/conf.d/10-mail.conf:
Изменить:

mail_location = maildir:/var/lib/vmail/%d/%n/Maildir

/etc/dovecot/conf.d/auth-static.conf.ext: Раскомментировать и указать путь к доменам/ящикам:

userdb {
  driver = static
  args = uid=vmail gid=vmail home=/var/lib/vmail/%d/%n
}

/etc/dovecot/dovecot.conf:
Раскомментировать и слушать только ipv4:

listen = *

/etc/dovecot/dovecot.conf версии 2.4.1-4

Забудьте все предыдущие конфиги для dovecot. С версии 2.4 всё изменилось и несовместимо с предыдущими версиями.

# doveadm config

# 2.4.1-4 (7d8c0e5759): /etc/dovecot/dovecot.conf
# OS: Linux 6.17.8-300.fc43.x86_64 x86_64 Fedora release 43 (Forty Three) 
# Hostname: homeserver.ok
dovecot_config_version = 2.4.1
dovecot_storage_version = 2.4.1
listen = *
mail_driver = maildir
mail_gid = vmail
mail_home = /var/lib/vmail/%{user|domain}/%{user|username}
mail_path = %{home}/Maildir
mail_uid = vmail
protocols {
  imap = yes
  lmtp = yes
  pop3 = yes
}
ssl = required
ssl_cipher_list = PROFILE=SYSTEM
namespace inbox {
  inbox = yes
  separator = /
}
ssl_server {
  cert_file = /etc/pki/dovecot/certs/dovecot.pem
  key_file = /etc/pki/dovecot/private/dovecot.pem
}
passdb passwd-file {
  passwd_file_path = /etc/dovecot/users
}
userdb static {
  fields {
    gid = vmail
    uid = vmail
  }
}
service auth {
  unix_listener /var/spool/postfix/private/auth {
    group = postfix
    mode = 0660
    user = postfix
  }
}

/etc/dovecot/users

# create new
# user:password

# Шифрование пароля
# doveadm pw -p PASWWORD -s CRYPT

postmaster@kochkin.tk:{CRYPT}$k7IB4KsvOJPzZu4o2y$05$yAh5nnVVI8tOsBL5jVGgNbOtlmYTyH8Cg02U.

Прочее

Запуск служб:

systemctl enable --now postfix dovecot

Сбор статистики:

dnf install postfix-perl-scripts
pflogsumm -d yesterday /var/log/maillog

RoundCube (WEB)

Создать MySQL базу «roundcube», пользователя «roundcube» с паролем «PASSWORD»:

mysql
create database roundcube;
grant all privileges on roundcube.* to roundcube@'localhost' identified by 'PASSWORD';
flush privileges;
\q

Установить RoundCube из реп, инициализировать базу MySQL и использовать примерный конфиг:

dnf install roundcubemail
mysql -u roundcube -D roundcube -p < /usr/share/roundcubemail/SQL/mysql.initial.sql
cp -p /etc/roundcubemail/config.inc.php.sample /etc/roundcubemail/config.inc.php

В /etc/roundcubemail/config.inc.php изменить параметры подключения к MySQL базе:

$config['db_dsnw'] = 'mysql://roundcube:PASSWORD@localhost/roundcube';

Настройки WEB сервера в /etc/httpd/conf.d/roundcube.conf для доступа только из локалки 192.168.1.0/24:

Alias /mail /usr/share/roundcubemail
<Directory /usr/share/roundcubemail/>
  Require ip 192.168.1.0/24
</Directory>

В основном, отсюда

Настройка почтового клиента POP3/SMTP Thunderbird 102

POP3:

SMTP:

HTTPS сертификаты Let's Encrypt на CentOS 7 (certbot,letsencrypt)

yum -y install certbot python-certbot-apache
certbot --apache

Ввести адрес электронной почты.
Подтвердить условия использования.
Желаете-ли получать рассылку на указанный адрес.

Предоставляется выбор доменов, которые найдены в конфигурации httpd:

1: kochkin.tk
2: www.kochkin.tk
3: kochkin.mooo.com

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

После чего будут получены сертификаты и в конфигурационные файлы httpd будут внесены измения для их использования. Также будет сделано перенаправление с http на https.
Для обновления сертификатов, включить системный таймер:

systemctl enable certbot-renew.timer

Отсюда и отсюда.

Просмотр сертификатов:

certbot certificates

Добавление домена к существующим:

certbot --expand -d kochkin.tk,kochkin.mooo.com,www.kochkin.tk,kochkin.us.to

Удаление доменов:

certbot delete

IPSET и IPTABLES (CentOS 7)

systemctl disable --now firewalld
dnf remove firewalld*
dnf install iptables-services ipset-service
systemctl enable --now ipset && systemctl enable --now iptables

Чтобы правила IPSET автоматически сохранялись в /etc/sysconfig/ipset при перезапуске или останове службы IPSET, необходимо добавить в файл /etc/sysconfig/ipset-config переменные:

IPSET_SAVE_ON_STOP=yes
IPSET_SAVE_ON_RESTART=yes

Предоставление шар по самбе.

В файле /etc/samba/smb.conf :

    [global]
    netbios name = lin-01             # Имя машины
    workgroup = workgroup             # Рабочая группа
    server string = lin-01            # Строка сервера
    security = share                  # Безовасность (свободный доступ)
    [share]                           # Название ресурса
    path=/media/disk_d/share          # Папка
    writable = yes                    # Запись разрешена
    guest ok = yes                    # Разрешён доступ гостю

Установка far2l - Far Manager для Linux в Fedora 38

dnf copr enable polter/far2l

Для графического окружения:

dnf install far2l

Для консоли:

dnf install far2l-tty

Одновременно друг с другом не живут.