Repository 32bit  Forum
Repository 64bit  Wiki

inviare mail da script su relay puntuale in smtps

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

inviare mail da script su relay puntuale in smtps

Messaggioda ZeroUno » gio ott 27, 2011 14:41

Salve.

Ho dei sistemi da cui devo inviare mail da script.
Queste macchine non hanno accesso a internet ma ho un relay interno a cui farle puntare.
Il problema però è che questo funziona solo in ssl su porta 465

Una mail normale la invio con 'mail' o 'mailx', ma questi non mi consentono di specificare il mail server.
Allora modifico sendmail.cf mettendo 'DSmiomailserver'
ma non riesco a specificare la porta e, tantomeno, a specificargli che deve andare in ssl (non starttls)
o meglio
con mailx di slackware sembra che si può (con qualche parametro aggiunto con -S)
ma il server che ho è redhat e la versione di mailx presente non accetta questo parametro.

Come posso fare?
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg
Codice: Seleziona tutto
1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111
Avatar utente
ZeroUno
Staff
Staff
 
Messaggi: 4414
Iscritto il: ven giu 02, 2006 13:52
Località: Roma / Castelli
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current

Re: inviare mail da script su relay puntuale in smtps

Messaggioda krisis » gio ott 27, 2011 14:48

Soluzione facile e veloce :
Installi e configuri ssmtp sulle macchine dalle quali devi spedire le mail.
Soluzione meno facile e veloce :
Installi e configuri un server smtp su ogni macchina.
Avatar utente
krisis
Linux 3.x
Linux 3.x
 
Messaggi: 1120
Iscritto il: mar gen 25, 2005 0:00
Località: Roma
Distribuzione: debian

Re: inviare mail da script su relay puntuale in smtps

Messaggioda masalapianta » gio ott 27, 2011 15:26

teoricamente, visto che le mail le devi inviare da script, potresti anche mandare comandi smtp e mail in pipe ad openssl:

echo -e "EHLO `hostname`\nMAIL FROM: blablabla" | openssl s_client -connect ipdelrelay:465 -quiet

tieni comunque conto che così invii "alla cieca", non hai riscontri sugli status code che ti ritorna il relay per tutto quello che gli mandi.
Avatar utente
masalapianta
Iper Master
Iper Master
 
Messaggi: 2775
Iscritto il: dom lug 24, 2005 23:00
Località: Roma
Nome Cognome: famoso porco
Kernel: uname -r
Desktop: awesome
Distribuzione: Debian

Re: inviare mail da script su relay puntuale in smtps

Messaggioda ZeroUno » gio ott 27, 2011 16:39

Alla fine me lo sono costruito da solo.
Se può servirvi:
Codice: Seleziona tutto
#!/bin/bash


#### DEFAULT VALUE

DOMAIN=${DOMAIN:-mydomain} # will be overwritten by the -E parameter
RELAY=${RELAY:-smtps://myrelay:465}  # will be overwitten by the -R parameter

#### DOES NOT TOUCH

function usage(){
echo "
        Usage:
                $0 [-s <subject>] [-c <cc-address>] [-b <bcc-address>] [-r <from-address>] [-R <relay>] [-E <EHLO>] [-H <header: value>] [-I <messageid>] <to-address> <to-address> ...

        -s <subject>    Specify subject
        -b <address>    Send blind carbon copies to list.  List should be a comma-separated list of names.
        -c <address>    Send carbon copies to list of users.
        -r <address>    Sets the From address.
        -R <relay>      Specify the relay host in format smtp://ip:port or smtps://ip:port
        -I <messageid>  Force message id
        -E <EHLO>       Set EHLO (host.domain)
        -H <header: value> Add an header. To specify two header use another -H parameter
"
}
while [ $# -gt 0 ];do
        case $1 in
                "-s") SUBJECT="$2";shift 2;;
                "-b") BCC=$(echo $2|sed 's/,/ /g');shift 2;;
                "-c") CC=$(echo $2|sed 's/,/ /g');shift 2;;
                "-r") FROM="$2";shift 2;;
                "-R") RELAY="$2";shift 2;;
                "-I") MESSAGEID="$2";shift 2;;
                "-E") EHLO="$2";shift 2;;
                "-H") HEADER="$HEADER$2\\n";shift 2;;
                -*) echo "$1 non riconosciuto";usage;exit;;
                *) TO="$TO $1";shift;;
        esac
done
if [ -z "$TO" ];then usage;exit;fi
EHLO=${EHLO:-"`hostname`.$DOMAIN"}
FROM=${FROM:-"`whoami`@$EHLO"}
MESSAGEID=${MESSAGEID:-"`date +%s`@$EHLO"}
RCPTTO="$TO $CC $BCC"

PROTO=$(echo $RELAY|sed -r 's#^(smtps?)://.*#\1#')
PORT=$(echo $RELAY|sed -r 's#^smtps?://.*:([0-9]+)#\1#')
RELAY=$(echo $RELAY|sed -r 's#^smtps?://([^:]*):.*#\1#')

(
        echo "EHLO $HOST"
        echo "MAIL FROM: <$FROM>"
        for RCPT in $RCPTTO;do
                echo "RCPT TO: <$RCPT>"
        done
        echo "DATA"
        echo "Subject: $SUBJECT"
        echo "From: $FROM"
        echo "To: $(echo $TO|sed 's/ /,/g')"
        [ ! -z "$CC" ]&&echo "CC: $(echo $CC|sed 's/ /,/g')"
        echo "Message-Id: $MESSAGEID"
        echo -en "$HEADER"
        echo ""
        cat
        echo "."
        echo "QUIT"
)|(
        if [ "$PROTO" == "smtps" ];then
                openssl s_client -ign_eof -connect $RELAY:$PORT -quiet
        else
                nc $RELAY $PORT
        fi
)


sembra funzionare.
Packages finder: slakfinder.org | Slackpkg+, per aggiungere repository a slackpkg
Codice: Seleziona tutto
1011010 1100101 1110010 1101111 - 0100000 - 1010101 1101110 1101111
Avatar utente
ZeroUno
Staff
Staff
 
Messaggi: 4414
Iscritto il: ven giu 02, 2006 13:52
Località: Roma / Castelli
Nome Cognome: Matteo Rossini
Slackware: current
Kernel: slack-current
Desktop: ktown-latest
Distribuzione: 01000000-current


Torna a Gnu/Linux in genere

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti