wiki:QuotasParBoite

Version 3 (modified by pierre-gilles, 7 years ago) (diff)

--

ATTENTION NE MARCHE PAS !!!!

Mise en garde

Si ce Howto cherche à rester à la fois le plus debian-style et AlternC-style, il vous fait quitter les deux. Il s'adresse donc plutôt à un public avertis, capable éventuellement d'aller hacker la conf de postfix à La Rache

Installation de postfix patché pour VDA

Il faut récupérer les sources de postfix pour appliquer les patchs VDA.

apt-get install build-essential dpkg-dev fakeroot debhelper libdb4.2-dev libgdbm-dev libldap2-dev libpcre3-dev libmysqlclient10-dev libssl-dev libsasl2-dev postgresql-dev po-debconf dpatch
cd /usr/src
apt-get source postfix

wget http://web.onda.com.br/nadal/postfix/VDA/postfix-2.1.5-trash.patch.gz
gunzip postfix-2.1.5-trash.patch.gz
cd postfix-2.1.5
patch -p1 < ../postfix-2.1.5-trash.patch
dpkg-buildpackage
cd ..
dpkg -i postfix_2.1.5-9_i386.deb
dpkg -i postfix-mysql_2.1.5-9_i386.deb
dpkg -i postfix-tls_2.1.5-9_i386.deb

Ensuite on fixe ces packages afin qu'il ne soit plus mis à jour :

dpkg --get-selections| grep postfix | sed s/hold/install/ | dpkg --set-selections
aptitude hold postfix postfix-doc postfix-mysql postfix-pcre postfix-tls

Mise en place du champs quota dans MySQL

Nous allons ajouter un champs quota à la table mail_users d'AlternC, nous fixons ici un quota en 100Mo , cette donnée est exprimée en octets.

 mysql -usysusr -pmot_de_passe system -e "ALTER TABLE `mail_users` ADD `quota`  INT DEFAULT '104857600' NOT NULL ;"

Modification des confs d'AlternC pour postfix et courrier

Il faut éditer /etc/alternc/templates/postfix/main.cf et le remplacer par :

#
# Fichier de configuration de Postfix pour AlternC
# $Id: main.cf,v 1.17 2006/01/12 06:50:15 anarcat Exp $
# 
# %%warning_message%% 
# pour postfix SARGE v2

queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
mail_owner = postfix
# recipient_delimiter = +

home_mailbox = Maildir/

smtpd_banner = $myhostname ESMTP

header_checks = regexp:/etc/postfix/header_checks
body_checks = regexp:/etc/postfix/body_checks

local_destination_concurrency_limit = 8
default_destination_concurrency_limit = 10

myhostname = %%fqdn%%
myorigin = %%fqdn%%
mynetworks = 127.0.0.1 %%mynetwork%%  82.127.2.119 81.80.253.50


# Configuration TLS pour le serveur smtp : 
smtpd_use_tls = yes
smtpd_tls_dcert_file = /etc/courier/pop3d.pem
smtpd_tls_dkey_file = $smtpd_tls_dcert_file
smtpd_tls_CApath = /etc/ssl/certs/
smtpd_tls_key_file =  $smtpd_tls_dcert_file
smtpd_tls_cert_file =  $smtpd_tls_dcert_file
smtpd_tls_loglevel = 0
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

# Configuration TLS pour le client smtp
smtp_use_tls = yes
smtp_tls_dcert_file = $smtpd_tls_dcert_file
smtp_tls_dkey_file = $smtpd_tls_dcert_file
smtp_tls_CApath = $smtpd_tls_CApath

# Configuration SASL via sasldb (/etc/sasldb) uniquement en TLS.
# Sinon le pass passe en clair et c'est mal !
smtpd_tls_auth_only = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = postfix
smtpd_sasl_security_options = noanonymous
enable_sasl_authentification = yes
broken_sasl_auth_clients = yes

# Pour �iter certains vieux spammeurs.
disable_vrfy_command = yes

# On autorise le relai �: les authentifi� en saslet nos domaines.
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_invalid_hostname, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unauth_pipelining, reject_unauth_destination

alias_maps = mysql:/etc/postfix/myalias.cf hash:/etc/aliases

default_privs = www-data
program_directory = /usr/lib/postfix

#Quota Postfix VDA
virtual_minimum_uid = 32
virtual_gid_maps = proxy:mysql:/etc/postfix/mygid.cf
virtual_uid_maps = static:33
virtual_transport = virtual
virtual_mailbox_base = /
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mydomain.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/myvirtual.cf
virtual_alias_domains =
virtual_mailbox_extended = yes
virtual_mailbox_limit_maps = proxy:mysql:/etc/postfix/myquota.cf
virtual_mailbox_limit_override = yes
virtual_mailbox_limit = 1073741824
virtual_mailbox_limit_inbox = no
virtual_maildir_limit_message = La boite email de votre destinataire est pleine.
virtual_create_maildirsize = yes
virtual_overquota_bounce = yes
proxy_read_maps= $virtual_mailbox_limit_maps $virtual_gid_maps $virtual_maps $virtual_mailbox_maps proxy:unix:passwd.byname proxy:mysql:/etc/postfix/mydomain.cf
local_transport = local
mydestination =

il faut éditer le fichier : /etc/alternc/templates/postfix/myvirtual.cf

#
# %%warning_message%%
#

user = %%dbuser%%
password = %%dbpwd%%
hosts =%%dbhost%%
dbname = %%dbname%%
table = mail_users
select_field = CONCAT(path,"/")
where_field = alias

il faut éditer le fichier : /etc/alternc/templates/courier/authmysqlrc à la ligne 131 mettre :

MYSQL_QUOTA_FIELD quota

il faut créer et éditer le fichier : /etc/postfix/myquota.cf

user = sysusr
password = ---MODIFIER-POUR-LE-MDP-SQL---
hosts =localhost
dbname = system
table = mail_users
select_field = quota
where_field = alias

AlternC install

Ensuite un petit :

alternc.install 

Et si tout va bien tout roule :)

Todo

Ajouter un script de notification de quota pour les utilisateurs.

Attachments

  • conf.tgz (812 bytes) - added by pierre-gilles 7 years ago. Maps MySQL pour Postfix pour une delivrance via virtual
  • mailfilter.tgz (1.9 KB) - added by pierre-gilles 7 years ago. Extension pour Mysql 4.X permettant d'utiliser un filtre mailfilter