Postate qui per tutte le discussioni legate a Linux in generale.
Moderatore: Staff
Regole del forum
1) Citare sempre la distribuzione usata e la versione della utility coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano Gnu/Linux in genere.
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 dell'ultima regola porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
da ZeroUno » gio ott 27, 2011 15: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?
-

ZeroUno
- Staff

-
- Messaggi: 3763
- Iscritto il: ven giu 02, 2006 14:52
- Località: Roma / Castelli
- Nome Cognome: Matteo Rossini
- Slackware: current
- Kernel: slack-current
- Desktop: slack-current
- Distribuzione: 01000000-current
-
da krisis » gio ott 27, 2011 15: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.
-

krisis
- Linux 3.x

-
- Messaggi: 1120
- Iscritto il: mar gen 25, 2005 1:00
- Località: Roma
- Distribuzione: debian
da masalapianta » gio ott 27, 2011 16: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.
-

masalapianta
- Iper Master

-
- Messaggi: 2358
- Iscritto il: lun lug 25, 2005 0:00
- Località: Roma
- Nome Cognome: famoso porco
- Kernel: uname -r
- Desktop: awesome
- Distribuzione: Debian
-
da ZeroUno » gio ott 27, 2011 17: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.
-

ZeroUno
- Staff

-
- Messaggi: 3763
- Iscritto il: ven giu 02, 2006 14:52
- Località: Roma / Castelli
- Nome Cognome: Matteo Rossini
- Slackware: current
- Kernel: slack-current
- Desktop: slack-current
- Distribuzione: 01000000-current
-
Torna a Gnu/Linux in genere
Chi c’è in linea
Visitano il forum: Nessuno e 1 ospite