124 lines
4.9 KiB
Plaintext
Executable File
124 lines
4.9 KiB
Plaintext
Executable File
import os
|
|
|
|
# Get environment variables
|
|
smtp_host = os.environ.get('ODOO_MAIL_SMTP_HOST', '')
|
|
smtp_port = int(os.environ.get('ODOO_MAIL_SMTP_PORT', 587))
|
|
smtp_encryption = os.environ.get('ODOO_MAIL_SMTP_ENCRYPTION', 'starttls')
|
|
smtp_from_filter = os.environ.get('ODOO_MAIL_SMTP_FROM_FILTER', '')
|
|
imap_host = os.environ.get('ODOO_MAIL_IMAP_HOST', '')
|
|
imap_port = int(os.environ.get('ODOO_MAIL_IMAP_PORT', 993))
|
|
imap_ssl = os.environ.get('ODOO_MAIL_IMAP_SSL', 'True') == 'True'
|
|
mail_user = os.environ.get('ODOO_MAIL_USER', '')
|
|
mail_password = os.environ.get('ODOO_MAIL_PASSWORD', '')
|
|
mail_bounce_alias = os.environ.get('MAIL_BOUNCE_ALIAS', '')
|
|
mail_catchall_alias = os.environ.get('MAIL_CATCHALL_ALIAS', '')
|
|
mail_catchall_domain = os.environ.get('MAIL_CATCHALL_DOMAIN', '')
|
|
mail_default_from = os.environ.get('MAIL_DEFAULT_FROM', '')
|
|
mail_alias_domain = os.environ.get('MAIL_ALIAS_DOMAIN', '')
|
|
|
|
# Setup outgoing mail server
|
|
if smtp_host:
|
|
print("Setup outgoing mail server.")
|
|
ir_mail_server = {
|
|
'name': smtp_host,
|
|
'smtp_host': smtp_host,
|
|
'smtp_port': smtp_port,
|
|
'smtp_user': mail_user,
|
|
'smtp_pass': mail_password,
|
|
'smtp_encryption': smtp_encryption,
|
|
'from_filter': smtp_from_filter
|
|
}
|
|
ir_mail_server_id = env['ir.mail_server'].search([('name', '=', smtp_host)], limit=1)
|
|
if ir_mail_server_id:
|
|
ir_mail_server_id.write(ir_mail_server)
|
|
else:
|
|
env['ir.mail_server'].create(ir_mail_server)
|
|
env.cr.commit()
|
|
|
|
# Setup incoming mail server
|
|
if imap_host:
|
|
print("Setup incoming mail server.")
|
|
fetchmail_server = {
|
|
'name': imap_host,
|
|
'server': imap_host,
|
|
'port': imap_port,
|
|
'user': mail_user,
|
|
'password': mail_password,
|
|
'is_ssl': imap_ssl,
|
|
'state': 'done'
|
|
}
|
|
fetchmail_server_id = env['fetchmail.server'].search([('name', '=', imap_host)], limit=1)
|
|
if fetchmail_server_id:
|
|
fetchmail_server_id.write(fetchmail_server)
|
|
else:
|
|
env['fetchmail.server'].create(fetchmail_server)
|
|
env.cr.commit()
|
|
|
|
# Setup system parameters
|
|
if mail_bounce_alias:
|
|
print(f"Set mail bounce alias: {mail_bounce_alias}")
|
|
mail_bounce_alias_id = env['ir.config_parameter'].search([('key', '=', 'mail.bounce.alias')], limit=1)
|
|
if not mail_bounce_alias_id:
|
|
env['ir.config_parameter'].create({'key': 'mail.bounce.alias', 'value': mail_bounce_alias})
|
|
elif mail_bounce_alias_id.value != mail_bounce_alias:
|
|
mail_bounce_alias_id.write({'value': mail_bounce_alias})
|
|
env.cr.commit()
|
|
|
|
if mail_catchall_alias:
|
|
print(f"Set mail catchall alias: {mail_catchall_alias}")
|
|
mail_catchall_alias_id = env['ir.config_parameter'].search([('key', '=', 'mail.catchall.alias')], limit=1)
|
|
if not mail_catchall_alias_id:
|
|
env['ir.config_parameter'].create({'key': 'mail.catchall.alias', 'value': mail_catchall_alias})
|
|
elif mail_catchall_alias_id.value != mail_catchall_alias:
|
|
mail_catchall_alias_id.write({'value': mail_catchall_alias})
|
|
env.cr.commit()
|
|
|
|
if mail_catchall_domain:
|
|
print(f"Set mail catchall domain: {mail_catchall_domain}")
|
|
mail_catchall_domain_id = env['ir.config_parameter'].search([('key', '=', 'mail.catchall.domain')], limit=1)
|
|
if not mail_catchall_domain_id:
|
|
env['ir.config_parameter'].create({'key': 'mail.catchall.domain', 'value': mail_catchall_domain})
|
|
elif mail_catchall_domain_id.value != mail_catchall_domain:
|
|
mail_catchall_domain_id.write({'value': mail_catchall_domain})
|
|
env.cr.commit()
|
|
|
|
if mail_default_from:
|
|
print(f"Set mail default from: {mail_default_from}")
|
|
mail_default_from_id = env['ir.config_parameter'].search([('key', '=', 'mail.default.from')], limit=1)
|
|
if not mail_default_from_id:
|
|
env['ir.config_parameter'].create({'key': 'mail.default.from', 'value': mail_default_from})
|
|
elif mail_default_from_id.value != mail_default_from:
|
|
mail_default_from_id.write({'value': mail_default_from})
|
|
env.cr.commit()
|
|
|
|
# Setup mail alias domain
|
|
if mail_alias_domain:
|
|
try:
|
|
env['mail.alias.domain']
|
|
has_alias_domain_model = True
|
|
except KeyError:
|
|
has_alias_domain_model = False
|
|
|
|
if has_alias_domain_model:
|
|
company = env.user.company_id
|
|
values = {
|
|
'name': mail_alias_domain,
|
|
}
|
|
if mail_bounce_alias:
|
|
values['bounce_alias'] = mail_bounce_alias
|
|
if mail_catchall_alias:
|
|
values['catchall_alias'] = mail_catchall_alias
|
|
if mail_default_from:
|
|
values['default_from'] = mail_default_from
|
|
|
|
domain_id = env['mail.alias.domain'].search([
|
|
('name', '=', mail_alias_domain),
|
|
], limit=1)
|
|
|
|
if domain_id:
|
|
print(f"Update existing mail alias domain: {mail_alias_domain}")
|
|
domain_id.write(values)
|
|
else:
|
|
print(f"Create new mail alias domain: {mail_alias_domain}")
|
|
env['mail.alias.domain'].create(values)
|
|
env.cr.commit() |