Sendmail smrsh alias problema de criação de scripts de script no Ubuntu / Debian

1

Eu tenho batido minha cabeça contra este problema por 2 semanas. O que eu estou tentando fazer é canalizar um alias de sendmail (catchall para um domínio virtusal) para um script php. No entanto, sempre recebo o seguinte erro (não é possível enviar diretamente para programas):

7 de outubro 14:35:49 fut-02 sm-mta [14057]: o97LZlmh014057: < [email protected]> ... Não é possível enviar diretamente para programas 7 de outubro 14:35:49 fut-02 sm-mta [14057]: o97LZlmh014057: de =, tamanho = 0, classe = 0, nrcpts = 0, proto = ESMTP, daemon = MTA-v4, relay = mail-ww0- f46.google.com [74.125.82.46]

Eu tentei os seguintes aliases no meu arquivo virtusers:

@domain.com "|php -q /home/myuser/myscript.php"
@domain.com "|/usr/bin/php5 -q /home/myuser/myscript.php"
@domain.com "|php5 /home/myuser/myscript.php"
@domain.com "|myscript.php"
@domain.com "|php5 myscript.php"

Eu tentei ativar o smrsh no arquivo sendmail.mc de duas maneiras diferentes:

FEATURE('smrsh','/usr/lib/sm.bin/smrsh')dnl
FEATURE('smrsh')dnl

Eu então tentei ligar / usr / bin / php, / usr / bin / php5, (o binário real), e o próprio script para / etc / mail / smrsh /. Eu também tentei desabilitar o smrsh por completo. Cada teste resulta no mesmo erro. Para verificar se o smrsh está funcionando, posso executar com êxito:

/usr/lib/sm.bin/smrsh -c "/usr/bin/php5 -q /home/user/myscript.php"

Uma cópia do meu sendmail.mc está no final desta postagem.

Estou sentindo falta de algo óbvio? Existe algum outro lugar na configuração do sendmail do Ubuntu / Debian que pode bloquear o envio de mensagens para scripts?

FWIW, eu tentei esta configuração no Ubuntu 10.10 RC e Debian 5. Mesmos resultados em ambos, com a exceção que o padrão sendmail.mc do Debians vem formatado incorretamente (tinha FEATURES após as diretivas MAILER).

divert(0)dnl
#
#   Copyright (c) 1998-2005 Richard Nelson.  All Rights Reserved.
#
#  This file is used to configure Sendmail for use with Debian systems.
#
define('_USE_ETC_MAIL_')dnl
include('/usr/share/sendmail/cf/m4/cf.m4')dnl
VERSIONID('$Id: sendmail.mc, v 8.14.3-9.2ubuntu1 2010-08-03 06:56:05 cowboy Exp $')
OSTYPE('debian')dnl
DOMAIN('debian-mta')dnl
dnl # Items controlled by /etc/mail/sendmail.conf - DO NOT TOUCH HERE
undefine('confHOST_STATUS_DIRECTORY')dnl        #DAEMON_HOSTSTATS=
dnl # Items controlled by /etc/mail/sendmail.conf - DO NOT TOUCH HERE
dnl #
dnl # General defines
dnl #
dnl # SAFE_FILE_ENV: [undefined] If set, sendmail will do a chroot()
dnl #   into this directory before writing files.
dnl #   If *all* your user accounts are under /home then use that
dnl #   instead - it will prevent any writes outside of /home !
dnl #   define('confSAFE_FILE_ENV',             '')dnl
dnl #
dnl # Daemon options - restrict to servicing LOCALHOST ONLY !!!
dnl # Remove ', Addr=' clauses to receive from any interface
dnl # If you want to support IPv6, switch the commented/uncommentd lines
dnl #
FEATURE('no_default_msa')dnl
dnl DAEMON_OPTIONS('Family=inet6, Name=MTA-v6, Port=smtp, Addr=::1')dnl
DAEMON_OPTIONS('Family=inet,  Name=MTA-v4, Port=smtp')dnl
dnl DAEMON_OPTIONS('Family=inet6, Name=MSP-v6, Port=submission, M=Ea, Addr=::1')dnl
DAEMON_OPTIONS('Family=inet,  Name=MSP-v4, Port=submission, M=Ea')dnl
dnl #
dnl # Be somewhat anal in what we allow
dnl define('confPRIVACY_FLAGS',dnl
dnl 'needmailhelo,needexpnhelo,needvrfyhelo,restrictqrun,restrictexpand,nobodyreturn,authwarnings')dnl
dnl #
dnl # Define connection throttling and window length
define('confCONNECTION_RATE_THROTTLE', '15')dnl
define('confCONNECTION_RATE_WINDOW_SIZE','10m')dnl
dnl #
dnl # Features
dnl #
dnl # use /etc/mail/local-host-names
FEATURE('use_cw_file')dnl
dnl #
dnl # The access db is the basis for most of sendmail's checking
FEATURE('access_db', , 'skip')dnl
dnl #
dnl # The greet_pause feature stops some automail bots - but check the
dnl # provided access db for details on excluding localhosts...
FEATURE('greet_pause', '1000')dnl 1 seconds
dnl #
dnl # Delay_checks allows sender<->recipient checking
FEATURE('delay_checks', 'friend', 'n')dnl
dnl #
dnl # If we get too many bad recipients, slow things down...
define('confBAD_RCPT_THROTTLE','3')dnl
dnl #
dnl # Stop connections that overflow our concurrent and time connection rates
FEATURE('conncontrol', 'nodelay', 'terminate')dnl
FEATURE('ratecontrol', 'nodelay', 'terminate')dnl
dnl #
dnl # If you're on a dialup link, you should enable this - so sendmail
dnl # will not bring up the link (it will queue mail for later)
dnl define('confCON_EXPENSIVE','True')dnl
dnl #
dnl # Dialup/LAN connection overrides
dnl #
include('/etc/mail/m4/dialup.m4')dnl
include('/etc/mail/m4/provider.m4')dnl
dnl #
dnl # Default Mailer setup
FEATURE('smrsh','/usr/lib/sm.bin/smrsh')dnl
FEATURE('virtusertable', 'hash /etc/mail/virtusers')dnl
VIRTUSER_DOMAIN_FILE('/etc/mail/virtdomains')dnl
MAILER_DEFINITIONS
MAILER('local')dnl
MAILER('smtp')dnl
    
por Andy Shinn 08.10.2010 / 17:59

2 respostas

1

Você precisa modificar o conjunto de regras 0 (ou o conjunto de regras 2) para resolver isso:

LOCAL_RULE_0
R$* < @ virtualdomain.com. > $*     $#prog $: $1 @ virtualdomain.com

O agente de entrega prog é discutido na página 727 do "livro de morcegos" (4ª edição).

O acima não funciona com smrsh. Faz a suposição de que $ # prog está definido para um programa que decide quais ações tomar com base em seu argumento.

Você pode até mesmo definir seu próprio agente de entrega, que fará exatamente o que deseja, em vez de tentar ajustar o que está disponível para o seu caso.

    
por 19.04.2011 / 12:34
1

AFAIK você precisará especificar um usuário ou alias no seu virtusertable, em vez do pipe. Uma vez que você tenha feito isso, especificar o pipe em seu arquivo de alias deve funcionar.

Por exemplo, em / etc / mail / virtusers

@ example.com pipeuser

E depois, em / etc / aliases

pipeuser: "| / usr / bin / php5 -q /home/myuser/myscript.php"

    
por 11.11.2010 / 00:14