# # opendkim # bundle agent opendkim(cfg_param) { vars: "service_name" string => "opendkim"; debian:: "pkgs" slist => {"opendkim"}; "uid" string => "opendkim"; "gid" string => "opendkim"; "cfg_file" string => "/etc/opendkim.conf"; "pid_file" string => "/run/opendkim/opendkim.pid"; centos:: "pkgs" slist => {"opendkim"}; "uid" string => "opendkim"; "gid" string => "opendkim"; "cfg_file" string => "/etc/opendkim.conf"; "pid_file" string => "/run/opendkim/opendkim.pid"; freebsd:: "pkgs" slist => {"opendkim"}; "uid" string => "mailnull"; "gid" string => "mailnull"; "cfg_file" string => "/usr/local/etc/mail/opendkim.conf"; "pid_file" string => "/var/run/opendkim.pid"; "service_name" string => "milter-opendkim"; any:: "default_cfg" data => '{ "uid": "$(uid)", "gid": "$(gid)", "milter_sock": "inet:4711@localhost", "mynetworks": ["127.0.0.1"], "pid_file": "$(pid_file)", "domains":["*"] }'; "cfg" data => mergedata(@(opendkim.default_cfg),@(opendkim.cfg_param)); "mynetworks_len" int => length(data_expand(@(cfg[mynetworks]))); "mynetworks_head" string => "$(cfg[mynetworks][0])"; "mynetworks_tail" slist => sublist(data_expand(@(cfg[mynetworks])),"tail",int(eval("$(mynetworks_len) - 1","math","infix"))); methods: "any" usebundle => opendkim_systemd_overrides, handle => "opendkim_overrides_done"; "any" usebundle => wmde_install_packages(@(opendkim.pkgs),"opendkim"); "any" usebundle => wmde_service("$(service_name)","opendkim_kept","opendkim_repaired"), depends_on => { "opendkim_overrides_done", "opendkim_pkgs_installed", "opendkim_cfg_done" }; files: "$(opendkim.cfg_file)" create => "true", edit_template => "$(sys.workdir)/inputs/$(def.wmde_libdir)/templates/opendkim.conf.mustache", template_method => "mustache", template_data => bundlestate("opendkim"), classes => if_repaired("opendkim_repaired"), handle => "opendkim_cfg_done"; reports: } bundle agent opendkim_systemd_overrides { files: freebsd:: "/etc/rc.conf.d/milteropendkim" create=>"true", content=>' milteropendkim_uid="$(opendkim.cfg[uid])" milteropendkim_gid="$(opendkim.cfg[gid])" '; centos:: "/etc/systemd/system/opendkim.service.d/override.conf" create => "true", content => " [Service] User=root Group=root ", classes => if_repaired("opendkim_repaired"), handle => "opendkim_systemd_override_created"; commands: centos&opendkim_repaired:: "/usr/bin/systemctl" args => "daemon-reload", depends_on => {"opendkim_systemd_override_created"}; }