OpenDKIM több domain Debian alatt Postfix és Exim4 beállítás

OpenDKIM több domain Debian alatt Postfix és Exim4 beállítás

Levelező szerver beállítás DKIM kiszolgálásra. A bejegyzés Debian operációs rendszerre készült, több verzió, így Debian Lenny, Debian Squeeze esetét is tárgyalja. A postfix és exim4 szükséges beállításokat is említi.

OpenDKIM Debian Lenny esetén postfix levelező szerverhez

Lépj be a http://www.opendkim.org/ weboldalra és Töltsd le a megfelelő verziót. Mentsd le a szervered  /usr/local/src könyvtárába. Ehhez a leíráshoz mi a 2.4.2 verziót töltöttük le és használtuk, ami 2011 Augusztus 6-i kiadás.

Ki kell csomagolni a letöltött állomány, majd lefordítani és telepíteni:

tar zxvf opendkim-2.4.2.tar.gz
cd opendkim-2.4.2
./configure --sysconfdir=/etc --prefix=/usr/local --localstatedir=/var
make
make install

A telepítést és a fordítást is root felhasználói jogosultsággal kell végezni, vagy megfelelően sudo-val. Nálunk szükséges volt a /etc/ld.so.conf.d/x86_64-linux-gnu.conf fájlban az /usr/local/bin elérés beállítása, majd az ldconfig.

Felhasználók, könyvtárak létrehozása, jogosultságok beállítása:

groupadd opendkim
useradd -r -g opendkim -G mail -s /sbin/nologin -d /var/run/opendkim -c "OpenDKIM" opendkim
chown opendkim:opendkim /var/run/opendkim
chmod 700 /var/run/opendkim
mkdir -p /etc/opendkim/keys
chown -R opendkim:opendkim /etc/opendkim
chmod -R go-wrx /etc/opendkim/keys

Az init script beállítása: /etc/initd./opendkim

#! /bin/sh
#
### BEGIN INIT INFO
# Provides:        opendkim
# Required-Start:    $syslog $time $local_fs $remote_fs $named $network
# Required-Stop:    $syslog $time $local_fs $remote_fs
# Default-Start:    2 3 4 5
# Default-Stop:        0 1 6
# Short-Description:    Start the OpenDKIM service
### END INIT INFO

PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/sbin/opendkim
NAME=opendkim
DESC="OpenDKIM"
RUNDIR=/var/run/$NAME
USER=opendkim
GROUP=opendkim
SOCKET=local:$RUNDIR/$NAME.sock
PIDFILE=$RUNDIR/$NAME.pid

# How long to wait for the process to die on stop/restart
stoptimeout=5

test -x $DAEMON || exit 0

# Include opendkim defaults if available
if [ -f /etc/default/opendkim ] ; then
    . /etc/default/opendkim
fi

if [ -f /etc/opendkim.conf ]; then
    CONFIG_SOCKET=`awk '$1 == "Socket" { print $2 }' /etc/opendkim.conf`
fi

# This can be set via Socket option in config file, so it's not required
if [ -n "$SOCKET" -a -z "$CONFIG_SOCKET" ]; then
    DAEMON_OPTS="-p $SOCKET $DAEMON_OPTS"
fi

DAEMON_OPTS="-x /etc/opendkim.conf -u $USER -P $PIDFILE $DAEMON_OPTS"

start() {
    # Create the run directory if it doesn't exist
    if [ ! -d "$RUNDIR" ]; then
        install -o "$USER" -g "$GROUP" -m 755 -d "$RUNDIR" || return 2
    fi
    # Clean up stale sockets
    if [ -f "$PIDFILE" ]; then
        pid=`cat $PIDFILE`
        if ! ps -C "$DAEMON" -s "$pid" >/dev/null; then
            rm "$PIDFILE"
            TMPSOCKET=""
            if [ -n "$SOCKET" ]; then
                TMPSOCKET="$SOCKET"
            elif [ -n "$CONFIG_SOCKET" ]; then
                TMPSOCKET="$CONFIG_SOCKET"
            fi
            if [ -n "$TMPSOCKET" ]; then
                # UNIX sockets may be specified with or without the
                # local: prefix; handle both
                t=`echo $SOCKET | cut -d: -f1`
                s=`echo $SOCKET | cut -d: -f2`
                if [ -e "$s" -a -S "$s" ]; then
                    if [ "$t" = "$s" -o "$t" = "local" ]; then
                        rm "$s"
                    fi
                fi
            fi
        fi
    fi
    start-stop-daemon --start --quiet --pidfile "$PIDFILE" --exec "$DAEMON" --test -- $DAEMON_OPTS || return 1
    start-stop-daemon --start --quiet --pidfile "$PIDFILE" --exec "$DAEMON" -- $DAEMON_OPTS || return 2
    # Detect exit status 78 (configuration error)
    ret=$?
    if [ $ret -eq 78 ]; then
        echo "See /usr/share/doc/opendkim/README.Debian for help"
        echo "Starting for DKIM verification only"
        DAEMON_OPTS="-b v $DAEMON_OPTS"
        start-stop-daemon --start --quiet --pidfile "$PIDFILE" --exec "$DAEMON" -- $DAEMON_OPTS
        exit 0
    elif [ $ret -ne 0 ]; then
        exit $ret
    fi
}

stop() {
    start-stop-daemon --stop --retry "$stoptimeout" --exec "$DAEMON"
    [ "$?" = 2 ] && return 2
}

reload() {
    start-stop-daemon --stop --signal USR1 --exec "$DAEMON"
}

case "$1" in
  start)
    echo -n "Starting $DESC: "
    start
    echo "$NAME."
    ;;
  stop)
    echo -n "Stopping $DESC: "
    stop
    echo "$NAME."
    ;;
  restart)
    echo -n "Restarting $DESC: "
    stop
    start
    echo "$NAME."
    ;;
  reload|force-reload)
    echo -n "Restarting $DESC: "
    reload
    echo "$NAME."
    ;;
  *)
    N=/etc/init.d/$NAME
    echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
    exit 1
    ;;
esac

exit 0
DKIM kulcsok generálása és beállítása

A szokásoknak megfelelően az example.com domain nevet használom a bejegyzésben, minden helyen ezt az aktuális domain névre kell cserélni. Az opendkim verziótól függően opendkim-genkey.sh vagy opendkim-genkey a szkript neve, amivel ekészíthetjük a kulcsokat:

mkdir -p /etc/opendkim/keys/example.com
/usr/local/bin/opendkim-genkey.sh -D /etc/opendkim/keys/example.com/ -d example.com -s default
chown -R opendkim:opendkim /etc/opendkim/keys/example.com
DKIM konfigurációs fájlok és beállításuk

Hozzuk létre ezeket a fájlokat és ne felejtsük el chown -R opendkim:opendkim /etc/opendkim jogosultságot beállítani a fájlokra, könyvtárakra.

  1. /etc/opendkim.conf – OpenDKIM alap konfigurációs fájl
  2. /etc/default/opendkim – OpenDKIM default paraméterek
  3. /etc/opendkim/KeyTable – a generált kulcsok listája
  4. /etc/opendkim/SigningTable – a domain nevek listája és a hozzáférések
  5. /etc/opendkim/TrustedHosts – az engedélyezett szerverek listája

Egy példa az /etc/opendkim.conf fájl beállításra:

##
## opendkim.conf -- configuration file for OpenDKIM filter
##
Canonicalization        relaxed/relaxed
ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
InternalHosts           refile:/etc/opendkim/TrustedHosts
KeyTable                refile:/etc/opendkim/KeyTable
LogWhy                  Yes
MinimumKeyBits          1024
Mode                    sv
PidFile                 /var/run/opendkim/opendkim.pid
SigningTable            refile:/etc/opendkim/SigningTable
Socket                  inet:12345@127.0.0.1
Syslog                  Yes
SyslogSuccess           Yes
TemporaryDirectory      /var/tmp
UMask                   022
UserID                  opendkim:opendkim

Egy példa az /etc/default/opendkim fájl beállításra:

# Command-line options specified here will override the contents of
# /etc/opendkim.conf. See opendkim(8) for a complete list of options.
#DAEMON_OPTS=""
#
# Uncomment to specify an alternate socket
# Note that setting this will override any Socket value in opendkim.conf
#SOCKET="local:/var/run/opendkim/opendkim.sock" # default
#SOCKET="inet:54321" # listen on all interfaces on port 54321
SOCKET="inet:12345@localhost" # listen on loopback on port 12345
#SOCKET="inet:12345@192.0.2.1" # listen on 192.0.2.1 on port 12345

A példa domain név az /etc/opendkim/KeyTable fájl beállításra, soronként kerülhet be a többi domain paramétere:

default._domainkey.example.com example.com:default:/etc/opendkim/keys/example.com/default

A példa domain név az /etc/opendkim/SigningTable fájl beállításra, soronként kerülhet be a többi domain paramétere:

*@example.com default._domainkey.example.com

A példa domain név az /etc/opendkim/TrustedHosts fájl beállításra:

127.0.0.1
hostname1.example1.com
hostname2.example1.com
example1.com

 

OpenDKIM Postfix beállítás

Állítsuk be a postfix-et, hogy kezelje a domain neveket és a hozzájuk tartozó kulcsokat az openDKIM-en keresztül, ellenőrizzük a postfix verziónknak megfelelő milter protokoll beállítást, így pl. ha szükséges állítsuk be a “milter_protocol   = 2” paramétert is.

smtpd_milters           = inet:127.0.0.1:8891
non_smtpd_milters       = $smtpd_milters
milter_default_action   = accept

Majd indítsuk el- illetve újra az alkalmazásokat:

service opendkim start
service postfix restart
chkconfig --level 2345 opendkim on

A legfontosabb lépés, adjuk a DNS-hez a legenerált DKIM kulcsokat

cat /etc/opendkim/keys/example.com/default.txt
default._domainkey IN TXT "v=DKIM1; g=*; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHY7Zl+n3SUldTYRUEU1BErHkKN0Ya52gazp1R7FA7vN5RddPxW/sO9JVRLiWg6iAE4hxBp42YKfxOwEnxPADbBuiELKZ2ddxo2aDFAb9U/lp47k45u5i2T1AlEBeurUbdKh7Nypq4lLMXC2FHhezK33BuYR+3L7jxVj7FATylhwIDAQAB" ; ----- DKIM default for example.com

A beállítások után egy levél küldéssel tudjuk ellenőrizni, hogy rendben működik a DKIM kulcs azonosítás. Egy válasz levélben kapjuk meg a kiértékelést, ha küldünk emailt ide: check-auth@verifier.port25.com

OpenDKIM Debian Sqeeze esetén exim4 levelező szerverhez

OpenDKIM Exim4 beállítás

A korábban leírt openDKIM beállítások nem változnak, ehhez hasonlóan kell elvégezni a leépések, így csak az exim konfiguráicós beállítását írom le. A /etc/exim4/exim.conf fájlba kell beállítanunk a remote_smtp paramétert. Általában csak “driver = smtp” van beállítva, ezt kell lecserélnünk a következőre:

remote_smtp:
        driver = smtp
        dkim_domain = $sender_address_domain
        dkim_selector = default
        dkim_private_key = ${if exists{/etc/opendkim/keys/$sender_address_domain/default.private}{/etc/opendkim/keys/$sender_address_domain/default.private}{0}}
        dkim_canon = relaxed
        dkim_strict = 0

Ezt követően csak újra kell olvastatnunk a konfigurációt:

update-exim4
service exim4 restart

 

OpenDKIM Debian Squeeze esetén postfix levelező szerverhez

A Debian Squeeze és a frissebb Debian operációs rendszereken könnyebb dolgunk van, mert már szerepel a csomagok között az openDKIM. Így csak telepítenünk kell a tárolóból:

apt-get install opendkim

Majd beállítanunk a paramétereket a /etc/opendkim.conf fájlban:

KeyTable           /etc/opendkim/KeyTable
SigningTable       /etc/opendkim/SigningTable
ExternalIgnoreList /etc/opendkim/TrustedHosts
InternalHosts      /etc/opendkim/TrustedHosts

A korábban leírtak szerint le tudjuk a kulcsokat generálni, beállítani a fájlokba, és elindítani az /etc/init.d.opendkim szolgáltatást.

Postfix beállítás Debian Squeeze DKIM kiszolgáláshoz

Itt kicsit módosul a javasolt beállítás, ez főként a milter_protocol paraméter. Ennek helyes beállítását a postfix manuálban megtaláljuk:

milter_default_action = accept milter_protocol = 6 smtpd_milters = inet:localhost:12345 non_smtpd_milters = inet:localhost:12345

Majd újraindítjuk a postfixet és a logok elemzésével ellenőrizhetjük a helyes működést.

/etc/init.d/postfix reload

 

 

No Comments.

Leave a Reply