Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
serveur:postfix_mysql_tls_sasl [Le 14/01/2009, 13:24]
213.95.41.13
— (Version actuelle)
Ligne 1: Ligne 1:
-{{tag>​serveur}} 
  
----- 
- 
- 
-====== Installation de Postfix + 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'​application : une bonne demie-heure 
- 
-[[http://​www.postfix.org/​|Postfix]] est un mta (Mail Transfer Agent, simple d'​utilisation contrairement à Sendmail ou bien qmail. Postfix est utilisé par défaut chez Mac OS X, disponible sur GNU/Linux, la famille BSD et d'​autres unix encore. ​ 
- 
-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'​utilise pas la commande sudo, je travaille directement sous root, c'est moins prise de tête que taper sudo devant chaque commande. Pour travailler sous le compte root, faite un sudo -i puis votre mot de passe habituel. 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
-===== Première Partie ===== 
- 
-Installation des paquets principaux 
- 
-   $ apt-get install postfix postfix-mysql mysql-client-5.0 mysql-server-5.0 
-   ​courier-authdaemon courier-authlib-mysql courier-pop courier-pop-ssl courier- 
-   imap courier-imap-ssl postfix-tls libsasl2-2 libsasl2-modules libsasl2- 
-   ​modules-sql sasl2-bin libpam-mysql openssl phpmyadmin 
- 
-<note tip>Chez moi, le package courier-authlib-mysql s'​appelle courier-authmysql</​note>​ 
- 
-Si c'est la 1ère fois que vous installez MySQL, définissez un mot de passe pour le root 
- 
-   $ mysqladmin -u root password '​motdepasse'​ 
- 
-Si jamais le mot de passe root ne peut être changé voici une petite procédure pour pouvoir le faire:\\ 
-\\ 
-/​etc/​init.d/​mysql stop\\ 
-rm -Rf /​var/​lib/​mysql/​*\\ 
-mysql_install_db\\ 
-/​etc/​init.d/​mysql start\\ 
-mysqladmin -u root password '​xxxxxxxx'​\\ 
- 
- 
-==== Postfix ==== 
- 
-Création de la base de donnée nommée postfix 
- 
-   $ mysqladmin -u root --password='​motdepasse'​ create postfix 
- 
-Création de l'​utilisateur postfix 
-  ​ 
-  $ mysql -u root -p 
-  Enter password: 
-  GRANT ALL PRIVILEGES ON postfix.* TO "​postfix"​@"​localhost"​ IDENTIFIED BY '​motdepasse';​ 
-  quit; 
- 
-Insertion des tables dans la base de données ​ 
- 
-  $ mysql -u root -p 
-  Enter password: 
- 
-  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 '​0000-00-00 00:​00:​00',​ 
-  `modified` datetime NOT NULL default '​0000-00-00 00:​00:​00',​ 
-  `active` tinyint(1) NOT NULL default '​1',​ 
-  PRIMARY KEY  (address) 
-  ) TYPE=MyISAM COMMENT='​Postfix Admin - Virtual Aliases';​ 
- 
-  USE postfix; 
-  CREATE TABLE `domain` ( 
-  `domain` varchar(255) NOT NULL default '',​ 
-  `description` varchar(255) NOT NULL default '',​ 
-  `aliases` int(10) NOT NULL default '​0',​ 
-  `mailboxes` int(10) NOT NULL default '​0',​ 
-  `maxquota` int(10) NOT NULL default '​0',​ 
-  `transport` varchar(255) default NULL, 
-  `backupmx` tinyint(1) NOT NULL default '​0',​ 
-  `created` datetime NOT NULL default '​0000-00-00 00:​00:​00',​ 
-  `modified` datetime NOT NULL default '​0000-00-00 00:​00:​00',​ 
-  `active` tinyint(1) NOT NULL default '​1',​ 
-  PRIMARY KEY  (domain) 
-  ) TYPE=MyISAM COMMENT='​Postfix Admin - Virtual Domains';​ 
- 
-  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 '​0',​ 
-  `domain` varchar(255) NOT NULL default '',​ 
-  `created` datetime NOT NULL default '​0000-00-00 00:​00:​00',​ 
-  `modified` datetime NOT NULL default '​0000-00-00 00:​00:​00',​ 
-  `active` tinyint(1) NOT NULL default '​1',​ 
-  PRIMARY KEY  (username) 
-  ) TYPE=MyISAM COMMENT='​Postfix Admin - Virtual Mailboxes';​ 
- 
-  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 /​etc/​postfix/​main.cf en fin de fichier 
- 
-  # Support Mysql 
-  virtual_alias_maps = mysql:/​etc/​postfix/​mysql_virtual_alias_maps.cf 
-  virtual_gid_maps = static:5000 
-  virtual_mailbox_base = /home/vmail 
-  virtual_mailbox_domains = mysql:/​etc/​postfix/​mysql_virtual_domains_maps.cf 
-  virtual_mailbox_limit = 51200000 
-  virtual_mailbox_maps = mysql:/​etc/​postfix/​mysql_virtual_mailbox_maps.cf 
-  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:/​etc/​postfix/​mysql_virtual_mailbox_limit_maps.cf 
-  virtual_mailbox_limit_override = yes 
-  virtual_maildir_limit_message = Desole, la boite email de l'​utilisateur est pleine, essayez plus tard. 
-  virtual_overquota_bounce = yes 
-  # Suport du relay 
-  #​relay_domains = mysql:/​etc/​postfix/​mysql_relay_domains_maps.cf 
- 
-Le smtp de postfix est chrooter, il faut donc le retirer afin d'​assurer son bon fonctionnement. On retire le chroot dans /​etc/​postfix/​master.cf et modifier comme dessous. 
- 
-  # 
-  # Postfix master process configuration file.  For details on the format 
-  # of the file, see the Postfix master(5) manual page. 
-  # 
-  # ========================================================================== 
-  # service type  private unpriv ​ chroot ​ wakeup ​ maxproc command + args 
-  #               ​(yes) ​  ​(yes) ​  ​(yes) ​  ​(never) (100) 
-  # ========================================================================== 
-  smtp      inet  n       ​- ​      ​n ​      ​- ​      ​- ​      smtpd 
-  cleanup ​  ​unix ​ n       ​- ​      ​n ​      ​- ​      ​0 ​      ​cleanup 
-  rewrite ​  ​unix ​ -       ​- ​      ​n ​      ​- ​      ​- ​      ​trivial-rewrite 
- 
-On va désormais créer les fichiers de configuration de postfix pour MySQL. Dans /​etc/​postfix,​ créer les fichiers suivants, tout en modifiant le mot de passe. 
- 
-<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 ;-) : 
- 
-$ ''​sed -i '​s/​motdepasse/​VOTREMOTDEPASSE/'​ /​etc/​postfix/​mysql_*.cf''​ 
- 
-Cela peut également vous servir le jour où vous désirez modifier le mot de passe...</​note>​ 
- 
-mysql_virtual_alias_maps.cf 
- 
-  user = postfix 
-  password = motdepasse 
-  hosts = 127.0.0.1 
-  dbname = postfix 
-  query = SELECT goto FROM alias WHERE address='​%s'​ AND active = 1 
- 
-mysql_virtual_domains_maps.cf 
- 
-  user = postfix 
-  password = motdepasse 
-  hosts = 127.0.0.1 
-  dbname = postfix 
-  query = SELECT domain FROM domain WHERE domain='​%s'​ 
-  #optional query to use when relaying for backup MX 
-  #query = SELECT domain FROM domain WHERE domain='​%s'​ and backupmx = '​0'​ and active = '​1'​ 
- 
-mysql_virtual_mailbox_maps.cf 
- 
-  user = postfix 
-  password = motdepasse 
-  hosts = 127.0.0.1 
-  dbname = postfix 
-  query = SELECT maildir FROM mailbox WHERE username='​%s'​ AND active = 1 
- 
-mysql_virtual_mailbox_limit_maps.cf 
- 
-  user = postfix 
-  password = motdepasse 
-  hosts = 127.0.0.1 
-  dbname = postfix 
-  query = SELECT quota FROM mailbox WHERE username='​%s'​ 
- 
-mysql_relay_domains_maps.cf 
- 
-  user = postfix 
-  password = motdepasse 
-  hosts = 127.0.0.1 
-  dbname = postfix 
-  query = SELECT domain FROM domain WHERE domain='​%s'​ and backupmx = '​1'​ 
- 
-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'​ensemble 
- 
-   $ mkdir -p /​var/​spool/​postfix/​var/​run/​mysqld 
-   $ chown mysql /​var/​spool/​postfix/​var/​run/​mysqld 
-   $ ln -s /​var/​run/​mysqld/​mysqld.sock /​var/​spool/​postfix/​var/​run/​mysqld/​mysqld.sock 
- 
-   $ mkdir -p /​var/​spool/​postfix/​var/​run/​courier/​authdaemon 
-   $ ln -s /​var/​run/​courier/​authdaemon/​socket /​var/​spool/​postfix/​var/​run/​courier/​authdaemon/​socket 
-   $ chown -R daemon:​daemon /​var/​spool/​postfix/​var/​run/​courier 
-   $ chmod 755 /​var/​run/​courier/​authdaemon 
- 
- 
- 
-==== TLS (Imap TLS)==== 
- 
-Pour le support du TLS il faut créer une clef SSL toujours dans le répertoire /​etc/​postfix/​ 
- 
-   $ 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., "​FR"​). 
-  <-- 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. "​server.domain.tld"​). 
-  <-- Enter your Email Address. 
- 
-   $ chmod o= /​etc/​postfix/​smtpd.key 
- 
-Ajoutez dans /​etc/​postfix/​main.cf 
- 
-  # Support TLS 
-  smtpd_tls_cert_file = /​etc/​postfix/​smtpd.cert 
-  smtpd_tls_key_file = /​etc/​postfix/​smtpd.key 
- 
- 
-==== SASL ==== 
- 
-Pour l'​ajout du sasl mettez en fin de fichier de /​etc/​postfix/​main.cf 
- 
-  # 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 
- 
-J'ai supprimer ​    ​reject_rbl_client opm.blitzed.org,​ le projet étant abandonné depuis mai 2006 : [[http://​wiki.blitzed.org/​OPM_status]]. 
- 
-Créez le fichier smtpd.conf dans /​etc/​postfix/​sasl et ajoutez 
- 
-  pwcheck_method:​ saslauthd auxprop 
-  mech_list: login plain 
-  auxprop_plugin:​ sql 
-  sql_engine: mysql 
-  sql_hostnames:​ localhost 
-  sql_user: postfix 
-  sql_database:​ postfix 
-  sql_passwd: motdepasse 
-  sql_select: select password from mailbox where username = '​%u@%r'​ 
- 
-Editez le fichier /​etc/​default/​saslauthd de façon à ce qu'il ait la configuration suivante 
- 
-  START=yes 
-  MECHANISMS="​pam"​ 
-  OPTIONS="​-c -r -m /​var/​run/​saslauthd"​ 
- 
-Créez le fichier /​etc/​pam.d/​smtp en prenant soin le cas échéant de remettre votre mot de passe. (chez moi il a fallu nommer ce fichier smtpd [jblanche]) 
- 
-  auth       ​required ​    ​pam_mysql.so user=postfix passwd=motdepasse host=127.0.0.1 db=postfix table=mailbox usercolumn=username passwdcolumn=password crypt=1 
-  account ​   sufficient ​  ​pam_mysql.so user=postfix passwd=motdepasse host=127.0.0.1 db=postfix table=mailbox usercolumn=username passwdcolumn=password crypt=1 
- 
-Redémarrez sasl 
- 
-   $ /​etc/​init.d/​saslauthd restart 
- 
-Rajouter l'​utilisateur postfix au groupe sasl : 
- 
-   $ adduser postfix sasl 
- 
-==== Courier (MTA: Pop3, IMAP) ==== 
- 
-Editez le fichier /​etc/​courier/​authdaemonrc 
-Cherchez la ligne authmodulelist="​authpam"​ et remplacez par authmodulelist="​authmysql"​ 
- 
-Editez le fichier /​etc/​courier/​authmysqlrc de façon à ce qui ressemble à ceci 
- 
-  MYSQL_SERVER ​           127.0.0.1 
-  MYSQL_USERNAME ​         postfix 
-  MYSQL_PASSWORD ​         motdepasse 
-  #​MYSQL_SOCKET ​          /​var/​lib/​mysql/​mysql.sock 
-  MYSQL_PORT ​             0 
-  MYSQL_OPT ​              0 
-  MYSQL_DATABASE ​         postfix 
-  MYSQL_USER_TABLE ​       mailbox 
-  MYSQL_CRYPT_PWFIELD ​    ​password 
-  #​DEFAULT_DOMAIN ​        ​domain.tld 
-  MYSQL_UID_FIELD ​        5000 
-  MYSQL_GID_FIELD ​        5000 
-  MYSQL_LOGIN_FIELD ​      ​username 
-  MYSQL_HOME_FIELD ​       "/​home/​vmail"​ 
-  MYSQL_NAME_FIELD ​       name 
-  MYSQL_MAILDIR_FIELD ​    ​maildir 
-  #​MYSQL_QUOTA_FIELD ​     quota 
-  #​MYSQL_WHERE_CLAUSE ​    ​server='​exemple.domain.tld'​ 
- 
-Redémarrez courier 
- 
-   $ /​etc/​init.d/​courier-authdaemon restart 
- 
- 
- 
-===== 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'​ajouter de nouvelles fonctionnalités pour l'​utilisateur. 
- 
-   $ sudo apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip arj bzip2 razor pyzor dcc-client 
- 
- 
-Sous hardy 8.4, le paquet dcc-client n'​existe plus, pas même dcc-server. [[http://​www.howtoforge.com/​the-perfect-spamsnake-ubuntu-8.04]] est peut être une piste en attendant la mise à jour de cette documentation. 
- 
-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://​packages.ubuntu.com/​gutsy/​dcc-common 
-  * dcc-server : http://​packages.ubuntu.com/​gutsy/​dcc-server 
- 
- 
-==== Amavis ==== 
- 
-Créer le fichier /​etc/​amavis/​amavisd.conf 
- 
-  use strict; 
-  ​ 
-  $MYHOME = '/​var/​lib/​amavis'; ​  # (default is '/​var/​amavis'​) 
-  ​ 
-  $mydomain = '​localhost';​ 
-  ​ 
-  # $myhostname = '​serveur.domain.tld'; ​ # fqdn of this host, default by uname(3) 
-  ​ 
-  $daemon_user ​ = '​amavis'; ​       # (no default (undef)) 
-  $daemon_group = '​amavis'; ​       # (no default (undef)) 
-  ​ 
-  $TEMPBASE = $MYHOME; ​          # (must be set if other config vars use is) 
-  ​ 
-  $pid_file ​ = "/​var/​run/​amavis/​amavisd.pid"; ​ # (default: "​$MYHOME/​amavisd.pid"​) 
-  $lock_file = "/​var/​run/​amavis/​amavisd.lock";​ # (default: "​$MYHOME/​amavisd.lock"​) 
-  ​ 
-  $ENV{TMPDIR} = $TEMPBASE; ​      # wise to set TMPDIR, but not obligatory 
-  ​ 
-  $max_servers ​ =  4;   # number of pre-forked children ​         (default 2) 
-  $max_requests = 10;   # retire a child after that many accepts (default 10) 
-  ​ 
-  $child_timeout=5*60; ​ # abort child if it does not complete each task in n sec 
-                        # (default: 8*60 seconds) 
-  ​ 
-  # @bypass_virus_checks_acl = qw( . );  # uncomment to DISABLE anti-virus code 
-  # @bypass_spam_checks_acl ​ = qw( . );  # uncomment to DISABLE anti-spam code 
-  ​ 
-  @local_domains_acl = ( "​.$mydomain"​ );  # $mydomain and its subdomains 
-  ​ 
-  $relayhost_is_client = 0;         # (defaults to false) 
-  ​ 
-  $insert_received_line = 1; 
-  ​ 
-  $unix_socketname = undef; 
-  ​ 
-  $inet_socket_port = 10024; 
-  $inet_socket_bind = '​127.0.0.1';​ 
-  @inet_acl = qw( 127.0.0.1 ); 
-  ​ 
-  $DO_SYSLOG = 1; 
-  $LOGFILE = "/​var/​log/​amavis.log"; ​ # (defaults to empty, no log) 
-  ​ 
-  #$log_level = 2;                # (defaults to 0) 
-  ​ 
-  $log_templ = '[? %#V |[? %#F |[?​%#​D|Not-Delivered|Passed]|BANNED name/type (%F)]|INFECTED (%V)], # 
-  [?​%o|(?​)|<​%o>​] -> [<​%R>​|,​][?​ %i ||, quarantine %i], Message-ID: %m, Hits: %c'; 
-  ​ 
-  read_l10n_templates('​en_US',​ '/​etc/​amavis'​);​ 
-  ​ 
-  $final_virus_destiny ​     = D_REJECT; # (defaults to D_BOUNCE) 
-  $final_banned_destiny ​    = D_REJECT; ​ # (defaults to D_BOUNCE) 
-  $final_spam_destiny ​      = D_PASS; ​ # (defaults to D_REJECT) 
-  $final_bad_header_destiny = D_PASS; ​ # (defaults to D_PASS), D_BOUNCE suggested 
-  ​ 
-  $viruses_that_fake_sender_re = new_RE( 
-    qr'​nimda|hybris|klez|bugbear|yaha|braid|sobig|fizzer|palyh|peido|holar'​i,​ 
-    qr'​tanatos|lentin|bridex|mimail|trojan\.dropper|dumaru|parite|spaces'​i,​ 
-    qr'​dloader|galil|gibe|swen|netwatch|bics|sbrowse|sober|rox|val(hal)?​la'​i,​ 
-    qr'​frethem|sircam|be?​agle|tanx|mydoom|novarg|shimg|netsky|somefool|moodown'​i,​ 
-    qr'​@mm|@MM', ​   # mass mailing viruses as labeled by f-prot and uvscan 
-    qr'​Worm'​i, ​     # worms as labeled by ClamAV, Kaspersky, etc 
-    [qr'​^(EICAR|Joke\.|Junk\.)'​i ​        => 0], 
-    [qr'​^(WM97|OF97|W95/​CIH-|JS/​Fort)'​i ​ => 0], 
-    [qr/.*/ => 1],  # true by default ​ (remove or comment-out if undesired) 
-  ); 
-  ​ 
-  $virus_admin = "​postmaster\@$mydomain"; ​               # due to D_DISCARD default 
-  ​ 
-  $mailfrom_to_quarantine = ''; ​  # override sender address with null return path 
-  ​ 
-  $QUARANTINEDIR = '/​var/​lib/​amavis/​virusmails';​ 
-  ​ 
-  $virus_quarantine_to ​ = '​virus-quarantine'; ​   # traditional local quarantine 
-  $spam_quarantine_to = '​spam-quarantine';​ 
-  ​ 
-  $X_HEADER_TAG = '​X-Virus-Scanned'; ​       # (default: undef) 
-  $X_HEADER_LINE = "by $myversion (Debian) at $mydomain";​ 
-  ​ 
-  $undecipherable_subject_tag = '​***UNCHECKED*** '; ​ # undef disables it 
-  ​ 
-  $remove_existing_x_scanned_headers = 0; # leave existing X-Virus-Scanned alone 
-  #​$remove_existing_x_scanned_headers= 1; # remove existing headers 
-                                          # (defaults to false) 
-  #​$remove_existing_spam_headers = 0;     # leave existing X-Spam* headers alone 
-  $remove_existing_spam_headers ​ = 1;     # remove existing spam headers if 
-                                          # spam scanning is enabled (default) 
-  ​ 
-  $keep_decoded_original_re = new_RE( 
-  # qr'​^MAIL$', ​  # retain full original message for virus checking (can be slow) 
-    qr'​^MAIL-UNDECIPHERABLE$', ​ # retain full mail if it contains undecipherables 
-    qr'​^(ASCII(?​! cpio)|text|uuencoded|xxencoded|binhex)'​i,​ 
-  # qr'​^Zip archive data', 
-  ); 
-  ​ 
-  $banned_filename_re = new_RE( 
-  #  qr'​^UNDECIPHERABLE$', ​ # is or contains any undecipherable components 
-     ​qr'​\.[^.]*\.(exe|vbs|pif|scr|bat|cmd|com|dll)$'​i,​ # some double extensions 
-     ​qr'​[{}]', ​    # curly braces in names (serve as Class ID extensions - CLSID) 
-  #  qr'​.\.(exe|vbs|pif|scr|bat|cmd|com)$'​i, ​          # banned extension - basic 
-  #  qr'​.\.(ade|adp|bas|bat|chm|cmd|com|cpl|crt|exe|hlp|hta|inf|ins|isp|js| 
-  #         ​jse|lnk|mdb|mde|msc|msi|msp|mst|pcd|pif|reg|scr|sct|shs|shb|vb| 
-  #         ​vbe|vbs|wsc|wsf|wsh)$'​ix, ​                 # banned extension - long 
-  #  qr'​.\.(mim|b64|bhx|hqx|xxe|uu|uue)$'​i,​ # banned extension - WinZip vulnerab. 
-  #  qr'​^\.(zip|lha|tnef|cab)$'​i, ​                     # banned file(1) types 
-  #  qr'​^\.exe$'​i, ​                                    # banned file(1) types 
-  #  qr'​^application/​x-msdownload$'​i, ​                 # banned MIME types 
-  #  qr'​^application/​x-msdos-program$'​i,​ 
-     ​qr'​^message/​partial$'​i, ​ # rfc2046. this one is deadly for Outcrook 
-  #  qr'​^message/​external-body$'​i,​ # block rfc2046 
-  ); 
-  ​ 
-  @lookup_sql_dsn = 
-     ( ['​DBI:​mysql:​database=postfix;​host=127.0.0.1;​port=3306',​ '​postfix',​ '​motdepasse'​] ); 
-  ​ 
-  $sql_select_policy = '​SELECT "​Y"​ as local FROM domains WHERE CONCAT("​@",​domain) IN (%k)'; 
-  ​ 
-  $sql_select_white_black_list = undef; ​ # undef disables SQL white/​blacklisting 
-  ​ 
-  $recipient_delimiter = '​+'; ​               # (default is '​+'​) 
-  ​ 
-  $replace_existing_extension = 1;        # (default is false) 
-  ​ 
-  $localpart_is_case_sensitive = 0;        # (default is false) 
-  ​ 
-  $blacklist_sender_re = new_RE( 
-      qr'​^(bulkmail|offers|cheapbenefits|earnmoney|foryou|greatcasino)@'​i,​ 
-      qr'​^(investments|lose_weight_today|market\.alert|money2you|MyGreenCard)@'​i,​ 
-      qr'​^(new\.tld\.registry|opt-out|opt-in|optin|saveonl|smoking2002k)@'​i,​ 
-      qr'​^(specialoffer|specialoffers|stockalert|stopsnoring|wantsome)@'​i,​ 
-      qr'​^(workathome|yesitsfree|your_friend|greatoffers)@'​i,​ 
-      qr'​^(inkjetplanet|marketopt|MakeMoney)\d*@'​i,​ 
-  ); 
-  ​ 
-  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.ORG 
-    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; ​ # bytes  (default undef, not enforced) 
-  $MAX_EXPANSION_QUOTA = 300*1024*1024; ​ # bytes  (default undef, not enforced) 
-  $MIN_EXPANSION_FACTOR =   ​5; ​ # times original mail size  (must be specified) 
-  $MAX_EXPANSION_FACTOR = 500;  # times original mail size  (must be specified) 
-  ​ 
-  $path = '/​usr/​local/​sbin:/​usr/​local/​bin:/​usr/​sbin:/​sbin:/​usr/​bin:/​bin';​ 
-  ​ 
-  $file   = '​file'; ​  # file(1) utility; use 3.41 or later to avoid vulnerability 
-  ​ 
-  $gzip   = '​gzip';​ 
-  $bzip2 ​ = '​bzip2';​ 
-  $lzop   = '​lzop';​ 
-  $uncompress = ['​uncompress',​ 'gzip -d', '​zcat'​];​ 
-  $unfreeze ​  = ['​unfreeze',​ '​freeze -d', '​melt',​ '​fcat'​];​ 
-  $arc        = ['​nomarch',​ '​arc'​];​ 
-  $unarj ​     = ['​arj',​ '​unarj'​]; ​ # both can extract, arj is recommended 
-  $unrar ​     = ['​rar',​ '​unrar'​]; ​ # both can extract, same options 
-  $zoo    = '​zoo';​ 
-  $lha    = '​lha';​ 
-  $cpio   = '​cpio'; ​  # comment out if cpio does not support GNU options 
-  ​ 
-  $sa_local_tests_only = 0;   # (default: false) 
-  #​$sa_auto_whitelist = 1;    # turn on AWL (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),​ requires spamassassin 2.44 or better 
-  # $sa_auto_whitelist = 1;   # defaults to undef 
-  ​ 
-  $sa_mail_body_size_limit = 150*1024; 
-  ​ 
-  $sa_tag_level_deflt ​ = 3.0; # add spam info headers if at, or above that level 
-  $sa_tag2_level_deflt = 4.0; # add 'spam detected'​ headers at that level 
-  $sa_kill_level_deflt = $sa_tag2_level_deflt;​ 
-  ​ 
-  $sa_dsn_cutoff_level = 10; 
-  ​ 
-  $sa_spam_subject_tag = '​***SPAM*** '; 
-  ​ 
-  $first_infected_stops_scan = 1; 
-  ​ 
-  @av_scanners = ( 
-  ​ 
-  ### http://​www.clamav.net/​ 
-  ['Clam Antivirus-clamd',​ 
-    \&​ask_daemon,​ ["​CONTSCAN {}\n", "/​var/​run/​clamav/​clamd.ctl"​],​ 
-    qr/\bOK$/, qr/​\bFOUND$/,​ 
-    qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ], 
-  # NOTE: run clamd under the same user as amavisd; ​ match the socket 
-  # name (LocalSocket) in clamav.conf to the socket name in this entry 
-  # When running chrooted one may prefer: ["​CONTSCAN {}\n","​$MYHOME/​clamd"​],​ 
-  ​ 
-  ); 
-  ​ 
-  @av_scanners_backup = ( 
-  ​ 
-    ### http://​www.clamav.net/​ 
-    ['Clam Antivirus - clamscan',​ '​clamscan',​ 
-      "​--stdout --no-summary -r --tempdir=$TEMPBASE {}", [0], [1], 
-      qr/^.*?: (?!Infected Archive)(.*) FOUND$/ ], 
-  ​ 
-  ); 
-  ​ 
-  1;  # insure a defined return 
- 
-Pensez à changer le mot de passe à la ligne 112 
- 
-Ajoutez en fin fichier /​etc/​postfix/​master.cf 
- 
-  amavis unix - - - - 2 smtp 
-          -o smtp_data_done_timeout=1200 
-          -o smtp_send_xforward_command=yes 
-  ​ 
-  127.0.0.1:​10025 inet n - - - - smtpd 
-          -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,​reject 
-          -o mynetworks=127.0.0.0/​8 
-          -o strict_rfc821_envelopes=yes 
-          -o receive_override_options=no_unknown_recipient_checks,​no_header_body_checks 
-          -o smtpd_bind_address=127.0.0.1 
- 
-Ajoutez en fin de fichier /​etc/​postfix/​main.cf 
- 
-  # Support Amavis 
-  content_filter = amavis:​[127.0.0.1]:​10024 
-  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 ==== 
- 
-Editez le fichier /​etc/​default/​spamassassin 
- 
-  ENABLED=1 
- 
-Editez le fichier /​etc/​spamassassin/​local.cf 
- 
-  # This is the right place to customize your installation of SpamAssassin. 
-  # 
-  # See '​perldoc Mail::​SpamAssassin::​Conf'​ for details of what can be 
-  # tweaked. 
-  # 
-  ###########################################################################​ 
-  # 
-  # rewrite_header Subject *****SPAM***** 
-  # report_safe 1 
-  # trusted_networks 212.17.35. 
-  # lock_method flock 
-  ​ 
-  # dcc 
-  use_dcc 1 
-  dcc_path /​usr/​bin/​dccproc 
-  dcc_add_header 1 
-  dcc_dccifd_path /​usr/​sbin/​dccifd 
-  ​ 
-  # Pyzor 
-  use_pyzor 1 
-  pyzor_path /​usr/​bin/​pyzor 
-  pyzor_add_header 1 
-  ​ 
-  # Razor 
-  use_razor2 1 
-  razor_config /​etc/​razor/​razor-agent.conf 
-  ​ 
-  # Bayes 
-  use_bayes 1 
-  use_bayes_rules 1 
-  bayes_auto_learn 1 
- 
-Démarrez le daemon spamassassin 
- 
-   $ /​etc/​init.d/​spamassassin start 
- 
-Créez le fichier /​usr/​sbin/​sa_rules_update.sh 
- 
-  #!/bin/sh 
-  PATH=/​usr/​local/​sbin:/​usr/​local/​bin:/​usr/​sbin:/​usr/​bin:/​sbin:/​bin 
-  cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.rulesemporium.com/​rules/​71_sare_redirect_pre3.0.0.cf -O 71_sare_redirect_pre3.0.0.cf &> /dev/null 
-  cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.rulesemporium.com/​rules/​70_sare_bayes_poison_nxm.cf -O 70_sare_bayes_poison_nxm.cf &> /dev/null 
-  cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.rulesemporium.com/​rules/​70_sare_html.cf -O 70_sare_html.cf &> /dev/null 
-  cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.rulesemporium.com/​rules/​70_sare_html4.cf -O 70_sare_html4.cf &> /dev/null 
-  cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.rulesemporium.com/​rules/​70_sare_html_x30.cf -O 70_sare_html_x30.cf &> /dev/null 
-  cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.rulesemporium.com/​rules/​70_sare_header0.cf -O 70_sare_header0.cf &> /dev/null 
-  cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.rulesemporium.com/​rules/​70_sare_header3.cf -O 70_sare_header3.cf &> /dev/null 
-  cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.rulesemporium.com/​rules/​70_sare_header_x30.cf -O 70_sare_header_x30.cf &> /dev/null 
-  cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.rulesemporium.com/​rules/​70_sare_specific.cf -O 70_sare_specific.cf &> /dev/null 
-  cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.rulesemporium.com/​rules/​70_sare_adult.cf -O 70_sare_adult.cf &> /dev/null 
-  cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.rulesemporium.com/​rules/​72_sare_bml_post25x.cf -O 72_sare_bml_post25x.cf &> /dev/null 
-  cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.rulesemporium.com/​rules/​99_sare_fraud_post25x.cf -O 99_sare_fraud_post25x.cf &> /dev/null 
-  cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.rulesemporium.com/​rules/​70_sare_spoof.cf -O 70_sare_spoof.cf &> /dev/null 
-  cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.rulesemporium.com/​rules/​70_sare_random.cf -O 70_sare_random.cf &> /dev/null 
-  cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.rulesemporium.com/​rules/​70_sare_oem.cf -O 70_sare_oem.cf &> /dev/null 
-  cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.rulesemporium.com/​rules/​70_sare_genlsubj0.cf -O 70_sare_genlsubj0.cf &> /dev/null 
-  cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.rulesemporium.com/​rules/​70_sare_genlsubj3.cf -O 70_sare_genlsubj3.cf &> /dev/null 
-  cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.rulesemporium.com/​rules/​70_sare_genlsubj_x30.cf -O 70_sare_genlsubj_x30.cf &> /dev/null 
-  cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.rulesemporium.com/​rules/​70_sare_unsub.cf -O 70_sare_unsub.cf &> /dev/null 
-  cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.rulesemporium.com/​rules/​70_sare_uri.cf -O 70_sare_uri.cf &> /dev/null 
-  cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.timj.co.uk/​linux/​bogus-virus-warnings.cf -O bogus-virus-warnings.cf &> /dev/null 
-  cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.yackley.org/​sa-rules/​evilnumbers.cf -O evilnumbers.cf &> /dev/null 
-  cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.stearns.org/​sa-blacklist/​random.current.cf -O random.current.cf &> /dev/null 
-  cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.rulesemporium.com/​rules/​00_FVGT_File001.cf -O 00_FVGT_File001.cf &> /dev/null 
-  ## Next lines are remplaced by the one above 
-  ##cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.rulesemporium.com/​rules/​88_FVGT_body.cf -O 88_FVGT_body.cf &> /dev/null 
-  ##cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.rulesemporium.com/​rules/​88_FVGT_rawbody.cf -O 88_FVGT_rawbody.cf &> /dev/null 
-  ##cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.rulesemporium.com/​rules/​88_FVGT_subject.cf -O 88_FVGT_subject.cf &> /dev/null 
-  ##cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.rulesemporium.com/​rules/​88_FVGT_headers.cf -O 88_FVGT_headers.cf &> /dev/null 
-  cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.rulesemporium.com/​rules/​88_FVGT_uri.cf -O 88_FVGT_uri.cf &> /dev/null 
-  cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.rulesemporium.com/​rules/​99_FVGT_DomainDigits.cf -O 99_FVGT_DomainDigits.cf &> /dev/null 
-  cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.rulesemporium.com/​rules/​99_FVGT_Tripwire.cf -O 99_FVGT_Tripwire.cf &> /dev/null 
-  cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.rulesemporium.com/​rules/​99_FVGT_meta.cf -O 99_FVGT_meta.cf &> /dev/null 
-  cd /​etc/​spamassassin/​ &> /dev/null && /​usr/​bin/​wget http://​www.nospamtoday.com/​download/​mime_validate.cf -O mime_validate.cf &> /dev/null 
-  ​ 
-  /​etc/​init.d/​amavis restart &> /dev/null 
-  ​ 
-  exit 0 
- 
-   $ chmod 755 /​usr/​sbin/​sa_rules_update.sh 
- 
-Ajoutez la crontab suivante 
- 
-   $ crontab -e 
- 
-  30 2 */2 * * /​usr/​sbin/​sa_rules_update.sh &> /dev/null 
- 
-On l'​execute manuellement,​ cette opération peut être longue la première fois. 
- 
-   $ /​usr/​sbin/​sa_rules_update.sh 
- 
-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/​GNU) 
-  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/​domaines ===== 
- 
-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,​description) VALUES ('​domain.tld','​Test Domain'​);​ 
-  INSERT INTO alias (address,​goto) VALUES ('​alias@domain.tld',​ '​utilisateur@domain.tld'​);​ 
-  INSERT INTO mailbox (username,​password,​name,​maildir) ​ VALUES ('​utilisateur@domain.tld','​$1$caea3837$gPafod/​Do/​8Jj5M9HehhM.','​Mailbox User','​utilisateur@domain.tld/'​);​ 
-  quit; 
- 
-Les mots de passe seront à chiffrer via la fonction ENCRYPT sous PHPMyAdmin. 
- 
-Il existe une interface d'​administration,​ [[http://​high5.net/​postfixadmin/​|Postfix Admin]] qui permet la gestion de tout cela. Je l'ai testé à ses débuts, le trouvant très mal fait, je l'ai laissé tomber, entre temps il a subi quelques améliorations,​ et je ne l'ai pas testé de nouveau. 
- 
-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 ;-) 
- 
- 
----- 
-Contributeurs:​ [[:​utilisateurs:​cereal_killer_du_77|CeReAl KiLLeR DU 77]] 
  • serveur/postfix_mysql_tls_sasl.1231935846.txt.gz
  • Dernière modification: Le 18/04/2011, 14:55
  • (modification externe)