tiny patch for pw(8)
Michal Belczyk
belczyk at bsd.krakow.pl
Sun Mar 19 12:01:51 PST 2006
Hello,
the attached patch makes creation of /var/mail/username files for new accounts
a bit more configurable. Since I only use maildirs for mail storage, now I
don't have to remove those files when adding new users :-)
--
Michal Belczyk
Index: pw.conf.5
===================================================================
RCS file: /home/dcvs/src/usr.sbin/pw/pw.conf.5,v
retrieving revision 1.2
diff -u -r1.2 pw.conf.5
--- pw.conf.5 17 Jun 2003 04:30:01 -0000 1.2
+++ pw.conf.5 19 Mar 2006 19:25:05 -0000
@@ -99,6 +99,8 @@
days after which account expires
.It password_days
days after which password expires
+.It createmailbox
+create mailbox for new users
.El
.Pp
Valid values for
@@ -281,6 +283,15 @@
.Ql \&0
in either field will disable the corresponding (account or password)
expiration date.
+.Pp
+The
+.Ar createmailbox
+option is used when creating new account.
+If enabled then user mailbox will be created unless
+.Fl V
+command line option was also specified.
+Contents of an already existing mail file are preserved.
+The default value for this option is yes.
.Sh LIMITS
The maximum line length of
.Pa /etc/pw.conf
Index: pw.h
===================================================================
RCS file: /home/dcvs/src/usr.sbin/pw/pw.h,v
retrieving revision 1.3
diff -u -r1.3 pw.h
--- pw.h 7 May 2005 23:42:39 -0000 1.3
+++ pw.h 19 Mar 2006 18:32:08 -0000
@@ -92,6 +92,7 @@
gid_t min_gid, max_gid; /* Allowed range of gids */
int expire_days; /* Days to expiry */
int password_days; /* Days to password expiry */
+ int create_mailbox; /* Create mailbox for new account? */
int numgroups; /* (internal) size of default_group array */
};
Index: pw_conf.c
===================================================================
RCS file: /home/dcvs/src/usr.sbin/pw/pw_conf.c,v
retrieving revision 1.2
diff -u -r1.2 pw_conf.c
--- pw_conf.c 17 Jun 2003 04:30:02 -0000 1.2
+++ pw_conf.c 19 Mar 2006 18:33:18 -0000
@@ -57,6 +57,7 @@
_UC_MAXGID,
_UC_EXPIRE,
_UC_PASSWORD,
+ _UC_MAILBOX,
_UC_FIELDS
};
@@ -98,6 +99,7 @@
1000, 32000, /* Allowed range of gids */
0, /* Days until account expires */
0, /* Days until password expires */
+ 1, /* Create mailbox for new account */
0 /* size of default_group array */
};
@@ -123,7 +125,8 @@
"\n# Range of valid default group ids\n",
NULL,
"\n# Days after which account expires (0=disabled)\n",
- "\n# Days after which password expires (0=disabled)\n"
+ "\n# Days after which password expires (0=disabled)\n",
+ "\n# Create mailbox for new account? (yes or no)\n"
};
static char const *kwds[] =
@@ -149,6 +152,7 @@
"maxgid",
"expire_days",
"password_days",
+ "createmailbox",
NULL
};
@@ -349,6 +353,9 @@
if ((q = unquote(q)) != NULL && isdigit(*q))
config.password_days = atoi(q);
break;
+ case _UC_MAILBOX:
+ config.create_mailbox = boolean_val(q, 1);
+ break;
case _UC_FIELDS:
case _UC_NONE:
break;
@@ -470,6 +477,9 @@
sprintf(buf, "%d", config.password_days);
quote = 0;
break;
+ case _UC_MAILBOX:
+ val = boolean_str(config.create_mailbox);
+ break;
case _UC_NONE:
break;
}
Index: pw_user.c
===================================================================
RCS file: /home/dcvs/src/usr.sbin/pw/pw_user.c,v
retrieving revision 1.4
diff -u -r1.4 pw_user.c
--- pw_user.c 30 Nov 2004 20:12:21 -0000 1.4
+++ pw_user.c 19 Mar 2006 18:33:33 -0000
@@ -728,7 +728,7 @@
* doesn't hurt anything to create the empty mailfile
*/
if (mode == M_ADD) {
- if (!PWALTDIR()) {
+ if (!PWALTDIR() && cnf->create_mailbox) {
sprintf(line, "%s/%s", _PATH_MAILDIR, pwd->pw_name);
close(open(line, O_RDWR | O_CREAT, 0600)); /* Preserve contents &
* mtime */
More information about the Submit
mailing list