PDA

Visualizza la versione completa : Problema con sendmail in Debian 7


fermat
13-12-2014, 12:47
ciao!

ho installato sendmail su Debian 7 in modo da poter inviare email attraverso php.
solo che non funziona.
se do questo comando:


mail -s "Test" MIA_EMAIL

non succede nulla ne da utente normale ne da root, nel senso che il terminale resta in attesa di non si sa cosa.
se provo con questo comando:


# echo "Subject: test" /usr/sbin/sendmail MIA_EMAIL
Subject: test /usr/sbin/sendmail MIA_EMAIL

riesco a lanciarlo solo da root ma non arriva nulla.

qualche consiglio??

marino51
14-12-2014, 01:12
scusa, la prima banalità che mi viene in mente, hai configurato il servizio SMTP ?

$eM_Host = "smtp.example.com"; // SMTP servizio mail
$eM_Port = 587; // 25, 465, 587
$eM_Auth = true; // false (25) true (465, 587)
$eM_Secure = "tls"; // "" (25) "ssl" (465) "tls" (587)
$eM_username = "name@example.com"; // utente conosciuto dal servizio mail usato
$eM_password = "password"; // password dell'utente

fermat
14-12-2014, 14:24
ciao!

sbaglio o questo è php??
per in caso il mio problema è che non la invia neanche da terminale....

sennò no ho ben capito dove dovrei mettere quella configurazione!

il server aveva prima RHEL6 e funzionava tutto.
ieri ho messo debian 7 e non riesco a farlo funzionare.
o melgio, non riesco a far funzionare i comandi di cui sopra!

pilovis
14-12-2014, 15:20
In Ubuntu server e credo che in Debian 7 sia lo stesso, occorre fare alcune modifiche al file di default "/etc/mail/sendmail.mc":

commentare le due seguenti righe:

DAEMON_OPTIONS(`Family=inet, Name=MTA-v4, Port=smtp, Addr=127.0.0.1')dnl
DAEMON_OPTIONS(`Family=inet, Name=MSP-v4, Port=submission, M=Ea, Addr=127.0.0.1')dnl

che diventano quindi:

dnl DAEMON_OPTIONS(`Family=inet, Name=MTA-v4, Port=smtp, Addr=127.0.0.1')dnl
dnl DAEMON_OPTIONS(`Family=inet, Name=MSP-v4, Port=submission, M=Ea, Addr=127.0.0.1')dnl

senza di questo sendmail ascolta solo su localhost e ignora le richieste che arrivano da qualsiasi indirizzo, incluso l'indirizzo IP locale del server,

poi, se vuoi smistare la posta in arrivo verso utenti locali, devi aggiungere la seguente linea:

MAILER(`procmail')

nota: le righe "MAILER(..." devono essere messe tutte alla fine del file.
ovviamente devi avere procmail installato: apt-get install procmail (verifica ma credo lo sia di default).

Se poi ancora vuoi gestire piu' domini di posta, devi aggiungere la funzione Virtusertable aggiungendo la seguente linea e creando poi il file "/etc/mail/virtusertable (https://localhost:10001/sendmail/edit_file.cgi?mode=virtusers)" per la configurazione:

FEATURE(`virtusertable')

nota: da inserire prima di tutte le righe "MAILER(..."
La funzione Virtusertable ti permette di definire le regole per smistare la posta verso utenti interni o reindirizzarla altrove, esempio di configurazione "/etc/mail/virtusertable" (https://localhost:10001/sendmail/edit_file.cgi?mode=virtusers):

# indirizzo email > utente o altro indirizzo
info@miodominio.net paolo
supporto@miodominio.net luca
gianni@altrodominio.com gianni
pino@altrodominio.com pino@hotmail.com
# genera messaggio di errore specifico per un indirizzo
abuse@miodominio.net error:nouser questo indirizzo e' inattivo usare abuse@altrodominio.com

Tutti i domini abilitati a ricevere posta devono essere messi dentro il file "/etc/mail/local-host-names", esempio:

localhost
miodominio.net
altrodominio.com

Fatto questo per rendere attive le modifiche, devi ricostruire il database e riavviare sendmail con i seguenti comandi:

su - root
m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
service sendmail restart

--------------------------------

Ricapitolando, questi sono i files di configurazione di Sendmail per Ubuntu/Debian:



/etc/mail/access
File database di accesso di sendmail (regole di relay e di blocco)


/etc/mail/aliases
Alias delle caselle di posta


/etc/mail/local-host-names
Lista di host per i quali sendmail accetta posta


/etc/mail/mailer.conf
File di configurazione del programma di posta


/etc/mail/mailertable
Tabella di consegna del programma di posta (io non lo uso perche' uso procmail)


/etc/mail/sendmail.cf
File di configurazione principale di sendmail


/etc/mail/virtusertable
Tabelle degli utenti e dei domini virtuali



--------------------------------

un esempio del mio file di configurazione per Ubuntu/Debian server:

divert(-1)dnl
#-----------------------------------------------------------------------------
# $Sendmail: debproto.mc,v 8.14.3 2010-02-15 09:38:10 cowboy Exp $
#
# Copyright (c) 1998-2009 Richard Nelson. All Rights Reserved.
#
# cf/debian/sendmail.mc. Generated from sendmail.mc.in by configure.
#
# sendmail.mc prototype config file for building Sendmail 8.14.3
#
# Note: the .in file supports 8.7.6 - 9.0.0, but the generated
# file is customized to the version noted above.
#
# This file is used to configure Sendmail for use with Debian systems.
#
# If you modify this file, you will have to regenerate /etc/mail/sendmail.cf
# by running this file through the m4 preprocessor via one of the following:
# * make (or make -C /etc/mail)
# * sendmailconfig
# * m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf
# The first two options are preferred as they will also update other files
# that depend upon the contents of this file.
#
# The best documentation for this .mc file is:
# /usr/share/doc/sendmail-doc/cf.README.gz
#
#-----------------------------------------------------------------------------
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.1ubuntu1 2010-02-15 09:38:10 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
dnl DAEMON_OPTIONS(`Family=inet, Name=MTA-v4, Port=smtp, Addr=127.0.0.1')dnl
dnl DAEMON_OPTIONS(`Family=inet6, Name=MSP-v6, Port=submission, M=Ea, Addr=::1')dnl
dnl DAEMON_OPTIONS(`Family=inet, Name=MSP-v4, Port=submission, M=Ea, Addr=127.0.0.1')dnl
dnl #
dnl # Be somewhat anal in what we allow
define(`confPRIVACY_FLAGS',dnl
`needmailhelo,needexpnhelo,needvrfyhelo,restrictqr un,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 #
FEATURE(`virtusertable')
dnl # Default Mailer setup
MAILER_DEFINITIONS
MAILER(`local')dnl
MAILER(`smtp')dnl

MAILER(`procmail')
DAEMON_OPTIONS(`Name=MTA,Modifiers=f')

pilovis
14-12-2014, 16:25
Dimenticavo, devi anche dire a sendmail di fare il relay (invio) della posta dagli indirizzi autorizzati.
Il file di configurazione e' "/etc/mail/access"

Ad esempio per permettere l'invio della posta da localhost devi inserire:

Connect:localhost RELAY
GreetPause:localhost 0
ClientRate:localhost 0
ClientConn:localhost 0
Connect:127 RELAY
GreetPause:127 0
ClientRate:127 0
ClientConn:127 0

- se vuoi permettere l'invio anche da tutta la tua LAN devi aggiungere:

# permette l'invio della posta da tutta la classe IP 192.168.0.0/16
Connect:192.168 RELAY

- per bloccare un indirizzo mail, un dominio, un indirizzo Ip o una classe intera di indirizzi IP (antiSPAM):

# blocca l'intera classe di IP 210.0.0.0/8
210 REJECT
#blocca singolo IP
72.15.32.132 REJECT
# blocca un dominio e tutti i suoi sottodomini
krasnet.ru REJECT
# blocca un singolo indirizzo email
spammerone.maledetto@gmail.com (spammerone@gmail.com) REJECT

nota: al posto di REJECT si puo' anche usare DISCARD
REJECT: rimanda la mail al mittente con un messaggio di posta rifiutata
DISCARD: la cancella silenziosamente e non da nessuna notifica al mittente

REJECT e' molto utile per gli spammers, che di solito dopo un po' cancellano il nostro indirizzo perche' non utilizzabile, con discard invece continueranno a mandarci schifezze perche' per loro la mail risulta consegnata senza nessun errore e quindi valida.

Sendmail ha altre mille funzionalita' che nella maggior parte dei casi non vengono utilizzate, non per niente e' il piu' potente e affidabile MTA esistente per sistemi Posix.
Io l'ho usato per 10 anni su decine di servers Red Hat e Ubuntu/Debian con centinaia di domini e migliaia di utenti di posta e non mi ha mai dato un solo problema, Sendmail se ben configurato e' una roccia! :)

fermat
17-12-2014, 16:20
ciao!

intanto grazie per la spiegazione!

a me servirebbe solo per invio, in quanto lo userei per inviare newsletter con email prese da un db.

ho cercato di seguire alla lettera quello che mi dici ma ho ancora due problemi:
-su gmail arriva ma in spam; su hotmail e yahoo non arriva nulla, e a questo punto penso dipenda dai filtri antispam
-su gmail arriva con mittente root@dominio.it, ma considera che il server è dentro l'ufficio e non ci è associato un dominio; come dominio ci ho messo quello del nostro sito, come se le email arrivassero da li

hai qualche consiglio al riguardo??

pilovis
17-12-2014, 16:38
Se la mail e' arrivata su Gmail vuol dire che sendmail e' configurato correttamente.

Su yahoo e su hotmail non e' arrivata perche' quasi tutti i providers respingono le mails che arrivano da mittenti con domini fasulli, Gmail invece le consegna ma le fa finire nella cartella spam.

Nel tuo caso il dominio.it e' fasullo perche' facendo un lookup per quel dominio si vede che dovrebbe avere un IP diverso da quello del tuo ufficio, crea un dominio di terzo livello ufficio.dominio.it e collegalo al giusto IP e dovrebbe funzionare tutto.

fermat
17-12-2014, 19:20
il dominio di terzo livello legato a quell'ip già ce l'ho.
in quanto questo server funge da web server per i clienti.

in sostanza, quindi, si tratta di impostare quel dominio nel file di configurazione che mi hai indicato prima??

pilovis
18-12-2014, 15:26
Il file /etc/mail/local-host-names di Sendmail serve solo per far sapere a Sendmail quali sono i domini per cui lui deve accettare la posta.

Devi lavorare sul DNS autoritativo del tuo dominio per settare il parametro MX e legarlo all'indirizzo IP pubblico della macchina che fa da MTA.

Esempio di parametri per Bind:

dominio.it MX 10 mail.dominio.it.
mail A 81.22.134.21

Occhio che certi providers "puzzini" (es. Yahoo) pretendono anche che sia settata la risoluzione inversa per l'IP pubblico associato al parametro MX (Mail eXchange), altrimenti respingono la posta, altri ancora non accettano la posta se arriva da indirizzi IP dinamici, anche se sono associati ad un dominio di terzo livello, se il tuo provider ha dichiarato al RIPE che quella classe di IP e'dinamica, oppure se il record di risoluzione del dominio legato al parametro MX e' un CNAME (alias), il mailserver li sopra difficilmente riesci a farlo funzionare per l'invio della posta.

Ormai quasi tutti i providers, per combattere il fenomeno SPAM, fanno un NSLookup in tempo reale per ogni mail che arriva e se i parametri del DNS non sono piu' che a posto, rifiutano la posta.

Loading