JACMail Back to Home Page

JACMail is an Email Client Program designed to allow fast and efficient recovery of email from a POP3 server, and the sending of email through an SMTP server. If you are looking for reliable basic email messaging without all the bells and whistles, then JACMail may be the answer. If however you want to send and receive highly formatted emails with embedded objects, then JACMail is not for you.

JACMail is written in VB6, and is being made available in ZIP format. Installation is usually straight forward, using "setup.exe" to install files extracted from "JACMail.cab" as laid out in "setup.lst".

* Simple and efficient.
* Low cost (free).
* Sends and receives attachments
* Has separate storage for attachments.
* Does not support HTML based active scripting.
* Interprets HTML text based tags, but not images.
* Supports IPv4/IPv6
* Supports Authentication based POP3
* Supports multiple mailboxes (not accounts).
* Utilizes user directories that are required by newer operating systems.
* Able to operate with UAC (User Access Control).
* Allows easy access to full header.
* Does not remember passwords session to session.
* Sends messages immediately.
* Shows sending progress.
* Flags messages that include HTML tags.
* Able to pass HTML based messages to browser for viewing.
* Does not support server oriented MAPI (aka. Cloud computing).
* Reduces options to only those considered essential for the bulk of users.
* Has access to a spell checker.
* Has search/sort features.
* Is able to analyze header.
* Provides different database/settings for different logins.
* Leaves messages on server by default.
* Displays number of messages on server & provides for deletion.
* Can periodically check for new mail.
* Records SMTP session on both sending and receiving.
* Provides for End-to-End message encryption (Version 2).

JACMail is written using IP version independent system calls. Therefore, it will not work on Windows Systems that do not actively support dual stack. This more or less restricts it to Windows Vista or better. When installing JACMail, it will by default install the executable in the "Program Files" (or "Program Files (X86)" on 64 bit systems) directories. In keeping with the objectives, the Database is installed in the individual users's directory under a sub directory called \JACMail\. In this manner, individual accounts can be created within each User's Login using a common executable. The install program attempts to set up the Access database using ODBC. The 64 bit ODBC Manager that comes up by default on 64 bit systems does not support anything but SQL, so if you need to use the ODBC Manager for anything, you will have to change the the ODBC link in Administrative Tools to use the 32 bit Manager in the %SystemRoot%\syswow64\ directory instead of the %SystemRoot%\system32\ directory (Win 8.1 provides access to both versions).

When activated for the first time, JACMail will prompt you to create Public/Private keys if they don't already exist. These are random keys that Microsoft uses to import and export other keys, and don't exist by default on most user systems. JACMail makes limited use of them. JACMail will also ask you to create a Database, to which you should respond 'Yes'. When activated for the first time, JACMail will then prompt you to run Setup.

Enter your assigned email address without the name or brackets (eg. user1@domain1.com). Then enter the POP3 (Post Office Protocol 3) Server name. This name usually matches the domain in the user name(eg. pop3.domain1.com). JACMail will verify the IP address of the name that you have entered, and it may take a few seconds. Next, enter the POP3 Port number (usually 110). If you are not logged in, JACMail will ask you for the Password matching the Account Name (not stored). At this point JACMail will verify your account. Correct all errors before proceeding further.

Now enter the name to be used in conjunction with your Return Address (optional, no brackets or quotes required), and then enter the name of the SMTP (Simple Mail Transfer Protocol) Server (eg. SMTP.domain2.com). JACMail will once again verify the IP address of the server. Next enter the SMTP Port number. This is usually 25, but can be different. For example, if you are using Plain Authentication, the port number would be 587.

If you are NOT using Plain Authentication, enter a blank in the SMTP Account Name. This will verify your account and take you directly to the Return Address. If Plain Authentication is being used, enter your Account Name. Again, the domain name in the Account usually matches the domain name portion of the SMTP Server (eg. user2@domain2.com). Enter the Password for the SMTP account. This Password is not stored, but is used to create a HASH code which is stored. At this point, your account will be verified on the SMTP server. Correct all errors before proceeding further.

Enter your Return Address. This can be the same as your POP3 Address or your SMTP Address. It is the one that the receiver will use to reply to your email. Now enter the number of minutes that JACMail will wait before checking for new mail. Be reasonable with this number, as you can check for new mail anytime you want simply by using the CTRL M key.

Version 2 requires 3 additional seetings. The first is Encryption Bytes for which the minimum is 8 bytes (64 bits) and the maximum is 64 bytes (512 bits). The second is the Home Address Block. If you do not intend to use the encrytion feature, just accept the default or enter your own private domain. The third is Server Domain Name. Again, this is only used by the encryption routine and is necessary if you intend to send or receive encrypted messages. Further information is available on the JACMail Service page.

JACMail uses descriptive Command Buttons instead of icons. Virtually all commands are available in the dropdown menu bar, and most are available via CTRL hot keys. Most of those available through Command Buttons are also available via the underlined key used in conjunction with the ALT key. There is one useful hot key that is not shown anywhere, and that is the ESC key. Except for the Main window, any window that has the focus can be closed using the ESC key. There is no Command Button for checking mail, as it is expected that most users will use the Auto Check function or the hot key (CTRL M).

Unlike most other Email programs, JACMail does not actually delete mail from the mailbox. It simply flags the mail as deleted and removes it from the active display. Therefore, each mailbox has it's own Trash box. To keep the InBox responsive, it has the ability to send old email to an Archive mailbox. When mail is archived up to a specified date, mail marked for deletion is removed.

When email is being retrieved from the POP server, the various steps of the process are shown in the status box at the bottom. If there is no mail on the server, it simply says "No New Messages!" when it is finished. Otherwise it will state how many messages were received and how many remain on the server. By default, JACMail leaves all messages on the server. Clicking on the "Delete From Server" button removes all messages from the server and downloads any that it does not have. However, it is safer to Check Mail first, and then delete them from the server.

JACMail records the date a message is received (or sent in the case of Outbound mail), not the date that it was sent/created. That information is already available in the actual message itself.

The current message (ID pointed to) can be flagged for deletion (Sent to Trash) by clicking the Delete Message button, by using the Delete key, or by highlighting several messages while holding down the CTRL key, and then using the same Delete Message button or Delete Key. The order in which the messages are bookmarked is not important in this case, because the ID is retained. Alternately, you can also use the Enter Key in conjunction with the mouse if the messages are contiguous (all togther).

To read a particular message, again there are several different options. The currently selected message is shown by the small button in the ID column. Clicking that button, clicking the Read Message button, using the ALT R hot key, clicking the Read Mail dropdown menu item, or using the CTRL R hot key all read the current message in a separate window.

This particular message has been crafted to demonstrate several JACMail features. The yellow Contains HTML flag shows that Web based code has been included in the message, although all that is shown is the text based message. The red Attachments box indicates that there are one or more files attached, and I have dropped down the box to show you that file. Clicking on that file will cause the program associated with the file extension to be loaded and subsequently load the file. Occassionally, some senders will unwittingly modify the extension. If JACMail cannot find the related executable, you will be offered the option to change the extension to the correct one. In this case it is a JPEG file, and on my system the Windows Photo Gallery is used.

Because this email contains HTML code, we can click on the Read as Web button and it will be transferred to your default browser. In this case Mozilla Firefox is used and the message is quite simple.

This is very seldom the case, and Web pages can contain blind scripts which can be dangerous if your browser supports them. If you know how to read HTML code, you can view the entire message by clicking on the View Header button, and then clicking again on the View Message button. Unlike other email programs, JACMail does not store one format in preference to another one. On this particular view, you can also see where the image file was identified in the original stream. The line that says "Content-Converted:" originally said Content-Disposition:, and the encoded file followed.

Now to one of the more intriguing aspects of JACMail. If you click on the View Header button, you will see the entire contents of the header including the body header.

In the early days of email, the body header only showed the:
From: "Linda Sender"
To: "Joe and Mary User"
Subject: E-mailing: IMG_4656edited1Nathan
Date: Mon, 10 Sep 2012 20:37:32 -0600
MIME-Version: 1.0
headers, and it distracted little from reading the message. As demonstrated by the window above, vendors have expanded on this usage to solve various problems, to the extent that it now occupies most of the visible window. With JACMail, we chose to separate the Body Header information from the rest of the body and add it to the SMTP header information. You only see the message information with the relevant envelope information extracted to the text boxes above it. Going back to viewing the header, you will see another option is now available, and that is Analyze Header. Clicking on it produces another window, with the first option being to examine the Routing. Clicking on it produces:

This routing information was originally in reverse order and difficult to read. We have reformatted it to read in forward order in a more structured manner. To find out where any of the IP addresses are located, you can highlight any of them and click on the Whois button.

In this case, the ARIN database contained a referral which the program followed, and found the originating source was an address in Lethbridge Alberta Canada. Referrals to private databases are not often provided, so the source will probably be more general in nature. Regardless, this information can be extremely helpful in determining if a message is real or not. If the message was supposed to be from someone we knew and it originated in TimBukTu, we can be pretty sure that it is not genuine.

Note: IPv6 version software supports both IPv4 and IPv6, but only works on Windows Vista or better systems.

UPDATE (11/20/2012): JACMail worked by keeping track of the last Message-ID that it received. Using the Message-ID from the email itself insured accuracy between that record and the actual storage. The POP servers that it was tested on utilised this same ID as the unique ID for listing what was held on the server. However, Internet standards do not specifically say that this number must be used, and we ran into a situation of at least one POP server (Zimbra Collaboration Server) that does not. Therefore, a relatively major revision was made to utilise the number supplied by the POP server, regardless of whether or not it agrees with the Message-ID in the message itself.

UPDATE (01/17/2013): The Archive routine has been completed, and a backup routine has been added. The Archive routine will copy all messages below the currently selected record to the Archive file, while deleting all records below the current selection. In other words, all active records with an ID number less than the current selection will be moved to the Archive file, and all records marked for deletion in the same range will actually be deleted. This could leave blank spots in the database, so the backup routine will create a backup file, and compact that file into a new database.

UPDATE (01/27/2013): Search routines have been added, and the ability to make multiple row selection using the mouse and the SHIFT key. Previously, the only way to select multiple rows was with the CTRL key and the mouse. The search function allows you to search for a string in a specific mailbox, in either the header or the body, and in either the active or deleted portion. CTRL N or a command button allows you to find the next instance. One thing to note is that when a string is located in a "quoted-printable" message, the message is displayed without being decoded. This was necessary because the search routine located the search string in the raw data, and to highlight the string correctly required the raw data to be displayed.

UPDATE (02/10/2013): Spell check has been added to the sending mail fuction. This particular application uses MS Word 8.0 to 12.0, and one of those versions is required to be present in order to function. Occassionally something goes wrong, and it becomes neccessary to delete the record that JACMail has of the last message received. A new function to facilitate this has been added to the Settings menu.

UPDATE (02/26/2013): The Setup routine has been modified to display all setup items in a single window. Not only does JACMail verify the IP addresses of the servers, but it will also verify the Accounts used with those servers. This makes trouble shooting connection problems a lot easier.

Bug Fixes:

Occasionally, a received attachment was not viewable because the filename started with a control character. Upon investigation, the file itself had the correct name. The pointer within the body of the message used the terminology "filename=xxxxxx.ext". If the filename was numerical in nature, began with a control character sequence, and the message was sent using "quoted-printable" format, it would get interpreted as a control character. For example, "=1234567.pdf" would get interpreted as "34567.pdf". The resolution was to change the pointer to "filename:xxxxxx.ext". Since there are existing messages with the old format, both formats have to be checked for.

When sending email through an authentication server, the program was using the POP account sender in the MAIL FROM: SMTP command. This resulted in the Body "From:" not agreeing with the SMTP "Mail From:". Although this generally did not cause any problems, there was a potential to cause problems with DMARC, which requires From: alignment. The program was modified to use the Return Address in "Mail From:".

A problem was encountered with messages from one sending server that was using DKIM. When the program searched for a From: line in the header, it found that string in the DKIM signature information and reported the sender as "Subject". Since the body header information was always at the end of the header, the program was changed to do a reverse search instead of a forward search.

One bulk mailer server was found to be sending multipart messages with the delimiter header containing capital letters ("Text/Html" instead of "text/html"). JACMail was unable to recognize the separation between the message types, and displayed the complete message. Even though it detected HTML code, it was unable to find the actual code and pass it to the default browser. The program was changed to search for both cases of text.

In the JACMail database, both the Sender: and Subject: are limited to 50 characters. Both fields are searched for in the header, and if they exceed 50 characters, only the first 45 plus 5 dots is stored. However, no such check was made prior to storing information in the OutBox. If a user replied to an email with a subject or sender line more than 50 characters, the message would get sent but returned an Error: -2147217887 when attempting to record the sent message. The program was modified to check the length of those 2 fields.

We ran into some difficulty with screen management using Spell Check in the compiled program. Therefore, the entire Spell Check routine was replaced with a simpler more reliable routine.

When sending a large email attachment, JACMail would show "End of Message!" in the Status box. The user could interpret this as meaning that the message had been sent, when in fact it had actually only been queued into the message buffer. When the message has actually been sent, the Send Mail window will close. If the user closes the window with the "Close" button or the "ESC" key, he/she would receive a prompt to save the unfinished message. Whatever response the user chose, the message would be terminated and the window closed. To make matters worse, if the user chose "Yes", the message would be saved without the header for troubleshooting. To combat this, the header is now saved regardless of whether or not the message was sent. In addition, the "End of Message" status has been changed to read "Message Queued!", the Send Mail window cannot be closed until the entire message has been sent, and a progress bar has been added to the Status box. This should eliminate the confusion and provide valuable troubleshooting information should something go wrong.

One mail sender (program unknown) sometimes sends Text/plain messages "Base64" encoded. JACMail only checked for messages that were "Quoted-printable" encoded, so the message was basically unreadable. The program was modified to detect and decode text only messages that are "Base64" encoded, and display a flag identifying such.

One bulk mail sender chose to send an HTML only message with the type partially capitalised (Text/Html). JACMail could not sense the HTML code to be able to forward it to the default Browser, so it was modified to be case insensitive.

(09/12/13) - Two forms (Read Mail & Send Mail) are resizable. On Windows systems using Aero, the bottom and right side of the windows were clipped because of the wider margins used by Aero. These have been modified to compensate for Aero.

Note: Version 1 is no longer available. Version 2 is slimmer and faster, and is being offered instead.

| PAGE 2 - Sending Email!

| PAGE 3 - New Features!


Back to Top

| Home Page