usmannasir 2025-07-01 14:49:24 +05:00
parent 870324a87f
commit c924aba93d
2 changed files with 67 additions and 14 deletions

View File

@ -325,21 +325,47 @@ class mailUtilities:
emailLimits = EmailLimits(email=emailAcct)
emailLimits.save()
### Create email folders manually if they dont exist
### Create maildir structure if it doesn't exist
# Create base maildir path
maildir_base = f"/home/vmail/{domain}/{userName}"
maildir_path = f"{maildir_base}/Maildir"
# Create the main maildir structure
if not os.path.exists(maildir_path):
command = f"mkdir -p '{maildir_path}/cur' '{maildir_path}/new' '{maildir_path}/tmp'"
ProcessUtilities.executioner(command, 'vmail')
# Set proper permissions
command = f"chmod -R 700 '{maildir_base}'"
ProcessUtilities.executioner(command, 'vmail')
# Ensure ownership is correct
command = f"chown -R vmail:vmail '{maildir_base}'"
ProcessUtilities.executioner(command, 'root')
# command = f"mkdir '/home/vmail/{domain}/{userName}/Maildir/.Archive' " \
# f"'/home/vmail/{domain}/{userName}/Maildir/.Deleted Items' " \
# f"'/home/vmail/{domain}/{userName}/Maildir/.Drafts' " \
# f"'/home/vmail/{domain}/{userName}/Maildir/.Sent' " \
# f"'/home/vmail/{domain}/{userName}/Maildir/.Junk E-mail'"
# ProcessUtilities.executioner(command, 'vmail')
#
# command = f"chmod 700 '/home/vmail/{domain}/{userName}/Maildir/.Archive' " \
# f"'/home/vmail/{domain}/{userName}/Maildir/.Deleted Items' " \
# f"'/home/vmail/{domain}/{userName}/Maildir/.Drafts' " \
# f"'/home/vmail/{domain}/{userName}/Maildir/.Sent' " \
# f"'/home/vmail/{domain}/{userName}/Maildir/.Junk E-mail'"
# ProcessUtilities.executioner(command, 'vmail')
# Create standard IMAP folders
standard_folders = [
".Archive",
".Deleted Items",
".Drafts",
".Sent",
".Junk E-mail"
]
for folder in standard_folders:
folder_path = f"{maildir_path}/{folder}"
if not os.path.exists(folder_path):
command = f"mkdir -p '{folder_path}/cur' '{folder_path}/new' '{folder_path}/tmp'"
ProcessUtilities.executioner(command, 'vmail')
# Set permissions for all folders
command = f"chmod -R 700 '{maildir_path}'"
ProcessUtilities.executioner(command, 'vmail')
# Ensure final ownership
command = f"chown -R vmail:vmail '{maildir_base}'"
ProcessUtilities.executioner(command, 'root')
#if not os.path.exists('/usr/local/lscp/cyberpanel/rainloop/data/_data_/_default_/plugins/mailbox-detect'):
# mailUtilities.InstallMailBoxFoldersPlugin()

View File

@ -2948,6 +2948,33 @@ echo $oConfig->Save() ? 'Done' : 'Error';
writeToFile.write(content)
writeToFile.close()
# Fix mailbox auto-creation issue
if dovecotContent.find('lda_mailbox_autocreate') == -1:
Upgrade.stdOut("Enabling mailbox auto-creation in dovecot...")
# Add mailbox auto-creation settings to protocol lda section
dovecotContent = open(dovecotConf, 'r').read()
if dovecotContent.find('protocol lda') > -1:
# Update existing protocol lda section
import re
pattern = r'(protocol lda\s*{[^}]*)'
replacement = r'\1\n lda_mailbox_autocreate = yes\n lda_mailbox_autosubscribe = yes'
dovecotContent = re.sub(pattern, replacement, dovecotContent)
writeToFile = open(dovecotConf, 'w')
writeToFile.write(dovecotContent)
writeToFile.close()
else:
# Add new protocol lda section
writeToFile = open(dovecotConf, 'a')
content = """\nprotocol lda {
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
}\n"""
writeToFile.write(content)
writeToFile.close()
command = 'systemctl restart dovecot'
Upgrade.executioner(command, command, 0)