install_opendkim.sh fix errors in adjustin main.cf file.
This commit is contained in:
@@ -13,6 +13,9 @@ echo -e "\n \033[32mStart Installation of OpenDKIM..\033[m"
|
||||
#conf_file="${_src_base_dir}/conf/install_opendkim.conf"
|
||||
|
||||
log_file="$(mktemp)"
|
||||
tmp_main_cf_file="$(mktemp)"
|
||||
|
||||
main_cf_file="/etc/postfix/main.cf"
|
||||
|
||||
backup_date="$(date +%Y-%m-%d-%H%M)"
|
||||
|
||||
@@ -27,6 +30,8 @@ postfix_spool_dir="/var/spool/postfix"
|
||||
opendkim_socket_dir="${postfix_spool_dir}/opendkim"
|
||||
opendkim_socket_file="${opendkim_socket_dir}/opendkim.sock"
|
||||
|
||||
opendkim_socket_string="local:/opendkim/opendkim.sock"
|
||||
|
||||
postfix_needs_restart=false
|
||||
opendkim_needs_restart=false
|
||||
|
||||
@@ -87,6 +92,82 @@ echo_skipped() {
|
||||
echo -e "\033[80G[ \033[37mskipped\033[m ]"
|
||||
}
|
||||
|
||||
# Funktion stellt sicher, dass in /etc/postfix/main.cf
|
||||
# - smtpd_milters
|
||||
# - non_smtpd_milters
|
||||
# den Wert "local:/opendkim/opendkim.sock" enthalten.
|
||||
#
|
||||
# Logik:
|
||||
# 1) Existiert eine aktive Zeile (nicht auskommentiert)? → anpassen
|
||||
# 2) Sonst: existiert eine auskommentierte Zeile? → ersetzen (entkommentieren)
|
||||
# 3) Sonst: Variable am Ende der Datei hinzufügen
|
||||
#
|
||||
|
||||
ensure_dkim_var() {
|
||||
local var="$1"
|
||||
|
||||
awk -v var="$var" -v dkim="$opendkim_socket_string" '
|
||||
# trim helper
|
||||
function trim(s) {
|
||||
sub("^[[:space:]]+", "", s)
|
||||
sub("[[:space:]]+$", "", s)
|
||||
return s
|
||||
}
|
||||
|
||||
# Normalisiert aktive Werte:
|
||||
# - wenn leer -> nur dkim
|
||||
# - wenn dkim schon enthalten -> unverändert
|
||||
# - sonst -> dkim vorne dran
|
||||
function normalize_active_value(v) {
|
||||
v = trim(v)
|
||||
if (v == "") return dkim
|
||||
if (index(v, dkim) > 0) return v
|
||||
return dkim "," v
|
||||
}
|
||||
|
||||
BEGIN { found_active=0; replaced_commented=0 }
|
||||
|
||||
#################################################################
|
||||
# FALL 1: Aktive Zeile (nicht auskommentiert): var =
|
||||
#################################################################
|
||||
$0 ~ "^[[:space:]]*"var"[[:space:]]*=" && $0 !~ "^[[:space:]]*#" {
|
||||
found_active=1
|
||||
|
||||
# rechten Teil extrahieren (nach "=")
|
||||
v=$0
|
||||
sub("^[[:space:]]*"var"[[:space:]]*=[[:space:]]*", "", v)
|
||||
|
||||
print var" = " normalize_active_value(v)
|
||||
next
|
||||
}
|
||||
|
||||
#################################################################
|
||||
# FALL 2: Auskommentierte Zeile: # var =
|
||||
# Sonderregel: ersetzen mit NUR DKIM, unabhängig vom Kommentarinhalt
|
||||
#################################################################
|
||||
$0 ~ "^[[:space:]]*#[[:space:]]*"var"[[:space:]]*=" \
|
||||
&& found_active==0 && replaced_commented==0 {
|
||||
replaced_commented=1
|
||||
print var" = " dkim
|
||||
next
|
||||
}
|
||||
|
||||
#################################################################
|
||||
# Sonst: Zeile unverändert ausgeben
|
||||
#################################################################
|
||||
{ print }
|
||||
|
||||
#################################################################
|
||||
# FALL 3: Variable nicht vorhanden → am Ende hinzufügen
|
||||
#################################################################
|
||||
END {
|
||||
if (found_active==0 && replaced_commented==0) {
|
||||
print var" = " dkim
|
||||
}
|
||||
}
|
||||
' "$main_cf_file"
|
||||
}
|
||||
|
||||
|
||||
# -------------
|
||||
# - Some pre-installation tasks
|
||||
@@ -610,20 +691,16 @@ else
|
||||
fi
|
||||
|
||||
echononl " Activate processing of e-mail through the OpenDKIM daemon.."
|
||||
if grep -q -E "milter_default_action\s*=\s*accept" /etc/postfix/main.cf ; then
|
||||
echo_skipped
|
||||
warn "Postfix (main.cf) seems already be configured for milters"
|
||||
echononl " Delete previosly saved Postfix configuration.."
|
||||
rm /etc/postfix/main.cf.$backup_date 2> $log_file
|
||||
if [[ $? -eq 0 ]] ; then
|
||||
echo_ok
|
||||
else
|
||||
echo_failed
|
||||
error "$(cat $log_file)"
|
||||
fi
|
||||
if grep -q -E "^\s*#?\s*smtpd_milters\s*=" ${main_cf_file} ; then
|
||||
|
||||
ensure_dkim_var "smtpd_milters" > "${tmp_main_cf_file}"
|
||||
cp "${tmp_main_cf_file}" "${main_cf_file}"
|
||||
|
||||
else
|
||||
|
||||
cat <<EOF >> /etc/postfix/main.cf 2> $log_file
|
||||
|
||||
|
||||
# ======= Milter configuration =======
|
||||
|
||||
# OpenDKIM
|
||||
@@ -642,8 +719,19 @@ milter_protocol = 6
|
||||
# 'smtpd_milters = local:/opendkim/opendkim.sock' here and add to
|
||||
# localhost:10025 section in master.cf: 'smtpd_milters='
|
||||
#
|
||||
#smtpd_milters = local:/opendkim/opendkim.sock
|
||||
smtpd_milters = local:/opendkim/opendkim.sock
|
||||
smtpd_milters = $opendkim_socket_string
|
||||
EOF
|
||||
|
||||
fi
|
||||
|
||||
if grep -q -E "^\s*#?\s*non_smtpd_milters\s*=" ${main_cf_file} ; then
|
||||
|
||||
ensure_dkim_var "non_smtpd_milters" > "${tmp_main_cf_file}"
|
||||
cp "${tmp_main_cf_file}" "${main_cf_file}"
|
||||
|
||||
else
|
||||
|
||||
cat <<EOF >> /etc/postfix/main.cf 2> $log_file
|
||||
|
||||
# Was sind non_smtpd_milters?
|
||||
#
|
||||
@@ -673,15 +761,15 @@ smtpd_milters = local:/opendkim/opendkim.sock
|
||||
#
|
||||
#
|
||||
# DKIM soll auch die ausgehenden Mails signieren, die nicht über smtpd daemon versendet werden.
|
||||
non_smtpd_milters = local:/opendkim/opendkim.sock
|
||||
non_smtpd_milters = $opendkim_socket_string
|
||||
EOF
|
||||
postfix_needs_restart=true
|
||||
if [[ $? -eq 0 ]] ; then
|
||||
fi
|
||||
postfix_needs_restart=true
|
||||
if [[ $? -eq 0 ]] ; then
|
||||
echo_ok
|
||||
else
|
||||
else
|
||||
echo_failed
|
||||
error "$(cat $log_file)"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@@ -816,4 +904,5 @@ fi
|
||||
|
||||
echo ""
|
||||
rm -f "$log_file"
|
||||
rm -f "$tmp_main_cf_file"
|
||||
exit 0
|
||||
|
||||
Reference in New Issue
Block a user