Решение Perl:
perl -ane 'BEGIN { $" = "\t" }
$F[0] =~ /(..)$/,
$F[-1] = { "01" => 2, "99" => 1 }->{$1} || $F[-1];
print "@F\n" ' input_file > output_file
-n
считывает ввод построчно. -a
разбивает каждую строку по пробелам в массив @F. $ "
настроен на табуляцию, поэтому элементы массива разделяются табуляцией в двойных кавычках (" @ F "
) $ F [0]
сопоставляется с регулярное выражение, которое извлекает свои последние два символа в $ 1
$ F [-1]
, последний столбец, устанавливается в 2 или 1 на основе $ 1
. Если $ 1
- это что-то еще, исходное значение сохраняется. Большинство доменов любого значимого размера имеют машину, предназначенную исключительно для почты, поэтому mail.example.com
.
Мне также нужно создать соответствующий CNAME?
Нет, вам нужна запись A для mail.main.dom
. Записи MX всегда должны указывать на A. Распространенной ошибкой является указание записи MX на CNAME.
С синтаксисом Bind:
main.dom. IN MX 10 mail.main.dom.
mail.main.dom. IN A 1.2.3.4
Или, если вы хотите обслуживать все на одной машине:
main.dom. IN A 1.2.3.4
main.dom. IN MX 10 main.dom.
www.main.dom. IN CNAME main.dom.
Дополнительные примечания:
Это пример. Почтовый хост может иметь любое имя (и один физический хост может иметь несколько имен). В учебнике может быть проще отличить почтовый хост от других хостов, если в имени почтового хоста есть mail
. Это снижает вероятность путаницы.