Necesito usar sendmail sin ningún usuario del sistema.
El único problema que todavía existe en mi configuración es que FEATURE(virtusertable)
quiere un usuario final del sistema en RHS en mi tabla de usuarios virtuales como este:
@domain.tld [email protected]
[email protected] systemuser
El problema es que NO existe tal usuario del sistema y quiero que todo el correo a @dominio.tld se entregue a mi lda (procmail, luego dovecot-lda), que es capaz de manejar direcciones de correo electrónico completas como usuarios.
Ya probé cosas como
define(`_VIRTUSER_STOP_ONE_LEVEL_RECURSION_', `true')dnl
define(`_NEED_MACRO_MAP_',`1')dnl
pero esto tampoco ayuda.
Ya tenemos una solución fea con el script de procmail que lee la tabla virtuser, pero nos encantaría que sendmail manejara esto para que cualquier correo electrónico enviado que no tenga RHS y/o usuario en lda sea rebotado. Además, usar dovecot-lda es lda directo en sendmail y tampoco es una opción en nuestra configuración. :(
¡Cualquier ayuda es bienvenida!
Respuesta1
Echa un vistazo aPreguntas frecuentes de Sendmail 3.29- "¿Cómo puedo agregar un encabezado que especifique el destinatario real cuando varios usuarios de un dominio virtual van a un solo buzón?"
En mi humilde opinión, se puede adaptar fácilmente para ofrecer lo que desea: proporciona todos los ganchos necesarios.
Por cierto, puede utilizar la entrada virtusertable "@dominio.tld" para error
el correo seleccionado. Le permitirá rechazar mensajes a usuarios virtuales que no figuran en virtusertable.
@domain.tld error:nouser No such user here
[email protected] systemuser+%1
[email protected] systemuser+%1
También puedes consultarhttps://www.sendmail.com/sm/open_source/tips/virtual_hosting/
Respuesta2
Terminé resolviendo esto de dos maneras:
a) Aplicar parches libsm/mbdb.c
y sendmail/recipient.c
realizar una búsqueda adicional en la tabla de usuarios de dovecot. Para que esto funcione, se necesitaba un pequeño ajuste con LOCAL_RULE_0.
b) Andrzej me señaló en una pregunta similar sobre stackoverflow la solución con mailertable y archivo de acceso. Siguiendo esta idea encontré una solución aún más sencilla para tener todo lo que necesitamos:
tabla de usuarios virtuales:
@domain.tld user_domain_tld
[email protected] user_another_tld
alias:
user_domain_tld: "|/bin/procmail -a [email protected]"
user_another_tld: "|/bin/procmail -a [email protected]"
Es bueno tener la solución a), porque cambia la sintaxis aceptada en virtusertable y uno solo tiene que verificar un archivo a lo largo del tiempo, donde la solución b) gana debido a la manera fácil de lograrlo, que además es más compatible con futuras versiones de sendmail. Después de todo el trabajo, uso la solución a), pero la cambiaré a la solución b) después de Navidad;)