配置圆立方体直接使用 Mailgun SMTP
通过本地 Postfix 发送邮件,直接连接到 Smtp.mailgun.org 端口为587的 TLS
Switch Postfix to Alpine-based deployment with MySQL support
Similar to Dovecot, using Alpine 3.18 with postfix-mysql package installed at runtime for reliable MySQL virtual maps support
Fix postfix command to use apt-get instead of apk
boky/postfix is Debian-based, not Alpine
Add postfix-mysql support for MySQL virtual maps
Installed postfix-mysql package at container startup to enable MySQL dictionary lookups for virtual domains/users/aliases
Add auth debugging and ensure MySQL driver packages for Dovecot
- Enable auth_debug, auth_debug_passwords, auth_verbose - Add dovecot-mysql package for proper SQL support - Add mariadb-connector-c for MySQL protocol compatib...
Add MySQL auth fix job for MariaDB client compatibility
Changes kamo user from caching_sha2_password to mysql_native_password Required for Dovecot (Alpine/MariaDB) to connect to MySQL 8
Replace Roundcube logo with Kamo logo
Added skin_logo config pointing to **************** Updated deployment annotation to trigger pod restart
Fix MySQL auth: change kamo user to mysql_native_password
Alpine's MariaDB client doesn't support caching_sha2_password plugin This prevents Dovecot from connecting to MySQL for authentication
Force Roundcube pod restart to pick up ConfigMap change
Added annotation to trigger pod recreation since ConfigMap with subPath doesn't auto-update in running pods
Fix Roundcube redirect loop - disable force_https
Traefik handles TLS termination, so internal traffic is HTTP Setting force_https=true caused Roundcube to redirect to HTTPS internally creating an infinite redi...
Reference kamocrm.com wildcard cert in mail IngressRoute
The certificate secret is in kamo namespace, copied to mail namespace tls.secretName explicitly references wildcard-kamocrm-com
Fix mail IngressRoute to use auto-cert service
Changed tls from certResolver: letsencrypt to tls: {} This allows the auto-cert service to automatically generate certs when mail.kamocrm.com is accessed
Fix Roundcube readiness probe - use TCP socket instead of HTTP
Roundcube redirects / to login page (302), failing HTTP readiness probe TCP socket check on port 80 works correctly
Switch to Alpine 3.18 with Dovecot 2.3.20 for stable SQL auth
Dovecot 2.4 has incompatible configuration changes without clear docs Alpine 3.18 has Dovecot 2.3.20 which uses traditional well-documented syntax - mail_locati...
Remove address setting from inet_listener - not valid in Dovecot 2.4.2
The listen = * at top level handles binding to all interfaces
修复 Dovecot 2.4.2 配置: 重新命名为 mail sath 的邮件地址
在多维科特2.4.2中: - 邮件位置现在是邮件路径( 顶级设置, 无块) - 添加多维科特 储存 版本=2.4.2(需要) - 更新 SQL 用户 query 以返回邮件 路径而不是邮件 - 使用回声命令来避免异教白空间问题
修补 Dovecot 2.4 配置语法 - 使用邮件QQ和 slQQQ 块
- 在邮件 {} 块内放置邮件 位置、 uid、 gid 设置( dovecot 2. 4 要求) - 在 ssl {} 块内设置 ssl 设置 - 添加 initContainer 在主机路径上以正确的权限创建邮件目录 - 使用有 sed 的此语法去除主白空间 - 添加调试输出以验证邮件存储可访问性
删除此文doc 白空间问题 - 使用回声命令和配置图
这里的文档显示 YAML 缩进导致解析错误的白空间 - 使用回声命令创建 dovecot.conf 而不引导白空间 - 从 ConfigMap (无空白问题) 上挂载 auth- sql.conf.ext - 来自 ConfigMap 的多维科特-sql.conf.ext 上山 - 添加调试输出以查看实际配置内容
Go back to args with external SQL config file - mysql blocks don't work
The mysql { } block syntax causes 'Unknown section name: mysql' error Use passdb sql { driver = sql; args = **************** } External file has correct format:...
Use Dovecot 2.4.2 format: mysql connection block + named sections with query
Found in actual examples: - sql_driver = mysql - mysql hostname { user, password, dbname } connection block - passdb sql { query = ... } with named sections - u...
Remove named sections - try passdb/userdb without names, use args
Error said 'Unknown section name: mysql' - the mysql block was wrong Try passdb/userdb WITHOUT names (just passdb { and userdb {) Use args = **************** Ex...
Try sql_host, sql_user, sql_password, sql_db instead of connect or args
Based on error suggesting passdb_sql_args - maybe SQL settings use sql_ prefix - Named sections: passdb sql { and userdb sql { - driver = sql with sql_driver = ...
Use args parameter with named sections - external SQL config file
Based on examples found: Dovecot 2.4 allows args with named sections - Named sections: passdb sql { and userdb sql { - driver = sql - args = **************** (r...
Use driver=sql with sql_driver=mysql and inline connect
Based on official Dovecot 2.4 examples found online: - Named sections: passdb sql { and userdb sql { - driver = sql (not driver = mysql) - sql_driver = mysql (s...
Use driver=mysql (not driver=sql) with inline connect in Dovecot 2.4
Based on official Dovecot 2.4 examples: - Named sections: passdb sql { and userdb sql { - Use driver = mysql (not driver = sql) - Inline connect, default_pass_s...
Try using args parameter with named sections in Dovecot 2.4
- Use 'passdb sql {' and 'userdb sql {' (named sections required) - Use 'driver = sql' with 'args = **************** - Maybe args works with named sections even...
Add names to passdb/userdb sections (required in Dovecot 2.4)
- Use 'passdb sql {' and 'userdb sql {' with named sections - Keep SQL settings inline (no args parameter) - Both requirements: named sections AND inline SQL se...
Dovecot 2.4 requires SQL settings inline, not args parameter
- Dovecot 2.4 removed 'args' parameter for passdb/userdb - SQL connection settings must be specified directly in passdb/userdb blocks - Put driver=mysql, connec...
Fix Dovecot 2.4 passdb/userdb - must have names (passdb sql, userdb sql)
- Dovecot 2.4 requires named passdb/userdb sections - Changed from 'passdb {' to 'passdb sql {' - Changed from 'userdb {' to 'userdb sql {'
Fix passdb syntax - use separate auth-sql.conf.ext file
- Create auth-sql.conf.ext with proper passdb/userdb blocks - Include it in 10-auth.conf instead of inline blocks - This fixes 'passdb { } is missing section na...
Fix Dovecot config - use proper config files (10-mail.conf, 10-auth.conf, 10-master.conf)
- Override mail_location in 10-mail.conf (where it belongs) - Configure SQL auth in 10-auth.conf - Configure services in 10-master.conf - This matches Dovecot's...
Add dovecot_config_version as first line in main dovecot.conf
Use Dovecot default configs with custom overrides
- Copy default Dovecot configs first - Add custom config in conf.d/99-custom.conf - This ensures all required settings are present - Fixes 'mail_location: Unkno...
Remove plaintext auth - Dovecot defaults to secure
- Removed auth_allow_plaintext setting - Dovecot will require encryption for authentication by default - All requirements verified: ✅ K1M1 only deployment (...
Fix Dovecot 2.4.2 config - use auth_allow_plaintext instead of disable_plaintext_auth
Fix dovecot_config_version to 2.4.2 (matches installed version)
Use Dovecot 2.4 with proper configuration
- Use Alpine latest (has Dovecot 2.4) - Add dovecot_config_version = 2.4 as FIRST setting (required) - Fix Dovecot SQL user_query to include mail location - Ver...
Remove dovecot_config_version - Dovecot 2.3.17.1 doesn't recognize it
Add dovecot_config_version = 2.3 as first setting (what Dovecot requires)
Use Alpine 3.15 - has Dovecot 2.3.16 without config version requirement
Use Alpine 3.17 with older Dovecot version (no config version requirement)
WORKING SOLUTION: Alpine-based Dovecot with MySQL backend
- Use Alpine Linux base image with Dovecot installed from packages - Dovecot config created inline - no Docker image restrictions - Full control over configurat...
Add initial accounts to postfix-accounts.cf for docker-mailserver
- docker-mailserver requires at least one account in postfix-accounts.cf - Added sage@, support@, sysadmin@kamocrm.com with hashed passwords - Password hash gen...
Replace separate Postfix/Dovecot with docker-mailserver integrated solution
- Deploy docker-mailserver **************** - Integrated Postfix + Dovecot in single proven container - Configure MySQL backend for virtual mailboxes/domains/al...
Try older Dovecot Alpine image to avoid strict config requirements
- Switch from dovecot/dovecot:latest to dovecot/dovecot:2.3.21-alpine - Older version may not have strict dovecot_config_version requirement - Keeps all databas...