Some preferences are not available in any of the panes of the Preferences window. They can only be accessed using the Terminal application and thus require some technical skills. There are various reasons for keeping these preferences hidden. Some have just not been added to a Preferences pane yet, but most of them are used to enable experimental features which cannot yet be considered stable or complete features.
This is an example of how you can change the font of the headers view:
defaults write com.freron.MailMate MmHeadersViewFontName -string "LucidaGrande"
defaults write com.freron.MailMate MmHeadersViewFontSize -float 16
Note that most other font settings can be handled via the “Format ▸ Show Fonts” menu item.
The first step has been taken towards support for OpenPGP. So far, support is provided for decrypting and verifying OpenPGP/MIME messages and ASCII armored inlined PGP.
MailMate is currently hardcoded to use /usr/local/bin/gpg2
which you need to install if you do not already have it. The GPGTools installer is recommended (or just MacGPG2 and optionally GPG Keychain Access).
To enable this feature you need to paste the following in the Terminal:
defaults write com.freron.MailMate MmEnableOpenPGP -bool YES
Note: Currently, decrypted data is always added to the database and this is not yet configurable (it will be). This also means that searching works for encrypted body parts as well.
When creating a new message (not a reply) then the default From
address is based on the current context (mailbox and currently displayed/selected messages). You can override this behavior using the following hidden preference:
defaults write com.freron.MailMate MmDefaultAccount -string 'imap://username@imap.example.com'
The default From
address is then the first address defined for the account. In any case, as soon as you update the To
header then the From
address is updated if you have previously sent anything to the same recipient.
The following can be used to add a BCC (blind carbon copy) header by default to all outgoing messages:
defaults write com.freron.MailMate MmDefaultBccHeader -string me@example.com
MailMate uses delivery headers such as X-Original-To
in order to derive an appropriate From address for replies. This is especially powerful when used in combination with the “Address Pattern” in the IMAP account settings, but some users may want to make MailMate pick the first address in “Email Address(es)” whenever none of the addresses are explicitly used in the recipient fields (To
or Cc
). This can currently be done by setting the following preferences:
defaults write com.freron.MailMate MmIgnoreDeliveryAddresses -bool YES
It is possible to delay any outgoing messages. This is useful if you would like to be able to regret sending something within a few minutes. The following are the defaults needed. The delay is measured in seconds:
defaults write com.freron.MailMate MmSendMessageDelayEnabled -bool YES
defaults write com.freron.MailMate MmSendMessageDelay -integer 60
Note that you can still send immmediately by holding down ⌥ when sending.
An experimental alternative algorithm for the dynamic signatures system exists. It can be configured using the Terminal as follows:
defaults write com.freron.MailMateSimple MmDynamicSignatureMethod -string messageType
The three possible values are none
(to disable it completely), standard
(the default behavior), and messageType
. The last one bases its signature guess on whether the message is new or is a reply. The intention is to be able to use a detailed signature for new messages and a short signature for replies — automatically.
MailMate supports searching LDAP servers when autocompleting names/addresses in the composer window, but there is currently no GUI for this feature. It has only been tested with very few LDAP servers and feedback on success/failure of this feature is welcome.
To use this feature you need to create a file named LDAP.plist
in the following folder: ~/Library/Application Support/MailMate/
. Here is an example with SSL disabled (which is necessary for some badly configured servers):
{ servers = (
{ requireSSL = 0;
hostname = "ldap.example.com";
// port = ...;
// username = "...";
// searchBase = "";
// searchScope = "subtree"; // base, oneLevel, or subtree (default)
},
);
}
If a username
is provided then MailMate looks for a password in the keychain. It can be added manually to the keychain, but it should also work if Apple Mail has been used to store the password.
Based on this discussion, it is now possible to store a sent message with the message to which it is a reply:
defaults write com.freron.MailMate MmMoveSentRepliesToMailboxOfRepliedMessage -bool YES
The above currently does not work well with address completion since only “Sent Messages” is used as a history of previously sent messages. This can be changed using the following hidden preference:
defaults write com.freron.MailMate MmAddressCompletionMailbox 8F9C1062-E4F8-4949-B5DC-BAB7CDEC4110
The value given should be the UUID of a mailbox as seen in the following file:
~/Library/Application Support/MailMate/Mailboxes.plist
This is all experimental and how it works may change slightly before becoming a GUI feature.
If you need access to non-private IMAP namespaces then try the following:
defaults write com.freron.MailMateSimple MmNonPrivateNamespacesEnabled -bool YES
Please report how this works for you (both good and bad).
Some users may need to specify an IMAP namespace prefix explicitly. A known example is UW IMAP servers which return a set of namespaces similar to the following:
NAMESPACE (("" "/")("#mhinbox" NIL)("#mh/" "/")) (("~" "/")) (("#shared/" "/")("#ftp/" "/")("#news." ".")("#public/" "/"))
If MailMate uses the above as is then it is likely that all files in the home catalog of the user are fetched as IMAP mailboxes. This is a server configuration problem and it is obviously a serious security issue. Nevertheless, if you need to override the NAMESPACE response from the server then you can add the following line to the Sources.plist
file in ~/Library/Application Support/MailMate
:
namespaceResponse = '(("MailboxPrefix" "/")) NIL NIL';
You must replace MailboxPrefix
with the name of the folder with your IMAP mailboxes.
The following are two highly experimental features for improving the performance of MailMate:
The following can be used to reduce the number of messages included in the “All Messages” mailbox. All messages are still available via the IMAP sources/mailboxes:
defaults write com.freron.MailMate MmAllMessagesFilter -string "#date > 1 years ago"
The above example limits “All Messages” to messages dated within the past year.
Since MailMate is an offline email client it requires a lot of disk space if you have a large collection of emails. As an experimental feature MailMate offers to only fetch a subset of messages based on their age. It is currently controlled with an application wide preferences value:
defaults write com.freron.MailMate MmIMAPWindowInDays -int 365
This should limit MailMate to only fetch messages with a date within the latest year (technically, it is based on the so-called INTERNALDATE of the message on the server).
MailMate does not dynamically adapt to changes to these settings yet. It only has an effect when initially synchronizing an account. (Internally, MailMate supports controlling this window at both account and mailbox level, but this currently requires manual editing of database files.)
Any feedback on this feature is welcome, but use it with care. It is experimental.
Gmails IMAP server does not report changes to IMAP keywords/flags including its read state (when watching for changes in the inbox using the IDLE
command). As an experimental workaround, MailMate can now be told to regularly check for keyword changes. You can try it by running the following command in the terminal:
defaults write com.freron.MailMate MmEnableKeywordsCheckInIDLEForGmail -bool YES
MailMate has a layout class for handling multiple modes in a window. This can be used to provide a dual-mode layout in which one can switch between list mode and message mode. To control it, a key binding is needed for nextMode:
. To enable this layout, you need to do the following:
mkdir -p ~/Library/Application\ Support/MailMate/Resources/Layouts/Mailboxes/
cp /Applications/MailMate.app/Contents/Resources/Layouts/Mailboxes/dualMode.plist ~/Library/Application\ Support/MailMate/Resources/Layouts/Mailboxes/
And then edit dualMode.plist
by removing the enabled = 0
line.
When using the following debug variable, a log file is dumped to /tmp/mailmate_imap_subscriptions.log
if an error occurs while fetching mailboxes to be displayed for “Edit Subscriptions”. It also enables logging for the Activity Viewer even when the Activity Viewer is closed.
defaults write com.freron.MailMate LoggingEnabled -bool YES
Debug variable for logging any actions related to scripts:
defaults write com.freron.MailMate MmDebugScripts -bool YES
Debug variable for logging communication between SpamSieve and MailMate:
defaults write com.freron.MailMate DebugSpamDetection -bool YES
Debug variable for logging actions related to security protocols (S/MIME and OpenPGP):
defaults write com.freron.MailMate MmDebugSecurity -bool YES
When dragging messages from the messages outline to the Finder (or Desktop), the default filename is based on the subject of the message. This can be customized using a format string. Here are some simple examples:
defaults write com.freron.MailMate MmFilenameFormatString "${#body-part-id}.eml"
defaults write com.freron.MailMate MmFilenameFormatString "${subject} (${from}).eml"
The default is a nicely formatted subject line: ${subject.prefix:+${subject.prefix} }${subject.blob:+[${subject.blob}] }${subject.body}.eml
. Note that due to a file system limitation, MailMate always replaces any occurrences of :
with ;
.
Normal behavior when clicking the dock icon is to open a mailbox viewer if none exists. The following changes this behavior such that any existing message viewer windows or composer windows is taken to the front when the dock icon is clicked.
defaults write com.freron.MailMate MmShowAnyViewerOnDockIconClick -bool YES