PInetd
De OoKoo.org.
Sommaire |
Status
PInetd est actuellement stable et est en production sur ooKoo.org.
SVN : http://ookoo.org/svn/pinetd/
Bug report : http://pinetd.dns.st/
Principe
PInetd est un système initialement conçu pour avoir un fonctionnement semblable à inetd ou xinetd, à celà près qu'il ne fait fonctionner que des services programmés en PHP.
Le SVN de pinetd contient actuellement plusieurs services.
Services disponibles
SimpleFTPd
Petit daemon FTP (port 21) connu sous le nom de SimpleFTPd, utilisant une base de données SQL comme backend.
La version actuellement disponible est la seule utilisant le nouveau système de sockets «stream», toutefois elle à été initialement conçue pour ooKoo.org.
Une version neutre du démon FTP devrait voir le jour prochainement.
Fonctionnalités du démon FTP actuel :
- LIST renvoie systématiquement tous les fichiers, même les fichiers cachés (simplicité de configuration côté client)
- Support FXP si le client est identifié (FXP interdit en anonymous)
- Gestion USER/PASS depuis mysql, ou tout autre système (aisément modifiable)
- Utilisation de chroot() et setuid()/setgid() pour plus de sécurité. Les sessions FTP sont exécutées en utilisateur non-privilégié
TODO :
- LIST ignore tout argument transmit (implémenter gestion PATH et options)
pmaild
Portable Mail Daemon. Ce serveur mail, écoutant sur plusieurs ports, dispose des fonctionnalités suivantes :
- Boites POP
- Alias de boites pop
- Alias wildcard
- Envoi de courrier vers l'extérieur (Mail Transport Agent)
- Flag «create_account_on_mail» (création de compte pop dès réception d'un mail sur cette boite)
- SpamAssassin
- Un flag «drop_email_on_spam» permet de spécifier que les emails détectés positif par spamassassin doivent être refusés.
- ClamAV
- NULL-password (apprentissage du mot de passe lors de l'identification de l'utilisateur)
- Relaying des mails via SMTP (authentification SMTPafterPOP)
- Support des systèmes antispam par DNSBL :
- Système d'alias vers HTTP via HTTP PUT (nécéssite CURL)
TODO
Les fonctionnalités suivantes sont a implémenter :
- Support IMAP4rev1 selon RFC 3501 15%
- Nouvel agencement des répertoires de stockage
- StartTLS (encryption SSL sur SMTP : RFC 2487) 99%
- Support SSL pour POP3 et IMAP4rev1 99%
- Mailing listes
Bugs connus
Il existe un bug pour le support SSL si PHP à été compilé linké à l'extension statique de MySQL précompilée (celle fournie par défaut pour Linux). En effet cette extension inclut une lib SSL qui contient les mêmes fonctions que openssl, et causent des bugs.
De plus, si MySQL statique est linké à PHP et que l'extension SNMP est également compilée, PHP ne pourra plus se lancer, et causera un «segfault» systématique lors de l'initialisation de SNMP.
En résumé, compilez vous-même votre libmysqlclient.
Installation SQL
CREATE TABLE `domains`(
`domainid` int(10) unsigned zerofill NOT NULL auto_increment,
`domain` varchar(128) NOT NULL default '',
`adminpass` varchar(40) NOT NULL default '',
`state` enum('new','active') NOT NULL default 'new',
`flags` set('create_account_on_mail','fake_domain','drop_email_on_spam') NOT NULL default '',
`antispam` set('resend','rbl','internal','spamassassin') NOT NULL default '',
`antivirus` set('clam') NOT NULL default 'clam',
`protocol` set('pop3','imap4') NOT NULL default '',
`created` datetime NOT NULL,
`last_recv` datetime default NULL,
PRIMARY KEY (`domainid`),
UNIQUE KEY `domain` (`domain`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PACK_KEYS=0;
CREATE TABLE `hosts` (
`ip` varchar(15) NOT NULL default '',
`type` enum('trust','spam') NOT NULL default 'trust',
`regdate` datetime NOT NULL default '0000-00-00 00:00:00',
`expires` datetime default NULL,
`user_email` varchar(255) default NULL,
`spampoints` int(11) NOT NULL default '0',
`spamupdate` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`ip`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
CREATE TABLE `mailqueue` ( `mlid` varchar(128) NOT NULL, `from` varchar(255) default NULL, `to` varchar(255) NOT NULL, `queued` datetime NOT NULL, `attempt_count` int(11) NOT NULL default '0', `last_attempt` datetime default NULL, `last_error` varchar(255) NOT NULL, `next_attempt` datetime default NULL, PRIMARY KEY (`mlid`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
