create new tag
, view all tags
This is an update -- I still don't consider this finished, but I need to let it set again for awhile.

This page contains:

  • An unannotated version of the main configuration file (main.cf) for postfix (19991231-p108) as used in my email server on Mandrake 7.2.
  • The commented version of the main.cf file for an earlier version of postfix (19990906_p106) with the original postfix comments, a few comments from the Red Hat Postfix HOWTO, and a few comments by me -- as I learn more or recognize the need for more explanation I may add more comments.



This page started by copying the Red Hat Postfix HOWTO (http://www.redhat.com/support/resources/howto/RH-postfix-HOWTO/x118.html), which includes the annotated main.cf file for postfix (a fairly large file to begin with), additional annotations by Red Hat, and then additional annotations by me. It got so large it was scary.

So before anyone gets scared off, look at section #_____ which contains the main.cf file from my postfix based email server on a machine running Mandrake 7.2. Even though my email server does some fairly unusual things (does not use a registered FQDN, is not connected to the Internet 24/7) the file contains only 16 parameters. Of those 16, 12 were set by somebody else -- they were either the original postfix defaults, set by somebody at Mandrake, or set during the (automatic) Mandrake installation. I had to set only 4 parameters. I don't want to make it sound simple, as it was not simple for me, because I didn't know:

  • which 4 parameters I had to set
  • enough about a mail server
  • some of the terminology and phraseology in the documentation

(I am fairly experienced on computers in general and dos/Windows in particular, but my Linux experience started only about 2 years ago, and has been rather slow going.)

I was going to leave all the comments in the annotated file (the original postfix, Red Hat's, and my comments (with two foci -- documenting / explaining the setup on my Mandrake 7.2 server and providing general explanatory material). Because of the bulk of the material, I've decided not to do that -- I will be deleting comments almost ruthlessly, and then, if I still need more explanatory material than I think is reasonable, I will try to place it on another page with a link from this page.

Aside: One "problem" with the Red Hat HOWTO is that its premise is replacing an existing sendmail installation with postfix -- a few of the comments by Red Hat are either irrelevant or misleading because of that perspective.

Update: Now that I have a working email server including postfix as MTA, I want to work through this file again and try to shorten the comments and put more of them in my own words. (It's not my intent to claim credit for work partially done by others -- putting more of the comments in my own words is both a check on my understanding and (hopefully) a means to more easily allow me to regain my understanding sometime in the future if I need to.)

I will need to check the licensing on the main.cf file to confirm it is allowable to post it here. If not, I'll move it to my private TWiki.


  • There are some parameters that can be included in this configuration file which are not listed here, like the "always_bcc = <email_address" parameter. All the parameters can be found in the sample files that accompany postfix. On Mandrake 7.2 these are found at /usr/share/postfix-19991231_p108/sample/, including sample_misc.cf.

Things I Don't Know

There are still many things I don't know about an email server in general and the postfix MTA in particular. Many of them center around the alias and canonical files.

main.cf for Postfix version 19991231_p108

This is the content of main.cf on my Mandrake 7.2 server.


queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
mail_owner = postfix
default_privs = nobody

mail_spool_directory = /var/spool/mail
mailbox_command = /usr/bin/procmail -a $DOMAIN -d $LOGNAME
smtpd_banner = $myhostname ESMTP $mail_name ($mail_version) (Linux-Mandrake) 
local_destination_concurrency_limit = 2
default_destination_concurrency_limit = 10
debug_peer_level = 2

debugger_command = PATH=/usr/bin:/usr/X11R6/bin xxgdb  $daemon_directory/$process_name $process_id & sleep 5

# Note: The last two lines are / should be one line with whitespace beginning the second line. It may not appear / be that way on TWiki.

Annotated main.cf for Postfix version 19990906_p106

Note: Parameters that are not commented out (via a "#" at the beginning of the line) reflect the correct values for my Mandrake 7.2 email server using Postfix version 19991231_p108. There are no guarantees on parameters that are commented out. Where there are multiple commented out versions of the same parameter, feel free to be confused. wink


main.cf is the "main" Postfix configuration file. It includes only a subset of the 100+ parameters -- others can be found by looking at the sample files distributed with Postfix, typically stored in a location like /usr/doc/postfix-19991231_pl08/ (for Mandrake 7.2).


  • parameter = value
  • continuation lines start with whitespace
  • a value can contain references to other $names or ${name}s

Aside: I don't know what the syntax difference between $names and ${name}s signifies.

Parameters I Changed or Added


At one time or another, I tried the following (in various combinations) with negative or non-productive results.


Comments on the above:

  • relay.fast.net is my ISP's SMTP (outgoing) email server

  • I could have set defer_transports to SMTP so that (IIRC) mail would only be sent if SMTP was up and running. Since my email connection to my ISP goes through a dos gateway computer, I didn't think that would be effective or productive. Instead, every 10 minutes via a cron job I ping my ISP, if the ping is successful I download the mail with fetchmail, then check the postfix defer mail queue, and kick the postfix queue with sendmail -q, then recheck the postfix defer mail queue. I still have not determined whether sendmail -q actually kicks the defer mail queue. (Aside: I had to create a setuid batch file so I could run sendmail -q as an ordinary user.)

Local Pathname Information


The queue_directory specifies the location of the Postfix queues, including (I'm not sure all of these are queues, but many are):

  • active
  • corrupt
  • deferred
  • incoming
  • pid
  • public
  • bounce
  • defer
  • flush
  • maildrop
  • private
  • saved

The queue_directory is also the root directory of Postfix daemons that run chrooted. See the files in examples/chroot-setup for setting up Postfix chroot environments on different UNIX systems.

Aside: This is usually the same directory that sendmail uses for the incoming mail queue.

queue_directory = /var/spool/postfix

Incoming mail arrives at a mail server on port 25, postfix "receives" the mail at port 25 and puts it the incoming spool. See _ for more information on postfix operation.


The program_directory parameter specifies the default location of Postfix support programs and daemons. This setting can be overruled with the command_directory and daemon_directory parameters.

program_directory = /<some_path>/postfix/bin

The above line is not included in my Mandrake 7.2 configuration. The Postfix binaries are located in /usr/lib/postfix on that installation.


The command_directory parameter specifies the location of all postfix commands (often postxxx). The default value is $program_directory.

command_directory = /usr/sbin

The above line is correct for my Mandrake 7.2.


The daemon_directory parameter specifies the location of all Postfix daemon programs (i.e. programs listed in the master.cf file). The default value is $program_directory. This directory must be owned by root.

daemon_directory = /usr/lib/postfix

Queue And Process Ownership


The mail_owner parameter specifies the owner of the Postfix queue and of most Postfix daemon processes. Specify the name of a user account THAT DOES NOT SHARE A GROUP WITH OTHER ACCOUNTS AND THAT OWNS NO OTHER FILES OR PROCESSES ON THE SYSTEM. In particular, don't specify nobody or daemon. PLEASE USE A DEDICATED USER.

mail_owner = postfix


The default_privs parameter specifies the default rights used by the local delivery agent for delivery to external file or command. These rights are used in the absence of a recipient user context. DO NOT SPECIFY A PRIVILEGED USER OR THE POSTFIX OWNER.

default_privs = nobody

Internet Host And Domain Names


The myhostname parameter specifies the Internet hostname of this mail system. The default is to use the fully-qualified domain name from gethostname(). $myhostname is used as a default value for many other configuration parameters.

#myhostname = <host>.<domain>.<name>

If the default doesn't work for you, set the value to the Fully Qualified Domain Name (FQDN) for your machine.

In some cases you might need:

#myhostname = virtual.domain.name


The mydomain parameter specifies the local Internet domain name. The default is to use $myhostname minus the first component. $mydomain is used as a default value for many other configuration parameters.

#mydomain = domain.name

Sending Mail


The myorigin parameter specifies the domain that locally-posted mail appears to come from. The default is to append $myhostname, which is fine for small sites. If you run a domain with multiple machines, you should (1) change this to $mydomain and (2) set up a domain-wide alias database that aliases each user to user@thatPLEASENOSPAM.users.mailhost.

=#myorigin = $myhostname=
=#myorigin = $mydomain=

Receiving Mail


The inet_interfaces parameter specifies the network interface addresses that this mail system receives mail on. By default, the software claims all active interfaces on the machine. The parameter also controls delivery of mail to user@[ip.address].

=#inet_interfaces = all=
=#inet_interfaces = $myhostname=
=#inet_interfaces = $myhostname, localhost=

IIRC, sometimes you might use your IP address, as in:

#inet_interfaces =


The mydestination parameter specifies the list of domains that this machine considers itself the final destination for.

The default is $myhostname + localhost.$mydomain. On a mail domain gateway, you should also include $mydomain. Do not specify the names of domains that this machine is backup MX host for. Specify those names via the relay_domains or permit_mx_backup settings for the SMTP server (see sample-smtpd.cf.

The local machine is always the final destination for mail addressed to user@[the.net.work.address] of an interface that the mail system receives mail on (see the inet_interfaces parameter).

Specify a list of host or domain names, /file/name or type:table patterns, separated by commas and/or whitespace. A /file/name pattern is replaced by its contents; a type:table is matched when a name matches a lookup key. Continue long lines by starting the next line with whitespace.

=#mydestination = $myhostname, localhost.$mydomain=
=#mydestination = $myhostname, localhost.$mydomain, $mydomain=

Internet Versus Intranet


The relayhost parameter specifies the default host to send mail to when no entry is matched in the optional transport(5) table. When no relayhost is given, mail is routed directly to the destination.

On an intranet, specify the organizational domain name. If your internal DNS uses no MX records, specify the name of the intranet gateway host instead.

Specify a domain, host, host:port, [address] or [address:port]. Use the form [destination] to turn off MX lookups. See also the default_transport parameter if you're connected via UUCP.

=#relayhost = $mydomain=
=#relayhost = gateway.my.domain=
=#relayhost = uucphost=
=#relayhost = [mail.$mydomain:9999]=
=relayhost = relay.fast.net=

For my email server (on my private LAN) this was the most important parameter to set. By setting it to the SMTP server of my ISP (relay.fast.net):

  • Mail was forwarded to the ISP for transport as required
  • The envelope address was masqueraded (IIUC) so that outgoing mail looked like it came from rhkramer@fastPLEASENOSPAM.net (IIUC), so my ISP had no qualms about relaying my mail (from my server / domain without a registered domain name) (The other factor that contributed to mail from my LAN being recognized as mail from rhkramer@fastPLEASENOSPAM.net is that I set my address in my mail clients to rhkramer@fastPLEASENOSPAM.net -- I'm not sure whether both of these contribute to accomplishing this or what. I did check by envelope address on at least one sent email and it was rhkramer@fastPLEASENOSPAM.net.)
  • No MX records were required for my server (all necessary MX records were handled by the ISP in conjunction with his "normal handling" of the email address he had assigned to me)

Rejecting Unknown Local Users


This parameter is available in the main.cf for the 19991231-p108 version but not in the 19990906-p106 version -- I don't know if it's a new parameter with the p108 version or not. There are some comments about it in the p108 main.cf file.

#local_recipient_maps = $alias_maps unix:passwd.byname

Default Transport


The default_transport parameter specifies the default message delivery transport to use when no transport is explicitly given in the optional transport(5) table.

=#default_transport = smtp= 
=#default_transport = uucp=

Address Rewriting

Insert text from sample-rewrite.cf if you need to do address masquerading.

Insert text from sample-canonical.cf if you need to do address rewriting, or if you need username->Firstname.Lastname mapping.

rhk: OK, what's the distinction between address rewriting and masquerading? In any case, nothing is present here in the Mandrake 7.2 file (nor is a canonical.cf or rewrite.cf file "in effect")

I guess when it says "insert text from" you have the option to specify the file here somehow -- probably find a clue in the file. Applies to the next several parameters.

Address Redirection (Virtual Domain)

Insert text from sample-virtual.cf if you need virtual domain support.

rhk: Again, I'm not really sure what a virtual domain does for me, oops, well, I take that back. I guess that might be an alternate approach for me to use if I had my own registered domain which was not the same as the local domain name I'm using on my LAN.

"User Has Moved" Bounce Messages

Insert text from sample-relocated.cf if you need "user has moved" style bounce messages. Alternatively, you can bounce recipients with an SMTP server access table. See sample-smtpd.cf.

Transport Map

Insert text from sample-transport.cf if you need explicit routing.

Alias Database


The alias_maps parameter specifies the list of alias databases used by the local delivery agent. The default list is system dependent.

On systems with NIS, the default is to search the local alias database, then the NIS alias database. See aliases(5) for syntax details.

If you change the alias database, run "postalias /etc/aliases" (or wherever your system stores the mail alias file), or simply run "newaliases" to build the necessary DBM or DB file.

It will take a minute or so before changes become visible. Use "postfix reload" to eliminate the delay.

=#alias_maps = dbm:/etc/aliases=
=#alias_maps = hash:/etc/aliases=


The alias_database parameter specifies the alias database(s) that are built with "newaliases" or "sendmail -bi". This is a separate configuration parameter, because alias_maps (see above) may specify tables that are not necessarily all under control by Postfix.

=#alias_database = dbm:/etc/aliases=
=#alias_database = dbm:/etc/mail/aliases=
=#alias_database = hash:/etc/aliases=

RH: As the instructions say if you want to use the newaliases command to handle the aliases file (recommended) you should uncomment the above line but be sure (if you made the path change we recommended in the alias_maps section) and change it to read:

  • alias_database = hash:/etc/postfix/aliases

RH: Then be sure to uncomment the line and run the newaliases command before starting Postfix.

  • #alias_database = hash:/etc/aliases, hash:/opt/majordomo/aliases

RH: If you happen to run majordomo then you should use the line above instead of just the aliases line. Be sure the path to the file majordomo is correct. The best practice convention is to put it into /etc/postfix. Most Red Hat Linux sendmail installations would have had it in /etc/mail/. We will dicuss this a bit more when we get to the listserv section of this document.



The prepend_delivered_header controls when Postfix should prepend a Delivered-To: message header.

By default, Postfix prepends a Delivered-To: header when forwarding mail and when delivering to file (mailbox) or command. Turning off the Delivered-To: header when forwarding mail is not recommended.

=# prepend_delivered_header = command, file, forward=
=# prepend_delivered_header = forward=

Address Extensions (e.g., user+foo)


The recipient_delimiter parameter specifies the separator between user names and address extensions (user+foo). See canonical(5), local(8), relocated(5) and virtual(5) for the effects this has on aliases, canonical, virtual, relocated and .forward file lookups.

Basically, the software tries user+foo and .forward+foo before trying user and .forward.

# recipient_delimiter = +

Delivery To Mailbox


The home_mailbox parameter specifies the optional pathname of a mailbox relative to a user's home directory. The default is to deliver to the UNIX-style /var/spool/mail/user or /var/mail/user.

Specify "Maildir/" for qmail-style delivery (the / is required).

  • #home_mailbox = Mailbox
  • #home_mailbox = Maildir/

RH: On Red Hat Linux systems you should leave this alone unless you know what you're doing. If you're converting from qmail to Postfix (doubtful) then it would probably be useful.

rhk: Does this imply that postfix can serve as an MDA? It looks promising.

rhk: Not in use on my Mandrake 7.2 mail server.


The mail_spool_directory parameter specifies the directory where UNIX-style mailboxes are kept. The default setting depends on the system type.

=# mail_spool_directory = /var/mail=
=mail_spool_directory = /var/spool/mail=


The mailbox_command parameter specifies the optional external command to use instead of mailbox delivery. The command is run as the recipient with proper HOME, SHELL and LOGNAME environment settings.

rhk: I'm beginning to be convinced that "mailbox delivery" is the thing that means Postfix can serve as an MDA (especially as, see below, Procmail can be used as the "optional external command to use instead of mailbox delivery". On the other hand, if delivery is limited to only one mailbox (for one user), it is not much of an MDA. But, rereading the first paragraph in this section: "The home_mailbox parameter specifies the optional pathname of a mailbox relative to a user's home directory. The default is to deliver to the UNIX-style /var/spool/mail/user or /var/mail/user." makes it sound like a capability for multiple users.

Exception: delivery for root is done as $default_user.

Other environment variables of interest: USER (recipient username), EXTENSION (address extension), DOMAIN (domain part of address), and LOCAL (the address localpart).

Unlike other Postfix configuration parameters, the mailbox_command parameter is not subjected to $parameter substitutions. This is to make it easier to specify shell syntax (see example below).

Avoid shell meta characters because they will force Postfix to run an expensive shell process. Procmail alone is expensive enough.

  • #mailbox_command = /some/where/procmail

RH: The default MDA on Red Hat Linux systems is procmail. You can use the command "which procmail" to verify the path but unless you've changed procmail's location it is located in "/usr/bin/procmail". Don't forget to uncomment the line.

  • #mailbox_command = /some/where/procmail -a "$EXTENSION"

mailbox_command = /usr/bin/procmail -a $DOMAIN -d $LOGNAME


The mailbox_transport specifies the optional transport in master.cf to use after processing aliases and .forward files. This parameter has precedence over the mailbox_command, fallback_transport and luser_relay parameters.

#mailbox_transport = cyrus


The fallback_transport specifies the optional transport in master.cf to use for recipients that are not found in the UNIX passwd database.

This parameter has precedence over the luser_relay parameter.

#fallback_transport =


The luser_relay parameter specifies an optional destination address for unknown recipients. By default, mail for unknown local recipients is bounced.

The following expansions are done on luser_relay: $user (recipient username), $shell (recipient shell), $home (recipient home directory), $recipient (full recipient address), $extension (recipient address extension), $domain (recipient domain), $local (entire recipient localpart), $recipient_delimiter. Specify ${name?value} or ${name:value} to expand value only when $name does (does not) exist.

=# luser_relay = $user@other.host=
=# luser_relay = $local@other.host=
=# luser_relay = admin+$local=

Junk Mail Controls

The controls listed here are only a very small subset. See the file sample-smtpd.cf for an elaborate list of anti-UCE controls.


The header_checks parameter restricts what may appear in message headers. This requires that POSIX or PCRE regular expression support is built-in. Specify "/^header-name: stuff you do not want/ REJECT" in the pattern file. Patterns are case-insensitive by default. Note: specify only patterns ending in REJECT. Patterns ending in OK are mostly a waste of cycles.

=#header_checks = regexp:/etc/postfix/filename=
=#header_checks = pcre:/etc/postfix/filename=

RH: The above section enables a filter which you can use to detect and "bounce" mail which matches a certain regular expression (REGEXP). The difference between using procmail and regexp or PCRE is that these two catch the mail prior to delivery and can effectively block unwanted mail at the SMTP port.

rhk: So (as I thought I remembered), Postfix can even do some of the filtering that Procmail can do, and, even better (something I had not remembered), can reject it at the SMTP port. Does this mean it's rejected before the ISP sends it -- maybe in some other scenarios -- in my scenario, the mail is fetched by fetchmail from a POP3 server, and then presented at the SMTP port (25), so it's already made the expensive part of the journey.

rhk: Not in use on my Mandrake 7.2 mail server.


The relay_domains parameter restricts what domains (and subdomains thereof) this mail system will relay mail from or to. See the smtpd_recipient_restrictions restriction in the file sample-smtpd.cf.

By default, Postfix relays mail only from or to sites in or below $mydestination, or in the optional virtual domain list.

Specify a list of hosts or domains, /file/name patterns or type:name lookup tables, separated by commas and/or whitespace. Continue long lines by starting the next line with whitespace. A file name is replaced by its contents; a type:name table is matched when a (parent) domain appears as lookup key.

NOTE: Postfix will not automatically forward mail for domains that list this system as their primary or backup MX host. See the permit_mx_backup restriction in the file sample-smtpd.cf.

#relay_domains = $mydestination, $virtual_maps

RH: For anyone who knows already how MX records work this is a critical component in the Postfix configuration. Home users probably won't need this line but anyone who handles mail for mutiple domains will. Here's a sample of how it can be used:

RH: relay_domains = $mydestination, /etc/postfix/relay-domains

RH: In this example the domains you want to relay for would be placed in the file /etc/postfix/relay-domains. One to a line like so:

  • here.com
  • mail.here.com
  • there.org
  • mail.there.org

RH: Note: this file is not hashed or mapped. It is a simple text file. You can also use IP addresses instead of names.

rhk: Not in use on my Mandrake 7.2 mail server.


The mynetworks parameter specifies the list of networks that are local to this machine. The list is used by the anti-UCE software to distinguish local clients from strangers. See permit_mynetworks and smtpd_recipient_restrictions in the file sample-smtpd.cf file.

The default is a list of all networks attached to the machine: a complete class A network (X.0.0.0/8), a complete class B network (X.X.0.0/16), and so on. If you want stricter control, specify a list of network/mask patterns, where the mask specifies the number of bits in the network part of a host address. You can also specify the absolute pathname of a pattern file instead of listing the patterns here.

#mynetworks =,

rhk: Not in use on my Mandrake 7.2 mail server.

Classless Inter-Domain Routing (CIDR)

  • thru were Class "A" networks
  • thru were Class "B" networks
  • thru were Class "C" networks, specify as, for example
  • thru were Class "D" networks
  • thru were Class "E" networks

#mynetworks = $config_directory/mynetworks

rhk: Not in use on my Mandrake 7.2 mail server. (That's surprising -- need to reread this.)

Show Software Version Or Not


The smtpd_banner parameter specifies the text that follows the 220 status code in the SMTP greeting banner. Some people like to see the mail version advertised. By default, Postfix shows no version.

You MUST specify the $myhostname at the start of the text. When the SMTP client sees its own hostname at the start of an SMTP greeting banner it will report a mailer loop. That's better than having a machine meltdown.

#smtpd_banner = $myhostname ESMTP $mail_name #smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)

smtpd_banner = $myhostname ESMTP $mail_name ($mail_version) (Linux-Mandrake)

Parallel Delivery To The Same Destination


How many parallel deliveries to the same user or domain? With local delivery, it does not make sense to do massively parallel delivery to the same user, because mailbox updates must happen sequentially, and expensive pipelines in .forward files can cause disasters when too many are run at the same time. With SMTP deliveries, 10 simultaneous connections to the same domain could be sufficient to raise eyebrows.

Each message delivery transport has its XXX_destination_concurrency_limit parameter. The default is $default_destination_concurrency_limit.

local_destination_concurrency_limit = 2 default_destination_concurrency_limit = 10

RH: As the text above says this section is really about rate limiting. It is, essentially, the gas pedal for Postfix. Unless you have some really good reason to change these the defaults should be fine. Once you've run Postfix for a while (particularly those who use it in a professional setting) you may have a better idea of how this should be set for your environment.

Debugging Control


The debug_peer_level parameter specifies the increment in verbose logging level when an SMTP client or server host name or address matches a pattern in the debug_peer_list parameter.

debug_peer_level = 2

RH: We recommend the default here unless there is some overriding reason to change this. Debugging will be covered in a later chapter of this document. For what it's worth this section has no real relevance unless the next is enabled.

rhk: The default listed above is used on my Mandrake 7.2 mail server.


The debug_peer_list parameter specifies an optional list of domain or network patterns, /file/name patterns or type:name tables. When an SMTP client or server host name or address matches a pattern, increase the verbose logging level by the amount specified in the debug_peer_level parameter.

=# debug_peer_list =
=# debug_peer_list = some.domain=

RH: This section is used in combination with debug_peer_level so if that's not enabled then this one is moot. This is actually a very neat feature of Postfix. Think about it for a minut. If everything works fine but there is this one host which seems to have problem receiving or sending mail to or from your host then you could use this feature to increase the logging level for just that host.

rhk: Not used on my Mandrake 7.2 mail server.


The debugger_command specifies the external command that is executed when a Postfix daemon program is run with the -D option.

Use "command .. & sleep 5" so that the debugger can attach before the process marches on. If you use an X-based debugger, be sure to set up your XAUTHORITY environment variable before starting Postfix.

=debugger_command = PATH=/usr/bin:/usr/X11R6/bin xxgdb $daemon_directory/$process_name $process_id & sleep 5=

RH: Leave this section alone for now. We will cover debugging in some detail in a later section of this document.

rhk: The default shown above is used on my Mandrake 7.2 mail server.

Other configurable parameters.



  • Authors of Postfix and the RedHat Postfix HOWTO
  • RandyKramer - 19 Feb 2002 (formatting for TWiki, some comments or questions)
  • <If you edit this page, add your name here, move this to the next line>

Revision Comments

  • r1.9: Formatting (fixed bad /pre tag)
Edit | Attach | Watch | Print version | History: r9 < r8 < r7 < r6 < r5 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r9 - 2004-10-11 - RandyKramer
  • Learn about TWiki  
  • Download TWiki
This site is powered by the TWiki collaboration platform Powered by PerlCopyright 1999-2017 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding WikiLearn? WebBottomBar">Send feedback
See TWiki's New Look