Как я могу получить список локальных доменов из файла пересылки?
Пример /etc/exim4/forwards
:
a@test.com: a@lala.com
# ignore this line
b@test.com: a@example.com
b@hugo.com: hugo@example.com
Здесь расширение строки (или как оно там называется грамм) должен вернуться test.com : hugo.com
.
Я полагаю, это можно сделать с readfile
и map
, но я не могу заставить его работать.
У меня есть кое-что такое почти работает так, как вы этого хотите. Это расширение делает следующее:
Я не утверждаю, что это именно то, что вам нужно, но это показывает, как списки можно анализировать и использовать grep.
CentOS58[root@ivwm41 exim]# more test_list.cf
a@test.com: a@lala.com
# ignore this line
b@test.com: a@example.com
b@hugo.com: hugo@example.com
CentOS58[root@ivwm41 exim]# exim -be '${reduce {<; ${readfile{/etc/exim/test_list.cf}{;}} } {} {${if or{ {match{$item}{#}} {match{$item}{#}} } {$value} {$value:${sg {${extract{1}{:}{$item}}} {^.*@}{} }}}}}'
:test.com:test.com:hugo.com
Если логически разложить расширение на отдельные части, это будет выглядеть так:
exim -be '${reduce {<; ${readfile{/etc/exim/test_list.cf}{;}} }
{}
{${if or{ {match{$item}{#}} {match{$item}{#}} }
{$value}
{$value:${sg{${extract{1}{:}{$item}}} {^.*@} {}}}}
}
}
'
Одна вещь, которую еще нужно исправить, - это ведущее: не должно быть. Я не уверен на 100%, почему он там: - / и у меня действительно нет времени углубляться в это. Логику нужно немного помассировать, чтобы уловить какое-либо условие, вызывающее появление этого ведущего двоеточия, а затем результатом должен быть список доменов, который вы можете использовать в качестве условия.