NobGit
public nobgit read

NobMail

Based on mailcow: dockerized

Languages

Repository composition by tracked source files.

PHP
PHP 49% JavaScript 35% HTML 9% CSS 4% Shell 2% Python 1% Lua 0% Perl 0% Ruby 0% SCSS 0%
Create file Wiki Documentation
Clone
https://nobgit.com/orgs/nobgit/nobmail.git
ssh://[email protected]:2222/orgs/nobgit/nobmail.git

Commit

Merge remote-tracking branch 'origin/staging' into nightly

a41bb55c
FreddleSpl0it <[email protected]> 1 year, 8 months ago
.github/FUNDING.yml                                |   1 +
 data/Dockerfiles/acme/acme.sh                      |   4 +-
 data/Dockerfiles/acme/obtain-certificate.sh        |   2 +-
 data/Dockerfiles/dockerapi/main.py                 |   4 +-
 data/Dockerfiles/dovecot/clean_q_aged.sh           |   2 +-
 data/Dockerfiles/dovecot/docker-entrypoint.sh      |   4 +-
 data/Dockerfiles/dovecot/quarantine_notify.py      |   2 +-
 data/Dockerfiles/dovecot/quota_notify.py           |   2 +-
 data/Dockerfiles/dovecot/repl_health.sh            |   4 +-
 .../Dockerfiles/dovecot/syslog-ng-redis_slave.conf |   2 +
 data/Dockerfiles/dovecot/syslog-ng.conf            |   2 +
 data/Dockerfiles/dovecot/trim_logs.sh              |   4 +-
 data/Dockerfiles/netfilter/main.py                 |   8 +-
 data/Dockerfiles/nginx/Dockerfile                  |  18 ++
 data/Dockerfiles/nginx/bootstrap.py                |  76 +++++
 data/Dockerfiles/nginx/docker-entrypoint.sh        |  26 ++
 data/Dockerfiles/phpfpm/docker-entrypoint.sh       |   4 +-
 .../Dockerfiles/postfix/syslog-ng-redis_slave.conf |   2 +
 data/Dockerfiles/postfix/syslog-ng.conf            |   2 +
 data/Dockerfiles/rspamd/docker-entrypoint.sh       |  12 +-
 data/Dockerfiles/sogo/syslog-ng-redis_slave.conf   |   2 +
 data/Dockerfiles/sogo/syslog-ng.conf               |   2 +
 data/Dockerfiles/watchdog/watchdog.sh              |  20 +-
 data/conf/mysql/my.cnf                             |   2 +-
 data/conf/nginx/000-map-size.conf                  |   3 -
 data/conf/nginx/dynmaps.conf                       |  19 --
 data/conf/nginx/includes/site-defaults.conf        | 242 ---------------
 data/conf/nginx/includes/sogo_proxy_auth.conf      |   8 -
 data/conf/nginx/mailcow_auth.conf                  |  23 --
 data/conf/nginx/meta_exporter.conf                 |  19 --
 data/conf/nginx/nginx.conf.j2                      | 142 +++++++++
 data/conf/nginx/site.conf                          |  10 -
 data/conf/nginx/sites-default.conf.j2              | 276 +++++++++++++++++
 data/conf/nginx/templates/listen_plain.template    |   2 -
 data/conf/nginx/templates/listen_ssl.template      |   3 -
 data/conf/nginx/templates/server_name.template.sh  |   1 -
 data/conf/nginx/templates/sites.template.sh        |  38 ---
 data/conf/nginx/templates/sogo.template            |   1 -
 data/conf/nginx/templates/sogo_eas.template.sh     |   5 -
 data/conf/postfix/postscreen_access.cidr           |  76 ++---
 data/conf/redis/redis-conf.sh                      |   7 +
 data/conf/rspamd/dynmaps/aliasexp.php              |   1 +
 data/conf/rspamd/dynmaps/forwardinghosts.php       |   1 +
 data/conf/rspamd/meta_exporter/pipe.php            |   7 +-
 data/conf/rspamd/meta_exporter/pipe_rl.php         |   1 +
 data/conf/rspamd/meta_exporter/pushover.php        |   1 +
 data/web/_rspamderror.php                          |   1 +
 data/web/admin.php                                 |   2 +-
 data/web/autodiscover.php                          |   1 +
 data/web/f2b-banlist.php                           |  11 +
 data/web/inc/functions.dkim.inc.php                |   4 +-
 data/web/inc/functions.inc.php                     |   2 +
 data/web/inc/functions.mailbox.inc.php             |   7 +-
 data/web/inc/init_db.inc.php                       |  20 +-
 data/web/inc/prerequisites.inc.php                 |   1 +
 data/web/js/site/mailbox.js                        |  41 +--
 data/web/json_api.php                              |  14 -
 data/web/lang/lang.fr-fr.json                      |   2 +-
 data/web/lang/lang.ru-ru.json                      | 334 ++++++++++++++-------
 data/web/mailbox.php                               |   1 +
 data/web/templates/admin/tab-config-f2b.twig       |   2 +-
 data/web/templates/mailbox.twig                    |   1 +
 docker-compose.yml                                 |  59 ++--
 generate_config.sh                                 |  18 +-
 helper-scripts/_cold-standby.sh                    |   4 +-
 helper-scripts/backup_and_restore.sh               |   2 +-
 helper-scripts/nextcloud.sh                        |   4 +-
 helper-scripts/reset-learns.sh                     |  10 +-
 update.sh                                          |  15 +-
 69 files changed, 959 insertions(+), 690 deletions(-)
 create mode 100644 data/Dockerfiles/nginx/Dockerfile
 create mode 100644 data/Dockerfiles/nginx/bootstrap.py
 create mode 100755 data/Dockerfiles/nginx/docker-entrypoint.sh
 delete mode 100644 data/conf/nginx/000-map-size.conf
 delete mode 100644 data/conf/nginx/dynmaps.conf
 delete mode 100644 data/conf/nginx/includes/site-defaults.conf
 delete mode 100644 data/conf/nginx/includes/sogo_proxy_auth.conf
 delete mode 100644 data/conf/nginx/mailcow_auth.conf
 delete mode 100644 data/conf/nginx/meta_exporter.conf
 create mode 100644 data/conf/nginx/nginx.conf.j2
 delete mode 100644 data/conf/nginx/site.conf
 create mode 100644 data/conf/nginx/sites-default.conf.j2
 delete mode 100644 data/conf/nginx/templates/listen_plain.template
 delete mode 100644 data/conf/nginx/templates/listen_ssl.template
 delete mode 100755 data/conf/nginx/templates/server_name.template.sh
 delete mode 100644 data/conf/nginx/templates/sites.template.sh
 delete mode 100644 data/conf/nginx/templates/sogo.template
 delete mode 100644 data/conf/nginx/templates/sogo_eas.template.sh
 create mode 100755 data/conf/redis/redis-conf.sh
 create mode 100644 data/web/f2b-banlist.php

Diff

diff --cc data/conf/nginx/nginx.conf.j2
index 00000000,13444129..833c480f
mode 000000,100644..100644
--- a/data/conf/nginx/nginx.conf.j2
+++ b/data/conf/nginx/nginx.conf.j2
@@@ -1,0 -1,119 +1,142 @@@
+ user  nginx;
+ worker_processes  auto;
+ 
+ error_log  /var/log/nginx/error.log notice;
+ pid        /var/run/nginx.pid;
+ 
+ 
+ events {
+     worker_connections  1024;
+ }
+ 
+ 
+ http {
+     include /etc/nginx/mime.types;
+     default_type  application/octet-stream;
+ 
+     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
+                       '$status $body_bytes_sent "$http_referer" '
+                       '"$http_user_agent" "$http_x_forwarded_for"';
+ 
+     access_log  /var/log/nginx/access.log  main;
+ 
+     sendfile        on;
+     #tcp_nopush     on;
+ 
+     keepalive_timeout  65;
+ 
+     #gzip  on;
+ 
+     # map-size.conf:
+     map_hash_max_size 256;
+     map_hash_bucket_size 256;
+ 
+     # site.conf:
+     proxy_cache_path /tmp levels=1:2 keys_zone=sogo:10m inactive=24h  max_size=1g;
+     server_names_hash_max_size 512;
+     server_names_hash_bucket_size 128;
+ 
+     map $http_x_forwarded_proto $client_req_scheme {
+         default $scheme;
+         https https;
+     }
+ 
+     # Default
+     server {
+         listen 127.0.0.1:65510; # sogo-auth verify internal
+         listen {{ HTTP_PORT }}{% if NGINX_USE_PROXY_PROTOCOL %} proxy_protocol{%endif%};
+         listen [::]:{{ HTTP_PORT }}{% if NGINX_USE_PROXY_PROTOCOL %} proxy_protocol{%endif%};
+         listen {{ HTTPS_PORT }}{% if NGINX_USE_PROXY_PROTOCOL %} proxy_protocol{%endif%} ssl;
+         listen [::]:{{ HTTPS_PORT }}{% if NGINX_USE_PROXY_PROTOCOL %} proxy_protocol{%endif%} ssl;
+         http2 on;
+ 
+         ssl_certificate /etc/ssl/mail/cert.pem;
+         ssl_certificate_key /etc/ssl/mail/key.pem;
+ 
+         server_name {{ MAILCOW_HOSTNAME }} autodiscover.* autoconfig.* {{ ADDITIONAL_SERVER_NAMES }};
+ 
+         include /etc/nginx/includes/sites-default.conf;
+     }
+ 
+     # rspamd dynmaps:
+     server {
+         listen 8081;
+         listen [::]:8081;
+         index index.php index.html;
+         server_name _;
+         error_log  /var/log/nginx/error.log;
+         access_log /var/log/nginx/access.log;
+         root /dynmaps;
+ 
+         location ~ \.php$ {
+             try_files $uri =404;
+             fastcgi_split_path_info ^(.+\.php)(/.+)$;
+             fastcgi_pass {{ PHPFPMHOST }}:9001;
+             fastcgi_index index.php;
+             include fastcgi_params;
+             fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
+             fastcgi_param PATH_INFO $fastcgi_path_info;
+         }
+     }
+ 
+     # rspamd meta_exporter:
+     server {
+         listen 9081;
+         index index.php index.html;
+         server_name _;
+         error_log  /var/log/nginx/error.log;
+         access_log /var/log/nginx/access.log;
+         root /meta_exporter;
+         client_max_body_size 10M;
+         location ~ \.php$ {
+             client_max_body_size 10M;
+             try_files $uri =404;
+             fastcgi_split_path_info ^(.+\.php)(/.+)$;
+             fastcgi_pass {{ PHPFPMHOST }}:9001;
+             fastcgi_index pipe.php;
+             include fastcgi_params;
+             fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
+             fastcgi_param PATH_INFO $fastcgi_path_info;
+         }
+     }
+ 
++    server {
++        listen 9082 ssl http2;
++
++        ssl_certificate /etc/ssl/mail/cert.pem;
++        ssl_certificate_key /etc/ssl/mail/key.pem;
++
++        index mailcowauth.php;
++        server_name _;
++        error_log  /var/log/nginx/error.log;
++        access_log /var/log/nginx/access.log;
++        root /mailcowauth;
++        client_max_body_size 10M;
++        location ~ \.php$ {
++            client_max_body_size 10M;
++            try_files $uri =404;
++            fastcgi_split_path_info ^(.+\.php)(/.+)$;
++            fastcgi_pass phpfpm:9001;
++            include fastcgi_params;
++            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
++            fastcgi_param PATH_INFO $fastcgi_path_info;
++        }
++    }
++
+     {% for cert in valid_cert_dirs %}
+     server {
+         listen {{ HTTP_PORT }}{% if NGINX_USE_PROXY_PROTOCOL %} proxy_protocol{%endif%};
+         listen [::]:{{ HTTP_PORT }}{% if NGINX_USE_PROXY_PROTOCOL %} proxy_protocol{%endif%};
+         listen {{ HTTPS_PORT }}{% if NGINX_USE_PROXY_PROTOCOL %} proxy_protocol{%endif%} ssl;
+         listen [::]:{{ HTTPS_PORT }}{% if NGINX_USE_PROXY_PROTOCOL %} proxy_protocol{%endif%} ssl;
+         http2 on;
+ 
+         ssl_certificate {{ cert.cert_path }}cert.pem;
+         ssl_certificate_key {{ cert.cert_path }}key.pem;
+ 
+         server_name {{ cert.domains }};
+ 
+         include /etc/nginx/includes/sites-default.conf;
+     }
+     {% endfor %}
+ }
diff --cc data/web/inc/init_db.inc.php
index fd196f9e,3cfeb37d..7fb619d4
--- a/data/web/inc/init_db.inc.php
+++ b/data/web/inc/init_db.inc.php
@@@ -1467,12 -1456,9 +1471,12 @@@ function init_db_schema() 
          ":type" => "mailbox",
          ":template" => $default_mailbox_template["template"],
          ":attributes" => json_encode($default_mailbox_template["attributes"])
-       )); 
-     } 
+       ));
+     }
  
 +    // remove old sogo views and triggers
 +    $pdo->query("DROP TRIGGER IF EXISTS sogo_update_password");
 +
      if (php_sapi_name() == "cli") {
        echo "DB initialization completed" . PHP_EOL;
      } else {
diff --cc data/web/lang/lang.ru-ru.json
index fb35d213,5d1ef9af..f64664aa
--- a/data/web/lang/lang.ru-ru.json
+++ b/data/web/lang/lang.ru-ru.json
@@@ -612,6 -694,8 +694,8 @@@
          "sieve_desc": "Краткое описание",
          "sieve_type": "Тип фильтра",
          "skipcrossduplicates": "Пропускать повторяющиеся сообщения в папках",
 -        "sogo_access": "Предоставить прямой доступ к SOGo",
 -        "sogo_access_info": "Единый вход из интерфейса почты продолжает работать. Эта настройка не влияет на доступ ко всем другим службам, а также не удаляет или изменяет существующий профиль пользователя SOGo.",
++        "sogo_access": "Прямая переадресация в SOGo",
++        "sogo_access_info": "После входа в систему пользователь автоматически перенаправляется в SOGo.",
          "sogo_visible": "Отображать псевдоним в SOGo",
          "sogo_visible_info": "Влияет только на объекты, которые могут отображаться в SOGo (персональные или общие псевдонимы, указывающие как минимум на один локальный почтовый аккаунт). Учтите, что если функция отключена, у пользователей не будет возможности выбрать адрес псевдонима в качестве отправителя в SOGo.",
          "spam_alias": "Создать или изменить временные (спам) псевдонимы",
diff --cc docker-compose.yml
index 85395b64,226c48ac..9218b396
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@@ -193,7 -182,7 +198,7 @@@ services
              - phpfpm
  
      sogo-mailcow:
-       image: mailcow/sogo:nightly-20241112
 -      image: mailcow/sogo:1.128
++      image: mailcow/sogo:nightly-20241205
        environment:
          - DBNAME=${DBNAME}
          - DBUSER=${DBUSER}
@@@ -240,7 -230,7 +246,7 @@@
              - sogo
  
      dovecot-mailcow:
-       image: mailcow/dovecot:nightly-20241112
 -      image: mailcow/dovecot:2.21
++      image: mailcow/dovecot:nightly-20241205
        depends_on:
          - mysql-mailcow
          - netfilter-mailcow