Ciononostante rimane la necessità di utilizzare il servizio e instaurare un collegamento, vediamo di seguito come utilizzare un "trucchetto", installare sulla macchina un servizio di tunnelling che utilizza OpenSSL.
0. Ripasso: come configurare il server SMTP per il relay su altro servizio.
Le istruzioni sono ben specificate qui, non è intenzione di questo post spiegare nel dettaglio questi passaggi, ma li riepilogo solamente per capire come cambieranno in seguito:
- se non si è già in possesso di un certificato rilasciato da qualche autorità, è possibile utilizzarne uno creato "in proprio", per cui prendiamo carta e penna e ... no apriamo il browser puntando sull' "IBM Navigator for i" e da lì cerchiamo il DCM, dobbiamo creare una autorità di certificazione locale (local CA). Creata la CA, creiamo il nostro certificato come se fosse rilasciato dalla nostra CA.
- Assegniamo il certificato al client di posta, occhio che sia il client: dobbiamo far collegare il nostro server a un altro.
- Già che ci siamo verifichiamo invece che l'authority che ha rilasciato il certificato utilizzato dal nostro provider sia tra quelle considerate affidabili, altrimenti dobbiamo farci dare il certificato principale della CA, importarlo e poi aggiungerlo alla trust list.
- Modifichiamo le impostazione del server di posta per utilizzare il relay:
CHGSMTPA ALWAUTH(*RELAY) FWDHUBSVR('<host_server_di_posta_del_provider>')
- Se diversa da 25, cambiamo anche la porta alla quale collegarsi, questo si configura come variabile d'ambiente:
ADDENVVAR ENVVAR('QIBM_SMTP_SERVER_PORT') VALUE('465') LEVEL(*SYS)
- Aggiungiamo le informazioni di login:
ADDSMTPLE TYPE(*HOSTAUTH) HOSTNAME('<host_server_di_posta_del_provider>') USERNAME('<username>') PASSWORD('<password>')
- riavviamo il server smtp
ENDTCPSVR *SMTP STRTCPSVR *SMTP
Queste impostazioni abilitano la comunicazione via TLS, vediamo come impostare il tunnel.
1. Installate stunnel
Stunnel è un'utility per instaurare un servizio di tunnelling che utilizza OpenSSL per la crittografia, è possibile installarlo utilizzando i pacchetti messi a disposizione da Perzl, come descritto qui.
NB: vi consiglio di installare l'ultima versione, e per questo dovrete aggiornare l'utility di installazione, per questo consultate la guida in linea:
CALL QP2TERM cd /QOpenSys/download ./wwwperzl.sh aix61 admin
Una volta aggiornato (ci mette un po') date i comandi:
./wwwperzl.sh aix61 list stunnel
lista i pacchetti disponibili tra cui:
... stunnel-5.36-1.aix5.2.ppc.deps ...
e quindi:
./wwwperzl.sh aix61 wget stunnel-5.36-1.aix5.2.ppc ./wwwperzl.sh aix61 rpm stunnel-5.36-1.aix5.2.ppc
2. Configurate stunnel
Create un nuovo file nella posizione indicata sotto (da terminale AS):
EDTF STMF('/qopensys/opt/freeware/etc/stunnel/stunnel.conf')
e inserite i seguenti dati:
client = yes foreground = no fips = no [smtps-wrapper] accept = 11125 connect = <host_server_di_posta_del_provider>:465
Chiaramente '<host_server_di_posta_del_provider>' è l'host del server di posta del vostro provider (ve lo devo scrivere?)
Questo file di configurazione dice a stunnel di creare un servizio chiamato "stmps-wrapper" che ascolta in locale sulla porta 11125 e rimbalza la connessione sull'indirizzo remoto indicato alla porta 465.
Ora possiamo far partire il servizio:
CALL QP2TERM stunnel
tutto qua, con WRKACTJOB potete vedere un lavoro in batch lanciato con il vostro utente con funzione "PGM-stunnel", oppure per maggiore controllo potete vedere il lavoro in ascolto sulla porta 11125 (NETSTAT e opzione 3)
3. Cambiate impostazione del server SMTP
Che non deve più inviare a '<host_server_di_posta_del_provider>' ma al nostro servizio, per cui:
CHGSMTPA ALWAUTH (*RELAY) FWDHUBSVR('localhost') CHGENVVAR ENVVAR('QIBM_SMTP_SERVER_PORT') VALUE('11125') LEVEL(*SYS) ADDSMTPLE TYPE(*HOSTAUTH) HOSTNAME('localhost') USERNAME('<username>') PASSWORD('<password>')
username e password sono sempre quelli del server remoto
e riavviate il server SMTP:
ENDTCPSVR *SMTP STRTCPSVR *SMTP
Infine potete testare utilizzando i vostri comandi di posta, io utilizzo MMAIL, per cui:
MMAIL/EMLPTUMSG SUBJECT('test subject') FROMADDR('sender@yourmaildomain.com') TOADDR('receiver@othermaildomain.com') MSGTXT('test message')
4. Impostate il servizio automatico
Qui lascio libera scelta di come e quando far partire il servizio, tengo solo a precisare che è possibile utilizzare il comando:
QSH CMD('stunnel')
ed è tutto.
AGGIORNAMENTO 20/09/2017: aggiunto LEVEL(*SYS) ai comandi ADDENVVAR e CHGENVVAR, in questo modo la modifica è valida sempre.
AGGIORNAMENTO 20/09/2017: descrivo di seguito i passi per indagare il log di invio del servizio di posta, nel caso ci siano problemi (e visto che è un supplizio):
salva in QTEMP il file LOG che contiene le voci del giornale, e quindi:
per ispezionarlo, visto che non si capisce niente, vi rimando qua:
https://www.ibm.com/support/knowledgecenter/en/ssw_i5_54/rzair/rzairjournal.htm#rzairjournal__smtpclient
Vi serve vedere soprattutto i sottocodici che trovate nel campo:
del file di log, se tutto è ok dovreste trovare i codici 88 e 82.
AGGIORNAMENTO 25/09/2018: modificati i comandi di installazione di stunnel per refuso
AGGIORNAMENTO 20/09/2017: aggiunto LEVEL(*SYS) ai comandi ADDENVVAR e CHGENVVAR, in questo modo la modifica è valida sempre.
AGGIORNAMENTO 20/09/2017: descrivo di seguito i passi per indagare il log di invio del servizio di posta, nel caso ci siano problemi (e visto che è un supplizio):
DSPJRN JRN(QZMF) OUTPUT(*OUTFILE) OUTFILE(QTEMP/LOG) OUTMBR(LOG) ENTDTALEN(512)
salva in QTEMP il file LOG che contiene le voci del giornale, e quindi:
RUNQRY *N QTEMP/LOG
per ispezionarlo, visto che non si capisce niente, vi rimando qua:
https://www.ibm.com/support/knowledgecenter/en/ssw_i5_54/rzair/rzairjournal.htm#rzairjournal__smtpclient
Vi serve vedere soprattutto i sottocodici che trovate nel campo:
JOESD Dati specifici voce - Contenuti variabili
del file di log, se tutto è ok dovreste trovare i codici 88 e 82.
AGGIORNAMENTO 25/09/2018: modificati i comandi di installazione di stunnel per refuso