exim, expansão de cadeia variável

1

Como posso obter a lista de domínios locais de um arquivo de encaminhamento?

Um exemplo de /etc/exim4/forwards :

[email protected]: [email protected]
# ignore this line
[email protected]: [email protected]
[email protected]: [email protected]

Aqui, a expansão de string (ou o que já é chamado g ) deve retornar test.com : hugo.com .

Suponho que isso pode ser feito com readfile e map , mas não consigo fazê-lo funcionar.

    
por gucki 19.12.2012 / 18:27

1 resposta

0

Eu tenho algo que quase funciona do jeito que você quer. O que essa expansão faz é:

  1. Slurp no arquivo, usando; como o separador.
  2. Exclua as linhas com # nelas (ou seja, comentários).
  3. Ele deve pular linhas em branco, mas meu regex não é compatível, ele ainda inclui essas linhas em branco, então eu apenas o removi e deixei o bloco {{} {}} lá.
  4. Extraia o item antes de: em cada linha e extraia o domínio dele.
  5. Mash tudo na lista.

Eu não digo que seja exatamente o que você precisa, mas mostra como as listas podem ser analisadas e analisadas.

CentOS58[root@ivwm41 exim]# more test_list.cf 
[email protected]: [email protected]
# ignore this line
[email protected]: [email protected]
[email protected]: [email protected]

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

Se você espalhar a expansão logicamente em suas partes individuais, será assim:

exim -be '${reduce {<; ${readfile{/etc/exim/test_list.cf}{;}} } 
             {}
             {${if or{ {match{$item}{#}} {match{$item}{#}} } 
                 {$value}
                 {$value:${sg{${extract{1}{:}{$item}}} {^.*@} {}}}}
             }
           }
         '

Uma coisa que ainda precisa ser consertada é a liderança: não deveria estar lá. Eu não tenho 100% de certeza do porquê: - / e eu realmente não tenho tempo para aprofundar isso. A lógica precisa ser massageada um pouco para detectar qualquer condição que esteja causando o aparecimento do cólon inicial e, em seguida, o resultado deve ser uma lista de domínios que você pode usar como condição.

    
por 20.12.2012 / 00:13

Tags