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.
- /etc/opendkim.conf – OpenDKIM alap konfigurációs fájl
- /etc/default/opendkim – OpenDKIM default paraméterek
- /etc/opendkim/KeyTable – a generált kulcsok listája
- /etc/opendkim/SigningTable – a domain nevek listája és a hozzáférések
- /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.