In questo articolo riassumiamo tutti i passi da eseguire per configurare il servizio SMTP su IBM i.
La guida per la configurazione è aggiornata anche con i nuovi parametri aggiunti dalla versione IBM i 7.2.
Vengono illustrati sia i comandi fruibili da riga comandi 5250 sia da interfaccia grafica di Navigator for i.
Occorre essere collegati con un profilo di classe *SECOFR.
Sommario
Configurazione servizio SMTP
Controllare lo stato del servizio
Configurazioni opzionali
Riavvio del servizio “a freddo”
Verifica comunicazione con server SMTP tramite TelNet
Come inviare un’email?
Configurazione servizio SMTP ▲
- Modifica informazioni dominio: menu CFGTCP opz. 12 oppure comando
CHGTCPDMN
. Impostare il nome host (HOSTNAME
) e il nome dominio (DMNNAME
).
P.es.CHGTCPDMN HOSTNAME('MYIBM') DMNNAME('WORKGROUP')
Impostare uno o più indirizzi per i server DNS (parametro INTNETADR
).
Oppure da Navigator for i espandere dal menu dei task la voce Rete > Tutte le attività > Configurazione TCP/IP > Proprietà configurazione TCP/IP.
- Tabella host: menu CFGTCP opz. 10 oppure comando
ADDTCPHTE
. Aggiungere una voce per abbinare all’indirizzo IP di IBM i il nome-host e nome-host.nome-dominio (quelli impostati al punto precedente). P.es.:
Indirizzo Nome internet host 192.168.1.100 MYIBM.WORKGROUP MYIBM
Oppure da Navigator for i espandere dal menu dei task la voce Rete > Tutte le attività > Configurazione TCP/IP > Gestisci tabella host.
I punti appena descritti sono essenziali anche il funzionamento di altri servizi TCP/IP (p.es. NetServer), quindi potrebbero essere già stati configurati in precedenza. In tal caso non serve modificarli, o se si desidera modificarli è opportuno poi controllare il corretto funzionamento anche degli altri servizi.
- Attributi SMTP: menu CFGTCP opz. 20 Configurazione applicazioni TCP/IP, quindi opz. 12 Configurazione SMTP, quindi opz. 3 Modifica attribuiti SMTP oppure comando
CHGSMTPA
.- server ad avvio automatico (
AUTOSTART
) =*YES
- Tipo indirizzario e-mail (
DIRTYPE
) =*SDD
(parametro disponibile da IBM i 7.2). Impostandolo a *SDD si ottiene un risultato congruente con le release precedenti.
Se si utilizza uno dei nuovi parametri*SMTP
o*SMTPMSF
per ogni utente che invia l’email deve essere aggiunto l’indirizzo email corrispondente al profilo con il comandoADDUSRSMTP
. Nel caso in cui si desideri importare tutti gli utenti dall’indirizzario *SDD all’indirizzario *SMTP/*SMTPMSF si può utilizzare il comandoSTRIMPSMTP
. - Registrazione automatica (
AUTOADD
) =*NO
- Prefisso ID utente (
USRIDPFX
) =QSM
- Indirizzo (
ADDRESS
) =QSMRMTAD
- Nome sistema (
SYSNAME
) =TCPIP
- Tipo tabella degli alias (
TBLTYPE
) =*SYSTEM
- Router della posta (
MAILROUTER
) = indirizzo o nome del server SMTP che spedirà le email (p.es. da impostare per far spedire email a server Exchange aziendale) oppure*NONE
. L’instradamento (ovvero l’impostazione diMAILROUTER
diverso da*NONE
) è stato dichiarato obsoleto dalla RFC2821 (cap. 3.7). Si consiglia di impostarlo a*NONE
.
Impostando il parametro MAILROUTER a *NONE è importante aver impostato correttamente i server DNS (vedi primo punto della presente guida di configurazione). - Inoltro server mailhub (
FWDHUBSVR
): segue la stessa logica di impostazione del parametro MAILROUTER. - Firewall (
FIREWALL
) =*YES
(questo parametro non viene utilizzato se MAILROUTER è *NONE. Da 7.2 questo parametro è valido solo se DIRTYPE è *SDD)
- server ad avvio automatico (
Oppure da Navigator for i espandere dal menu dei task la voce Rete > Server > Server TCP/IP. Quindi dall’elenco selezionare il servizio SMTP.
Dal menu Azioni scegliere la voce Proprietà
Verranno mostrate le diverse pagine per la configurazione degli attributi SMTP:
- Servizio di distribuzione: se si desidera utilizzare il comando SNDDST per inviare le email è necessario aggiungere una voce indirizzario INTERNET e configurare il servizio di distribuzione per instradamento a SMTP gateway alla voce appena creata.
ADDDIRE USRID(INTERNET GATEWAY) USRD(‘Context switching entry’) USER(*NONE) SYSNAME(TCPIP) MSFSRVLVL(*USRIDX) PREFADR(NETUSRID *IBM ATCONTXT) CHGDSTA SMTPRTE(INTERNET GATEWAY)
- Allegati grosse dimensioni: per evitare lo split di messaggi con allegati di grosse dimensioni bisogna creare l’area dati
QTMSNOSPLT
CRTDTAARA DTAARA(QUSRSYS/QTMSNOSPLT) TYPE(*CHAR) LEN(1) VALUE(' ') AUT(*ALL)
Controllare lo stato del servizio ▲
I lavori che gestiscono il servizio SMTP sono:
Lavoro QTSMTP: se non fosse attivo eseguire STRTCPSRV *SMTP
Lavori per SMTP server: QTSMTPSRVD, QTMSMTPSRVP
Lavori per SMTP client: QTSMTPCLTD, QTSMTPCLTP
Uno o più lavori QMSF: se non fossero attivi eseguire STRMSF *CLEAR
Da Navigator for i espandere dal menu dei task la voce Rete > Server > Server TCP/IP. Quindi dall’elenco selezionare il servizio SMTP. Dal menu Azioni scegliere la voce Lavori server:
Configurazioni opzionali ▲
Registrazione su giornale
Nel caso sia necessario effettuare dei controlli approfonditi sul servizio SMTP (configurato con il parametro DIRTYPE = *SDD) a seguito di anomalie nell’invio della posta si può attivare la registrazione su giornale impostando CHGSMTPA JOURNAL(*YES)
oppure da Navigator for i aprendo la pagina di configurazione degli attributi SMTP occorre selezionare la voce “Abilita voci di giornale”. Il giornale è QUSRSYS/QZMF
.
Se invece si configura il servizio SMTP con il parametro DIRTYPE = *SMTP o *SMTPMSF si può più semplicemente utilizzare il comando WRKSMTPEMM
.
Configurare l’autenticazione sul server SMTP
Confronta il documento tecnico “IBM How To Configure the SMTP Client To Use SMTP Authentication with a SMTP Relay” n. N1018618.
Una guida utile per configurare il servizio SMTP impostando come MAILROUTER un server esterno che richieda una connessione SSL su porta 465 la si può trovare sul blog di Zenovalle: Un tunnel per la posta.
Riavvio del servizio “a freddo” ▲
In caso di problemi col servizio SMTP potrebbe rendersi necessario effettuare un “cold start”, ovvero un riavvio del servizio “pulito”.
ENDMSF *IMMED
ENDTCPSVR *SMTP
CRTDTAARA QUSRSYS/QTMSCLEAN TYPE(*CHAR) LEN(1) VALUE('c')
STRTCPSVR *SMTP
STRMSF *CLEAR
Controllare eventuali joblog nelle stampe del profilo QTCP.
Da IBM i 7.2 per effettuare un “cold start” è sufficiente chiudere il servizio. Impostare CHGSMTPA COLDSTART(*YES)
e riavviare il servizio. Dopo il riavvio il parametro COLDSTART viene automaticamente reimpostato a *NO.
Da Navigator for i il parametro COLDSTART corrisponde all’opzione “Elimina contenuto posta non elaborata all’avvio” della pagina di configurazione degli attributi SMTP.
Verifica comunicazione con server SMTP tramite TelNet ▲
Se si imposta nella configurazione attributi SMTP il parametro MAILROUTER diverso da *NONE e quindi si specifica l’indirizzo IP di un server SMTP esterno (p.es. il server Exchange aziendale) a cui instradare la consegna delle email, potrebbe essere necessario effettuare dei test sull’esito positivo della comunicazione tra IBM i e il server SMTP.
Da riga comandi digitare
TELNET RMTSYS('indirizzo-ip-server-smtp') PORT(25)
Se il server SMTP è raggiungibile sulla porta 25, verrà aperta una sessione dove poter digitare i comandi del server SMTP.
Usualmente viene visualizzata una stringa di benvenuto simile alla seguente:
220 nomeserver ESMTP ready
Alcuni server SMTP richiedono che il primo comando da digitare sia
HELO nome_dominio
Per effettuare un test di invio email digitare il comando per impostare il mittente
mail from:<mittente@dominio.com>
Se tutto ok il server risponde con il codice
250 OK
Digitare il comando per impostare il destinatario dell’email
rcpt to:<destinatario@dominio_remoto>
Se tutto ok il server risponde con il codice
250 OK
Digitare il comando
data
Il server risponde con il codice 354
.
Quindi scrivere il testo del messaggio. Premere Invio.
Digitare un punto (.) e premere Invio.
Se tutto ok il server risponde con
250 Queued id=0xc00587d1
e all’indirizzo specificato col comando rcpt si riceverà un’email.
Chiudere la sessione digitando il comando quit
.
Come inviare un’email? ▲
Dopo aver configurato il servizio SMTP ci sono diversi modi e diversi software che consentono di inviare email da IBM i. Senza entrare nei dettagli di ogni soluzione, elenco i comandi e API forniti da IBM e un tool molto ben fatto:
- SNDDST: send distribution
Attenzione: l’utente che invia email deve essere iscritto nel System Distribution Directory (SDD). - SNDSMTPEMM (da IBM i 6.1): send SMTP e-mail message.
Attenzione: se negli attributi del servizio SMTP si imposta DIRTYPE(*SDD) l’utente che invia email deve essere iscritto nel System Distribution Directory (SDD) e deve avere un nome smtp definito tramite WRKNAMSMTP. Se invece si imposta DIRTYPE(*SMTP) o DIRTYPE(*SMTPMSF) l’utente che invia email deve essere iscritto tramite il comando ADDUSRSMTP. - API QtmmSendMail: send MIME mail
- API QzmfCrtMailMsg: create Mail Message
- API QtmsCreateSendMail: create and send MIME E-mail
- Mime & Mail dal sito Easy400.net
Bibliografia ▲
- How To Configure the SMTP Client To Use SMTP Authentication with a SMTP Relay, IBM Technical document n. N1018618, 26-set-2018, https://www-01.ibm.com/support/docview.wss?uid=nas8N1018618
- Configuring MSF/SMTP on the IBM i, IBM Technical document n. N1017620, 12-dic-2012, https://www-01.ibm.com/support/docview.wss?uid=nas8N1017620
- SMTP New Configuration Checklist, Short Version, IBM Technical document n. N1012245, 2-mag-2013, https://www-01.ibm.com/support/docview.wss?uid=nas8N1012245
- Networking e-mail 7.3, manuale IBM, https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/rzair/rzairpdf.pdf?view=kc
- SE55814 – F/QTMSCLCP ENABLE SMTP CLIENT TO SENT TO DIFFERENT PORT, APAR n. SE55814 7.1, 16-nov-2013, http://www-01.ibm.com/support/docview.wss?uid=nas2SE55814
- Un tunnel per la posta, di Roberto Bizzozero, 5-lug-2017, https://blog.zenovalle.it/2017/07/un-tunnel-per-la-posta.html