Разберем настройку на базе операционной системы (далее - ОС) Ubuntu 20.04.
apt update
apt upgrade
hostnamectl set-hostname mail.fellk.ru
apt install chrony
timedatectl set-timezone Europe/Moscow
systemctl enable chrony
iptables -I INPUT 1 -p tcp --match multiport --dports 25,110,143,465,587,993,995 -j ACCEPT
iptables -I INPUT 1 -p tcp --match multiport --dports 80,443 -j ACCEPT
apt install iptables-persistent
netfilter-persistent save
apt install apache2
systemctl enable apache2Проверить работу сервера можно перейдя по ссылке http://10.0.1.18
Видите эту картинку?
Значит все супер, движемся дальше.
apt install php8.1 php8.1-fpm
systemctl enable php8.1-fpm
проверить версию можно так
php -v
apt install php8.1-mysql php8.1-mbstring php8.1-imap libapache2-mod-php8.1
systemctl restart php8.1-fpm
nano /var/www/html/index.php
вписываем в файл строку
<?php phpinfo(); ?>
Проверить работу можно перейдя по ссылке http://10.0.1.18/index.php
Видите эту картинку?
20230925-072123.png_nolink
Значит все супер, движемся дальше.
apt install mariadb-server
systemctl enable mariadb
Задаем пароль для пользователя root:
mysqladmin -u root password
wget https://sourceforge.net/projects/postfixadmin/files/latest/download -O postfixadmin.tar.gz
mkdir /var/www/html/postfixadmin
tar -C /var/www/html/postfixadmin -xvf postfixadmin.tar.gz --strip-components 1
mkdir /var/www/html/postfixadmin/templates_c
chown -R www-data:www-data /var/www/html/postfixadmin
mysql -u root -p
CREATE DATABASE fellk DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON fellk.* TO 'fellk'@'localhost' IDENTIFIED BY 'Ваш пароль';
quit;
nano /var/www/html/postfixadmin/config.local.php
И добавляем туда
<?php $CONF['configured'] = true; $CONF['default_language'] = 'ru'; $CONF['database_password'] = 'password123456'; $CONF['emailcheck_resolve_domain']='NO'; ?>В браузере вводим адрес http://10.0.1.18/postfixadmin/public/setup.php
Вставить ее необходимо в файл в самый низ до закрывающей скобки
nano /var/www/html/postfixadmin/config.local.php
Перезагружаем страницу http://10.0.1.18/postfixadmin/public/setup.php — появится форма ввода пароля. Как вы могли понять, пароль вводите, который вводили на предыдущем шаге.
Будет выполнена установка PostfixAdmin. По итогу не должно быть никаких ошибок, но если вдруг они будут, то на экране будет видно чего не хватает системе и нужно будет просто доустановить.
Админ — root@fellk.ru
Пароль — новый пароль для создаваемой учетной записи
Переходим в браузере на страницу http://10.0.1.18/postfixadmin/public/login.php
Вводим логин и пароль только что созданные и попадаем в панель управления.
apt install postfix postfix-mysqlВ процессе появится окно «Postfix Configuration» — оставляем Internet Site: В следующем окне оставляем имя сервера и нажимаем Enter.
groupadd -g 1024 mail
useradd -d /mail -g 1024 -u 1024 mail -m
chown mail:mail /mail
В файле
nano /etc/postfix/main.cf
mydestination = localhost.$mydomain, localhost, localhost.localdomain inet_protocols = ipv4 smtpd_tls_cert_file = /etc/ssl/mail/cert.pem smtpd_tls_key_file = /etc/ssl/mail/cert.key myhostname = mail.fellk.ru
smtpd_tls_key_file — путь и названия сертификатов у вас могут отличаться.
virtual_mailbox_base = /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 = $mynetworks smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtp_use_tls = yes smtpd_use_tls = yes smtpd_tls_auth_only = yes smtpd_helo_required = yes
nano /etc/postfix/mysql_virtual_alias_maps.cf
password = Ваш пароль
hosts = localhost
dbname = fellk
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
nano /etc/postfix/mysql_virtual_domains_maps.cf
password = Ваш пароль
hosts = localhost
dbname = fellk
query = SELECT domain FROM domain WHERE domain='%u'
nano /etc/postfix/mysql_virtual_mailbox_maps.cf
password = Ваш пароль
hosts = localhost
dbname = fellk
query = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s' AND active = '1'
nano /etc/postfix/master.cf
submission inet n - n - - smtpd
-o smtpd_tls_security_level=may
-o smtpd_sasl_auth_enable=yes
-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=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
dovecot unix - n n - - pipe
flags=DRhu user=mail:mail argv=/usr/lib/dovecot/deliver -d ${recipient}
Создаем папку
mkdir -p /etc/ssl/mailSSL сертификат куплен у провайдера timeweb за 999 рублей. Готовые файлы поместил в папку /etc/ssl/mail
openssl req -new -x509 -days 1461 -nodes -out /etc/ssl/mail/cert.pem -keyout /etc/ssl/mail/cert.key -subj "/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT/CN=mail.fellk.ru"
systemctl enable postfix
systemctl restart postfix
apt install dovecot-imapd dovecot-pop3d dovecot-mysql
nano /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:/mail/%d/%u/
nano /etc/dovecot/conf.d/10-master.conf
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfixmail
group = postfixmail
}
unix_listener auth-userdb {
mode = 0600
user = mail
group = mail
}
}
service stats {
unix_listener stats-reader {
user = mail
group = mail
mode = 0660
}
unix_listener stats-writer {
user = mail
group = mail
mode = 0660
}
}
nano /etc/dovecot/conf.d/10-auth.conf
#!include auth-system.conf.ext
!include auth-sql.conf.ext
nano /etc/dovecot/conf.d/10-ssl.conf
ssl = required
ssl_cert = </etc/ssl/mail/cert.pem
ssl_key = </etc/ssl/mail/cert.key
nano /etc/dovecot/conf.d/15-lda.conf
lda_mailbox_autocreate = yes
nano /etc/dovecot/conf.d/auth-sql.conf.ext
passdb {
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
args = /etc/dovecot/dovecot-sql.conf.ext
}
nano /etc/dovecot/dovecot-sql.conf.ext
driver = mysql
connect = host=localhost dbname=postfixmail user=postfixmail password=password123456
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('/mail/',LCASE(`domain`),'/',LCASE(`maildir`)), 1024 AS uid, 1024 AS gid FROM mailbox WHERE username = '%u'
nano /etc/dovecot/dovecot.conf
listen = *
systemctl enable dovecot
systemctl restart dovecot
В браузере заходим в админку http://10.0.1.18/postfixadmin/public/login.php
Переходим в Список доменов и создаем новый домен.
Далее переходим в Обзор и создаем тестовый ящик.
Сервер: имя сервера или его IP-адрес (если указывать IP, то сертификат не будет работать).
IMAP: 143 без шифрования или 993 с шифрованием
POP3: 110 без шифрования или 995 с шифрованием
SMTP: 25 без шифрования или 465 с шифрованием
wget https://github.com/roundcube/roundcubemail/releases/download/1.6.1/roundcubemail-1.6.1-complete.tar.gz
mkdir /var/www/html/webmail
tar -C /var/www/html/webmail -xvf roundcubemail-*.tar.gz --strip-components 1
cp /var/www/html/webmail/config/config.inc.php.sample /var/www/html/webmail/config/config.inc.php
nano /var/www/html/webmail/config/config.inc.php
$config['db_dsnw'] = 'mysql://root:Ваш пароль@localhost/roundcubemail'; $config['enable_installer'] = true; $config['smtp_pass'] = '';
$config['drafts_mbox'] = 'Drafts'; $config['junk_mbox'] = 'Junk'; $config['sent_mbox'] = 'Sent'; $config['trash_mbox'] = 'Trash'; $config['create_default_folders'] = true;
chown -R www-data:www-data /var/www/html/webmail
mysql -uroot -p
CREATE DATABASE roundcubemail DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON roundcubemail.* TO root@localhost IDENTIFIED BY 'Ваш пароль';
quit;
mysql -uroot -p roundcubemail < /var/www/html/webmail/SQL/mysql.initial.sql
apt install php-pear php-intl php-ldap php-net-smtp php-gd php-imagick php-zip php-curl
apt install php-dev libmcrypt-dev
pecl channel-update pecl.php.net
pecl install mcrypt-1.0.4
nano /etc/php/8.1/fpm/conf.d/99-mcrypt.ini
extension=mcrypt.so
nano /etc/php/8.1/fpm/php.ini
date.timezone = "Europe/Moscow" post_max_size = 70M upload_max_filesize = 70M
systemctl restart php8.1-fpm
nano /etc/php/8.1/apache2/php.ini
upload_max_filesize = 70M post_max_size = 70M
systemctl restart apache2
Открываем браузер и переходим по адресу http://10.0.1.18/webmail/installer/. В самом низу нажимаем по кнопке Next.
На следующей странице проверяем, что все пункты находятся в состоянии OK. Установка выполнена.
nano /var/www/html/webmail/config/config.inc.php
$config['enable_installer'] = false;
rm -rf /var/www/html/webmail/installer
И заходим в браузере по адресу http://10.0.1.18/webmail/.
Вводим в качестве логина адрес почты созданного пользователя и его пароль.
Если все прошло успешно, то вы молодец, но впереди еще работа по защите.
apt install amavisd-new clamav clamav-daemon spamassassin
usermod -a -G amavis clamav
nano /etc/amavis/conf.d/15-content_filter_mode
@bypass_virus_checks_maps = ( \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re); @bypass_spam_checks_maps = ( \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re);
nano /etc/amavis/conf.d/50-user
$allowed_header_tests{'multiple'} = 0;
$allowed_header_tests{'missing'} = 0;
systemctl enable clamav-daemon clamav-freshclam amavis
systemctl restart amavis clamav-daemon clamav-freshclam
nano /etc/postfix/main.cf
content_filter = scan:[127.0.0.1]:10024
Так же тут master.cf
nano /etc/postfix/master.cf
scan unix - - n - 16 smtp -o smtp_send_xforward_command=yes -o smtp_enforce_tls=no 127.0.0.1:10025 inet n - n - 16 smtpd -o content_filter= -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks -o smtpd_helo_restrictions= -o smtpd_client_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks_style=host -o smtpd_authorized_xforward_hosts=127.0.0.0/8
systemctl restart postfix
sa-update --nogpg --verbose
crontab -e
00 0 * * * /usr/bin/sa-update 00 0 - Время 0 часов 00 минут, вы выставляете нужное вам
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
Нужно отправить на вашу тестовую почту Лучше это делать через telnet
Письмо не доставится, в логе (/var/log/maillog) будет нечто следующее
... amavis[17688]: (17688-04) Blocked INFECTED (Eicar-Signature) {DiscardedOutbound,Quarantined}, MYNETS LOCAL ...
... relay=127.0.0.1[127.0.0.1]:10024, delay=0.25, delays=0.19/0/0/0.06, dsn=2.7.0, status=sent (250 2.7.0 Ok, discarded, id=17688-04 - INFECTED: Eicar-Signature)
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X
В логах будет
... amavis[17689]: (17689-04) Blocked SPAM {DiscardedOutbound,Quarantined}, MYNETS LOCAL ...
... status=sent (250 2.7.0 Ok, discarded, id=17689-04 - spam)
nano /etc/amavis/conf.d/50-userпрописываем:
$spam_quarantine_to = "spam\@fellk.ru"; $virus_quarantine_to = "virus\@fellk.ru";
systemctl restart amavis
nano /etc/postfix/main.cf
Комментируем строку
# smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
smtpd_client_restrictions =
#Разрешить доступ из доверенных сетей
permit_mynetworks
#Разрешить доступ клиентам, прошедшим процедуру аутентификации SMTP
permit_sasl_authenticated
#Запретить некорректное использование команд конвейерной обработки
reject_unauth_pipelining
#Разрешить доступ
permit
smtpd_helo_restrictions =
#Разрешить доступ
permit
smtpd_sender_restrictions =
#Разрешить доступ из доверенных сетей
permit_mynetworks
#Разрешить доступ клиентам, прошедшим процедуру аутентификации SMTP
permit_sasl_authenticated
reject_non_fqdn_sender
reject_unknown_sender_domain
#Разрешить доступ
permit
smtpd_relay_restrictions =
#Разрешить доступ из доверенных сетей
permit_mynetworks
#Разрешить доступ клиентам, прошедшим процедуру аутентификации SMTP
permit_sasl_authenticated
defer_unauth_destination
smtpd_recipient_restrictions =
#Разрешить доступ из доверенных сетей
permit_mynetworks
#Разрешить доступ клиентам, прошедшим процедуру аутентификации SMTP
permit_sasl_authenticated
#Запретить доступ, если адрес получателя сообщения имеет некорректный формат
reject_non_fqdn_recipient
#Запретить Postfix быть открытым релеем
reject_unauth_destination
#Запретить доступ, если для имени домена адреса получателя не существует A или MX запись в DNS
reject_unknown_recipient_domain
#Запретить доступ, если адрес получателя не может быть проверен
reject_unverified_recipient
#Запретить доступ клиентам, не зарегистрированным в DNS
reject_unknown_client_hostname
#Запретить доступ, если имя хоста, содержащееся в выданном клиентом приветствии, имеет некорректный синтаксис
reject_invalid_helo_hostname
#Запретить доступ, если имя хоста, содержащееся в выданном клиентом приветствии, не является FQDN
reject_non_fqdn_helo_hostname
#Запретить доступ, если для имени хоста, содержащемся в выданном клиентом приветствии, не существует A или MX запись в DNS
reject_unknown_helo_hostname
######Проверить адрес сети клиента по блэклистам######
reject_rbl_client zombie.dnsbl.sorbs.net,
reject_rbl_client work.rsbs.express.ru,
reject_rhsbl_sender dsn.rfc-ignorant.org
##Вызывает проблемы с отправкой и доставкой почты## reject_rbl_client bl.spamcop.net
##Вызывает проблемы с отправкой и доставкой почты## reject_rbl_client cbl.abuseat.org
##Вызывает проблемы с отправкой и доставкой почты## reject_rbl_client dul.ru
##Вызывает проблемы с отправкой и доставкой почты## reject_rbl_client dnsbl.abuse.ch
##Вызывает проблемы с отправкой и доставкой почты## reject_rbl_client zen.spamhaus.org,
##Вызывает проблемы с отправкой и доставкой почты## reject_rbl_client multihop.dsbl.org,
##Вызывает проблемы с отправкой и доставкой почты## reject_rbl_client dnsbl.sorbs.net,
#Проверить, разрешен ли адрес отправителя сообщения в файле, являющемся параметром данного ограничения
check_sender_access hash:/etc/postfix/sender_access
#Разрешить доступ
permit
systemctl restart postfix
sa-learn --spam /mail/fellk.ru/*/{.\&BCEEPwQwBDw-,.Spam,.Junk\ E-mail,.Junk}/cur
sa-learn --ham /mail/fellk.ru/spam\@fellk.ru/.Ham/cur
sa-learn --dump magic
postconf -n myhostnameили
hostname
Настраивается на вашем хостинге. Выглядит так
Настраивается на вашем хостинге. Выглядит так
Настраивается на вашем хостинге. Выглядит так
Создать папку для ключей
mkdir -p /var/lib/dkim
amavisd-new genrsa /var/lib/dkim/fellk.ru.pem 1024
chown amavis:amavis /var/lib/dkim/*.pem
chmod 0400 /var/lib/dkim/*.pem
nano /etc/amavis/conf.d/20-debian_defaults
#$inet_socket_port = 10024;
$inet_socket_port = [10024,10026];
$forward_method = 'smtp:[127.0.0.1]:10025';
$notify_method = $forward_method;
$interface_policy{'10026'} = 'ORIGINATING';
$policy_bank{'ORIGINATING'} = {
originating => 1,
smtpd_discard_ehlo_keywords => ['8BITMIME'],
os_fingerprint_method => undef,
bypass_banned_checks_maps => [1],
bypass_header_checks_maps => [1],
bypass_banned_checks_maps => [1],
virus_admin_maps => ["virusalert\@$mydomain"],
};
nano /etc/amavis/conf.d/50-user
$enable_dkim_verification = 1;
$enable_dkim_signing = 1;
dkim_key('fellk.ru', "dkim", "/var/lib/dkim/fellk.ru.pem");
@dkim_signature_options_bysender_maps = ( {
"test.ru" => { d => "fellk.ru", a => 'rsa-sha256', ttl => 10*24*3600 },
});
systemctl restart amavis
amavisd-new showkeys
; key#1 1024 bits, i=dkim, d=fellk.ru, /var/lib/dkim/fellk.ru.pem dkim._domainkey.fellk.ru. 3600 TXT ( "v=DKIM1; p=" "VIDfMA0kh1jVbGBwY2Nx3IgEMgCNRDCRiQKBgQC23iOK+39mY9972KNNGKETJo8n/Heg" "x6eMYXsp1unAdo2EBJDFU35CNRDCRiQKBgQC23iOK+39mYBxsnIl1Jo8n/Heg" "x6eMA0kh1jVbGBZrREVZYTEAQUAA4CNRh1jNWGQIF38KWYTE+uPOwtAbXEeRLG/Vz5" "zyQuIRDCKSHWUGN2461SFG3iOQAB")Теперь нужно на хостинге прописать эти данные. Выглядит так
amavisd-new testkeys
nano /etc/postfix/master.cf
smtp inet n - y - - smtpd -o content_filter=scan:[127.0.0.1]:10026 submission inet n - n - - smtpd -o content_filter=scan:[127.0.0.1]:10026 smtps inet n - n - - smtpd -o content_filter=scan:[127.0.0.1]:10026 127.0.0.1:10027 inet n - n - 16 smtpd -o content_filter= -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks -o smtpd_helo_restrictions= -o smtpd_client_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks_style=host -o smtpd_authorized_xforward_hosts=127.0.0.0/8
systemctl restart postfix
nano /var/www/html/webmail/config/config.inc.php
Строки
$config['smtp_server'] = ''; $config['smtp_port'] = 25;
заменить на
$config['smtp_server'] = 'tls://localhost'; $config['smtp_port'] = 587;
nano /etc/dovecot/conf.d/10-mail.conf
снимаем коммент или прописываем строку
mail_plugins = $mail_plugins quota
nano /etc/dovecot/conf.d/20-imap.conf
Снимаем комментарий или прописываем строку
protocol imap {
mail_plugins = $mail_plugins imap_quota
}
nano /etc/dovecot/conf.d/10-master.conf
редактируем строки как показано ниже
service dict {
unix_listener dict {
mode = 0660
user = mail
group = mail
}
}
nano /etc/dovecot/conf.d/90-quota.conf
Добавляем строки или убираем коммент с них
plugin {
quota = dict:User quota::proxy::quota
}
nano /etc/dovecot/dovecot.conf
Убираем коммент или добавляем строки
dict {
quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
}
nano /etc/dovecot/dovecot-dict-sql.conf.ext
Прописываем настройки
connect = host=localhost dbname=fellk user=root password=Ваш пароль
map {
pattern = priv/quota/storage
table = quota2
username_field = username
value_field = bytes
}
map {
pattern = priv/quota/messages
table = quota2
username_field = username
value_field = messages
}
nano /etc/dovecot/dovecot-sql.conf.ext
user_query = SELECT CONCAT('/mail/',LCASE(`domain`),'/',LCASE(`maildir`)), 1024 AS uid, 1024 AS gid, CONCAT('*:bytes=', quota) AS quota_rule FROM mailbox WHERE username = '%u'
doveconf
systemctl restart dovecot
doveadm quota get -u test@fellk.ru
Прописывать квоты нужно в веб интерфейсе в каждый почтовый ящик
nano /etc/dovecot/conf.d/90-quota.conf
Редактируем строки
plugin {
quota_warning = storage=95%% quota-warning 95 %u
quota_warning2 = storage=80%% quota-warning 80 %u
}
В разделе service quota-warning редактируем все как ниже
service quota-warning {
executable = script /usr/local/bin/quota-warning.sh
user = dovecot
unix_listener quota-warning {
user = mail
}
}
nano /usr/local/bin/quota-warning.sh
cat << EOF | /usr/libexec/dovecot/dovecot-lda -d $2 -o "plugin/quota=maildir:User quota:noenforcing" Content-Type: text/html; charset=utf-8 From: Администратор почты <admin@fellk.ru> Subject: Предупреждение о превышении квоты на почтовый ящик X-Priority: 2 <p>Размер Вашего почтового ящика $1% от установленного ограничения.<br> Удалите большие письма с вложениями, сделайте архивацию или обратитесь за помощью в ИТ отдел.</p> EOF
chmod +x /usr/local/bin/quota-warning.sh
/usr/local/bin/quota-warning.sh 80 test@fellk.ru
systemctl restart dovecot
nano /etc/dovecot/conf.d/15-mailboxes.conf
В блоке namespace inbox редактируем
namespace inbox {
mailbox Черновики {
auto = subscribe
special_use = \Drafts
}
mailbox Drafts {
auto = no
special_use = \Drafts
}
mailbox Спам {
auto = subscribe
special_use = \Junk
}
mailbox Junk {
auto = no
special_use = \Junk
}
mailbox Spam {
auto = no
special_use = \Junk
}
mailbox "Junk E-mail" {
auto = no
special_use = \Junk
}
mailbox Удаленные {
auto = subscribe
special_use = \Trash
}
mailbox Trash {
auto = no
special_use = \Trash
}
mailbox "Deleted Messages" {
auto = no
special_use = \Trash
}
mailbox Отправленные {
auto = subscribe
special_use = \Sent
}
mailbox Sent {
auto = no
special_use = \Sent
}
mailbox "Sent Messages" {
auto = no
special_use = \Sent
}
mailbox "Sent Items" {
auto = no
special_use = \Sent
}
}
systemctl restart dovecot
nano /etc/postfix/main.cf
Размер почтового ящика Для установки квоты на почтовые ящики редактируем следующее
mailbox_size_limit = 734003200 virtual_mailbox_limit = 734003200 message_size_limit = 73400320
systemctl reload postfix
Далее в файле:
nano /etc/php/7.4/apache2/php.ini
Находим и редактируем
post_max_size = 70M upload_max_filesize = 70M
systemctl restart apache2
решается данная проблема одной-двумя командами, в зависимости что указано в выводе ошибки
a2enmod rewrite
a2enmod ssl
Нужно отредактировать конфиг
nano /var/www/html/webmail/config/config.inc.php
добавив в него строку
$config['temp_dir'] = '/tmp/';