Вы читали Документацию ? Я вижу две проблемы в вашем сообщении.
Во-первых, вы утверждаете, что обе Системы имеют одинаковое доменное имя, как и требовалось. Однако на скриншоте видно, что ваше доменное имя AD — LAGOON.local
, а не MYDOMAIN.intranet
, как для вашего сервера Univention.
Во-вторых, ваш файл журнала показывает, что вы -снова -пытаетесь использовать своего простого пользователя домена myuser
, а не администратора домена AD Admin
. У этого пользователя просто нет необходимых прав для доступа к Данным всего вашего домена AD.
Нам проще помочь вам с этими вопросами, касающимися Univention, на нашем форуме. Мы не можем гарантировать поддержку наших Продуктов на внешних форумах.
BIND's dig
, конечно, не единственный существующий инструмент.
С набором инструментов djbdns Даниэля Дж. Бернштейна это всего одна -строчка:
% cat domains.txt freebsd.org. % % xargs dnsmx < domains.txt | sed -E -e 's/[[:digit:]]+ //' | xargs dnsip 96.47.72.85 96.47.72.80 %
Файл domains.txt:
freebsd.org
redhat.com
yahoo.com
google.com
Однострочная команда для получения подробной информации:
NAMESERVER="4.2.2.2"; for i in $(cat domains.txt|xargs); do IFS=$'\n'; for LINE in $(host -t mx ${i} ${NAMESERVER}|grep 'mail is handled by'); do IP=$(host -t A $(echo "${LINE}"|awk '{print $NF}') ${NAMESERVER}|grep 'has address'|awk '{print $NF}'|xargs); echo "${LINE} [${IP}]"; done; IFS=' '; done
Вывод, одна строка на запись MX (домен может иметь несколько записей MX, также одно имя MX может соответствовать нескольким IP-адресам):
freebsd.org mail is handled by 10 mx1.freebsd.org. [96.47.72.80]
freebsd.org mail is handled by 30 mx66.freebsd.org. [96.47.72.85]
redhat.com mail is handled by 10 us-smtp-inbound-1.mimecast.com. [207.211.30.107 207.211.30.237 205.139.110.221 205.139.110.242 205.139.110.141 205.139.110.145 205.139.110.181 205.139.110.102 205.139.110.107 205.139.110.177 207.211.30.221 207.211.30.242 207.211.30.141 207.211.30.145 207.211.30.181 207.211.30.102]
redhat.com mail is handled by 10 us-smtp-inbound-2.mimecast.com. [205.139.110.145 207.211.30.237 205.139.110.141 207.211.30.221 207.211.30.145 205.139.110.221 207.211.30.181 205.139.110.177 205.139.110.102 207.211.30.141 207.211.30.242 205.139.110.242 205.139.110.181 205.139.110.107 207.211.30.102 207.211.30.107]
yahoo.com mail is handled by 1 mta6.am0.yahoodns.net. [67.195.204.73 67.195.228.106 67.195.228.110 67.195.228.111 67.195.204.79 98.136.96.75 67.195.204.77 67.195.204.72]
yahoo.com mail is handled by 1 mta7.am0.yahoodns.net. [98.136.96.75 67.195.228.111 67.195.204.74 67.195.228.94 67.195.204.77 98.136.96.76 67.195.228.110 67.195.228.109]
yahoo.com mail is handled by 1 mta5.am0.yahoodns.net. [98.136.96.91 67.195.204.77 67.195.228.110 98.136.96.77 98.136.96.74 67.195.204.74 67.195.204.73 67.195.204.79]
google.com mail is handled by 20 alt1.aspmx.l.google.com. [64.233.177.27]
google.com mail is handled by 30 alt2.aspmx.l.google.com. [173.194.68.26]
google.com mail is handled by 10 aspmx.l.google.com. [74.125.69.26]
google.com mail is handled by 50 alt4.aspmx.l.google.com. [64.233.186.26]
google.com mail is handled by 40 alt3.aspmx.l.google.com. [173.194.214.27]
Однострочная команда для получения только списка IP-адресов:
NAMESERVER="4.2.2.2"; for i in $(cat domains.txt|xargs); do IFS=$'\n'; for LINE in $(host -t mx ${i} ${NAMESERVER}|grep 'mail is handled by'); do host -t A $(echo "${LINE}"|awk '{print $NF}') ${NAMESERVER}|grep 'has address'|awk '{print $NF}'; done; IFS=' '; done
Вывод, просто соберите IP-адреса и напечатайте их по одному в строке:
96.47.72.80
96.47.72.85
207.211.30.181
205.139.110.242
205.139.110.102
205.139.110.107
205.139.110.141
...
есть длинный список ips 63 всего.
Путь:
arr=( $MX )
for ((i=1; i<${#arr[@]}; i+=2)); do dig A +short "${arr[i]}"; done
108.177.15.26
209.85.233.27
172.253.118.27
108.177.97.26
173.194.202.26
Следующая команда возвращает только список имен хостов (она обрезает вес и конечную точку):
MX_HOSTS=$(dig MX google.com +short | sed 's/.* \(.*\)\.$/\1/')
Затем вы можете выполнить цикл for для этого:
for h in ${MX_HOSTS} ; do
MX_IPS="${MX_IPS} $(dig $h +short)"
done
И проверьте с помощью:
[[ "${MX_IPS}" =~ "${CHECK_IP}" ]] && echo "yes" || echo "no"
Немного изменил его, чтобы адресовать URL-адрес записи MX вместо IP, но решил поделиться, если другим это может быть полезно.
#!/usr/bin/env bash
# Bulk DNS Lookup
# File name/path of domain list:
domain_list='domains.txt' # One FQDN per line in file.
# File name of output text
output='ns_output.txt'
# Clears previous output
> $output
# IP address of the nameserver used for lookups:
ns_ip='192.168.85.54'
#
# Seconds to wait between lookups:
loop_wait='1' # Is set to 1 second.
for domain in `cat $domain_list` # Start looping through domains
do
MX=$(dig @$ns_ip MX $domain +short) #query MX records from domain list and store it as variable $MX
#echo $MX >> $output;
#echo $domain >> $output;
arr=( $MX ) #creates array variable for the MX record answers
echo ${arr[1]} >> $output; #outputs only one record from above MX dig
: '
for ((i=1; i<${#arr[@]}; i+=2)); #since MX records have multiple answers, for loop goes through each answer
do
#echo $domain >> $output;
echo ${arr[i]} >> $output; #outputs each A record from above MX dig
#dig A +short "${arr[i]}" >> $output #queries A record for IP and writes answer
done
'
done;