Eu tenho uma caixa FreeBSD rodando o sendmail 8.16. Tenho vários usuários do sistema (robôs de teste): e robot1
gostaria que eles fossem controlados por e-mails. Primeiro de tudo, eles deveriam poder receber e-mails. Então eu tenho as seguintes linhas em :robot2
robot3
/etc/mail/aliases
robot1: "| /usr/local/project/script"
robot2: "| /usr/local/project/script"
robot3: "| /usr/local/project/script"
Esses robôs devem processar mensagens da mesma maneira, portanto, o mesmo script é usado para todos eles.
O problema é: o sendmail sempre invoca esse script com o uid 26 falso (que é o usuário especial "mailnull") para todos os três destinatários. Parece que o daemon sendmail faz o downgrade de seu gid/uid efetivo no fork, antes de iniciar um script externo. Isso é perfeitamente razoável, mas:
A questão é: como faço para que o sendmail execute o script como o respectivo usuário destinatário , ou seja, como robot1
quando a mensagem é para robot1@localhost
, como robot2
quando a mensagem é para robot2@localhost
e como robot3
quando a mensagem é para robot3@localhost
?
A solução óbvia é ter três cópias do script, fazer com que cada cópia seja adequada ao seu respectivo usuário e apelidar cada usuário do robô para sua cópia do script. Isso deveria funcionar, suponho, mas é meio feio. Então eu me pergunto se existe alguma solução melhor e mais elegante?
Eu simplesmente usaria
sudo
.Em uma instalação padrão, o sendmail executa scripts de alias como user
mailnull
. É possível permitirmailnull
que o usuáriosudo
se faça passar apenas por esses usuários e faça isso apenas com a finalidade de executar esse script específico .Primeiro, torne-se
root
, depois executevisudo
e edite em:Agora edite o seu
/etc/mail/aliases
para ser:e fazer