Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
postfix_mysql_tls_sasl [Le 15/03/2014, 10:47] – [Première partie] albanmartel | postfix_mysql_tls_sasl [Le 25/04/2015, 00:00] (Version actuelle) – [Spamassassin] 62.147.231.53 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | ---- | ||
+ | |||
+ | |||
+ | ====== Installation de Postfix avec TLS, SASL, MySQL, Clamav, SpamAssassin ====== | ||
+ | |||
+ | Ce tuto a été réalisé sur une Debian Etch. Il est compatible pour Ubuntu. | ||
+ | La mise en place d'une telle solution demande du temps ainsi qu'un certain niveau pour savoir étudier les logs s'il y a une erreur. | ||
+ | |||
+ | < | ||
+ | |||
+ | Niveau confirmé. | ||
+ | Temps d' | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | Ce tuto vous permettra de mettre en place une solution multi-domaine basée sur des utilisateurs et domaines virtuels, couplée avec MySQL. Postfix peut être couplé a LDAP et ProgresSQL. | ||
+ | |||
+ | Le tuto n'est pas tout à fait finalisé, mais il est opérationnel. Je n' | ||
+ | |||
+ | |||
+ | |||
+ | ===== Première partie ===== | ||
+ | |||
+ | Paquets principaux [[: | ||
+ | |||
+ | <note warning> | ||
+ | < | ||
+ | |||
+ | <note tip>Chez moi, le package courier-authlib-mysql s' | ||
+ | |||
+ | Si c'est la 1ère fois que vous installez MySQL, définissez un mot de passe pour le root | ||
+ | |||
+ | mysqladmin -u root password ' | ||
+ | |||
+ | Si jamais le mot de passe root ne peut être changé voici une petite procédure pour pouvoir le faire:\\ | ||
+ | |||
+ | < | ||
+ | / | ||
+ | rm -Rf / | ||
+ | mysql_install_db | ||
+ | / | ||
+ | mysqladmin -u root password ' | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Postfix ==== | ||
+ | |||
+ | Création de la base de donnée nommée postfix | ||
+ | |||
+ | mysqladmin -u root --password=' | ||
+ | |||
+ | Création de l' | ||
+ | | ||
+ | $ mysql -u root -p | ||
+ | Enter password: | ||
+ | GRANT ALL PRIVILEGES ON postfix.* TO " | ||
+ | |||
+ | Insertion des tables dans la base de données | ||
+ | |||
+ | USE postfix; | ||
+ | CREATE TABLE `alias` ( | ||
+ | `address` varchar(255) NOT NULL default '', | ||
+ | `goto` text NOT NULL, | ||
+ | `domain` varchar(255) NOT NULL default '', | ||
+ | `created` datetime NOT NULL default ' | ||
+ | `modified` datetime NOT NULL default ' | ||
+ | `active` tinyint(1) NOT NULL default ' | ||
+ | PRIMARY KEY (address) | ||
+ | ) ENGINE=MyISAM COMMENT=' | ||
+ | |||
+ | USE postfix; | ||
+ | CREATE TABLE `domain` ( | ||
+ | `domain` varchar(255) NOT NULL default '', | ||
+ | `description` varchar(255) NOT NULL default '', | ||
+ | `aliases` int(10) NOT NULL default ' | ||
+ | `mailboxes` int(10) NOT NULL default ' | ||
+ | `maxquota` int(10) NOT NULL default ' | ||
+ | `transport` varchar(255) default NULL, | ||
+ | `backupmx` tinyint(1) NOT NULL default ' | ||
+ | `created` datetime NOT NULL default ' | ||
+ | `modified` datetime NOT NULL default ' | ||
+ | `active` tinyint(1) NOT NULL default ' | ||
+ | PRIMARY KEY (domain) | ||
+ | ) ENGINE=MyISAM COMMENT=' | ||
+ | |||
+ | USE postfix; | ||
+ | CREATE TABLE `mailbox` ( | ||
+ | `username` varchar(255) NOT NULL default '', | ||
+ | `password` varchar(255) NOT NULL default '', | ||
+ | `name` varchar(255) NOT NULL default '', | ||
+ | `maildir` varchar(255) NOT NULL default '', | ||
+ | `quota` int(10) NOT NULL default ' | ||
+ | `domain` varchar(255) NOT NULL default '', | ||
+ | `created` datetime NOT NULL default ' | ||
+ | `modified` datetime NOT NULL default ' | ||
+ | `active` tinyint(1) NOT NULL default ' | ||
+ | PRIMARY KEY (username) | ||
+ | ) ENGINE=MyISAM COMMENT=' | ||
+ | |||
+ | quit; | ||
+ | |||
+ | On crée un dossier nommé vmail. Ce dossier regroupera les boîtes mail des utilisateurs. | ||
+ | |||
+ | $ groupadd -g 5000 vmail | ||
+ | $ useradd -g vmail -u 5000 vmail -d /home/vmail -m | ||
+ | |||
+ | On ajoute dans / | ||
+ | |||
+ | # Support Mysql | ||
+ | virtual_alias_maps = mysql:/ | ||
+ | virtual_gid_maps = static:5000 | ||
+ | virtual_mailbox_base = /home/vmail | ||
+ | virtual_mailbox_domains = mysql:/ | ||
+ | virtual_mailbox_limit = 51200000 | ||
+ | virtual_mailbox_maps = mysql:/ | ||
+ | virtual_minimum_uid = 5000 | ||
+ | virtual_transport = virtual | ||
+ | virtual_uid_maps = static:5000 | ||
+ | # Support du quota | ||
+ | virtual_create_maildirsize = yes | ||
+ | virtual_mailbox_extended = yes | ||
+ | virtual_mailbox_limit_maps = mysql:/ | ||
+ | virtual_mailbox_limit_override = yes | ||
+ | virtual_maildir_limit_message = Desole, la boite email de l' | ||
+ | virtual_overquota_bounce = yes | ||
+ | # Suport du relay | ||
+ | # | ||
+ | |||
+ | Le smtp de postfix est chrooté, il faut donc le retirer afin d' | ||
+ | |||
+ | # | ||
+ | # Postfix master process configuration file. For details on the format | ||
+ | # of the file, see the Postfix master(5) manual page. | ||
+ | # | ||
+ | # ========================================================================== | ||
+ | # service type private unpriv | ||
+ | # | ||
+ | # ========================================================================== | ||
+ | smtp inet n | ||
+ | cleanup | ||
+ | rewrite | ||
+ | |||
+ | On va désormais créer les fichiers de configuration de postfix pour MySQL. Dans / | ||
+ | |||
+ | <note tip>Pour aller plus vite, ne modifiez pas le mot de passe et copier-coller tels quels les fichiers. Une fois terminé, lancez la ligne de commande suivante en prenant soin de remplacer VOTREMOTDEPASSE par le bon. Tous les fichiers seront alors modifié en même temps, vous limiterez ainsi les erreurs ;-) : | ||
+ | |||
+ | $ '' | ||
+ | |||
+ | Cela peut également vous servir le jour où vous désirez modifier le mot de passe...</ | ||
+ | |||
+ | Creation des fichiers : mysql_virtual_alias_maps.cf, | ||
+ | |||
+ | MYSQL_USER=postfix | ||
+ | MYSQL_PASSWORD=motdepasse | ||
+ | MYSQL_HOST=127.0.0.1 | ||
+ | | ||
+ | cat << EOF >/ | ||
+ | user = $MYSQL_USER | ||
+ | password = $MYSQL_PASSWORD | ||
+ | hosts = $MYSQL_HOST | ||
+ | dbname = postfix | ||
+ | query = SELECT goto FROM alias WHERE address=' | ||
+ | EOF | ||
+ | | ||
+ | cat <<EOF >/ | ||
+ | user = $MYSQL_USER | ||
+ | password = $MYSQL_PASSWORD | ||
+ | hosts = $MYSQL_HOST | ||
+ | dbname = postfix | ||
+ | query = SELECT domain FROM domain WHERE domain=' | ||
+ | #optional query to use when relaying for backup MX | ||
+ | #query = SELECT domain FROM domain WHERE domain=' | ||
+ | EOF | ||
+ | | ||
+ | cat <<EOF >/ | ||
+ | user = $MYSQL_USER | ||
+ | password = $MYSQL_PASSWORD | ||
+ | hosts = $MYSQL_HOST | ||
+ | dbname = postfix | ||
+ | query = SELECT maildir FROM mailbox WHERE username=' | ||
+ | EOF | ||
+ | | ||
+ | cat << | ||
+ | user = $MYSQL_USER | ||
+ | password = $MYSQL_PASSWORD | ||
+ | hosts = $MYSQL_HOST | ||
+ | dbname = postfix | ||
+ | query = SELECT quota FROM mailbox WHERE username=' | ||
+ | EOF | ||
+ | | ||
+ | cat << | ||
+ | user = $MYSQL_USER | ||
+ | password = $MYSQL_PASSWORD | ||
+ | hosts = $MYSQL_HOST | ||
+ | dbname = postfix | ||
+ | query = SELECT domain FROM domain WHERE domain=' | ||
+ | EOF | ||
+ | |||
+ | Pour le bon fonctionnement et la sécurité il faut exécuter ces deux lignes de commandes | ||
+ | |||
+ | chmod 640 mysql_* | ||
+ | chgrp postfix mysql_* | ||
+ | |||
+ | On crée des liens pour le bon fonctionnement de l' | ||
+ | |||
+ | mkdir -p / | ||
+ | chown mysql / | ||
+ | ln -s / | ||
+ | |||
+ | mkdir -p / | ||
+ | ln -s / | ||
+ | chown -R daemon: | ||
+ | chmod 755 / | ||
+ | |||
+ | |||
+ | |||
+ | ==== TLS (Imap TLS)==== | ||
+ | |||
+ | Pour le support du TLS il faut créer une clef SSL toujours dans le répertoire / | ||
+ | |||
+ | $ openssl req -new -outform PEM -out smtpd.cert -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM -days 365 -x509 | ||
+ | |||
+ | <-- Enter your Country Name (e.g., " | ||
+ | <-- Enter your State or Province Name. | ||
+ | <-- Enter your City. | ||
+ | <-- Enter your Organization Name (e.g., the name of your company). | ||
+ | <-- Enter your Organizational Unit Name (e.g. "IT Department" | ||
+ | <-- Enter the Fully Qualified Domain Name of the system (e.g. " | ||
+ | <-- Enter your Email Address. | ||
+ | |||
+ | $ chmod o= / | ||
+ | |||
+ | Ajoutez dans / | ||
+ | |||
+ | # Support TLS | ||
+ | smtpd_tls_cert_file = / | ||
+ | smtpd_tls_key_file = / | ||
+ | |||
+ | |||
+ | ==== SASL ==== | ||
+ | |||
+ | Pour l' | ||
+ | |||
+ | # Support SASL | ||
+ | broken_sasl_auth_clients = yes | ||
+ | smtpd_recipient_restrictions = | ||
+ | permit_mynetworks, | ||
+ | permit_sasl_authenticated, | ||
+ | reject_non_fqdn_hostname, | ||
+ | reject_non_fqdn_sender, | ||
+ | reject_non_fqdn_recipient, | ||
+ | reject_unauth_destination, | ||
+ | reject_unauth_pipelining, | ||
+ | reject_invalid_hostname, | ||
+ | reject_rbl_client list.dsbl.org, | ||
+ | reject_rbl_client bl.spamcop.net, | ||
+ | reject_rbl_client sbl-xbl.spamhaus.org | ||
+ | smtpd_sasl_auth_enable = yes | ||
+ | smtpd_sasl_local_domain = $myhostname | ||
+ | smtpd_sasl_security_options = noanonymous | ||
+ | broken_sasl_auth_clients = yes | ||
+ | smtpd_sasl_type = cyrus | ||
+ | cyrus_sasl_config_path = / | ||
+ | |||
+ | On peut supprimer reject_rbl_client opm.blitzed.org, | ||
+ | |||
+ | Créez le fichier smtpd.conf dans / | ||
+ | |||
+ | pwcheck_method: | ||
+ | mech_list: login plain | ||
+ | |||
+ | <note tip> | ||
+ | Pour certaines personnes qui ont eu ce message d' | ||
+ | |||
+ | warning: SASL authentication failure: cannot connect to saslauthd server: No such file or directory | ||
+ | |||
+ | Il faut ajouter, dans le fichier | ||
+ | |||
+ | saslauthd_path: | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | Editez le fichier / | ||
+ | |||
+ | START=yes | ||
+ | MECHANISMS=" | ||
+ | OPTIONS=" | ||
+ | |||
+ | | ||
+ | Créez les répertoires et attribuez les droits. | ||
+ | |||
+ | mkdir -p / | ||
+ | chown -R root:sasl / | ||
+ | chmod 710 / | ||
+ | |||
+ | |||
+ | Créez un lien symbolique pour que cela fonctionne lorsque postfix est chrooté [sionib] : | ||
+ | |||
+ | ln -s / | ||
+ | |||
+ | FIXME | ||
+ | |||
+ | <note warning> | ||
+ | |||
+ | ln -s / | ||
+ | |||
+ | </ | ||
+ | |||
+ | <note warning> Depuis au moins Ubuntu 14.04, le lien symbolique disparaît à chaque reboot. Comme workaround, éditez / | ||
+ | |||
+ | sudo vi / | ||
+ | |||
+ | |||
+ | Et ajoutez ces lignes tout à la fin du fichier : | ||
+ | |||
+ | / | ||
+ | ln -s / | ||
+ | / | ||
+ | |||
+ | Ainsi le lien sera recréé à chaque reboot et sasl fonctionnera correctement. | ||
+ | |||
+ | </ | ||
+ | |||
+ | Créez le fichier / | ||
+ | |||
+ | auth | ||
+ | account | ||
+ | |||
+ | Redémarrez sasl | ||
+ | |||
+ | / | ||
+ | |||
+ | Rajouter l' | ||
+ | |||
+ | | ||
+ | |||
+ | ==== Courier (MTA: Pop3, IMAP) ==== | ||
+ | |||
+ | Editez le fichier / | ||
+ | Cherchez la ligne authmodulelist=" | ||
+ | |||
+ | Editez le fichier / | ||
+ | |||
+ | MYSQL_SERVER | ||
+ | MYSQL_USERNAME | ||
+ | MYSQL_PASSWORD | ||
+ | # | ||
+ | MYSQL_PORT | ||
+ | MYSQL_OPT | ||
+ | MYSQL_DATABASE | ||
+ | MYSQL_USER_TABLE | ||
+ | MYSQL_CRYPT_PWFIELD | ||
+ | # | ||
+ | MYSQL_UID_FIELD | ||
+ | MYSQL_GID_FIELD | ||
+ | MYSQL_LOGIN_FIELD | ||
+ | MYSQL_HOME_FIELD | ||
+ | MYSQL_NAME_FIELD | ||
+ | MYSQL_MAILDIR_FIELD | ||
+ | # | ||
+ | # | ||
+ | |||
+ | Redémarrez courier | ||
+ | |||
+ | $ / | ||
+ | |||
+ | |||
+ | |||
+ | ===== Deuxième Partie ===== | ||
+ | |||
+ | **Ajout d'un anti-spam, anti-virus** | ||
+ | |||
+ | Cette deuxième partie n'est pas obligatoire pour le bon fonctionnement du serveur de mail. Elle est juste présente afin d' | ||
+ | |||
+ | $ sudo apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip arj bzip2 razor pyzor dcc-client | ||
+ | |||
+ | <note warning> les paquets dcc-client dcc-server dcc-common n' | ||
+ | |||
+ | Sous hardy 8.4, le paquet dcc-client n' | ||
+ | |||
+ | Il est toujours possible de télécharger le paquet dcc-server (qui remplace dcc-client) via les paquets ubuntu cela marche avec la version 8.4 et la version 8.10. | ||
+ | Premièrement le paquet dcc-server a besoin de dcc-common pour fonctionner. | ||
+ | * dcc-common : http:// | ||
+ | * dcc-server : http:// | ||
+ | |||
+ | Par exemple on peut procéder ainsi : | ||
+ | < | ||
+ | wget http:// | ||
+ | wget http:// | ||
+ | dpkg -i dcc-common_1.3.42-5_amd64.deb | ||
+ | dpkg -i dcc-server_1.3.42-5_amd64.deb | ||
+ | |||
+ | cdcc " | ||
+ | cdcc " | ||
+ | </ | ||
+ | ==== Amavis ==== | ||
+ | |||
+ | Créer le fichier / | ||
+ | |||
+ | use strict; | ||
+ | | ||
+ | $MYHOME = '/ | ||
+ | | ||
+ | $mydomain = ' | ||
+ | | ||
+ | # $myhostname = ' | ||
+ | | ||
+ | $daemon_user | ||
+ | $daemon_group = ' | ||
+ | | ||
+ | $TEMPBASE = $MYHOME; | ||
+ | | ||
+ | $pid_file | ||
+ | $lock_file = "/ | ||
+ | | ||
+ | $ENV{TMPDIR} = $TEMPBASE; | ||
+ | | ||
+ | $max_servers | ||
+ | $max_requests = 10; # retire a child after that many accepts (default 10) | ||
+ | | ||
+ | $child_timeout=5*60; | ||
+ | # (default: 8*60 seconds) | ||
+ | | ||
+ | # @bypass_virus_checks_acl = qw( . ); # uncomment to DISABLE anti-virus code | ||
+ | # @bypass_spam_checks_acl | ||
+ | | ||
+ | @local_domains_acl = ( " | ||
+ | | ||
+ | $relayhost_is_client = 0; # (defaults to false) | ||
+ | | ||
+ | $insert_received_line = 1; | ||
+ | | ||
+ | $unix_socketname = undef; | ||
+ | | ||
+ | $inet_socket_port = 10024; | ||
+ | $inet_socket_bind = ' | ||
+ | @inet_acl = qw( 127.0.0.1 ); | ||
+ | | ||
+ | $DO_SYSLOG = 1; | ||
+ | $LOGFILE = "/ | ||
+ | | ||
+ | #$log_level = 2; # (defaults to 0) | ||
+ | | ||
+ | $log_templ = '[? %#V |[? %#F |[? | ||
+ | [? | ||
+ | | ||
+ | read_l10n_templates(' | ||
+ | | ||
+ | $final_virus_destiny | ||
+ | $final_banned_destiny | ||
+ | $final_spam_destiny | ||
+ | $final_bad_header_destiny = D_PASS; | ||
+ | | ||
+ | $viruses_that_fake_sender_re = new_RE( | ||
+ | qr' | ||
+ | qr' | ||
+ | qr' | ||
+ | qr' | ||
+ | qr' | ||
+ | qr' | ||
+ | [qr' | ||
+ | [qr' | ||
+ | [qr/.*/ => 1], # true by default | ||
+ | ); | ||
+ | | ||
+ | $virus_admin = " | ||
+ | | ||
+ | $mailfrom_to_quarantine = ''; | ||
+ | | ||
+ | $QUARANTINEDIR = '/ | ||
+ | | ||
+ | $virus_quarantine_to | ||
+ | $spam_quarantine_to = ' | ||
+ | | ||
+ | $X_HEADER_TAG = ' | ||
+ | $X_HEADER_LINE = "by $myversion (Debian) at $mydomain"; | ||
+ | | ||
+ | $undecipherable_subject_tag = ' | ||
+ | | ||
+ | $remove_existing_x_scanned_headers = 0; # leave existing X-Virus-Scanned alone | ||
+ | # | ||
+ | # (defaults to false) | ||
+ | # | ||
+ | $remove_existing_spam_headers | ||
+ | # spam scanning is enabled (default) | ||
+ | | ||
+ | $keep_decoded_original_re = new_RE( | ||
+ | # qr' | ||
+ | qr' | ||
+ | qr' | ||
+ | # qr' | ||
+ | ); | ||
+ | | ||
+ | $banned_filename_re = new_RE( | ||
+ | # qr' | ||
+ | | ||
+ | | ||
+ | # qr' | ||
+ | # qr' | ||
+ | # | ||
+ | # | ||
+ | # qr' | ||
+ | # qr' | ||
+ | # qr' | ||
+ | # qr' | ||
+ | # qr' | ||
+ | | ||
+ | # qr' | ||
+ | ); | ||
+ | | ||
+ | @lookup_sql_dsn = | ||
+ | ( [' | ||
+ | | ||
+ | $sql_select_policy = ' | ||
+ | | ||
+ | $sql_select_white_black_list = undef; | ||
+ | | ||
+ | $recipient_delimiter = ' | ||
+ | | ||
+ | $replace_existing_extension = 1; # (default is false) | ||
+ | | ||
+ | $localpart_is_case_sensitive = 0; # (default is false) | ||
+ | | ||
+ | $blacklist_sender_re = new_RE( | ||
+ | qr' | ||
+ | qr' | ||
+ | qr' | ||
+ | qr' | ||
+ | qr' | ||
+ | qr' | ||
+ | ); | ||
+ | | ||
+ | map { $whitelist_sender{lc($_)}=1 } (qw( | ||
+ | nobody@cert.org | ||
+ | owner-alert@iss.net | ||
+ | slashdot@slashdot.org | ||
+ | bugtraq@securityfocus.com | ||
+ | NTBUGTRAQ@LISTSERV.NTBUGTRAQ.COM | ||
+ | security-alerts@linuxsecurity.com | ||
+ | amavis-user-admin@lists.sourceforge.net | ||
+ | razor-users-admin@lists.sourceforge.net | ||
+ | notification-return@lists.sophos.com | ||
+ | mailman-announce-admin@python.org | ||
+ | zope-announce-admin@zope.org | ||
+ | owner-postfix-users@postfix.org | ||
+ | owner-postfix-announce@postfix.org | ||
+ | owner-sendmail-announce@lists.sendmail.org | ||
+ | sendmail-announce-request@lists.sendmail.org | ||
+ | ca+envelope@sendmail.org | ||
+ | owner-technews@postel.ACM.ORGuse strict; | ||
+ | lvs-users-admin@LinuxVirtualServer.org | ||
+ | ietf-123-owner@loki.ietf.org | ||
+ | cvs-commits-list-admin@gnome.org | ||
+ | rt-users-admin@lists.fsck.com | ||
+ | owner-announce@mnogosearch.org | ||
+ | owner-hackers@ntp.org | ||
+ | owner-bugs@ntp.org | ||
+ | clp-request@comp.nus.edu.sg | ||
+ | surveys-errors@lists.nua.ie | ||
+ | emailNews@genomeweb.com | ||
+ | owner-textbreakingnews@CNNIMAIL12.CNN.COM | ||
+ | yahoo-dev-null@yahoo-inc.com | ||
+ | )); | ||
+ | | ||
+ | $MAXLEVELS = 14; # (default is undef, no limit) | ||
+ | | ||
+ | $MAXFILES = 1500; # (default is undef, no limit) | ||
+ | | ||
+ | $MIN_EXPANSION_QUOTA = 100*1024; | ||
+ | $MAX_EXPANSION_QUOTA = 300*1024*1024; | ||
+ | $MIN_EXPANSION_FACTOR = | ||
+ | $MAX_EXPANSION_FACTOR = 500; # times original mail size (must be specified) | ||
+ | | ||
+ | $path = '/ | ||
+ | | ||
+ | $file = ' | ||
+ | | ||
+ | $gzip = ' | ||
+ | $bzip2 | ||
+ | $lzop = ' | ||
+ | $uncompress = [' | ||
+ | $unfreeze | ||
+ | $arc = [' | ||
+ | $unarj | ||
+ | $unrar | ||
+ | $zoo = ' | ||
+ | $lha = ' | ||
+ | $cpio = ' | ||
+ | | ||
+ | $sa_local_tests_only = 0; # (default: false) | ||
+ | # | ||
+ | | ||
+ | # Timout for SpamAssassin. This is only used if spamassassin does NOT | ||
+ | # override it (which it often does if sa_local_tests_only is not true) | ||
+ | $sa_timeout = 30; # timeout in seconds for a call to SpamAssassin | ||
+ | # (default is 30 seconds, undef disables it) | ||
+ | | ||
+ | # AWL (auto whitelisting), | ||
+ | # $sa_auto_whitelist = 1; # defaults to undef | ||
+ | | ||
+ | $sa_mail_body_size_limit = 150*1024; | ||
+ | | ||
+ | $sa_tag_level_deflt | ||
+ | $sa_tag2_level_deflt = 4.0; # add 'spam detected' | ||
+ | $sa_kill_level_deflt = $sa_tag2_level_deflt; | ||
+ | | ||
+ | $sa_dsn_cutoff_level = 10; | ||
+ | | ||
+ | $sa_spam_subject_tag = ' | ||
+ | | ||
+ | $first_infected_stops_scan = 1; | ||
+ | | ||
+ | @av_scanners = ( | ||
+ | | ||
+ | ### http:// | ||
+ | ['Clam Antivirus-clamd', | ||
+ | \& | ||
+ | qr/\bOK$/, qr/ | ||
+ | qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ], | ||
+ | # NOTE: run clamd under the same user as amavisd; | ||
+ | # name (LocalSocket) in clamav.conf to the socket name in this entry | ||
+ | # When running chrooted one may prefer: [" | ||
+ | | ||
+ | ); | ||
+ | | ||
+ | @av_scanners_backup = ( | ||
+ | | ||
+ | ### http:// | ||
+ | ['Clam Antivirus - clamscan', | ||
+ | " | ||
+ | qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ], | ||
+ | | ||
+ | ); | ||
+ | | ||
+ | 1; # insure a defined return | ||
+ | |||
+ | Pensez à changer le mot de passe à la ligne 112 par celui de votre base de donné postfix. | ||
+ | |||
+ | Configurez / | ||
+ | use strict; | ||
+ | # $myhostname is used by amavisd-new for node identification, | ||
+ | # important to get it right (e.g. for ESMTP EHLO, loop detection, and so on). | ||
+ | chomp($myhostname = `hostname --fqdn`); | ||
+ | # To manually set $myhostname, | ||
+ | # Qualified Domain Name (FQDN) and remove the # at the beginning of the line. | ||
+ | # | ||
+ | $myhostname = "your hostname mail"; | ||
+ | 1; # ensure a defined return | ||
+ | |||
+ | Pensez à changer le nom d' | ||
+ | |||
+ | Ajoutez en fin fichier / | ||
+ | |||
+ | amavis unix - - - - 2 smtp | ||
+ | -o smtp_data_done_timeout=1200 | ||
+ | -o smtp_send_xforward_command=yes | ||
+ | | ||
+ | 127.0.0.1: | ||
+ | -o content_filter= | ||
+ | -o local_recipient_maps= | ||
+ | -o relay_recipient_maps= | ||
+ | -o smtpd_restriction_classes= | ||
+ | -o smtpd_client_restrictions= | ||
+ | -o smtpd_helo_restrictions= | ||
+ | -o smtpd_sender_restrictions= | ||
+ | -o smtpd_recipient_restrictions=permit_mynetworks, | ||
+ | -o mynetworks=127.0.0.0/ | ||
+ | -o strict_rfc821_envelopes=yes | ||
+ | -o receive_override_options=no_unknown_recipient_checks, | ||
+ | -o smtpd_bind_address=127.0.0.1 | ||
+ | |||
+ | Ajoutez en fin de fichier / | ||
+ | |||
+ | # Support Amavis | ||
+ | content_filter = amavis: | ||
+ | receive_override_options = no_address_mappings | ||
+ | |||
+ | Testons la configuration de postfix | ||
+ | |||
+ | $ postfix check | ||
+ | |||
+ | S'il n'y a pas de réponse, c'est que votre configuration est bonne. On peut recharger postfix. | ||
+ | |||
+ | $ postfix reload | ||
+ | |||
+ | ==== Spamassassin ==== | ||
+ | |||
+ | Avant tout, il faut créer l' | ||
+ | |||
+ | sudo groupadd spamd | ||
+ | sudo useradd -g spamd -s / | ||
+ | sudo mkdir / | ||
+ | sudo chown spamd:spamd / | ||
+ | sudo mkdir / | ||
+ | sudo chown spamd:spamd / | ||
+ | |||
+ | Modifer le fichier / | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Editez le fichier / | ||
+ | |||
+ | # This is the right place to customize your installation of SpamAssassin. | ||
+ | # | ||
+ | # See ' | ||
+ | # tweaked. | ||
+ | # | ||
+ | ########################################################################### | ||
+ | # | ||
+ | # rewrite_header Subject *****SPAM***** | ||
+ | # report_safe 1 | ||
+ | # trusted_networks 212.17.35. | ||
+ | # lock_method flock | ||
+ | | ||
+ | # dcc | ||
+ | use_dcc 1 | ||
+ | dcc_path / | ||
+ | dcc_add_header 1 | ||
+ | dcc_dccifd_path / | ||
+ | | ||
+ | # Pyzor | ||
+ | use_pyzor 1 | ||
+ | pyzor_path / | ||
+ | pyzor_add_header 1 | ||
+ | | ||
+ | # Razor | ||
+ | use_razor2 1 | ||
+ | razor_config / | ||
+ | | ||
+ | # Bayes | ||
+ | use_bayes 1 | ||
+ | use_bayes_rules 1 | ||
+ | bayes_auto_learn 1 | ||
+ | |||
+ | Démarrez le daemon spamassassin | ||
+ | |||
+ | $ / | ||
+ | Pour dire à postfix d' | ||
+ | |||
+ | | ||
+ | par | ||
+ | | ||
+ | -o content_filter=spamassassin | ||
+ | et à la fin du fichier, ajoutez : | ||
+ | | ||
+ | | ||
+ | / | ||
+ | Créez le fichier / | ||
+ | |||
+ | #!/bin/sh | ||
+ | PATH=/ | ||
+ | cd / | ||
+ | cd / | ||
+ | cd / | ||
+ | cd / | ||
+ | cd / | ||
+ | cd / | ||
+ | cd / | ||
+ | cd / | ||
+ | cd / | ||
+ | cd / | ||
+ | cd / | ||
+ | cd / | ||
+ | cd / | ||
+ | cd / | ||
+ | cd / | ||
+ | cd / | ||
+ | cd / | ||
+ | cd / | ||
+ | cd / | ||
+ | cd / | ||
+ | cd / | ||
+ | cd / | ||
+ | cd / | ||
+ | cd / | ||
+ | ## Next lines are remplaced by the one above | ||
+ | ##cd / | ||
+ | ##cd / | ||
+ | ##cd / | ||
+ | ##cd / | ||
+ | cd / | ||
+ | cd / | ||
+ | cd / | ||
+ | cd / | ||
+ | cd / | ||
+ | | ||
+ | / | ||
+ | | ||
+ | exit 0 | ||
+ | |||
+ | $ chmod 755 / | ||
+ | |||
+ | Ajoutez la crontab suivante | ||
+ | |||
+ | $ crontab -e | ||
+ | |||
+ | 30 2 */2 * * / | ||
+ | |||
+ | On l' | ||
+ | |||
+ | $ / | ||
+ | |||
+ | Testons le serveur smtp | ||
+ | |||
+ | $ telnet localhost 25 | ||
+ | |||
+ | Trying 127.0.0.1... | ||
+ | Connected to 127.0.0.1. | ||
+ | Escape character is ' | ||
+ | 220 localhost.localdomain ESMTP Postfix (Debian/ | ||
+ | ehlo localhost | ||
+ | 250-localhost.localdomain | ||
+ | 250-PIPELINING | ||
+ | 250-SIZE 51200000 | ||
+ | 250-VRFY | ||
+ | 250-ETRN | ||
+ | 250-STARTTLS | ||
+ | 250-AUTH LOGIN PLAIN | ||
+ | 250-AUTH=LOGIN PLAIN | ||
+ | 250-ENHANCEDSTATUSCODES | ||
+ | 250-8BITMIME | ||
+ | 250 DSN | ||
+ | quit | ||
+ | |||
+ | Si les tests sont ok, votre serveur de mail est opérationnel. | ||
+ | ===== Création des utilisateurs/ | ||
+ | |||
+ | Il ne nous reste plus qu'à remplir les tables pour la gestion des domaines, des boxes, et des aliases. | ||
+ | Pour cela, vous pouvez passer par phpmyadmin, ce que je vous conseille. Ou pour les mordus de la console comme mouaaaa... | ||
+ | |||
+ | $ mysql -u root -p | ||
+ | Enter password: | ||
+ | USE postfix; | ||
+ | INSERT INTO domain (domain, | ||
+ | INSERT INTO alias (address, | ||
+ | INSERT INTO mailbox (username, | ||
+ | quit; | ||
+ | |||
+ | |||
+ | <note warning> | ||
+ | Attention, lors de la création de l' | ||
+ | </ | ||
+ | |||
+ | Les mots de passe seront à chiffrer via la fonction ENCRYPT sous PHPMyAdmin. | ||
+ | |||
+ | <note tip>Pour Postfix Admin je vous conseille de l' | ||
+ | Il existe une interface d' | ||
+ | |||
+ | Testez votre nouvelle installation avec votre client de messagerie. Pour information les identifiants de connexion sont sous la forme **utilisateur@domain.tld** | ||
+ | |||
+ | Postfix a été configuré pour les quota mais le tuto n'en parle pas. C'est tout à fait normal, je n'ai pas tout à fait finalisé le tuto, et je ne parle pas de la mise en place des quota. Pour cela, il faut compiler postfix via les sources, voir le patcher si je ne raconte pas de bêtise. Une recherche sur google vous en dira plus en attendant ;-) | ||
+ | |||
+ | ===== Création du répertoire de stockage des mails ===== | ||
+ | |||
+ | Il faut créer le répertoire ou seront stockés les mails (envoyés, brouillons, etc...) | ||
+ | Aller dans le répertoire ou tout les comptes mails sont enregistrés (/ | ||
+ | |||
+ | $ maildirmake VOTREREPERTOIREDEMAIL | ||
+ | |||
+ | Modifier VOTREREPERTOIREDEMAIL par le nom que vous voulez donner au compte mail (machin@domain.ltd par exemple). | ||
+ | |||
+ | Donner les droits adéquats aux dossiers contenus dans votre répertoire où les comptes mails sont enregistrés : | ||
+ | |||
+ | $ sudo chown vmail:vmail -R / | ||
+ | ===== En cas d' | ||
+ | |||
+ | - Si vous souhaitez tester la configuration de sasl, vous pouvez utiliser : < | ||
+ | |||
+ | <note info> | ||
+ | Pour vérifier que sasl va bien chercher dans la db les utilisateurs, | ||
+ | La log / | ||
+ | Dans le cas contraire, vous avez probablement un problème de configuration. | ||
+ | </ | ||
+ | <note info> | ||
+ | Si vous n' | ||
+ | Il vous suffit alors de créer un nouveau user ou de modifier le précédent par un mot de passe simple (test par exemple) et de retester. | ||
+ | </ | ||
+ | |||
+ | - Si le serveur smtp ne répond pas, sachez qu' | ||
+ | |||
+ | Dans ce cas, le serveur pop3 risque de ne pas fonctionner. Pour cela, il faut créer à la main les répertoires des différents utilisateurs ajoutés dans la table mailbox. | ||
+ | |||
+ | cd /home/vmail | ||
+ | mkdir NomRépertoireDeLaBase | ||
+ | mkdir NomRépertoireDeLaBase/ | ||
+ | mkdir NomRépertoireDeLaBase/ | ||
+ | |||
+ | Les trois dernières commandes sont à effectuer autant de fois qu'il y a d' | ||
+ | |||
+ | Ensuite, il faut attribuer les droits à l' | ||
+ | chown vmail:vmail -R / | ||
+ | |||
+ | - Si une fois un test d' | ||
+ | postfix/ | ||
+ | postfix/ | ||
+ | |||
+ | Il faut désinstaller le package suivant : libsasl2-modules-sql | ||
+ | apt-get remove libsasl2-modules-sql | ||
+ | |||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | // |