Использование DKIM на моем сервере для нескольких доменов (веб-сайтов)

Я прочитал учебник, опубликованный MountainX (Setup DKIM (DomainKeys) для Ubuntu, Postfix и Mailman), но я не могу понять, как применять эти шаги, если я хочу размещать и отправлять электронные письма для нескольких домены. У кого-нибудь есть ключ?

1
задан 13 April 2017 в 15:23

2 ответа

Этот скрипт автоматизирует часть после «Готово! Сервер готов к работе с DKIM»

Чтобы облегчить автоматизацию этого процесса, я создал этот сценарий bash. Просто добавьте «domain.com» на строку внутри массива domains = ().

Сначала создайте файлы и каталоги, если они еще не существуют

/etc/opendkim/keys/
/etc/opendkim/KeyTable
/etc/opendkim/SigningTable
/etc/opendkim/TrustedHosts
/etc/opendkim/spfs.txt

spfs.txt файл будет содержать все записи spf, которые необходимо добавить в ваши записи DNS для каждого домена.

ПРИМЕЧАНИЕ. Не запускайте более одного раза, он не проверяет, существует ли домен уже существующий. Сценарий также должен выполняться как root.

#!/bin/bash
domains=(
        'domain.com'
)
for domain in "${domains[@]}"
do
keydir="/etc/opendkim/keys/$domain"
if [ -d "$keydir" ]
then
cd $keydir
else
mkdir $keydir
cd $keydir
fi
opendkim-genkey -r -d $domain
chown opendkim:opendkim default.private
echo "default._domainkey.$domain $domain:default:$keydir/default.private" >> /etc/opendkim/KeyTable
echo "$domain default._domainkey.$domain" >> /etc/opendkim/SigningTable
echo "$domain" >> /etc/opendkim/TrustedHosts
echo "$(cat $keydir/default.txt)" >> spfs.txt
done
4
ответ дан 24 May 2018 в 10:27

Этот скрипт автоматизирует часть после «Готово! Сервер готов к работе с DKIM»

Чтобы облегчить автоматизацию этого процесса, я создал этот сценарий bash. Просто добавьте один домен, например «example.com» на строку внутри массива domains = ().

Этот скрипт создает файлы для вас и проверяет, находится ли строка в файле

[d3 ] Spfs.txt удаляется и воссоздается каждый раз при запуске и проверяет вторую строку default.txt на spfs.txt перед добавлением

. Вы должны разместить ваши серверы ipv4 и ipv6 (если они есть) в переменных предоставлена. Он проверяет, не arent empty

, вы можете запустить этот файл несколько раз благодаря добавленным чекам.

#!/bin/bash
# List of domains
domains=( 
        'example.com'
)
# file paths and directories
dkim="/etc/opendkim"
keys="$dkim/keys"
keyfile="$dkim/KeyTable"
signfile="$dkim/SigningTable"
trustfile="$dkim/TrustedHosts"
spffile="$dkim/spfs.txt"
# Set Ipv6 and Ipv4 addresses for the server here
ipv4=""
ipv6=""
# loopback addresses for the server
loop=( localhost 127.0.0.1 )
function loopback {
        for back in "${loop[@]}"
        do
                if ! grep -q "$back" "$trustfile"; then
                        echo "$back" >> "$trustfile"
                fi
        done
}
# Check for files and create / write to them if they dont exist
if [ ! -d "$keys" ]; then
        mkdir "$keys"
fi
if [ ! -f "$keyfile" ]; then
        touch "$keyfile"
fi
if [ ! -f "$signfile" ]; then
        touch "$signfile"
fi
if [ ! -f "$trustfile" ]; then
        touch "$trustfile"
        loopback
else
        loopback
fi
if [ ! -f "$spffile" ]; then
        touch "$spffile"
else
        rm -rf "$spffile"
        touch "$spffile"
fi
if [ ! -z "$ipv6" ]; then
        if ! grep -q "$ipv6" "$trustfile"; then
                echo "$ipv6" >> "$trustfile"
        fi
fi
if [ ! -z "$ipv4" ]; then
        if ! grep -q "$ipv4" "$trustfile"; then
                echo "$ipv4" >> "$trustfile"
        fi
fi
# Generate keys and write the spfs records we need for each domain to one file
for domain in "${domains[@]}"
do
        keydir="$keys/$domain"
        default="$keydir/default.txt"
        if [ ! -d "$keydir" ]; then
                mkdir $keydir
        fi
        cd $keydir
        opendkim-genkey -r -d $domain
        chown opendkim:opendkim default.private
        key="default._domainkey.$domain $domain:default:$keydir/default.private"
        sign="$domain default._domainkey.$domain"
        trust="$domain"
        spf="$(cat $default)"
        # Check only the last line against the spf file as the first line is always the same
        spflast="$(tail -1 $default)"
        if ! grep -q "$key" "$keyfile"; then
                echo "$key" >> "$keyfile"
        fi
        if ! grep -q "$sign" "$signfile"; then
                echo "$sign" >> "$signfile"
        fi
        if ! grep -q "$trust" "$trustfile"; then
                echo "$trust" >> "$trustfile"
        fi
        if ! grep -q "$spflast" "$spffile"; then
                echo "$spf" >> "$spffile"
        fi
done
3
ответ дан 24 May 2018 в 10:27

Другие вопросы по тегам:

Похожие вопросы: