Я прочитал учебник, опубликованный MountainX (Setup DKIM (DomainKeys) для Ubuntu, Postfix и Mailman), но я не могу понять, как применять эти шаги, если я хочу размещать и отправлять электронные письма для нескольких домены. У кого-нибудь есть ключ?
Этот скрипт автоматизирует часть после «Готово! Сервер готов к работе с 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
Этот скрипт автоматизирует часть после «Готово! Сервер готов к работе с 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