Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Tcl) 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.
load ./chilkat.dll # 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. set mailman [new_CkMailMan] # 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). set sshHostname "sftp.example.com" set sshPort 22 # Connect to an SSH server and establish the SSH tunnel: set success [CkMailMan_SshOpenTunnel $mailman $sshHostname $sshPort] if {$success != 1} then { puts [CkMailMan_lastErrorText $mailman] delete_CkMailMan $mailman exit } # 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. set success [CkMailMan_SshAuthenticatePw $mailman "ssh_login" "ssh_password"] if {$success != 1} then { puts [CkMailMan_lastErrorText $mailman] delete_CkMailMan $mailman exit } # 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 CkMailMan_put_MailHost $mailman "mail.my-pop3-server.com" # Set the POP3 settings for your POP3 server: CkMailMan_put_PopUsername $mailman "pop3_login" CkMailMan_put_PopPassword $mailman "pop3_password" CkMailMan_put_MailPort $mailman 995 CkMailMan_put_PopSsl $mailman 1 # Connect to the POP3 server through the already-established SSH tunnel: set success [CkMailMan_Pop3BeginSession $mailman] if {$success != 1} then { puts [CkMailMan_lastErrorText $mailman] delete_CkMailMan $mailman exit } # 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. puts [CkMailMan_lastErrorText $mailman] # How many messages are in the POP3 inbox? set numToDownload [CkMailMan_GetMailboxCount $mailman] if {$numToDownload > 5} then { set numToDownload 5 } if {$numToDownload == 0} then { delete_CkMailMan $mailman exit } # Download a max of 5 messages # email is a CkEmail for {set i 1} {$i <= $numToDownload} {incr i} { set email [CkMailMan_FetchByMsgnum $mailman $i] if {[CkMailMan_get_LastMethodSuccess $mailman] == 0} then { puts [CkMailMan_lastErrorText $mailman] delete_CkMailMan $mailman exit } puts [CkEmail_from $email] puts [CkEmail_subject $email] puts "----" delete_CkEmail $email } # Close the connection with the POP3 server, leaving the SSH tunnel open for subsequent POP3 connections. set success [CkMailMan_Pop3EndSession $mailman] if {$success != 1} then { puts [CkMailMan_lastErrorText $mailman] delete_CkMailMan $mailman exit } # Try connecting to a different POP3 server through the same aleady setup SSH tunnel: # Set the POP3 server's hostname CkMailMan_put_MailHost $mailman "mail.my-pop3-server2.com" # Set the POP3 settings for your POP3 server: CkMailMan_put_PopUsername $mailman "pop3_login2" CkMailMan_put_PopPassword $mailman "pop3_password2" CkMailMan_put_MailPort $mailman 110 CkMailMan_put_PopSsl $mailman 0 set success [CkMailMan_Pop3BeginSession $mailman] if {$success != 1} then { puts [CkMailMan_lastErrorText $mailman] delete_CkMailMan $mailman exit } # Review the LastErrorText to see that the connection was made via the SSH tunnel: puts [CkMailMan_lastErrorText $mailman] set success [CkMailMan_Pop3EndSession $mailman] if {$success != 1} then { puts [CkMailMan_lastErrorText $mailman] delete_CkMailMan $mailman exit } # Close the SSH tunnel. set success [CkMailMan_SshCloseTunnel $mailman] if {$success != 1} then { puts [CkMailMan_lastErrorText $mailman] delete_CkMailMan $mailman exit } delete_CkMailMan $mailman |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.