This is an example of some Postfix Header Checks which I use to help with mail spammers. This has been working as expected really well. One thing to note is that I did need to comment out #/^Precedence:.*bulk/ REJECT We do not accept your spam because it would prevent auto-reply emails from being sent such as vacation or out-of-office responses.

To load these header checks I am using the pcre format defined inside main.cf.

header_checks = pcre:/etc/postfix/header_checks

# Intro

Mozilla Thunderbird is a free, open source, cross-platform email, news, and chat client developed by the Mozilla Foundation.

Mozilla Thunderbird is arguably the best Mail User Agent for the desktop. Being an avid user of Email I thought I would list some of the extensions I find makes Thunderbird even better in no specific order.

First on the list is Adblock Plus. I really think it's ridiculous to serve ads in Emails, so this works really well for anyone looking to block all those annoying ads. This extension is probably not needed if Emails are read in plain text.

### Display Quota

This is a nice extension to display your mail quota. I use quotas on my mail servers and like how this extension will tell you how many messages are in each folder. You can also have it give you a warning when you reach a certain percentage and modify it's appearance.

### Enigmail

This is a must have extension all Thunderbird users should have. It does a great job at what it was intended to do - sign & encrypt Email messages. From my experience it has been quite stable.

### ImportExportTools

This extension is great for those looking to import or export folders and messages. There are plenty of available options.

### Manually sort folders

I'm not sure why Thunderbird does not have native support for manually sorting folders, but this extension really does deliver. You can sort manually or automatically and re-order accounts in the folder pane. Definitely worth having.

### Markdown Here

I really enjoy using markdown and just so happen to write my blog using markdown, so thought why not extend support to other apps like Thunderbird. This extension works really well for writing Email messages using markdown syntax.

### Send Later

I needed to send an Email at a specific time and found Send Later to exist. I'm glad I came across this extension because it definitely excels at what it does. The caveat is that Thunderbird must be open for it to work, but the support page suggests some solutions.

I originally thought about writing a small script to do this, so decided to write something up that I could easily use on Linux and macOS systems.

#!/usr/bin/env bash

## use the 'at' command to send an outgoing email at a specific time
MAILTO=''
MAILFROM=''
SUBJECT=''
Cc=''
Bcc=''
AT="at 9:00 AM Today" # 'at' expressions: http://www.computerhope.com/unix/uat.htm

MESSAGE=''

# Begin script
$AT <<EMAIL mail -s "$SUBJECT" -c "$Cc" -b "$Bcc" -r "$MAILFROM" "$MAILTO"
$MESSAGE EMAIL # EOF ### Sieve I use pigeonhole with Dovecot for Sieve support on my Linux server. I'm really glad this Thunderbird extension exists. It easily implements the ManageSieve protocol to securely manage Sieve Script on a remote IMAP server. For example, we can set a vacation notice. require ["body","fileinto","vacation"]; # rule:[Vacation] if true { vacation :days 2 :addresses "hello@aklein.me" :subject "Out of Office" "Thanks for your message. I am on vacation and will respond to emails when I return."; } I want to also point out you can grab the latest Thunderbird Sieve extension on GitHub. I had to use a Development Build because the extension available from the official Mozilla page would hang and never make the initial connection. So there you have all the extensions worth mentioning that I find make Thunderbird even better. Leave a comment if you have any other useful Thunderbird extensions! # Adding official email accounts and aliases in LDAP # Intro This post will touch on what objectClass and attributes I used specifically for OpenLDAP mail user records. I like the idea of keeping things well organized and with this simple structure I'm keeping the People and Mail containers separate. As a result, user records in the Mail organizational unit will have mail specific attributes not found in People user records. For the attributes to work I needed to have postfix-book.schema loaded into LDAP. ### Import Mail Account dn: uid=jdoe,ou=Mail,dc=domain1,dc=net objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson objectClass: PostfixBookMailAccount uid: jdoe cn: John Doe sn: Doe mailEnabled: TRUE mailAlias: alias1@domain1.net mailAlias: alias2@domain2.me mailAlias: alias3@domain1.net mailAlias: alias4@domain2.me mailUidNumber: 5000 mailGidNumber: 5000 mail: johndoe@domain1.net description: John Doe's mail account userPassword: {SSHA}lFXu8SajJaj+vEk99SvsBa+sRLmLfiRV mailHomeDirectory: /home/vmail/domain1.net/johndoe@domain1.net mailStorageDirectory: maildir:/home/vmail/domain1.net/johndoe@domain1.net/Maildir Once this mail record is imported into LDAP, the primary mail account including additional mail aliases defined by the mailAlias attribute can be verified using the postmap command. $ postmap -q johndoe@domain1.net ldap:/etc/postfix/ldap/ldap-vmailbox.cf

johndoe@domain1.net

The quota limit is in the mailQuota field: mailQuota=quota_rule=*:bytes=%$ Once Dovecot has been restarted with the above quota limit, we can then add the mailQuota attribute with a value using a preferred metric unit. For example, a mail user record might have a quota limit of 250 MB. mailQuota: 250MB The above quota is user-specific so this will end up overriding the global quota. ### Verify Quota I use a lot of aliases to save time, so putting this in your user profile is recommended. alias quota='doveadm quota get -u$1 '

\$ quota johndoe
Quota name Type    Value  Limit                                             %
User quota STORAGE     0 256000                                             0
User quota MESSAGE     0      -                                             0

# Intro

Although Dovecot provides it's own SASL, I opted for Cyrus SASL. It is fairly simple to configure both, but in this post I will demonstrate what worked for me.

#### /etc/saslauthd.conf

ldap_servers: ldap://ldap.example.net
ldap_version: 3
ldap_search_base: ou=Mail,dc=example,dc=net
ldap_scope: sub
ldap_filter: (&(uid=%u)(mailEnabled=TRUE))
ldap_auth_method: bind
ldap_timeout: 10
ldap_time_limit: 10

For LDAP authentication the above options worked in my environment. To use the mailEnabled attribute make sure postfix-book.schema is loaded into your LDAP implementation like OpenLDAP. With this we're basically saying users who have Enabled accounts are allowed to authenticate.

#### /etc/conf.d/saslauthd

SASLAUTHD_OPTS="-a ldap"

#### /usr/lib/sasl2/smtpd.conf

pwcheck_method: saslauthd
mech_list: plain
log_level: 7


Once everything is in place a simple systemctl restart saslauthd is all that is needed. You should now be able to add your LDAP account credentials to any mail application's SMTP settings.