setup:mx
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| setup:mx [2013/05/24 21:02] – root | setup:mx [2013/07/31 13:16] (current) – [MySQL] root | ||
|---|---|---|---|
| Line 6: | Line 6: | ||
| ==== MySQL ==== | ==== MySQL ==== | ||
| + | Create a database with a user with appropriate rights | ||
| + | |||
| + | Then go into that database and execute this: | ||
| + | |||
| + | < | ||
| + | CREATE TABLE IF NOT EXISTS `domains` ( | ||
| + | `domain` varchar(50) NOT NULL, | ||
| + | PRIMARY KEY (`domain`) | ||
| + | ) ENGINE=MyISAM DEFAULT CHARSET=latin1; | ||
| + | |||
| + | CREATE TABLE IF NOT EXISTS `forwardings` ( | ||
| + | `source` varchar(80) NOT NULL, | ||
| + | `destination` text NOT NULL, | ||
| + | PRIMARY KEY (`source`) | ||
| + | ) ENGINE=MyISAM DEFAULT CHARSET=latin1; | ||
| + | |||
| + | CREATE TABLE IF NOT EXISTS `transport` ( | ||
| + | `domain` varchar(128) NOT NULL DEFAULT '', | ||
| + | `transport` varchar(128) NOT NULL DEFAULT '', | ||
| + | UNIQUE KEY `domain` (`domain`) | ||
| + | ) ENGINE=MyISAM DEFAULT CHARSET=latin1; | ||
| + | |||
| + | CREATE TABLE IF NOT EXISTS `users` ( | ||
| + | `email` varchar(80) NOT NULL, | ||
| + | `password` varchar(20) NOT NULL, | ||
| + | `quota` bigint(20) DEFAULT ' | ||
| + | PRIMARY KEY (`email`) | ||
| + | ) ENGINE=MyISAM DEFAULT CHARSET=latin1; | ||
| + | </ | ||
| + | |||
| + | In the table **domains**, | ||
| + | |||
| + | In the table **forwardings**, | ||
| + | |||
| + | In the table **transport**, | ||
| + | |||
| + | In the table **users**, add an entry for each managed user you want to give a mailbox. Quota is expressed in bytes, and don't forget to use the **ENCRYPT** function to store the user password. | ||
| ==== Setup milters ==== | ==== Setup milters ==== | ||
| Line 29: | Line 66: | ||
| Restart the '' | Restart the '' | ||
| - | Add the milter socket | + | Add the milter socket '' |
| < | < | ||
| You must put this filter before opendmarc (DMARC validation won't be done if you don't do it), and you should put it before spamass-milter socket (SPF validation contributes to spam flagging). | You must put this filter before opendmarc (DMARC validation won't be done if you don't do it), and you should put it before spamass-milter socket (SPF validation contributes to spam flagging). | ||
| === DKIM (DomainKeys Identified Mail) === | === DKIM (DomainKeys Identified Mail) === | ||
| - | //This part has been inspired by the following tutorial: [[http:// | + | //This part has been inspired by the following tutorial: [[http:// |
| Guide to Install OpenDKIM for multiple domains with Postfix and Debian]]// | Guide to Install OpenDKIM for multiple domains with Postfix and Debian]]// | ||
| Line 72: | Line 109: | ||
| You will find the appropriate record in ''/ | You will find the appropriate record in ''/ | ||
| Start opendkim service and double-check that it is started at each reboot.q | Start opendkim service and double-check that it is started at each reboot.q | ||
| + | |||
| + | == Install the filter socket in postfix == | ||
| + | Add the milter socket '' | ||
| + | < | ||
| + | non_smtpd_milters = unix:/ | ||
| + | You must put this filter before opendmarc (DMARC validation won't be done if you don't do it), and you should put it before spamass-milter socket (DKIM validation contributes to spam flagging). | ||
| === DMARC (Domain-based Message Authentication, | === DMARC (Domain-based Message Authentication, | ||
| + | [[http:// | ||
| + | * A security policy enforcement (quarantine or reject) when a DMARC-compliant server receives fraudulent email (detected using SPF policy violation or DKIM signature failure) from a DMARC enabled domain. | ||
| + | * Collecting feedback data. This is pretty useful to identify from where threats come from, and to set up a mitigation policy. | ||
| + | |||
| + | The stable version of this module is in debian unstable repository. Enable the unstable repository (and pin it to avoid an upgrade to unstable). | ||
| + | < | ||
| + | |||
| + | ==== Sorting your messages with maildrop ==== | ||
| + | Installing maildrop | ||
| + | < | ||
| + | chmod +s / | ||
| + | |||
| + | ''/ | ||
| + | < | ||
| + | flags=DRhu user=vmail argv=/ | ||
| + | -d ${user}@${domain} ${user} ${domain} ${extension} ${nexthop} ${sender}</ | ||
| + | |||
| + | ''/ | ||
| + | < | ||
| + | maildrop_destination_recipient_limit = 1</ | ||
| + | |||
| + | ''/ | ||
| + | < | ||
| + | # Luthienstar Networks - 2013 | ||
| + | # | ||
| + | |||
| + | |||
| + | #### Logging controls | ||
| + | # | ||
| + | logfile "/ | ||
| + | #log " Arguments: ' | ||
| + | |||
| + | |||
| + | #### Environment variables definition | ||
| + | # ${user} ${domain} ${extension} ${nexthop} ${sender} | ||
| + | # | ||
| + | |||
| + | SHELL="/ | ||
| + | import EXT | ||
| + | import HOST | ||
| + | |||
| + | MAILADDR=" | ||
| + | USERNAME=" | ||
| + | DOMAIN=" | ||
| + | EXTENSION=" | ||
| + | NEXTHOP=" | ||
| + | SENDER=" | ||
| + | |||
| + | #### Environment setup | ||
| + | # | ||
| + | MAILROOT="/ | ||
| + | DEFAULT=" | ||
| + | maildirmake=/ | ||
| + | mkdir=/ | ||
| + | rmdir=/ | ||
| + | |||
| + | #### Create the base directories if a user has none | ||
| + | # | ||
| + | `test -e $DEFAULT` | ||
| + | if ($RETURNCODE != 0) | ||
| + | { | ||
| + | `$mkdir -p $DEFAULT` | ||
| + | `$rmdir $DEFAULT` | ||
| + | `$maildirmake $DEFAULT` | ||
| + | `touch $DEFAULT/ | ||
| + | `$maildirmake " | ||
| + | `$maildirmake " | ||
| + | `$maildirmake " | ||
| + | `$maildirmake " | ||
| + | `echo INBOX.Drafts >> $DEFAULT/ | ||
| + | `echo INBOX.Junk >> $DEFAULT/ | ||
| + | `echo INBOX.Sent >> $DEFAULT/ | ||
| + | `echo INBOX.Trash >> $DEFAULT/ | ||
| + | } | ||
| + | |||
| + | |||
| + | #### Filtering rules | ||
| + | # | ||
| + | |||
| + | # Mail is a spam | ||
| + | if( / | ||
| + | { | ||
| + | to " | ||
| + | } | ||
| + | |||
| + | # Attempt extension filtering | ||
| + | if( $EXTENSION =~ /^.+/ ) | ||
| + | { | ||
| + | if( $EXTENSION =~ /\.\./) | ||
| + | { | ||
| + | log "' | ||
| + | } | ||
| + | else | ||
| + | { | ||
| + | `test -d $DEFAULT/ | ||
| + | if( $RETURNCODE == 0 ) | ||
| + | { | ||
| + | to " | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | |||
| + | # Default storage | ||
| + | to " | ||
| + | |||
| + | </ | ||
| ===== Emergency Postfix Setup ===== | ===== Emergency Postfix Setup ===== | ||
| + | |||
| + | |||
setup/mx.1369422144.txt.gz · Last modified: 2013/05/24 21:02 by root