SELinux: Política que permite o Postfix ‘conversar’ com o gnarwl

O gnarwl é de longe o melhor auto-reply disponível, bastante customizável e o melhor é que usa LDAP e é facilmente integrado com o Postifx.

Lembrando que se você tem o plugin ‘vacation’ no squirrelmail ele não vai ter incompatilidade, uma vez que setando a auto-resposta no squirrelmail vai sobrescrever os dados colocados originalmente no LDAP manualmente ou pelo phamm ou pelo GOsa2, ou seja, tranquilo :)

Não vou discutir aqui como instalar o gnarwl, pois para isso vou fazer outro post.

Esse post é específico em criar uma política que permita o Postfix “conversar” com o gnarwl, ou seja, vai permitir que o Postfix envie a mensagem, via BCC ao gnarwl e este verificará se o campo vacationActive está como TRUE.

Criando o arquivo com as regras

Primero, crie o arquivo que contém as regras para o gnarwl, chamando-o de gnarwl.te e com o seguinte conteúdo:

Arquivo gnarwl.te

module gnarwl 1.0;

require {
	type var_lib_t;
	type postfix_postdrop_t;
	type postfix_local_t;
	type sendmail_exec_t;
	class unix_stream_socket { read write getattr };
	class file { execute read lock create execute_no_trans write getattr };
	class dir { write search add_name };
}

#============= postfix_local_t ==============
allow postfix_local_t sendmail_exec_t:file { read execute execute_no_trans };
allow postfix_local_t var_lib_t:dir { write add_name };
allow postfix_local_t var_lib_t:file { read lock getattr write create };

#============= postfix_postdrop_t ==============
allow postfix_postdrop_t postfix_local_t:unix_stream_socket { read write getattr };

Vou explicar algumas linhas.

Linha 7 e 14: o postfix tem que ter permissão para executar o sendmail, pois quando o email é encaminhado para o usuário gnarwl (é um usuário local do Linux) ele auto-responde a mensagem para quem enviou, por isso essa regra é necessária.

Linhas 8 e 19: ao acessar o arquivo .forward do home do gnarwl, tem o comando que faz um pipe para o executável do gnarwl, essa linha é |/usr/bin/gnarwl, por isso o postfix precisa dessa permissão.

Compilando as regras

Com o arquivo criado, é necessário compilar as régras e instalar a nova política.

checkmodule -M -m -o gnarwl.mod gnarwl.te

O resultado do comando será algo parecido com:

checkmodule:  loading policy configuration from gnarwl.te
checkmodule:  policy configuration loaded
checkmodule:  writing binary representation (version 6) to gnarwl.mod
semodule_package -o gnarwl.pp -m gnarwl.mod

Se tudo for Ok, não haverá resultado de saída.

semodule -i gnarwl.pp

Se tudo for Ok, não haverá resultado de saída.

Verificando a instalação

O comando semodule -l lista todos os módulos instalados, veja que o novo módulo gnarwl 1.0 está instalado.

semodule -l |grep gnarwl
gnarwl	1.0

Se algum problema ocorreu no processo, comente sua dúvida.

Share this post

1 comment

Join the conversation
  • William Nogueira - 17/02/2011 reply

    Pra chegar no arquivo com as regras, que é igual a da primeira listagem do seu post, dá pra fazer com o comando:

    cat /var/log/audit/audit.log | audit2allow -a -r > gnarwl.te

    Tá certo que vai manda todos denied do selinux, mas dá pra ir apagando as liberações que não serão usadas.

    Valeu

Leave a Reply Cancel