Virtual domains using GNU pop3d and Postfix


Original: http://jth.net/virtual.html

 

GNU pop3d 0.9.13
Le GNU pop3d 0.9.13 est prêt. Vous pouvez le télécharger ici GNU pop3d 0.9.13

CHANGEMENTS / HISTOIRE

Version à venir
XX/Feb/2013 0.9.14 Thomsen Jørgen [email protected], http://jth.net

Le programme travaille sans faille depuis un an.
Besoin de nettoyage la procédure d’installation, qui cherche à détecter et installer dans différents environnements de nouveau inventés.
En charge d’IPv6 en option ajoutée. Configurer au moment de la compilation avec l’option–enable-ipv6 et utiliser l’option–commutateur ipv6 lors de l’exécution
Priorités syslog individuels conservés dans pop3_syslog.
Texte d’aide nettoyé

7 février 2011 0.9.13 Thomsen Jørgen [email protected], http://jth.net
Syslog logging de la routine gestionnaire de signal pop3_signal causée suspendus traite surtout pendant les attaques DoS ou
de nombreux clients simultanés. En partie fixe (peuvent encore se produire lorsque vous utilisez ce bit (08) dans le masque de débogage)
Correction : certaines méthodes de connexion n’a pas fonctionné (David B. Cortarello)
Les enfants dans le monde contre child_procs changé d’int à „sig_atomic_t volatiles“ afin d’éviter les
Il a ne pas mis à jour correctement.
Le compteur n’était pas toujours décrémenté donc le programme n’utilisé qu’une seule instance, quand max enfant
les processus ont été incorrectement atteint.
GNU config.guess et config.sub installé plus récentes.
Makefile.in et configure.in amélioré et soutien pour la détection des processeurs Atom ajouté plus d’appui aux
installation du service (/ etc/init)
Le répertoire RFC supprimé comme les RFC sont facilement disponibles sur Internet

26 avril 2010 0.9.12 Thomsen Jørgen [email protected], http://jth.net
Double possible libre de la variable de nom de boîte aux lettres dans une erreur particulière des situations par exemple à deux connexions simultanées à
la même boîte aux lettres.
config.Guess et config.sub disparues de la distribution
Ajouter un message de démarrage dans le syslog

18 avril 2010 0.9.11 Thomsen Jørgen [email protected], http://jth.net
Le programme est maintenu sur une plateforme Linux Fedora avec aucun essai possible sur d’autres plateformes, mais
avec une tentative d’éviter les caractéristiques de Linux.
Améliorations pour le script de configuration, y compris le processeur 64 bits prennent en charge.
L’algorithme de Nagle (TCP sans retard) a été désactivé en causant une grande amélioration dans la vitesse.
SO_REUSEADDR ajoutés au socket daemon pour une réutilisation immédiate du socket après un redémarrage.

Manipulation de signaux améliorée pour être plus portable (sigaction) et appels non-sûrs retirés le gestionnaire de signaux. Résiliation
après un signal devrait maintenant être beaucoup mieux ne pas laisser les fichiers mailbox.lock autour.
* bug * la variable chaussette chez l’enfant a toujours été -1 et pas la prise réelle (sock2) pour pop3_signal chez l’enfant n’a pas fermé la prise.
Enlevé sync() appels, comme par exemple la copie des fichiers volumineux sur un disque USB provoquerait un blocage jusqu’à ce que toutes les données ont été écrites sur le disque (plusieurs minutes)
Compilation conditionnelle de déboguer les instructions enlevées comme le frais généraux est si petite.
Le paramètre de débogage a été remplacé par un masque de bits de 2 chiffres hexadécimaux (enfants, démon) et autres
débogage des déclarations ont été insérées.
MAXHOSTNAMELEN porté à 128 en raison de noms de domaine IDNA
GNU-pop3d dans le fichier /etc/event.d inclus
page de manuel mis à jour

18 juillet 2007 0.9.10 Thomsen Jørgen [email protected], http://jth.net
fcntl verrou sur boîte aux lettres modifiée pour verrou en écriture
Sync() toujours appelé à débloquer
les données lues du client lorsque le délai d’attente activé (sélectionnez) maintenant les contrôles pour la sortie immédiate de tuyau cassé trop provoquant,
Si le client disparaît soudainement.
Quelle boîte aux lettres a été copié à la nouvelle boîte aux lettres, certains ATM (e, g, postfix) pourrait continuer à écrire à l’ancienne boîte aux lettres.
Maintenant la boîte aux lettres vieux vide est conservé comme mailbox.old et a fusionné avec la nouvelle si non vide à la prochaine exécution.

24 août 2003 0.9.9-5 [email protected] Jørgen Thomsen, http://jth.net
Le test de lignes d’en-tête n’a pas été suffisamment stricte statut : et X-Status : réfléchie égalité (Jem Berkes)
Lignes de commande n’étaient pas assemblés à une seule ligne accusant séparé les paquets TCP (Nicolas Gregoire)

18 janvier 2003 0.9.9-4 [email protected] Jørgen Thomsen, http://jth.net
Support pour Postfix X-Original-pour : ligne d’en-tête de Message Disposition Notification.
Calcul UIDL n’est plus des X-headerlines, lorsqu’elles peuvent être ajoutées par certains lecteurs.
« % » est autorisé comme séparateur au lieu de @ dans un nom d’utilisateur virtuel (adresse e-mail)
Changements internes mineurs.
Soutien supplémentaire pour le virtdomain.pl par l’auteur (comment trouver la boîte aux lettres)

18 octobre 2002 0.9.9-3 [email protected] Jørgen Thomsen, http://jth.net/
Corrigé une erreur lorsqu’une mauvaise boîte aux lettres ne contenait pas « De » première ligne.

05/Oct/2002 2 Thomsen Jørgen [email protected], http://jth.net/
Le correctif pour disque plein a empêché la boîte aux lettres modifiée à écrire dans le fichier de traduction. Il a été maintenu inchangé

04/Oct/2002 9 Thomsen Jørgen [email protected], http://jth.net/
Si la boîte aux lettres ne n’a pas mis fin par un saut de ligne (si accident tout en écrivant un message dedans)
une boucle infinie se produisait. Si la boîte aux lettres est modifié par GNU pop3d, il sera fixé.
Lorsque le disque est devenu plein quand écrire la nouvelle boîte aux lettres, qu’il n’était pas détecté et la nouvelle boîte aux lettres a été tronqué

19 août 2002 0.9.9 Thomsen Jørgen [email protected], http://jth.net/
Compatibilité avec les fichiers passwd vm-pop3d introduit (pas entièrement testée)
Ajouté arrêt gracieux en interceptant les signaux (signal SIGHUP et SIGTERM).
La touche finale et le numéro de version a changé à 0.9.9

19 octobre 2001 Thomsen Jørgen [email protected], http://jth.net/
Ajout Message Disposition Notification (accusé de réception, RFC 2298)
Ajouté configurer les options pour éviter de modifier config.h dans la plupart des cas
Changé la mise à jour de la boîte aux lettres de la copie à l’intérieur du fichier à créer un nouveau fichier (mailbox.new)
Si nécessaire et amélioré la copie à l’intérieur du fichier. Cela améliore la vitesse considérablement, en particulier pour les programmes de webmail.
Introduction du support pour le statut classique : ligne d’en-tête du RFC 2076 (pris en charge par e.q. Null Webmail
http://nullwebmail.sourceforge.net/)

17 octobre 2001 Thomsen Jørgen [email protected], http://jth.net/
Ajout d’une rustine vieux pour une meilleure manipulation de création de processus enfants et la mort.
Maintenant processus enfants sont créés selon les besoins, et que le processus parent est permanent.

VirtDomain 1.05

L’interface web GUI est fonctionnel pour les standard Postfix virtual domains et mon goût : jth domaines virtuels. Il s’agit comme un seul programme Perl, qui s’appelle la ligne de commande pour créer un domaine virtuel et le serveur Web pour l’administrer. Nécessite une version récente de Postfix VirtDomain 1,05
#! / usr/bin/perl – w

#**********************************************************************
#
# Utilitaire pour administrer des domaines virtuels dans postfix (aussi bien le standard
# ceux et celles qui sont définies dans http://jth.net/virtual.html)
#
# Ce programme devrait résider dans /var/ www/cgi-bin/ virtdomain.pl avec global
# lire et exécuter les droits (chmod o + rx /var/ www/cgi-bin/ virtdomain.pl).
#
# N’oubliez pas de définir $main::postfixadmin ci-dessous !
#
# Le premier argument pour le programme détermine sa fonction :
# CRÉER : appel de ligne de commande en tant que root : créer le domaine virtuel en mettant à jour
# /etc/postfix/virtual et virtual_regexp
# et la création de /etc/virtual/domain/passwd et /var/spool/virtual/domain
# CRÉER < nom_domaine > < utilisateur réel administrer le domaine >
# <passwd>[postfix]
# SUPPRIMER : appel de ligne de commande en tant que root : supprimer le domaine virtuel en mettant à jour
# /etc/postfix/virtual et virtual_regexp
# et la suppression de /etc/virtual/domain/passwd et /var/spool/virtual/domain comme
# bien sous forme de fichiers .forward dans la homedir administrateurs
# SUPPRIMER < nom_domaine > < utilisateur réel administrer le domaine > <passwd>
# <blank>
# MAILBOUNCE
# si appelé de postfix que par la poste à [email protected] l’email sur STDIN seront traitées
# selon le paramétrage de l’utilisateur dans /etc/virtual/domain/passwd.
# MAILBOUNCE : bounce par courriel aux utilisateurs inconnus ailleurs stocker dans la boîte aux lettres administrateur
# <blank>si cité de postfix comme courrier à [email protected] ou <postfixadmin+postmaster>
# avec le sujet „*** mise à jour de domaine virtuel *** » et la ligne 1 est trans = mise à jour…
# un utilisateur sera créé/mis à jour/supprimer
# autrement traiter Courriel normalement comme indiqué ci-dessus
# <blank>: si appelée à partir d’un serveur web affiche des pages Web pour mettre à jour l’utilisateur
# base dans un domaine virtuel e, g, http://jth.net/cgi-bin/virtdomain.pl
#
# Comme base le maître de poste de l’utilisateur doit être défini pour le domaine.
# dans le fichier /etc/virtual/domain/passwd. Les ID utilisateur et de groupe comme
# bien comme homedir de cet utilisateur est utilisé pour le domaine virtuel.
# Pour chaque utilisateur virtuel pour le fichier homedir/.forward + utilisateur–domaine est créé.
# Le serveur web doit avoir accès en lecture à ces fichiers ainsi que
# le fichier /etc/virtual/domain/passwd.
# Le GNU pop3d deamon maintenu par moi cela appuie
mise en œuvre de # domaine virtuel.
#
# À l’aide de ce programme pour remettre les messages pour jth domaines style ne convient pas pour
# un système de volume élevé, comme le chargement de l’interpréteur Perl
# a une utilisation du processeur initiale assez élevée par rapport à ce programme (90 % du total, moment de l’exécution).
# Cependant, à l’aide de la provision pour accrocher dans un autre programme pour remettre les messages
# peut être utile. Un utilitaire awk peut être utilisé à la place virtual.awk
#
[email protected] # © 2002 Jørgen Thomsen, http://jth.net/virtual.html
Sortie officielle de # 1.01 2002-08-22
# 1.02 2003-01-24 en faveur virtual_alias_map nouveau paramètre et relay_domains comportement
# 1.03 2003-04-26 langue mieux soutenir et Difficulté URL webmail dans info
# 1.04 2003-05-30 chars | et „ont été retirés en avant dans l’entrée. Maintenant, l’utilisateur ne doit pas pénétrer dans |, mais les commandes avec start „
1.05 2004-08-06 modifications spécifiques à jth.net : /var/www/perl, fond de corps ne changé, aucune CGI utilisé
#
#**********************************************************************

Vieux mais toujours fondamentalement valable]

Passe à GNU pop3d 0.9.8
(dont certains changements des domaines non liés à virtual POP avant SMTP par exemple)

Basé sur mes propres besoins je fait un patch pour GNU-pop3d vers. 0.9.8
J’ai aussi écouté certaines des demandes sur la liste de diffusion GNU pop3d.
Le patch peut être appliqué également si vous n’avez pas besoin de l’étoffe de domaine virtuel.

Basicallly j’ai pris le patch virtuel-par Jeremy Reed, rendait plus générale et ajouter mes propres pop3d GNU change :

  • permettant aux utilisateurs de domaine virtuel d’être de vrais utilisateurs avec boîtes aux lettres ailleurs
  • Ajouter le support APOP pour les utilisateurs de domaine virtuel
  • ajout de domaine par défaut à décaper si utilisé pour le domaine réel par exemple „[email protected]“-> « userid »
  • enregistrement supplémentaire des codes d’erreur non nul de commandes
  • ajouté la commande UIDL fournissant des ID uniques pour chaque message
  • corrigé le calcul de la taille des messages
  • nettoyer le code un peu, surtout libérer la mémoire allouée
  • J6 : ajouté « de < adresseip > » à la logmessage « Connexion entrante ouverte »
  • J7 : ajouté nouveau msg „Authenticated IP < adresseip > » à la maillog pour soutien POP avant SMTP
  • J8 : supprimé (commentées) le msg maillog „Authenticated IP < adresseip >“
ajouté « de < adresseip > » à la logmessage « Utilisateur %s connecté avec boîte aux lettres %s », pour que l’utilitaire POP avant SMTP par Bennett

Todd peut être utilisé sans modification

  1. La recherche d’une boîte aux lettres des utilisateurs est effectuée dans le
  2. recherche MAILSPOOLHOME (p. ex. /home/user/Mail/mailbox)
  3. recherche _MAILDIR (p. ex. /var/mail/user)
  4. recherche VIRTUAL_MAILDIR (p. ex. /var/spool/virtual/domain/user)
  5. laisser tomber et utiliser/dev/null
Rapiéçage GNU pop3d

Au lieu de tout le monde en appliquant les patchs, j’ai fait il.
1. Télécharger la source patché gnu-pop3d-0.9.11.tar.gz
2. Créer le fichier config.h par
. / configure
ou
. / configure–enable-ip-basé-virtuel
(soi aussi un autre appel de ci-dessous)
3. Si besoin/envie définir MAILSPOOLHOME (par exemple „/ Mail/boîte aux lettres“) et/ou domaine_par_défaut dans config.h
4. Compiler en exécutant make
Les modifications techniques

  • le format du fichier mot de passe domaine virtuel a égal au format de fichier/etc/passwd standard

username:Password:user id:(group id):(user name):mailbox directory:(shell)
lui permettant d’être vérifié par la commande pwck par exemple
pwck – r /etc/virtual/domain.com/passwd
Les champs clos entre parenthèses ne sont pas utilisés. Répertoire de la boîte aux lettres doit être ‚.‘ si non utilisé

  • Le support APOP a été désactivé dans le 0.9.8 distribution. Il est réactivé en dehors de l’essai, que l’utilisateur APOP doit pas d’utiliser la commande de l’utilisateur d’ouvrir une session. Ce n’est pas logique que les utilisateurs peuvent utiliser les programmes de messagerie différent pour vérifier le courrier. Certains d’entre eux ne sont pas compatibles APOP
  • l’original patch virtuel utilise des mots de passe cryptés dans le fichier passwd. Afin de soutenir l’APOP partir du même fichier, les mots de passe sont maintenant non cryptés
  • un digest MD5 sur le rapport initial correspond à l’id unique d’un message „de“-ligne et tous l’en-tête lignes excluant la nécessité pour l’ID de Message facultatif:-champ
  • longueur de tampon de ligne passée de 80 à 160 caractères pour éviter de lire une ligne avec fgets 2-appels dans la plupart des cas. Les personnes qui utilisent des polices proportionnelles peuvent facilement dépasser 80 caractères/ligne
  • ajouté « UIDL » aux capacités montrées par la commande CAPA
  • ajouté le message « Authenticated IP a.b.c.d „maillog comme IP adresse à « Incoming connexion ouverte » pour soutien POP avant SMTP

Mise en œuvre des domaines virtuels dans Postfix et GNU pop3d

La raison de ne pas utiliser les standard Postfix virtual domains sont de deux ordres :
1) cette implémentation met l’accent sur des domaines virtuels avec chacun son propre administrateur
2) les limitations suivantes (citation de la documentation de Postfix (je souligne)) :
Cet agent a été initialement basé sur l’agent de livraison locale de Postfix. Modifications consiste essentiellement en supprimant le code qui soit n’était pas applicable, ou qui n’était pas sûr dans ce contexte : alias, les fichiers ~user/.forward, remise au « |command » ou à/fichier/nom
L’exemple suivant montre une façon de mettre en place un domaine virtuel, kvt.dk, pop3d Postfix et GNU.
Un kvt_dk vrai utilisateur a été défini sur le système. Le répertoire de cet utilisateur contient certaines données pour le kvt.dk de domaine virtuel.
Deux utilisateurs sont définies au kvt.dk : [email protected] (uniquement pour les utilisateurs virtuels) et [email protected] (kvt_dk d’utilisateur réel sur le serveur de messagerie)
La mise en œuvre repose sur Redhat Linux 7.0

GNU pop3d

Le patch virtuel suppose que les structures de fichier suivantes :
/etc/Virtual/<domain>/passwd
pour la définition des utilisateurs, mots de passe et répertoire de la boîte aux lettres
Dans cet exemple, créez le répertoire /etc/virtual/kvt.dk
La boîte aux lettres par défaut pour un utilisateur virtuel
/var/spool/Virtual/<domain>/<user>

Dans cet exemple, créez le répertoire /var/spool/virtual/kvt.dk

Sur mon serveur, le courrier est stocké dans la homedir/Home / <usr>/Mail/boîte aux lettres exigeant la définition de MAILSPOOLHOME dans config.h.

J’ai qu’une seule adresse IP aussi et que vous voulez mon domaine principal « jth.net » d’être automatiquement déchu de demandes de messagerie à GNU pop3d.

J’ai généré le fichier config.h par la commande
. / configure–enable – 64 bit–enable-maildir-activer-par défaut-domain=jth.net–enable-language = DA
Avant de compiler GNU pop3d que j’ai fait en sorte que les constantes suivantes ont été définies dans config.h :
#define MAILSPOOLHOME « / Mail/boîte aux lettres »
#define USE_VIRTUAL 1
#define domaine_par_défaut « jth.net »
/etc/Virtual/KVT.dk/passwd

Créez ce fichier avec le contenu suivant
KVT:kvtpasswd:601:100:kvtname: / home/kvt_dk / :
ABC : abcpasswd:601:100:abcname:. :
601 est l’ID utilisateur de l’utilisateur kvt_dk. 100 est le groupid (mails groupés sur mon serveur). Le ‚.‘ homedir pour abc est juste pour faire pwck plaisir.
Message pour [email protected] est remis à /home/kvt_dk/Mail/mailbox (voir ci-dessous).
Message pour [email protected] est remis au /var/spool/virtual/kvt.dk/abc
Si vous faites confiance à l’utilisateur de kvt_dk, puis créez le fichier passwd dans le répertoire home de l’utilisateur kvt_dk. et liez-la dans le répertoire /etc/virtual/kvt.dk
ln -s /home/kvt_dk/passwd /etc/virtual/kvt.dk/passwd
Notez, qu’il pourrait y avoir un risque de sécurité ici, car GNU pop3d s’exécutera avec n’importe quel nom d’utilisateur spécifié dans le fichier passwd. Si il s’agit d’une menace réelle reste à analyser.
Le propriétaire et les autorisations sur les fichiers et répertoires doivent être kvt_dk.mail et 700 par exemple
chmod 700 /etc/virtual/kvt.dk /etc/virtual/kvt.dk/passwd /var/spool/virtual/kvt.dk
chown kvt_dk.100 /etc/virtual/kvt.dk /etc/virtual/kvt.dk/passwd /var/spool/virtual/kvt.dk

Postfix

Cette implémentation peut être plus complexe que les autres, mais il permet différents administrateurs de chaque domaine virtuel tout garder dans le répertoire home de l’administrateur de domaine.

/etc/postfix/main.cf

recipient_delimiter = +
home_mailbox = Mail/boîte aux lettres
allow_mail_to_commands = avant
allow_mail_to_files = avant

/ home/kvt_dk

-rw-r–r–1 kvt_dk mail 12 Jan 10 02:52 .forward
-rw-r–r–1 kvt_dk mail 25 Dec 10 01:55 .forward + abc–kvt.dk
-rw-r–r–1 kvt_dk mail 20 Jan 10 02:53 .forward + kvt–kvt.dk

/Home/kvt_dk/.Forward
|“sortie 67 „
Rebondir tout message non pour [email protected] ou [email protected]

/Home/kvt_dk/.Forward+ABC–KVT.dk
| / usr/local/bin/virtuel
Livrer tout le courrier des [email protected] à la boîte aux lettres du domaine virtuel pour abc changeant la Delivered-To : ligne d’en-tête au correct.
/Home/kvt_dk/.Forward+KVT–KVT.dk
/Home/kvt_dk/mail/Mailbox
Remettre tous les messages pour [email protected] à la boîte aux lettres de kvt_dk

/etc/postfix/virtual
KVT.dk n’importe quoi
[email protected] maître de poste
Les utilisateurs réels : ministre des postes et j doivent recevoir tous les messages pour l’administrateur et webmaster du domaine virtuel

/etc/postfix/virtual_regexp
/^(.+)@(.+\.)?(kvt\.dk)$/ kvt_dk + $1-$2$ 3
Cette expression provoquera postfix livrer tout courrier avec les adresses [email protected] et [email protected] à le kvt_dk d’utilisateur réel gardant le destinataire enveloppe originale comme une extension à la nouvelle adresse du destinataire.

/usr/local/bin/Virtual
awk-f: f – /usr/local/bin/virtual.awk

# J. Thomsen 2002-04-11 Postfix utilitaire
# /usr/local/bin/virtual.awk
#
# Utilisé par Postfix pour la remise des messages à un domaine virtuel de GNU-pop3d
boîte aux lettres de #.
#
# Postfix utilise cet utilitaire pour délivrer un message au niveau local
boîte aux lettres #, réécriture de la ligne d’en-tête Delivered-To pour le destinataire d’origine
# adresse.
# 2002-04-11 Difficulté « De » lignes dans msg corps et ajouter une ligne vide à msgs pour assurer la séparation des messages
#
Livrer à la boîte aux lettres du domaine virtuel p. ex. [email protected] à /var/spool/virtual/kvt.dk/abc.
Le Delivered-To : en-tête est modifié pour contenir l’adresse du destinataire enveloppe originale (après modification éventuelle par alias).

 

Comments are closed.