Update of dovecot version

This commit is contained in:
danwin1210 committed 2026-09-23 21:48:07 +02:00
1 parent 117aaa82d3
commit d4f469fc02
4 files changed
+95 -87

No files matched your search

-12
View File
@@ -1,12 +0,0 @@
connect = host=localhost dbname=postfix user=postfix password=YOUR_PASSWORD
map {
pattern = shared/last-login/$user
table = mailbox
value_field = last_login
value_type = uint
fields {
username = $user
}
}
-10
View File
@@ -1,10 +0,0 @@
connect = host=localhost dbname=postfix user=postfix_readonly password=YOUR_PASSWORD
driver = mysql
# Query to retrieve password. user can be used to retrieve username in other formats also.
password_query = SELECT username AS user, CONCAT(password_hash_type, password) AS password, CONCAT(domain, '/', local_part, '/') AS maildir, 5000 AS userdb_uid, 5000 AS userdb_gid, CONCAT('*:bytes=', quota) AS userdb_quota_rule FROM mailbox WHERE username = CONCAT('%n', '@', COALESCE((SELECT target_domain FROM alias_domain WHERE alias_domain = '%d' AND active='1'), '%d')) AND active='1'
# Query to retrieve user information, note uid matches dovecot.conf AND Postfix virtual_uid_maps parameter.
user_query = SELECT CONCAT(domain, '/', local_part, '/') AS maildir, 5000 AS uid, 5000 AS gid, CONCAT('*:bytes=', quota) AS quota_rule FROM mailbox WHERE username = CONCAT('%n', '@', COALESCE((SELECT target_domain FROM alias_domain WHERE alias_domain = '%d' AND active='1'), '%d')) AND active='1'
iterate_query = SELECT username AS user FROM mailbox
+95 -64
View File
@@ -1,83 +1,100 @@
#general settings #general settings
dovecot_config_version = 2.4.0
dovecot_storage_version = 2.4.0
listen = *, :: listen = *, ::
login_greeting = Server ready. login_greeting = Server ready.
mmap_disable = yes mmap_disable = yes
mail_fsync = always mail_fsync = always
mail_nfs_index = yes mail_nfs_index = yes
mail_nfs_storage = yes mail_nfs_storage = yes
info_log_path = /dev/null
auth_verbose = no auth_verbose = no
auth_verbose_passwords = no auth_verbose_passwords = no
auth_debug = no auth_debug = no
auth_debug_passwords = no auth_debug_passwords = no
mail_debug = no mail_debug = no
verbose_ssl = no mail_driver = maildir
mail_location = maildir:/var/mail/vmail/%d/%n mail_path = /var/mail/vmail/%{user | domain}/%{user | username}
mail_home = /var/mail/vmail/%d/%n mail_home = /var/mail/vmail/%{user | domain}/%{user | username}
mail_plugins = mail_crypt quota zlib mail_plugins {
mail_compress = yes
mail_crypt = yes
}
mailbox_list_index = yes mailbox_list_index = yes
mail_always_cache_fields = date.save mail_always_cache_fields = date.save
imap_hibernate_timeout = 5s imap_hibernate_timeout = 5s
mail_attribute_dict = file:%h/dovecot-attributes mail_attribute {
dict file {
#plugin setup path = %{home}/dovecot-attributes
plugin { }
mail_crypt_save_version = 2
mail_crypt_global_private_key = </etc/dovecot/ecprivkey.pem
mail_crypt_global_public_key = </etc/dovecot/ecpubkey.pem
zlib_save = gz
zlib_save_level = 6
quota_grace = 10%%
quota_status_success = DUNNO
quota_status_nouser = DUNNO
quota_status_overquota = "552 5.2.2 Mailbox is full"
quota = count:User quota
quota_rule = *:bytes=50M
quota_vsizes = yes
last_login_dict = proxy::lastlogin
last_login_key = last-login/%u
sieve = file:~/sieve;active=~/.dovecot.sieve
sieve_plugins = sieve_imapsieve
imapsieve_url = sieve://danwin1210.de
} }
crypt_global_private_key main {
crypt_private_key_file = /etc/dovecot/ecprivkey.pem
}
crypt_global_public_key_file = /etc/dovecot/ecpubkey.pem
mail_compress_write_method = gz
# sieve = file:~/sieve;active=~/.dovecot.sieve
sieve_script personal {
driver = file
path = ~/sieve
active_path = ~/.dovecot.sieve
}
# sieve_plugins = sieve_imapsieve
sieve_plugins {
sieve_imapsieve = yes
}
imapsieve_url = sieve://danwin1210.de
#}
#auth settings #auth settings
disable_plaintext_auth = yes
auth_cache_size = 1M auth_cache_size = 1M
auth_cache_ttl = 5mins auth_cache_ttl = 5mins
auth_cache_negative_ttl = 5mins auth_cache_negative_ttl = 5mins
auth_default_realm = danwin1210.de auth_default_domain = danwin1210.de
auth_username_chars = auth_username_chars =
auth_mechanisms = plain login auth_mechanisms = plain login
auth_allow_weak_schemes = yes
#TLS parameters #TLS parameters
ssl = required ssl = required
ssl_cert = </etc/ssl/certs/ssl-cert-snakeoil.pem ssl_server_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
ssl_key = </etc/ssl/private/ssl-cert-snakeoil.key ssl_server_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
ssl_client_ca_dir = /etc/ssl/certs ssl_client_ca_dir = /etc/ssl/certs
ssl_dh = </etc/dovecot/dh.pem ssl_server_dh_file = /etc/dovecot/dh.pem
ssl_min_protocol = TLSv1.2 ssl_min_protocol = TLSv1.2
ssl_cipher_list = HIGH:!PSK:!aNULL:!MD5:!SHA:!CAMELLIA:!AES+SHA256:!AES+SHA384; ssl_cipher_list = HIGH:!PSK:!aNULL:!MD5:!SHA:!CAMELLIA:!AES+SHA256:!AES+SHA384;
ssl_curve_list = X448:X25519:secp521r1:secp384r1 ssl_curve_list = X448:X25519:secp521r1:secp384r1
ssl_prefer_server_ciphers = yes ssl_server_prefer_ciphers = server
#protocol setup #protocol setup
protocols = "imap pop3 lmtp sieve" protocols = "imap pop3 lmtp sieve"
protocol imap { protocol imap {
mail_plugins = $mail_plugins imap_quota imap_zlib imap_sieve last_login mail_plugins {
imap_sieve = yes
last_login = yes
}
imap_metadata = yes
}
protocol pop3 {
mail_plugins {
last_login = yes
}
imap_metadata = yes imap_metadata = yes
} }
protocol lmtp { protocol lmtp {
mail_plugins = mail_crypt quota zlib sieve last_login mail_plugins {
sieve = yes
}
} }
protocol sieve { protocol sieve {
mail_plugins = mail_plugins {
last_login = yes
}
} }
#service setup #service setup
service anvil { service anvil {
unix_listener anvil-auth-penalty { unix_listener anvil {
#disable since we don't have IP info mode = 0666
mode = 0
} }
} }
service auth { service auth {
@@ -92,7 +109,7 @@ service auth {
group = postfix group = postfix
} }
inet_listener { inet_listener auth-port {
port = 12345 port = 12345
} }
@@ -108,17 +125,17 @@ service auth-worker {
} }
} }
service imap { service imap {
service_count = 1000 service_restart_request_count = 1000
client_limit = 1 client_limit = 1
unix_listener imap-master { unix_listener imap-master {
user = $default_internal_user user = dovecot
} }
} }
service imap-login { service imap-login {
inet_listener imap { inet_listener imap {
port = 143 port = 143
} }
service_count = 1000 service_restart_request_count = 1000
vsz_limit = 1G vsz_limit = 1G
process_min_avail = 1 process_min_avail = 1
} }
@@ -132,40 +149,25 @@ service lmtp {
group = vmail group = vmail
} }
service pop3 { service pop3 {
service_count = 1000 service_restart_request_count = 1000
client_limit = 1 client_limit = 1
} }
service pop3-login { service pop3-login {
inet_listener pop3 { inet_listener pop3 {
port = 110 port = 110
} }
service_count = 1000 service_restart_request_count = 1000
vsz_limit = 1G vsz_limit = 1G
} }
service quota-status {
executable = quota-status -p postfix
inet_listener quota-status {
port = 12340
}
client_limit = 1
}
#SQL queries passdb sql {
passdb {
driver = sql driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext query = SELECT username AS user, CONCAT(password_hash_type, password) AS password, 5000 AS userdb_uid, 5000 AS userdb_gid, CONCAT('*:bytes=', quota) AS userdb_quota_rule FROM mailbox WHERE username = CONCAT('%{user | username}', '@', COALESCE((SELECT target_domain FROM alias_domain WHERE alias_domain = '%{user | domain}' AND active='1'), '%{user | domain}')) AND active='1'
} }
userdb { userdb sql {
driver = prefetch
}
userdb {
driver = sql driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext query = SELECT 5000 AS uid, 5000 AS gid, CONCAT('*:bytes=', quota) AS quota_rule FROM mailbox WHERE username = CONCAT('%{user | username}', '@', COALESCE((SELECT target_domain FROM alias_domain WHERE alias_domain = '%{user | domain}' AND active='1'), '%{user | domain}')) AND active='1'
} iterate_query = SELECT username AS user FROM mailbox
dict {
lastlogin = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
user = dovecot
group = dovecot
} }
#namespace configuration #namespace configuration
@@ -192,3 +194,32 @@ namespace inbox {
special_use = \Sent special_use = \Sent
} }
} }
mysql localhost {
dbname=postfix
user=postfix
password=YOUR_PASSWORD
}
sql_driver = mysql
last_login {
dict proxy {
name = sql
}
key = last-login/%{user}
precision = s
}
dict_server {
dict sql {
dict_map shared/last-login/$user {
sql_table = mailbox
value_field last_login {
type = uint
}
key_field username {
value = $user
}
}
}
}
-1
View File
@@ -1,7 +1,6 @@
<?php <?php
require_once 'vendor/autoload.php'; require_once 'vendor/autoload.php';
use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception; use PHPMailer\PHPMailer\Exception;
const DBHOST = 'localhost'; // Database host const DBHOST = 'localhost'; // Database host
const DBUSER = 'postfix_readonly'; // Database user const DBUSER = 'postfix_readonly'; // Database user