Skip to main content.

virtualmail-pop3d (aka vm-pop3d)

Current development: 1.1.7f (01/Jul/2003)

    Known Platforms
    Mail Delivery - MTA/MDA Configuration
    Password Files
    Using the POP3 server/client
    Mailing Lists
    Frequently Asked Questions
    Feedback / Contact Us

vm-pop3d is a POP3 server. It is free to download and use. It supports alternative password files and mail spool directories; it can be used for setting up virtual email accounts -- mailboxes without real Unix owners for each. This will allow you to have multiple email accounts with the same name on one system.

vm-pop3d has UIDL support. And it can be run as a standalone daemon or via inetd.


  • Can be ran as non-root
  • Pre-forking standalone daemon
  • Or run via inetd, xinetd
  • Supports multiple mailboxes with the same user name
  • IP-based virtual domains
  • And named-based virtual domains (one IP for all)
  • Also works with standard Unix (/etc/passwd) users
  • PAM support
  • UIDL support for faster mail checking

vm-pop3d is based on Jakob Kaivo's gnu-pop3d (formerly called ids-pop3d). I developed ten patches (beginning in September, 1999) for gnu-pop3d version 0.9.8. Accordingly, the first release of vm-pop3d is version 1.0.8. The code for vm-pop3d version 1.0.8 should be identical to a virtual mail version 1.0-patched gnu-pop3d 0.9.8.


If you use vm-pop3d, please consider signing up for the vm-pop3d-announce mailing list (to receive messages about new versions, bug fixes, and security updates).

(See the Changes/History for further details.) A development version is also available.

Source Downloads

1.1.6's MD5 checksum is "0399cc06f5329a6eaebec05d959a6ec1". For example, after you download it, use your system's md5 or md5sum command to verify it.

(1.1.3's MD5 checksum is "aed8fa1e8437a04d779c9f8e699a64b8". 1.1.4's MD5 checksum is "7c7b80bac86ec75a98f9ebba9ce0144c". 1.1.5's MD5 checksum is "e0a3a30c243fe7b5549a8cff7f65fd5c".)

It is available via the sunsite mirrors and ibiblio archives:

(Some mirrors are here.)

The first version of vm-pop3d (vm-pop3d-1.0.8.tar.gz) is available from this same directory. Please do not use this old version -- please use a newer version.

Binary / Package Downloads

Please note that I have not tested, audited, reviewed, or verified the following packaged downloads.

Radek Libovicky has Red Hat Linux RPMs available. Visit

Also, Stephen L Arnold made a RPM and source RPM on an older Pentium-class machine running Red Hat Linux 6.2. They are available at and

Jakub Ambrozewicz has a Debian package for the Alpha platform and rules used to create the .deb package at

Per Řyvind Karlsen made a patched version for Mandrake Linux. (This patch is for adding the IP address in the logging during the login for use with pop3-before-smtp; note that this feature is in the development version.) The download is at

A FreeBSD package and port is available; the package is at and the port is at (Be sure to use your local FreeBSD mirror.)

Known Platforms

The following is a list of operating systems (and architectures) that vm-pop3d is known to run under:
  • BSDi BSD/OS 4.1 (i386)
  • Debian Linux 2.1 (i386), 2.2 (i386) (with and without PAM support)
  • Debian potato (alpha) (running on an Alpha/Jensen DEC 2000 MODEL 500 AXP)
  • Debian potato on Sparc (sun4u / Sun V100)
  • FreeBSD 4.3 (i386), 4.4
  • HP-UX 11.0
  • Mandrake Linux (i586)
  • NetBSD 1.4.2 (i386), 1.5.1 (i386)
  • OpenBSD 2.9, 3.0, and 3.5
  • Red Hat Linux 6.2, 7.0, 7.1, 7.2 (i386), 7.3
  • Slackware Linux 7.0, 7.1, 8.0
  • Solaris 2.8
  • SuSE Linux 7.1

It is also believed to be used under Red Hat Linux 7.0, SunOS, AIX, Tru64, and Solaris. If you can verify that is builds and runs under another OS, please let us know so we can add to this list.

Windows pop3 clients tested:

  • Acorn Email 2.5
  • Microsoft Outlook Express 5.00, Outlook Express 6, Outlook 2000, Outlook 2003
  • Netscape Messenger (Communicator 4.6)
  • Phoenix Mail 0.92
  • Eudora Light 3.0.6
  • The Bat!
  • WinGate POP3 proxy
(Please let us know of others that work or don't work.)

Virtual Mail Delivery -- MTA/MDA configuration

The email is delivered to separate folders via your mail transfer agent (like Postfix, Exim, Sendmail) or mail delivery agent (like procmail, mail.local).

The delivery folder structure looks like:


The mail is retrieved from /var/spool/virtual/

The mailboxes need to be readable and writable by the MTA and by the pop3 server; they should not be readable (and definitely not writable) by the world. For example, the MTA could run as user mail (who is part of group mail) and the POP3 server also uses the same UID for virtual user work, so the mailbox is only readable and writable for user mail and group mail. (More information about permissions can be found below.)


Some great ideas for Exim and virtual domains can be found in the Exim FAQ under the LIST OF SAMPLE CONFIGURATIONS -- in particular, check out C007, C009, C011, C015 and C016. The Exim FAQ may be installed with your Exim distribution; and it is available at (380+ KB). A sample Exim config is available here. And here is another example config for Exim 3.33. This setup also has separate aliases files for each domain. (Please feel free to share a better, cleaner config.)


Setting up Postfix with virtual domains support information can be found here. A howto on using Postfix with vm-pop3d is available at Another "HOW TO Setup Postfix and vm-pop3d with virtual mailboxes" is at Here are a few emails with some examples of using it with postfix: postfix.txt, postfix2.txt and postfix3.txt.


Some tools for delivering with sendmail are at


Also the Postoffice mail server "can be configured to deliver mail to accounts inside vm-pop3d-style virtual domains." It is available at

A Postoffice/vm-pop3d tutorial is at

If you have any sample MTA configs to share or know of any URLs, please let us know.

Using the POP3 server/client

vm-pop3d must have write access to the mail spool directory so it can make lock files. vm-pop3d must have permission to read and update users' mailboxes. And it must have permission to read (or use) the authentication method(s).

vm-pop3d can be ran without root permissions if it uses a different program like inetd (or xinetd) to bind to the POP3 port (110); inetd (and xinetd) allow you to configure what user and group it will run as.

In addition, vm-pop3d has a "--user" and "--group" command-line options. By default, vm-pop3d changes to group "mail"; "--group" can be used to override this. Then if using virtual domains support, it sets the user ID to what is defined in the vm-pop3.h file. This can be set instead via the command-line with the "--user" switch.

The POP3 server allows using separate password files and mail spool directories for each virtual domain.

The end-user simply uses the username PLUS the domain name as the "user name" option in their email (pop3) client. (This is so the pop3 server can be run from only one IP -- I don't have IP's for every domain name.)

For example, the users of each virtual domain are identified by logging in as "user@domain" or "user:domain". or or

The username and domain name can be separated with an at-sign "@", a colon ":", a semicolon ";" or a percent sign (bang) "!". (Some mail clients -- like Netscape Messenger -- crop out the username before the at-sign "@", so try using one of these other characters.)

If you do not use the "@domain" syntax with your pop3 client (and you are not using IP-based), then the pop3 server will default to using the default (/etc/passwd) password file and default mail spool.

You can also define the IP-based config option which will select the password file and mail spool directory by the hostname that the user chooses to connect to. (Of course, with this option, you will need separate IPs for each virtual domain and the IP must resolve to the chosen host name.)

If the user enters the domain name with his username, it will override the IP-based option.

(The IP-based virtual domains support is not the default.)

For the user to use the IP-based solution, they must use the correct POP3 server name (in their POP3 client configuration) or they may be authenticated against a different password file.

Password files

NOTE: the pop3 daemon uses the normal Unix password file and normal mail spool when it is not used with the domain name (and the IP-based solution is not compiled in). (So it won't break your existing configurations.)

The password files are located under /etc/virtual/

The password file is simply a username and an encoded password separated with a colon ":". This username doesn't include the "@domain" part; it is just the username. You can create the password entry with something like:

# pop_passwd username password >> password file

 $name = $ARGV[0];

 @salt_chars         = ('a'..'z','A'..'Z','0'..'9');
 $salt               = $salt_chars[rand(62)] . $salt_chars[rand(62)];

 $passwd = crypt ($ARGV[1], $salt);

 print "$name:$passwd\n";

## NOTE: this previously used
## $salt               = $salt_chars[rand(63)] . $salt_chars[rand(63)];
## this is wrong!

You can also use the htpasswd tool (included with Apache Webserver software) to create and modify the password files.

In this case, the virtual password files are the "shadow" or "master.passwd" files; they contain the hashed password. You should consider making the virtual passwd files only readable by the vm-pop3d process and the MTA. (Maybe you could configure your virtual system to have two user files: one world-readable, and only has the username to be used by the MTA; and another only readable by the POP3 server which has the encrypted passwords.)


You may be able to solve your problems by enabling debugging. To enable debugging, build the source with "./configure --enable-debug" and then run vm-pop3d with the "-D" option (use "-D 9" for a lot of debugging messages). Then watch your mail logs.

Also, try connecting manually:

telnet hostname 110
user username@here
pass plaintext-password-here

And try running vm-pop3d from the command-line (as root):

user username@here
pass plaintext-password-here

Also, if you find a bug, please be sure to look at the change log or try an up-to-date version to see if the issue is fixed.

In addition, consider providing full details and ask some questions on the appropriate amiling list.


If you are interested in vm-pop3d developing, please consider signing up for the vm-pop3d-devel mailing list.

vm-pop3d is available in CVS. The CVS is viewable via the web at

To retrieve via CVS (the first time) with anonymous CVS (using pserver method), try:

  cvs -d login # password is cvs

  cvs -d checkout vmpop3d/vm-pop3d

Later, to update to latest CVS version do the following (after logging in first):

  cd vmpop3d/vm-pop3d/

  cvs -d update -dP

The source distribution of vm-pop3d includes a TODO file that lists user suggestions and ideas for improvement.

Please submit one specific patch per email (with appropriate subject line) -- that way we can discuss that individual suggestion. For example, if your suggested changes include formatting changes, logging changes, and Berkeley DB support, then please submit these in three different emails (three different diffs).

If you have a large or combination patch, please don't send it to the list; explain the patch details and then either email it to specific people who ask for it or make it available via ftp or http.

Please consider using a unified diff output format (diff -u).

Please note that a development diff is available.

Mailing Lists

Andrey J. Melnikoff has set up three mailing lists for vm-pop3d:

  • vm-pop3d-announce - for announcements of new releases, bug fixes, or security problems. (No discussion/no posting).
  • vm-pop3d-users - for discussion on installing and using vm-pop3d.
  • vm-pop3d-devel - for discussion on code development of vm-pop3d.

To sign up for any of these mailing lists, send an email to and in the body of the message put:
subscribe listname

An archive is available here.

To unsubscribe, send empty email to (for the vm-pop3d-users list).

Frequently Asked Questions

A FAQ is included with the source code. If you use a binary package and it doesn't include a FAQ with the install, be sure to politely ask your package provider to also install the FAQ.

The FAQ is also available here in plain text format.

The FAQ is available in the CVS.

Feedback / Contact Us

For vm-pop3d and/or related virtual mail hosting discussion, suggestions, patches, development, or free assistance, please use a vm-pop3d mailing list.

Also, please consider using a mailing list to submit ideas for vm-pop3d (and related virtual mail hosting) documentation, including ideas for this webpage.

(If you are seeking professional assistance, feel free to contact Reed Media.)


17/Jan/2002 1.1.6
Bug Fix: Don't freopen() mailbox in quit.c; it is now open read/write in user.c (and apop.c). (This freopen caused fcntl(2) lock to be lost and mailbox could be corrupted if LDA didn't use lockfile checking.)

Add getopt* source files to DISTFILES in (Thanks to Andrey J. Melnikoff.) (They were removed from the SRCS list in the in the 1.1.5 version.)

21/Dec/2001 1.1.6
More informative message (and free lockfile) if having problem when deleting .lock file. Also, unlock mbox first (extra.c).

19/Dec/2001 1.1.6
Got rid of realloc() in pop3_retr (retr.c) and pop3_top (top.c); this was supposed to be removed with fixes on 11/Oct/2001 and 28/Nov/2001.

Only allow "From " to be delimiter of mbox message if it is the first line or has a blank line before it. (Some MDAs escape it with a ">" so it doesn't matter.) Fixes in extra.c (pop3_getsizes), retr.c (pop3_retr), top.c (pop3_top), and quit.c (pop3_quit). (Reported by Andrey J. Melnikoff and Jim Pazarena.)

18/Dec/2001 1.1.6
Fix configure script ( so it explains that PAM and virtual-based support are enabled by default.

04/Dec/2001 1.1.6
Documentation: Updated and clarified INSTALL document.

29/Nov/2001 1.1.6
Documentation: Explained "host name not found" in FAQ.
29/Nov/2001 1.1.5
Install manual page; version 1.1.1 accidently removed manual page installation (

Got rid of 600 second timeout limitation (vm-pop3d.c, vm-pop3d.8).

Changed --help usage message (extra.c).

Use system's getopt_long() if available; also, improved PAM checks (

Documentation: Added comments about PAM to INSTALL doc.

28/Nov/2001 1.1.5
Fixed never-released bug introduced on 11/Oct/2001: if a dot (period) is at 80th character don't escape with another dot (retr.c).

Fixed memory allocation in virtual.c, where it could be abused to use up some memory. Now the returned passwd data is just static. (Thanks to Jeff Davis.)

Bug Fix: Removed freopen() calls in pop3_top (top.c), pop3_retr (retr.c), uidl (uidl.c) and pop3_getsizes (extra.c); they were not needed (and they could cause corrupted mailbox because the shared lock is lost). And made pop3_getsizes() rewind to beginning of file.

Minor change in pop3_retr() -- don't fgets() one more line if done (retr.c).

Bug Fix: Changed top.c so it doesn't try to place entire long line (up to newline) into memory before using. (See 11/Oct/2001.)

Changed VIRTUAL_MAILDIR to VIRTUAL_MAILPATH so there won't be any confusion on whether it is maildir-type mailboxes (vm-pop3d.h, user.c). (At this time, it is only Berkeley-style mbox format.)

Portability: Added ./configure directive to disable PAM ( If available, PAM is still enabled by default. If libdl exists, then use it (because some old versions of libpam didn't link to it). Changed cpp definitions to just be USE_PAM (, vm-pop3d.h, user.c).

Added PAM debugging message if PAM error (user.c).

Fix: The syslogging is now reopened if there is a PAM error (user.c). (Problem reported by Ed Thomson.) Got rid of PAM_ERROR macro.

24/Nov/2001 1.1.5
Documentation: Further explained "Bad login" in FAQ.

30/Oct/2001 1.1.5
Added some debugging to pop3_quit() to report on number of messages to delete and total messages.

Don't delete all messages in pop3_quit() if number of messages is zero and number of messages selected to be deleted is zero (quit.c). This issue occurred with a corrupted (or non-standard mailbox) as reported by Iliya Peregoudov; the mailbox was missing "From " message delimiter.

12/Oct/2001 1.1.5
Documentation: Added FAQ about using MD5 passwords. (Information from Istvan Karaszi.)

11/Oct/2001 1.1.5
Fixed copyright notices; some files had second copyright. (As far as it is known, original code has original author's copyright.)

Bug Fix: Changed retr.c so it doesn't try to place entire long line (up to newline) into memory before printing. This worked, but is very slow and maybe cause denial of service problems. In addition, it was reported by zas of to crash some vm-pop3d services. This realloc() loop also reported by Andrey J. Melnikoff in July.

04/Oct/2001 1.1.5
Documentation: Added FAQ about "Socket closed".

14/Sep/2001 1.1.5
Made virtual.c work with password files with more fields (but it doesn't store the additional fields). This will allow it to work with standard passwd(5) format. (Idea from Tomi Hakala and others.)

10/Jul/2001 1.1.5
Changed gnu-pop3d reference -- PAM_gnupop3d_conv to PAM_vmpop3d_conv (user.c).

Documentation: Added FAQ about rejecting passwords ("-ERR Bad login") to remind to setup PAM configuration, if applicable.

26/Jun/2001 1.1.5
A few debug logging were never done (vm-pop3d.c).

13/Jun/2001 1.1.5
Bug Fix: --disable-virtual wouldn't compile; connect IP logging code added for 1.1.4 code used a variable that was previously just used for USE_VIRTUAL (vm-pop3d.c).

11/Jun/2001 1.1.4
At startup, make sure UID used for virtual exists (vm-pop3d.c).

Documentation: Explained --user and --group options in manual page and INSTALL document; added FAQ entry about running as non-root.

Feature: Added command-line option (-u or --user) to set user UID for setuid for virtual users (vm-pop3d.c and virtual.c).

Feature: Added command-line option (-g or --group) to set GID for setgid (vm-pop3d.c).

pop3_abquit now logs if fdopen() doesn't work for output stream (extra.c).

If setuid didn't work then don't allow log in and log problem (user.c).

Bug Fix: Creation of lockfile is checked. Before, if not created, it would seg fault at end of session. (Thanks to Rok Papez.)

Bug Fix: When concurrent children exited or stopped at same time, the correct amount of new children wouldn't start. Status is collected for waitpid. SIGCHLD signal is set to SIG_DFL (the default) instead of ignoring it (vm-pop3d.c). (Thanks to Rok Papez.)

06/Jun/2001 1.1.4
Feature: logs IP address of client.

30/May/2001 1.1.4
Documentation: Explained "inetd looping" in FAQ.

Documentation: Updated webpage to add various examples for MDA mail delivery, password files, and using POP3 client.

23/May/2001 1.1.4
Documentation: added information about mailing lists to README.

If user doesn't exist, debug level 3 reports non-existent user.

14/Apr/2001 1.1.4
Replaced gnu-pop3d.spec with vm-pop3d.spec; this spec file is used for creating a RPM. (Thanks to Radek Libovicky libovicky @

12/Apr/2001 1.1.3
Documentation: added note about debug option to manual page; added note about enabling debugging in INSTALL.

11/Apr/2001 1.1.3
Changed pop3_usage (extra.c) to not exit when done so it could also exit(1) if wrong options.

Bug Fix: If port in use, report with syslog; previously it reported to stderr, but the stderr descriptor was already closed. (This needs to be improved.)

Check return codes for accept(), fork() and waitpid() (vm-pop3d.c).

Bug Fix: Under some operating systems when running as a standalone daemon, when a child dies, a new process was not started due to a race condition. Fixed by removing SIGCHLD handler, setting it to SIG_IGN, using waitpid instead of wait, and _exit instead of exit (vm-pop3d.c).

Added DEBUG and "-d" argument to display debugging messages and/or syslog messages. Added ./configure directive to enable this debugging (

11/Apr/2001 1.1.2
Changed all formatting of code using non-GNU indent.

06/Apr/2001 1.1.1
Documentation: Clarified information about VIRTUAL_MAILDIR (INSTALL). Added notes to vm-pop3d.h.

Now logs if can't open a virtual password file (virtual.c). (Thanks to Padraic Renaghan.)

Bug Fix: If virtual password file is not formatted correctly, then continue to next line (instead of exiting) (virtual.c). (Thanks to Padraic Renaghan.)

Changed PATH_TO_PASSWORDS to VIRTUAL_PASSWORDS_PATH; added VIRTUAL_PASSWORD_FNAME (defaults to "passwd") instead of hardcoding "passwd" (vm-pop3d.h and virtual.c). Documentation updated (INSTALL). (Thanks to Padraic Renaghan.)

Documentation: INSTALL document now adds note about installing init (Sys-V) script.

Bug Fix: Do not overwrite $(ROOT)/etc/rc.d/init.d/vm-pop3d with "make install", because it should be done manually, due to admin's customizations ( (Thanks to Padraic Renaghan.)

Release: 1.1.0

Documentation: Added comment about UIDL support (INSTALL).

Added "UIDL" to CAPA list in pop3_capa() (capa.c).

Bug Fix: Using MAILSPOOLHOME when logging in with a virtual user caused signal 11. (Real problem not fixed.) Worked-around problem so virtual user doesn't use MAILSPOOLHOME (user.c).

Logging changed to not report name of mailbox. (This is a waste.) If using /dev/null log about it (via LOG_ERR) (user.c).

Code Cleanup: Removed free()ing of pw (struct passwd) (user.c).

Formatting: Cleanup spacing/tabs in pop3_user() (user.c).

Release: 1.0.9

Documentation: Virtual users support enabled by default; use --disable-virtual to disable. Minor changes to INSTALL.

Virtual users support (optional passwd files and spool directories) is now enabled by default (

Code Cleanup: Only set virtual uid for the user when the user is found (not for every user in passwd file).

Bug Fix: Make sure getvirtualpwnam() closes the passwd file.

Feature: Implemented UIDL (currently using Message-Id from mail headers).

Documentation: Manual page rewrite started.

vm-pop3d version 1.0.8 is gnu-pop3d 0.9.8 with virtual mail patch 1.0 integrated. In addition, the README and INSTALL documents are changed. All references to gnu-pop3d are changed (except for history or license). vm-pop3d 1.0.8 codewise is the same as a virtual mail 1.0-patched gnu-pop3d 0.9.8.

Documentation: Further explained "/dev/null" in FAQ.

Code Cleanup: Moved MAXHOSTNAMELEN definition to below system includes to stop redefined warnings (gnu-pop3d.h).

Feature: Log signal number before quiting on signal (extra.c).

Code Cleanup: Renamed MAIL_UID to VIRTUAL_UID (to make this more clear) and added comments and changed documentation. Renamed mail_uid to virtual_uid (virtual.c).

Code Cleanup: Renamed VIRTUALMAILSPOOL to VIRTUAL_MAILDIR and added comments and changed documentation.

Documentation: Added example of using xinetd to INSTALL document. (Thanks to Sten Eriksson sten.eriksson @

Documentation: Started FAQ.

Documentation: Cleaned up and expanded INSTALL document with details and examples on using inetd.

Bug Fix: Got rid of signal handler for SIGSTOP (gnu-pop3d.c). According to sigaction(2), it will fail if an attempt is made to supply a handler for SIGSTOP. It was returning: "EINVAL (Invalid argument)".

Bug Fix: Got rid of actual signal handler for SIGPIPE. Now using SIG_IGN to ignore any write on a pipe with no reader. (Note: The signal handler for SIGPIPE is not in the original source. It was added to this patch on 21/Jan/2000.)

Bug Fix: Fixed configure script to check for libraries after headers, because it wouldn't check for libpam, because it tests if pam headers are found first. (Note: This problem is from my file -- not in original source distribution.)

Feature: (Or should I call it a "Bug Fix"?) You can now compile with PAM support. If using virtual support and a @domain part exists, then it will bypass the PAM section.

Documentation: Added note about PAM configuration to INSTALL file.

Bug Fix: Fixed INSTALL documentation because MAILSPOOLHOME is defined in config.h not pop3d.h (Thanks to Mike Klinkert michael @ (Still needs a ./configure option.)

Portability: Added signal handler for SIGPIPE (gnu-pop3d.c) which may stop stale lock files when client drops connection (Thanks to Ralf Winkel Ralf.Winkel @

Code Cleanup: Set pw to NULL in pop3_user (user.c) to stop "might be used uninitialized" warning. Use type casting for pointer target passing in pop3_mainloop (gnu-pop3d.c) to stop "differ in signedness" warning. Use type casting for pointer target passing in pop3_daemon (gnu-pop3d.c) to stop "differ in signedness" and "incompatible pointer type" warnings.

Release: version 0.7.

Bug Fix: use temp_domain instead of virtualdomain for preliminary inet_ntoa for IP_BASED_VIRTUAL.

Code Cleanup: If has host name lookup problem for IP_BASED_VIRTUAL then give error message and quit.

Release: version 0.6.

Bug Fix: not sure why it is a bug... but removed virtualdomain++ in pop3_mainloop (gnu-pop3d.c); so to start after the domain_delimiter, the temp_domain is incremented. (Found this problem using gdb and mpr.)

Code Cleanup: Added const char domain_delimiters ";!:@". And loops through these. Uses strdup to allocate virtualdomains, if needed. And free's it if created.

Release: version 0.4.

Code Cleanup: Ensure that ofile is non-null in pop3_abquit() in extra.c so it does not attempt to write an error message through the socket; for example, if a TERM signal was sent, then a SEGV would be triggered and the process would not terminate. (Thanks to Jonathan Chin jonathan.chin @

Bug Fix: Don't free virtualdomain in quit.c (caused segmentation fault). Added #ifdef USE_VIRTUAL before referencing virtualdomain in quit.c (didn't compile when virtual support was not enabled -- but not that this matters since it is commented out).

9 Dec. 1999
Release: version 0.3.

30 Nov. 1999
Feature: Added configure support --enable-virtual-domains and --enable-ip-based-virtual (New and configure). Added some debugging info.

Bug Fix: Changed getsockname to use infile not sock. Added check before freeing virtualdomain.

Code cleanup: Remove line_no references from virtual.c.

Portability: Changed how _PATH_MAILDIR and MAXNAMELEN is configured (Thanks to Bill Sebok wls @ Now using chdir to go into virtual mail spool directory (Thanks to Christian Roy roychri @

24 Nov. 1999
Feature: Added "IP_BASED_VIRTUAL" macro configuration. Uses getsockname, inet_ntoa, gethostbyaddr.

Portability: Changed type __uid_t to uid_t in virtual.c for better BSD compatibility (Thanks to Ed Thomson ethomson @

Code cleanup: Changed sprintf to snprintf in virtual.c.

7 Oct. 1999
Posted this first patch to gnu-pop3d-list.

This page last updated: Wed Aug 31 17:22:12 PDT 2005