"permitir somente se definido" é muito mais complicado que o link "negar se set "example; o" deny if set "simplesmente rejeita a mensagem quando o cabeçalho tem um valor particular. O "permitir somente se definido" deve marcar mensagens apropriadas, conforme permitido, mas também em outro lugar negar tudo outras mensagens. Outra complicação para o "permitir somente se definido" é o possibilidade de mensagens do sistema (por exemplo, as do cron) que também podem precisar para ser permitido, caso em que uma negação geral não será suficiente. Ainda Outra preocupação é se seus sistemas permitem o relé remoto; se sim e se o conjunto de regras é criado incorretamente você poderia transformar seus servidores em aberto retransmissões para quem define o campo de cabeçalho em questão. Isso poderia ser ruim, e a menos que você tire o cabeçalho do teste em algum lugar, será visível para qualquer pessoa que possa ler mensagens do seu sistema.
Um método seria verificar no final dos cabeçalhos se X-Test
foi
foi visto; se não, rejeite a mensagem. Isso falhará nas mensagens do sistema
que não tem o cabeçalho definido, mas não deve transformar o sistema em um
relé aberto como vários outros conjuntos de regras ainda devem ser aplicados a detemine
direitos de transmissão. Assim, em sendmail.mc
, adicione algo como:
LOCAL_RULESETS
Kstorage macro
HX-Test: $>CheckTestHeader
SCheckTestHeader
R$* $: $(storage {xtestsetp} $@ OK $) $1
Scheck_eoh
R$* $: < $&{xtestsetp} >
R$* $: $(storage {xtestsetp} $) $1
R< $+ > $@ OK
R$* $#error $: 553 Missing Header
e reconstrua sendmail.cf
, reinicie sendmail
, envie mensagens de teste com
e sem o cabeçalho de teste.
Essas execuções de "muitos espaços" devem ser substituídas por uma ou mais guias personagens, como Sendmail é um daqueles softwares infelizes que manda o uso de espaço em branco significativo (louco, eu sei, mas aqui estamos nós).
Para mais informações sobre este exemplo, consulte a seção 5.1.4.6 no Sendmail
op.pdf
manual, do qual o acima é mais ou menos cribbed.
Note também que o acima só deve ser usado no servidor de correio de saída configurações, uma vez que rejeitará as mensagens recebidas que não o cabeçalho necessário.