/*
 * Paramètres globaux au démon POP.
 */

#ifndef _POP_PARAMS_H
#define _POP_PARAMS_H

/*
 * Allons nous être un serveur standalone ou démarrer via un clone inetd ?
 */
#define POP_STANDALONE			0

#if POP_STANDALONE

/*
 * L'adresse et le port à écouter.
 */
#define DAEMON_ADDR			"0.0.0.0"	/* INADDR_ANY */
#define DAEMON_PORT			110

/*
 * Limiter le nombre de sessions POP que nous pouvons traiter à un moment
 * pour réduire l'impact d'attaques en DoS par inondations de connexions.
 */
#define MAX_SESSIONS			100
#define MAX_SESSIONS_PER_SOURCE		10
#define MAX_BACKLOG			5
#define MIN_DELAY			10

#endif

/*
 * Voulons nous supporter les domaines virtuels ?
 */
#define POP_VIRTUAL			0

#if POP_VIRTUAL

/*
 * VIRTUAL_HOME_PATH est où se trouve le répertoire racine du domaine virtuel.
 */
#define VIRTUAL_HOME_PATH		"/vhome"

/*
 * Sous-répertoires dans chaque racine de domaine virtuel pour les
 * informations d'authentification et les boites à lettres, respectivement.
 * Ces défauts correspondent aux chemins complets de la forme
 * "/vhome/IP/{auth,mail}/username".
 */
#define VIRTUAL_AUTH_PATH		"auth"
#define VIRTUAL_SPOOL_PATH		"mail"

/*
 * Voulons nous supporter seulement les domaines virtuels ? Normalement, si
 * l'adresse IP connectée ne correspond pas à un répertoire dans
 * VIRTUAL_HOME_PATH, l'authentification sera effectuée globalement.
 */
#define VIRTUAL_ONLY			0

#else

/*
 * Nous ne supportons pas les domaines virtuels (!POP_VIRTUAL), donc nous ne
 * définissons pas virtuel-seulement. N'éditez pas ceci.
 */
#define VIRTUAL_ONLY			0

#endif

/*
 * Un faux utilisateur non-privilégié en tant que qui s'exécuter avant
 * l'authentification. L'utilisateur et son UID ne doivent pas être utilisés
 * pour tout autre but.
 */
#define POP_USER			"popa3d"

/*
 * Les sessions seront fermées si elles sont inactives durant plus de
 * POP_TIMEOUT secondes. La RFC 1939 dit que "un tel minuteur DOIT être d'au
 * moins une durée de 10 minutes", donc j'ai fait de 10 minutes le défaut.
 * En pratique, vous pouvez vouloir réduire ceci à, disons, 2 minutes.
 */
#define POP_TIMEOUT			(10 * 60)

/*
 * Voulons nous supporter la commande LAST obsolète, comme définie par la
 * RFC 1460? Elle a été supprimée du protocole en 1994 par la RFC 1725, et
 * n'est même pas mentionnée dans la RFC 1939. Encore, quelques logiciels ne
 * fonctionnent pas sans elle.
 */
#define POP_SUPPORT_LAST		1

/*
 * Introduit quelques limites saines sur la taille de boite à lettres dans
 * le but de prévenir qu'une seule énorme boite à lettres n'arrête le
 * service POP en entier.
 */
#define MAX_MAILBOX_MESSAGES		100000
#define MAX_MAILBOX_BYTES		100000000

#if !VIRTUAL_ONLY

/*
 * Choisissez la méthode d'authentification par mot de passe que votre
 * système utilise :
 *
 * AUTH_PASSWD		Utilise seulement getpwnam(3), pour les *BSD ou les
 *			passwd lisible;
 * AUTH_SHADOW		Utilise les mots de passe shadow directement (non
 *			pas via PAM);
 * AUTH_PAM		Utilise PAM de façon ancienne-mode;
 * AUTH_PAM_USERPASS	Parle à pam_userpass via les prompts binaires
 *			Linux-PAM.
 *
 * Notez qu'il n'y a pas de support inclus d'expiration de mots de passe.
 */
#define AUTH_PASSWD			0
#define AUTH_SHADOW			1
#define AUTH_PAM			0
#define AUTH_PAM_USERPASS		0

#if AUTH_PAM || AUTH_PAM_USERPASS
#define AUTH_PAM_SERVICE		"popa3d"
#endif

#endif

#if POP_VIRTUAL || AUTH_PASSWD || AUTH_SHADOW

/*
 * Une graine utilisée pour perdre du temps CPU sur des appels inutiles à la
 * fonction crypt(3) et rendre plus difficile (mais loin d'être impossible,
 * sur la plupart des systèmes) la vérification des noms d'utilisateurs
 * valides. Ajustez la suivant votre fonction crypt(3).
 */
#define AUTH_DUMMY_SALT			"xx"

#endif

/*
 * Message à retourner au client quand l'authentification échoue. Vous
 * pouvez #undef ceci pour aucun message.
 */
#define AUTH_FAILED_MESSAGE		"Authentication failed (bad password?)"

#if !VIRTUAL_ONLY

/*
 * Votre répertoire de spool de messages. Note : seulement les spools locaux
 * (non-NFS) de messages en mode 775 sont actuellement supportés.
 */
#define MAIL_SPOOL_PATH			"/var/spool/mail"

#endif

/*
 * La méthode de verrouillage que votre système utilise pour les boites à
 * lettres des utilisateurs. Il est important que vous fixiez cela
 * correctement.
 */
#define LOCK_FCNTL			1
#define LOCK_FLOCK			0

/*
 * Comment parlons nous à syslogd? Ceci devrait être bon pour la plupart des
 * systèmes.
 */
#define SYSLOG_IDENT			"popa3d"
#define SYSLOG_OPTIONS			LOG_PID
#define SYSLOG_FACILITY			LOG_DAEMON
#define SYSLOG_PRIORITY			LOG_NOTICE

/*
 * Il n'y a probablement aucune raison de modifier quoi que ce soit sous ce
 * commentaire.
 */

/*
 * Selon la RFC 1939: "Les mots clés et les arguments sont chacun séparés
 * par un seul caractère ESPACE. Les mots clés sont longs de trois ou quatre
 * caractères. Chaque argument peut être long jusqu'à 40 caractères." Nous
 * ne traitons seulement que jusqu'à deux arguments, donc il est sain de
 * tronquer après cette longueur.
 */
#define POP_BUFFER_SIZE			0x80

/*
 * Il n'y a non plus aucune raison de changer celle-ci. Rendre ceci plus
 * large gaspillerait de la mémoire, et des valeurs plus petites pourraient
 * faire échouer l'authentification.
 */
#define AUTH_BUFFER_SIZE		(2 * POP_BUFFER_SIZE)

#if POP_VIRTUAL

/*
 * La taille du tampon pour lire en entier les fichiers d'authentification
 * par utilisateur.
 */
#define VIRTUAL_AUTH_SIZE		0x100

#endif

/*
 * Les tailles de tampons de fichiers à utiliser, respectivement pendant
 * l'analyse de la boite à lettres et la récupération d'un message. Peuvent
 * être changées.
 */
#define FILE_BUFFER_SIZE		0x10000
#define RETR_BUFFER_SIZE		0x8000

/*
 * Le code d'analyse de boite à lettres n'est pas autorisé à tronquer les
 * lignes avant leurs longueurs. Gardez ceci au moins aussi grand que le
 * plus long des noms de champs d'entête dont nous avons besoin de vérifier,
 * mais pas trop grand pour des raisons de performances.
 */
#define LINE_BUFFER_SIZE		0x20

#endif
