AutoIt
AutoIt
POP3 SSH Tunneling (Port Forwarding)
Demonstrates how to connect to a POP3 server through an SSH tunnel. Reads a POP3 mailbox and display the FROM and SUBJECT header fields of each email.Chilkat AutoIt Downloads
Local $bSuccess = False
; This example requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.
; The mailman object is used for receiving (POP3)
; and sending (SMTP) email.
$oMailman = ObjCreate("Chilkat.MailMan")
; The SSH hostname may be a hostname or an
; IP address, such as "192.168.1.108".
; The port is typically 22 (the standard port for SSH).
Local $sshHostname = "sftp.example.com"
Local $iSshPort = 22
; Connect to an SSH server and establish the SSH tunnel:
$bSuccess = $oMailman.SshOpenTunnel($sshHostname,$iSshPort)
If ($bSuccess = False) Then
ConsoleWrite($oMailman.LastErrorText & @CRLF)
Exit
EndIf
; Authenticate with the SSH server via a login/password
; or with a public key.
; This example demonstrates SSH password authentication.
; Note: This is not authenticating with the POP3 server, it is
; for authenticating with the SSH server, which is separate.
$bSuccess = $oMailman.SshAuthenticatePw("ssh_login","ssh_password")
If ($bSuccess = False) Then
ConsoleWrite($oMailman.LastErrorText & @CRLF)
Exit
EndIf
; OK, the SSH tunnel is setup. The mailman may
; be used exactly the same as usual, except all communications
; are now sent through the SSH tunnel.
; The SSH tunnel may be kept open for any number of
; POP3 connections.
; Set the POP3 server's hostname
$oMailman.MailHost = "mail.my-pop3-server.com"
; Set the POP3 settings for your POP3 server:
$oMailman.PopUsername = "pop3_login"
$oMailman.PopPassword = "pop3_password"
$oMailman.MailPort = 995
$oMailman.PopSsl = True
; Connect to the POP3 server through the already-established SSH tunnel:
$bSuccess = $oMailman.Pop3BeginSession()
If ($bSuccess = False) Then
ConsoleWrite($oMailman.LastErrorText & @CRLF)
Exit
EndIf
; A visual inspection of the LastErrorText after
; a successful POP3 connection will confirm the SSH tunneling.
; Note: If the POP3 connection uses SSL/TLS, then the SSL/TLS
; secure channel will be wrapped within the SSH tunnel.
ConsoleWrite($oMailman.LastErrorText & @CRLF)
; How many messages are in the POP3 inbox?
Local $iNumToDownload = $oMailman.GetMailboxCount()
If ($iNumToDownload > 5) Then
$iNumToDownload = 5
EndIf
If ($iNumToDownload = 0) Then
ConsoleWrite("No messages in the POP3 inbox." & @CRLF)
Exit
EndIf
; Download a max of 5 messages
Local $i
$oEmail = ObjCreate("Chilkat.Email")
For $i = 1 To $iNumToDownload
$bSuccess = $oMailman.FetchOne(False,0,$i,$oEmail)
If ($bSuccess = False) Then
ConsoleWrite($oMailman.LastErrorText & @CRLF)
Exit
EndIf
ConsoleWrite($oEmail.From & @CRLF)
ConsoleWrite($oEmail.Subject & @CRLF)
ConsoleWrite("----" & @CRLF)
Next
; Close the connection with the POP3 server, leaving the SSH tunnel open for subsequent POP3 connections.
$bSuccess = $oMailman.Pop3EndSession()
If ($bSuccess = False) Then
ConsoleWrite($oMailman.LastErrorText & @CRLF)
Exit
EndIf
; Try connecting to a different POP3 server through the same aleady setup SSH tunnel:
; Set the POP3 server's hostname
$oMailman.MailHost = "mail.my-pop3-server2.com"
; Set the POP3 settings for your POP3 server:
$oMailman.PopUsername = "pop3_login2"
$oMailman.PopPassword = "pop3_password2"
$oMailman.MailPort = 110
$oMailman.PopSsl = False
$bSuccess = $oMailman.Pop3BeginSession()
If ($bSuccess = False) Then
ConsoleWrite($oMailman.LastErrorText & @CRLF)
Exit
EndIf
; Review the LastErrorText to see that the connection was made via the SSH tunnel:
ConsoleWrite($oMailman.LastErrorText & @CRLF)
$bSuccess = $oMailman.Pop3EndSession()
If ($bSuccess = False) Then
ConsoleWrite($oMailman.LastErrorText & @CRLF)
Exit
EndIf
; Close the SSH tunnel.
$bSuccess = $oMailman.SshCloseTunnel()
If ($bSuccess = False) Then
ConsoleWrite($oMailman.LastErrorText & @CRLF)
Exit
EndIf