Ubuntu, Postfix ve Mailman için MountainX ( Setup DKIM (DomainKeys) tarafından yayınlanan öğreticiyi okudum , ancak birkaç adım için e-postaları barındırmak ve göndermek istersem bu adımları nasıl uygulayacağımı çözemiyorum. Bir ipucu olan var mı?
Ubuntu, Postfix ve Mailman için MountainX ( Setup DKIM (DomainKeys) tarafından yayınlanan öğreticiyi okudum , ancak birkaç adım için e-postaları barındırmak ve göndermek istersem bu adımları nasıl uygulayacağımı çözemiyorum. Bir ipucu olan var mı?
Yanıtlar:
İyi! Bunu soruda belirtilen postadan anladım. Yanıtın kendisi ile verilen bağlantılar arasında bir çeşit karışma yaptım. Özellikle dördüncü bağlantı kullandığım bağlantı.
Yani şey böyle gider. Bir sunucunuz veya VPS’niz olduğunu ve etki alanlarınızdan birini ana etki alanı yapıp sunucu adı olarak kullandığınızı varsayalım (örneğimde: etkialanim.com).
Dolayısıyla, her şeyden önce, işleri kolaylaştırmak için kökü değiştireceğiz, ancak bu adımı atlayıp sudo
her komuttan önce kullanabilirsiniz .
sudo su
Şimdi, OpenDKIM'i yüklüyoruz:
apt-get install opendkim opendkim-tools
Yapılandırma dosyasını düzeltelim. /etc/opendkim.conf
Düzenlemeye açılıyoruz . Nano kullanıyorum, fakat diğer editörle aynı.
nano /etc/opendkim.conf
Açıldıktan sonra, bunun gibi görünmesini sağlayın. Eğer rahat hissediyorsanız, bazı seçenekleri değiştirebilirsiniz ancak Domain
, KeyFile
ve Selector
yorumunu kalmalıdır.
# This is a basic configuration that can easily be adapted to suit a standard
# installation. For more advanced options, see opendkim.conf(5) and/or
# /usr/share/doc/opendkim/examples/opendkim.conf.sample.
#
#Domain example.com
#KeyFile /etc/opendkim/201205.private
#Selector 201205
#
# Commonly-used options
Canonicalization relaxed/simple
Mode sv
SubDomains yes
# Log to syslog
Syslog yes
LogWhy yes
# Required to use local socket with MTAs that access the socket as a non-
# privileged user (e.g. Postfix)
UMask 022
UserID opendkim:opendkim
#
KeyTable /etc/opendkim/KeyTable
SigningTable /etc/opendkim/SigningTable
ExternalIgnoreList /etc/opendkim/TrustedHosts
InternalHosts /etc/opendkim/TrustedHosts
#
Socket inet:8891@localhost
#EOF
Daha sonra, OpenDKIM'in ne kullanması ve işlemesi gerektiğiyle ilgili bilgileri içeren klasör ve dosyaların bir kısmını yarattık. Şimdilik TrustedHosts
dosya. Oluşturur ve düzenleriz:
mkdir /etc/opendkim
nano /etc/opendkim/TrustedHosts
Bu dosyaya güvenilir adreslerin bir listesini koymalıyız: localhost ve 127.0.0.1 ve sunucu adınız ve IP’niz:
127.0.0.1
localhost
192.99.34.121
mydomain.com
Şimdi OpenDKIM config dosyasını düzenliyoruz.
nano /etc/default/opendkim
Ve bu satırları dosyanın sonuna ekleyin. OpenDKIM'e hangi limanda imzalama isteklerini beklemesi gerektiğini söylerler:
SOCKET="inet:8891@localhost"
Postfix config dosyasını açtık.
nano /etc/postfix/main.cf
Ve bu satırları dosyanın sonuna ekleyin. Postfix'e imzalanacak e-postaları ve nereye göndermesi gerektiğini söylerler.
milter_default_action = accept
milter_protocol = 6
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
Şu anda alan adı eklemiyorsanız, her şeyi yeniden başlatabilirsiniz, böylece yapılandırma etkili olacaktır.
/etc/init.d/opendkim restart
/etc/init.d/postfix reload
/etc/init.d/postfix restart
Bitti! Sunucu DKIM ile çalışmaya hazır. Şimdi, etki alanlarınızı bu sisteme eklemeniz gerekiyor. Aşağıdaki işlem, eklemek istediğiniz tüm etki alanları için aynıdır. Örnek olarak otherdomain.com kullanacağım, kendin ile değiştir.
Önceden köken olduğumu hatırlayın, ancak yapmadıysanız sudo su
, anahtar kelimelerle komutlarınızı çalıştırın veya bu komutlardan önce geçin sudo
.
sudo su
Öncelikle, etki alanımız için bir dizin yaratır ve onun içine gireriz:
mkdir -p /etc/opendkim/keys/otherdomain.com
cd /etc/opendkim/keys/otherdomain.com
Şimdi etki alanı için bir anahtar üretiyoruz:
opendkim-genkey -r -d otherdomain.com
Yeni oluşturulan dosyanın OpenDKIM kullanıcısına sahipliğini veriyoruz:
chown opendkim:opendkim default.private
KeyTable
Yeni alanımıza yeni anahtarımızı eklemek için dosyayı açıyoruz :
nano /etc/opendkim/KeyTable
Dosyanın sonuna ekleriz (burada sahip olabileceğimiz diğer tüm alanlardan sonra):
default._domainkey.otherdomain.com otherdomain.com:default:/etc/opendkim/keys/otherdomain.com/default.private
Biz açmak SigningTable
dosyayı.
nano /etc/opendkim/SigningTable
Ve dosyanın sonuna ekleyin (yine her alan için bir satır olacak):
otherdomain.com default._domainkey.otherdomain.com
Bu SigningTable, imzalanan tüm postaları listeler. Sadece bir alan adı ekleyerek, o alandan gelen tüm postalar imzalanır.
Bir sonraki adımı atma zorunluluğundan emin değilim, ama sadece yaptım, tam da ... TrustedHosts
Dosyayı açıyoruz .
nano /etc/opendkim/TrustedHosts
Ve dosyanın sonuna ekleyin:
otherdomain.com
Son bir şey: dosyanın içeriğini gösteririz /etc/opendkim/keys/otherdomain.com/default.txt
.
cat /etc/opendkim/keys/otherdomain.com/default.txt
Ve tırnak işaretleri arasına bilgileri TXT
etki alanının DNS Bölgesinde bir kayda ekleyin; kaydın default._domainkey
adı olarak da kullanmamız gerekir . NOT: "tırnak işaretleri arasında", " v=DKIM1;k=rsa; p=WIGfM...
" ile başlayan metindir .
Alan adı eklemeyi bitirdiyseniz (şimdiye kadar), değişiklikleri uygulamak için her şeyi yeniden başlatırız.
/etc/init.d/opendkim restart
/etc/init.d/postfix reload
/etc/init.d/postfix restart
Bitti!
/etc/opendkim/TrustedHosts
bu host üzerinden kaç alan adı çalıştırıldığına bakılmaksızın , dosyada hostun IP'sinin sadece bir kez orada olması gerektiğidir. Diğer tüm seçiciyi kullanmak istiyorsanız tüm dosyalarda default
değiştirdiğinizden emin olun !
*@
alan adının önündeki bölüme ihtiyacım var ; Ben bunu düzeltinceye kadar hiçbir şey imzalanmadı. cc: @ the_nuts
# touch /etc/opendkim/KeyTable
# touch /etc/opendkim/SigningTable
Bu komut dosyası, "Bitti! Sunucu, DKIM ile çalışmaya hazır" durumundan sonra otomatikleştiriyor
Bu işlemi otomatikleştirmek için biraz bu bash betiğini yarattım. Alanlar = () dizi içindeki her satıra bir 'domain.com' ekleyin.
Önceden mevcut değilse, önce dosyaları ve dizinleri oluşturun
/etc/opendkim/keys/
/etc/opendkim/KeyTable
/etc/opendkim/SigningTable
/etc/opendkim/TrustedHosts
/etc/opendkim/spfs.txt
spfs.txt dosyası, her etki alanı için DNS kayıtlarınıza eklemeniz gereken tüm spf kayıtlarını içerecektir.
NOT: bir defadan fazla çalıştırmayın, bir etki alanının zaten var olup olmadığını kontrol etmeyin. Komut dosyasının ayrıca kök olarak çalıştırılması gerekir.
#!/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
Bu komut dosyası, "Bitti! Sunucu, DKIM ile çalışmaya hazır" durumundan sonra otomatikleştiriyor
Bu işlemi otomatikleştirmek için biraz bu bash betiğini yarattım. Alan adları = () dizisinin satırına 'example.com' gibi bir alan ekleyin.
Bu komut dosyası sizin için dosyaları oluşturur ve dosyada bir satır olup olmadığını denetler
Her çalıştırıldığında Spfs.txt kaldırılır ve yeniden oluşturulur ve eklenmeden önce default.txt öğesinin 2. satırını spfs.txt ile kontrol eder
Sunucunuzu ipv4 ve ipv6'yı (eğer varsa) sağlanan değişkenlere yerleştirmelisiniz. Boş olup olmadıklarını kontrol eder
Eklenen çekler sayesinde bu dosyayı birkaç kez çalıştırabilirsiniz.
#!/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