ports/99704: [new port] mail/mdpop3d A simple and small POP3 daemon

Alexander Logvinov user at blg.akavia.ru
Sun Jul 2 01:40:20 UTC 2006


>Number:         99704
>Category:       ports
>Synopsis:       [new port] mail/mdpop3d A simple and small POP3 daemon
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Sun Jul 02 01:40:19 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator:     Alexander Logvinov
>Release:        FreeBSD 6.1-RELEASE-p2 i386
>Organization:
>Environment:

>Description:

A simple and small POP3 daemon implementation with Maildir support

>How-To-Repeat:
>Fix:

# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	mdpop3d
#	mdpop3d/Makefile
#	mdpop3d/files
#	mdpop3d/files/patch-01
#	mdpop3d/distinfo
#	mdpop3d/pkg-descr
#	mdpop3d/pkg-plist
#
echo c - mdpop3d
mkdir -p mdpop3d > /dev/null 2>&1
echo x - mdpop3d/Makefile
sed 's/^X//' >mdpop3d/Makefile << 'END-of-mdpop3d/Makefile'
X# New ports collection makefile for:	mdpop3d
X# Date created:		2 July 2006
X# Whom:			Alexander Logvinov <info at logvinov.com>
X#
X# $FreeBSD$
X
XPORTNAME=	mdpop3d
XPORTVERSION=	0.97
XCATEGORIES=	mail
XMASTER_SITES=	ftp://ftp.corpit.ru/home/mjt/mdpop3d/
XDISTNAME=	${PORTNAME}-${PORTVERSION}
X
XMAINTAINER=	lightsquid at logvinov.com
XCOMMENT=	A simple and small POP3 daemon implementation with Maildir support
X
XMAN8=		mdpop3d.8
XMANCOMPRESSED=  no
X
XOPTIONS=        PAM   "Build with PAM support"                      	off \
X		APOP  "Build with APOP command support (requires PAM)"	off
X
X.include <bsd.port.pre.mk>
X
Xpost-patch:
X	@${REINPLACE_CMD} -e 's|LIBS = -lpam -ldl|LIBS = -lpam|' \
X	                                ${WRKSRC}/Makefile
X.if defined(WITHOUT_PAM)
X	@${REINPLACE_CMD} -e 's|LIBS = -lpam|LIBS = -lcrypt|' \
X			${WRKSRC}/Makefile
X	@${REINPLACE_CMD} -e 's|DEFS = -DUSE_PAM|#DEFS = -DUSE_PAM|' \
X	                ${WRKSRC}/Makefile
X	@${REINPLACE_CMD} -e 's|OPTS = -DUSE_APOP|#OPTS = -DUSE_APOP|' \
X	                ${WRKSRC}/Makefile
X.endif
X
X.if defined(WITHOUT_APOP)
X	@${REINPLACE_CMD} -e 's|OPTS = -DUSE_APOP|#OPTS = -DUSE_APOP|' \
X	                ${WRKSRC}/Makefile
X.endif
X
Xdo-install:
X	${INSTALL_PROGRAM} ${WRKSRC}/${PORTNAME} ${PREFIX}/libexec
X	${INSTALL_MAN} ${WRKSRC}/mdpop3d.8 ${PREFIX}/man/man8
X
X.include <bsd.port.post.mk>
END-of-mdpop3d/Makefile
echo c - mdpop3d/files
mkdir -p mdpop3d/files > /dev/null 2>&1
echo x - mdpop3d/files/patch-01
sed 's/^X//' >mdpop3d/files/patch-01 << 'END-of-mdpop3d/files/patch-01'
X--- mdpop3d.c.orig	Tue Feb 27 00:12:50 2001
X+++ mdpop3d.c	Sun Jul  2 10:31:40 2006
X@@ -67,8 +67,8 @@
X #ifdef USE_APOP
X # error APOP requires PAM
X #endif
X-#include <shadow.h>
X-#include <crypt.h>
X+#include <pwd.h>
X+#include <unistd.h>
X #endif
X 
X static const char *rhost; /* = NULL; remote host/addr for logging */
X@@ -258,7 +258,7 @@
X }
X 
X static void info() {
X-  putline(OK "maildir: %d message(s) %ld octet(s)", cmsg, msgsz);
X+  putline(OK "maildir: %d message(s) %ld octet(s)", cmsg, (long int)msgsz);
X }
X 
X static char *msgfn(int n) {
X@@ -397,7 +397,8 @@
X   int r;
X   struct popdata d;
X   const char *u = NULL;
X-
X+  const char **ptr_u = &u;
X+  
X   d.pass = pass;
X   d.msg = NULL;
X   convstruct.appdata_ptr = &d;
X@@ -416,7 +417,7 @@
X 	PAMOK(pam_set_item(pamh, PAM_RHOST, rhost)) &&
X 	PAMOK(pam_authenticate(pamh, 0)) &&
X 	PAMOK(pam_acct_mgmt(pamh, 0)) &&
X-	PAMOK(pam_get_item(pamh, PAM_USER, (const void **)&u))) {
X+	PAMOK(pam_get_item(pamh, PAM_USER, (const void **)ptr_u))) {
X     pw = getpwnam(u && *u ? u : user); /* use username from pam if any */
X     if (!maildir) /* try to get MAILDIR from PAM */
X       maildir = pam_getenv(pamh, maildirenv);
X@@ -450,22 +451,17 @@
X   return NULL;
X 
X #else /* !USE_PAM */
X-
X-  char *p;
X-  if ((pw = getpwnam(user)) != NULL) {
X-    p = pw->pw_passwd;
X-    if (!p || !strcmp(p, "x")) {
X-      struct spwd *sp = getspnam(user);
X-      p = sp ? sp->sp_pwdp : NULL;
X-      endspent();
X-    }
X-    if (p && strcmp(crypt(pass, p), p) == 0)
X+    
X+  pw = getpwnam(user);
X+  endpwent();
X+  if (pw != NULL)
X+   {
X+    if (pw->pw_passwd && strcmp(crypt(pass, pw->pw_passwd), pw->pw_passwd) == 0)
X       return pw;
X     syslog(LOG_INFO, "[%s] login incorrect for [%s]", rhost, user);
X   }
X   else
X     syslog(LOG_INFO, "[%s] user unknown: [%s]", rhost, user);
X-  sleep(3);
X   putline(ERR "login incorrect");
X   return NULL;
X 
X@@ -565,7 +561,7 @@
X       *s = ':';
X   }
X   else
X-    putmline("%s%d %ld", code, n+1, msgp[n]->size);
X+    putmline("%s%d %ld", code, n+1, (long int)msgp[n]->size);
X }
X 
X static void finalupdate() {
X@@ -621,7 +617,7 @@
X 
X static void finallog(const char *why) {
X   syslog(LOG_INFO, "[%s][%s] %s (%d/%ld msgs/bytes left, %d/%ld deleted)",
X-         rhost, user, why, cmsg, msgsz, o_nmsg - cmsg, o_msgsz - msgsz);
X+         rhost, user, why, cmsg, (long int)msgsz, o_nmsg - cmsg, (long int)o_msgsz - (long int)msgsz);
X }
X 
X static void die(const char *why) {
X@@ -932,7 +928,7 @@
X       else if (a)
X 	extraarg(), --junk;
X       else
X-	putline(OK "%d %ld", cmsg, msgsz);
X+	putline(OK "%d %ld", cmsg, (long int)msgsz);
X     }
X 
X     else if (!strcmp(line, "top") || !strcmp(line, "retr")) {
END-of-mdpop3d/files/patch-01
echo x - mdpop3d/distinfo
sed 's/^X//' >mdpop3d/distinfo << 'END-of-mdpop3d/distinfo'
XMD5 (mdpop3d-0.97.tar.gz) = 57f6da1c5db5e3bf3fa98c3ecbdb5fa9
XSHA256 (mdpop3d-0.97.tar.gz) = 8202012c82d0880e1362e44cdfbbb69d0ed589087b468eda7b0466c49ade39fc
XSIZE (mdpop3d-0.97.tar.gz) = 17110
END-of-mdpop3d/distinfo
echo x - mdpop3d/pkg-descr
sed 's/^X//' >mdpop3d/pkg-descr << 'END-of-mdpop3d/pkg-descr'
XThis is a simple and small POP3 daemon implementation designed for
XMaildir support.  It have direct support for authenticating regular
Xunix users, has UIDL command support, can access maildirs in
Xnon-default location, and have support for external (pre-)authenticators.
X
XAuthor: Michael Tokarev <mjt at corpit.ru>
END-of-mdpop3d/pkg-descr
echo x - mdpop3d/pkg-plist
sed 's/^X//' >mdpop3d/pkg-plist << 'END-of-mdpop3d/pkg-plist'
Xlibexec/mdpop3d
END-of-mdpop3d/pkg-plist
exit

>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-ports-bugs mailing list