Come configuro sendmail per inviare posta tramite record MX e non per localhost?


8

Sto cercando di ottenere sendmail per trasferire la posta ai server specificati nei record MX, quindi quando il server invia un'e-mail a me@dominio.com voglio che salti localhost e vada direttamente a Gmail.

Ho esaminato i documenti di Sendmail, ma non capisco bene come rendere conto della mia situazione. Essenzialmente il nome host del mio server è "www.domain.com" ma quando invio un'email a "me@domain.com" finisce nello spool di posta locale.

Quando eseguo sendmail in modalità debug:

sendmail -bt
> $=w

Ottengo:

www.domain.com
www.domain.com.
domain.com
localhost
[54.245.___.___] 

Quindi intercetta tutta la posta in uscita verso domain.com. Non voglio che arrivi localhost. Voglio che vada sui server di Gmail.

Tutta la posta associata ad altri indirizzi funziona correttamente. Ho anche sendmail configurato per utilizzare DKIM.

Ho aggiunto un record a mailertable (e ricostruito mailertable.db e ricompilato il file mc> cf) ma non sono sicuro che sia quello che devo fare o se lo sto facendo correttamente.

domain.com esmtp:[aspmx.l.google.com]

Come ottengo per consentire alla posta associata a users@domain.com di lasciare il server?

INFORMAZIONI AGGIUNTIVE: Ecco il mio file sendmail.mc:

divert(-1)dnl

include(`/usr/share/sendmail-cf/m4/cf.m4')dnl
VERSIONID(`setup for linux')dnl
OSTYPE(`linux')dnl

define(`confDEF_USER_ID', ``8:12'')dnl

define(`confTO_CONNECT', `1m')dnl
define(`confTRY_NULL_MX_LIST', `True')dnl
define(`confDONT_PROBE_INTERFACES', `True')dnl
define(`PROCMAIL_MAILER_PATH', `/usr/bin/procmail')dnl
define(`ALIAS_FILE', `/etc/aliases')dnl
define(`STATUS_FILE', `/var/log/mail/statistics')dnl
define(`UUCP_MAILER_MAX', `2000000')dnl
define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl
define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl
define(`confAUTH_OPTIONS', `A')dnl

define(`confTO_IDENT', `0')dnl

FEATURE(`no_default_msa', `dnl')dnl
FEATURE(`smrsh', `/usr/sbin/smrsh')dnl
FEATURE(`mailertable', `hash -o /etc/mail/mailertable.db')dnl
FEATURE(`virtusertable', `hash -o /etc/mail/virtusertable.db')dnl
FEATURE(redirect)dnl
FEATURE(always_add_domain)dnl
FEATURE(use_cw_file)dnl
FEATURE(use_ct_file)dnl

FEATURE(local_procmail, `', `procmail -t -Y -a $h -d $u')dnl
FEATURE(`access_db', `hash -T<TMPF> -o /etc/mail/access.db')dnl
FEATURE(`blacklist_recipients')dnl

DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

FEATURE(`accept_unresolvable_domains')dnl
FEATURE(`relay_based_on_MX')dnl
FEATURE(`relay_entire_domain')dnl

LOCAL_DOMAIN(`localhost.localdomain')dnl

MASQUERADE_AS(`domain.com')dnl
MASQUERADE_DOMAIN(`localhost.localdomain')dnl

EXPOSED_USER(`root')dnl

FEATURE(masquerade_envelope)dnl
FEATURE(masquerade_entire_domain)dnl

INPUT_MAIL_FILTER(`opendkim', `S=inet:8891@localhost')

MAILER(smtp)dnl
MAILER(procmail)dnl

1
La logica della tua domanda è completamente imperfetta. Si riduce a "Non voglio usare Sendmail per inviare la mia posta. Come riconfigurare Sendmail con una configurazione aggiuntiva per inviare la posta esattamente come Sendmail invia la posta per impostazione predefinita?" Risposta: lascialo in pace. O la tua domanda deve essere completamente riformulata per superare ciò che stai effettivamente cercando di fare, oppure devi smettere di immischiarti nella configurazione del tuo server e lasciarlo fare ciò che fa senza romperlo.
Sammitch,

1
ok allora. in alternativa, spiegami cosa farei se volessi solo inviare e-mail dal server e non ad esso.
Polpo

Risposte:


8

Ho finalmente trovato una soluzione piuttosto completa qui . Per riassumere, ci sono una serie di opzioni (la maggior parte delle quali sono state menzionate in altre risposte, ma per qualsiasi motivo non ha funzionato nel mio scenario particolare).

Opzione 1: rimuovere la voce da / etc / mail / local-host-names

per me questo file era già vuoto

Opzione 2: rimuovere qualsiasi voce LOCAL_DOMAIN nel file mc

non ne ho avuto nessuno

Opzione 3: dire a sendmail di non sondare le interfacce

define(`confDONT_PROBE_INTERFACES', `true')dnl

nel mio caso questo è stato impostato, ma l'host problematico era ancora presente nella classe w di sendmail

Opzione 4: rinominare il server. il link esterno fornito sopra dice anche specificamente: "Se voglio rimuovere whipple.org dalla classe w, potrei rinominare il server in frodo.whipple.org, www.whipple.org, elvis.whipple.org, per esempio".

per me questo non era sufficiente. con l'host chiamato www.domain.com , la classe sendmails conteneva ancora ENTRAMBI www.domain.com E domain.com (anche dopo un riavvio)

Opzione 5: QUESTO È QUELLO CHE FUNZIONA PER ME aggiungere un LOCAL_RULE_0 al file mc sendmail

LOCAL_RULESETS
LOCAL_RULE_0
R$* < @domain.com. > $*  <tab>$#esmtp $@ mail.domain.com $: $1<@domain.com.>$2

questo deve andare alla fine del file e <tab>deve essere un vero carattere di tabulazione


Vorrei andare con l'opzione 5 e usando una bestmxmappa per renderlo generico.
adamo,

Questo funziona perfettamente. Grazie per Octopus LOCAL_RULESETS LOCAL_RULE_0 R $ * <@ domain.com. > $ * <tab> $ # esmtp $ @ mail.domain.com $: $ 1 <@ domain.com.> $ 2 questo deve andare alla fine del file e <tab> in realtà devi usare il tasto tab invece di il codice.
Vinodh Kumar,

7

Cambia il nome host del server. Non esiste un motivo valido per cui un nome host sia mai uguale a un nome di dominio nudo.


sì, l'ho provato, anche quando ho impostato il nome host su www.domain.com sendmail vuole mantenere tutto associato a www.domain.com, domain.com e localhost. posso vedere che quando eseguo sendmail in modalità debug e digito $ = w. ho riformulato leggermente la domanda per spiegare.
Polpo

3

Ecco la mia comprensione della tua domanda:

  1. Hai installato Sendmail in modo da poterlo utilizzare per inviare e-mail dal tuo sito Web.

  2. Hai configurato Sendmail come server di posta elettronica autorevole per il tuo spazio dei nomi DNS pubblico.

  3. Non vuoi che Sendmail sia autorevole per il tuo spazio dei nomi DNS pubblico. Desideri che l'email inviata al tuo spazio dei nomi DNS pubblico sia inviata alla tua email ospitata su Google.

Soluzione: riconfigurare Sendmail in modo che non sia autorevole per il proprio spazio dei nomi DNS pubblico.


2
La mia domanda riguarda la configurazione di sendmail. La tua risposta può essere più specifica di "riconfigura sendmail"?
Polpo

0

Non ho troppa esperienza con la configurazione di sendmail, ma penso che dovrebbe fare la cosa giusta rispetto ai record MX. Tuttavia, immagino che sia possibile che in precedenza nelle ricerche DNS, sendmail consultasse innanzitutto il file degli host locali /etc/hostssulla maggior parte dei sistemi operativi basati su unix prima di utilizzare i suoi server DNS. In questo caso, e c'è una voce nel file hosts che fa riferimento al tuo computer come domain.com se lo imposti come nome host, potrebbe essere quello che sta succedendo. È possibile modificare il file hosts in base alle proprie esigenze in questo caso particolare modificando le voci o aggiungendone di nuove.

Oppure puoi configurare sendmail per ignorare il file hosts del sistema locale quando risolvi gli URL. Non sono sicuro di come farlo.


0

1) Sendmail riempie automaticamente l'elenco dei domini di posta elettronica locali ( $=w).

Non puoi disattivarlo utilizzando la seguente riga in sendmail.mc:

define(`confDONT_PROBE_INTERFACES',`True')

È possibile aggiungere e-mail locali "manualmente" nel /etc/mail/local-host-namesfile.
(Richiede HUP o riavvio del demone sendmail dopo)

2) Sendmail può aggiungere (autoconfigurato) "questo nome e-mail host" ( $j) all'elenco dei domini e-mail locali.

Puoi definire "questo nome email dell'host"

define(`confDOMAIN_NAME',`hostname.example.net')

3) NONmailertable viene consultato per le consegne ai domini elencati in .$=w


ma define ( confDONT_PROBE_INTERFACES',True ') è già (ed è sempre stato) abilitato
Octopus

Quindi il tuo caso potrebbe essere coperto dall'opzione 2.
AnFi

Questi sono tutti buoni suggerimenti che ho esplorato a fondo, ma credo che l'opzione 2 sia la stessa dell'aggiunta di host al file local-host-names. in questo caso voglio ESCLUDERE un host non INCLUDERE uno.
Polpo

0

Il codice che sta inviando la posta, stai utilizzando un indirizzo e-mail completo o stai semplicemente inviando il server tramite un account locale? Perché:

Questo sta dicendo a sendmail di consegnare tutta la posta a users@localhost.localdomain localmente

LOCAL_DOMAIN(`localhost.localdomain')dnl

E questo sta dicendo a sendmail di riscrivere i domini negli indirizzi locali su domain.com, ma non altera la consegna locale .

MASQUERADE_AS(`domain.com')dnl
MASQUERADE_DOMAIN(`localhost.localdomain')dnl

ok allora. in alternativa, spiegami cosa farei se volessi solo inviare e-mail dal server e non ad esso.

Passaggio 1: torna alla configurazione predefinita.
Passaggio 2: utilizzare la configurazione predefinita.


Sì, esatto, ma invio a user@domain.com. La configurazione predefinita presenta gli stessi identici problemi che ho indicato nella domanda.
Polpo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.