### Why are all the dates displayed in a funny order?

Because SQmaiL is intended for an international audience, and YYYY-MM-DD is the only unambiguous date format. UK format (DD-MM-YYYY) is too easily confused with US (MM-DD-YYYY), and vice versa; and besides, US date format is a crime against nature and utterly abhorrent. YYYY-MM-DD also happens to be ISO standard, so there.

### You keep telling me to back up my database. How?

There will soon be a nice interface for doing this, but for the time being, do:

mysqldump --opt -p sqmail | gzip -c > sqmailbackup.sql.gz


...replacing sqmail with whatever your mail database is called, of course. This will generate a compressed SQL script that will recreate the database. You can restore a backup with:

zcat sqmailbackup.sql.gz | mysql -p sqmail


You can use this to copy databases, too.

### I'm upgrading from an old version and nothing seems to work any more.

Sigh. You didn't read the instructions, did you?

As SQmaiL evolves, particularly in these early stages, the database format will periodically change. (For example, the way vfolders are stored changed dramatically from 0.1 to 0.2 when I realised that the old way was deeply brain-damaged.) So, I've included a tool that will upgrade your database if it is necessary. To do this, just type:

sqmail upgrade

SQmaiL will look at the database, determine what parts need upgrading, and do it. (Yes, I could do this automatically. No, I haven't got the nerve to do it every time.) The upgrade procedure should be completely safe in that it will correctly do nothing if nothing needs to be done, but, well, hey, it's alpha.

### I select some text and it crashes!

It's a bug in pygtk.

As far as I can tell, this bugs bites when you (a) select some text in a message; (b) change messages without deselecting the text; (c) select some more text. If you deselect the text before changing messages, it doesn't appear to be a problem. Sorry --- nothing I can do. Complain to the pygtk authors.

### I select a message and it won't MIME decode it and stuff comes out on the console.

The message is not correctly MIME-encoded.

I'm using the Python mimetools/multifile libraries to decode the messages. They're a bit pedantic. They're also a bit buggy --- see the next question. I'm afraid there's nothing I can do at this point. I'm trying to track down the authors, but don't hold your breath. You can use the raw message display to read the message, but you won't be able to extract attachments from it. Sorry.

### I select a message and it locks up.

It's a bug in the mimetools/multifile libraries. When I ask for the next part of a message, on some (rare) messages mimetools gives me the same part I already have. This seems to happen particularly with bounce messages. I've put in some code to try and protect against this, but it doesn't always work. The only thing to do is to kill the process (^Z in the console is the only way of interrupting it) and restart. Don't click on the message again. Sorry.

### It won't let me send messages without a domain!

Yes. It's a feature.

Some mail servers, mine for example, will reject addresses without a domain. Also, unqualified addresses can be easily confused with mail aliases. So SQmaiL detects these and warns you. (It won't warn you if you've entered an alias. It'll just expand it and send the message.)

If you really want your old behaviour, go into the Preferences/Transport dialogue and enter your domain into the Default Domain box. Now if you enter and unqualified address, SQmaiL will silently add on the domain you've just entered and send the message.

### How do I use the aliases window?

The aliases window lets you edit your current set of mail aliases. A mail alias is a single word like an email address that SQmaiL will expand it into a set of real addresses. This is useful if you want to send mail to the same set of people a lot, without setting up a mailing list.

The user interface is currently a bit strange. I'm working on it.

To create a new entry, press the New button. You can then click on the new (blank) entry, and enter text in the box. If you press New when nothing is selected, a new alias is created; if an alias or email address is selected, a new email address will be added to that alias.

Did that make sense? Um. Suggestions, please.

### How do I do SQL queries?

You need to type a boolean expression into the box in the bottom-left corner. If your message matches the criterion you supply, and the criterion for that folder's parents, then it will be displayed in that vfolder. Note that messages can appear in multiple vfolders. You will probably want to use the SQL like operator, which does a glob match:

subjectfield like "%[listname]%"
...will extract messages sent by a number of major mailing list software packages. (The % is a wildcard character.) Check out the MySQL documentation for more information.

The following SQL fields are available:

• fromfield --- the sender's email address.
• realfromfield --- the sender's real name.
• tofield --- the To: field, in encoded form.
• ccfield --- the Cc: field, in encoded form.
• subjectfield --- the message's subject.
• date --- the arrival date of the message (in SQL datetime format).
• annotation --- the message's annotation.
• id --- the SQmaiL internal message ID.
• readstatus --- one of: Read, Unread, Deleted, Sent.

Encoded form fields are stored as Python pickles. You can ignore this for all intents and purposes; like will work as expected for both real names and email addresses.

Currently it's not possible to search for arbitrary headers or body text. Support for this is planned. (Currently, the headers and the bodies are stored in different tables. This turns out to be unnecessary, and I'll collapse the two together at some point.)

### What's the deal with empty SQL queries?

If you leave the query space blank, that folder is treated specially. The folder will display all the messages that aren't being shown in any of the other vfolders on the same tier. For example, if you have under Received Messages the folders foo, bar and unfiled, where the query for unfiled is blank, then only messages that are not shown in foo and bar will appear in it.

Note that messages in subfolders aren't taken into account with this.

Internally it works by taking the queries for all the other folders and combining them into (not QUERY1) and (not QUERY2) and (not QUERY3)... As a result, some rather odd things can happen. If one of your folders has a query of 1 (display all messages), then that will suppress any messages appearing in the unfiled folder (because not 1 is 0).

Cc: dg@tao-group.com
You need one or more files in your home directory with a name starting with .signature. When you press the 'Sign' button in the Compose window, a menu will pop up giving you the choice of which signature you want to use. The contents of the file will be appended to the end of your message.