Files
modoboa-installer/modoboa_installer/scripts/postfix.py
Antoine Nguyen 451c3b4695 CentOS support.
2016-05-31 12:41:50 +02:00

78 lines
2.7 KiB
Python

"""Postfix related tools."""
import os
from .. import package
from .. import utils
from . import base
class Postfix(base.Installer):
"""Postfix installer."""
appname = "postfix"
packages = {
"deb": ["postfix"],
"rpm": ["postfix"],
}
config_files = ["main.cf", "master.cf"]
def get_packages(self):
"""Additional packages."""
if package.backend.FORMAT == "deb":
packages = ["postfix-{}".format(self.db_driver)]
else:
packages = []
return super(Postfix, self).get_packages() + packages
def install_packages(self):
"""Preconfigure postfix package installation."""
package.backend.preconfigure(
"postfix", "main_mailer_type", "select", "No configuration")
super(Postfix, self).install_packages()
def get_template_context(self):
"""Additional variables."""
context = super(Postfix, self).get_template_context()
context.update({
"db_driver": self.db_driver,
"dovecot_mailboxes_owner": self.config.get(
"dovecot", "mailboxes_owner"),
"modoboa_venv_path": self.config.get(
"modoboa", "venv_path"),
"modoboa_instance_path": self.config.get(
"modoboa", "instance_path"),
})
return context
def post_run(self):
"""Additional tasks."""
venv_path = self.config.get("modoboa", "venv_path")
python_path = os.path.join(venv_path, "bin", "python")
script_path = os.path.join(venv_path, "bin", "modoboa-admin.py")
db_url = "{}://{}:{}@{}/{}".format(
self.dbengine, self.config.get("modoboa", "dbuser"),
self.config.get("modoboa", "dbpassword"),
self.dbhost, self.config.get("modoboa", "dbname"))
extensions = self.config.get("modoboa", "extensions")
exts_with_maps = ["modoboa-admin", "modoboa-admin-relaydomains",
"modoboa-postfix-autoreply"]
if extensions == "all":
extensions = exts_with_maps
else:
extensions = [ext for ext in exts_with_maps if ext in extensions]
if not extensions:
return
cmd = (
"{} {} postfix_maps --dbtype {} --extensions {} --dburl {} {}"
.format(python_path, script_path, self.dbengine,
" ".join(extensions), db_url, self.config_dir))
utils.exec_cmd(cmd)
# Generate EDH parameters
if not os.path.exists("{}/dh2048.pem".format(self.config_dir)):
cmd = "openssl dhparam -out dh2048.pem 2048"
utils.exec_cmd(cmd, cwd=self.config_dir)