title: mf2b.conf(5)

text:
# mf2b.conf(5)

## NAME
mf2b.conf - micro fail2ban configuration file format

## DESCRIPTION
The configuration file for mf2b specifies which log files are to be watched for new entries and how to react on them. It defines how interesting entries look like, how many of them have to occur in what period of time and what commands are to be executed upon reaching the configured limit and when free "slots" become available.

## OPTIONS
ban command

What to execute upon reaching the threshold. In command , subpatterns may be accessed using $1 to $n.

limit n

The threshold value, i.e. how many matching log entries must occur before action is taken. The parameter n is a positive number.

match expression

This defines how an interesting line in the given log file must look like to be accounted for. Note that subpatterns (i.e., parts of the expression enclosed in braces) must match in order for the log entry to be assumed as ´equal´.

timeout n

The timeout of log matching log entries in seconds, i.e. how old a log entry may become in order to still be accounted to limit.

unban command

What to execute when the threshold is underrun, i.e. when the number of matching log entries that occured in the last timeout seconds becomes lower than limit. In command , subpatterns may be accessed using $1 to $n.

{ ... }

The curly braces denote a confined set of configuration options for (a set of) log files. They have to be preceeded by one or more log files.

## EXAMPLES

\# default options

limit 3

timeout 60

ban "iptables -A f2b -s $1 -j DROP"

unban "iptables -D f2b -s $1 -j DROP"

\# check for login failures via SSH

/var/log/auth.log /var/log/messages {

match "sshd.*: Invalid user .* from \(.+\)"

}

\# check for "security scanners" checking vulnerable URLs

/var/log/lighttpd/access.log {

match "::ffff:\(.+\) .* \"GET /w00tw00t\.at\..*"

\# this overrides the defaults from above

limit 1

timeout 3600

}

## FILES
/etc/mf2b.conf

The default configuration file.

## BUGS
When expanding the variables in the commands from ban/ unban options, common shell escapes are being escaped. This serves as rudimental protection against injection attacks, though one should not rely upon them. So in order to e.g. match an IPV4 address, using something like ´\(\([[:digit:]]\{1,3\}\.\)\{3\}[[:digit:]]\{1,3\}\)´ is far more secure than a simple ´\(.*\)´. Additionally, mf2b is probably best run as unpriviledged user with limited execute permissions.

## AUTHOR
Phil Sutter <phil AT nwl DOT cc>

## SEE ALSO
mf2b(8) regex(7)

branch: sisyphus


greylist.conf

package: milter-greylist

title: greylist.conf(5)

text:
# greylist.conf(5)

## NAME
greylist.conf - milter-greylist configuration file

## DESCRIPTION
greylist.conf configures milter-greylist(8) operation. The format is simple: each line contains a keyword and optional arguments. Any line starting with a # is considered as a comment and is ignored. Blank lines are ignored as well. Comments at the end of lines are accepted in some situations, but do not take them as granted. A statement can be continued on the next line by using a backslash. Anything after the backslash will be ignored.

## WHITELIST
The primary use of greylist.conf is to setup milter-greylist(8) whitelist. It also offers a handy blacklist feature. Access-lists (ACL) are used to do that. ACL enable the administrator to specify complex conditions on sender IP, sender DNS address, sender e-mail address, and recipient e-mail address. If support for DNSRBL was built-in, it is even possible to use DNSRBL in ACL.

An access-list entry starts with the racl keyword followed by an optional id quoted string, then the greylist, whitelist, blacklist, or continue keyword, and by any set of the following clauses: addr, domain, from, rawfrom, rcpt, rcptcount, helo, sm_macro, time, auth, tls, spf (if build with SPF support), geoip (if build with GeoIP support), p0f (if build with p0f support), ldapcheck (if build with --with-openldap), urlcheck (if built with --with-libcurl), dnsrbl (if built with --enable-dnsrbl), and nsupdate (if supported by the DNS resolver). A message will match an ACL entry when it complies with all of its clauses.

The greylist, whitelist, and blacklist keywords will cause the message to be respectively greylisted, accepted or rejected if all ACL clauses match, and ACL evaluation is terminated there. If an ACL with continue keyword does match, nothing is decided and next ACL are evaluated.

Clauses can be negated, by prefixing them by the not keyword. Here is the detail of all possible clauses.

addr

This clause is used to specify a netblock of source IP addresses. The syntax is an IP address followed by a slash and a CIDR netmask. Here is an example:

racl whitelist addr 127.0.0.0/8

racl whitelist addr 192.168.3.0/24

racl whitelist addr ::1

If the netmask is omitted, /32 is assumed for an IPv4 address and /128 is assumed for an IPv6 address.

You should at least whitelist localhost (127.0.0.1/8), and if you have some user clients connecting to the machine, you should whitelist the addresses they connect from if you don't want them to get error messages when sending e-mail.

domain

This clause selects source machines based on their DNS name, performing a suffix search. For instance, this will whitelist any machine in the example.net domain:

racl whitelist domain example.net

Suffix search matching means, for example, that gle.com will match google.com. If you want domain names to match on subdomain boundaries (e.g. gle.com will match mail.gle.com and gle.com but not google.com) then enable domainexact

The name resolution is made by Sendmail, which hands it to milter-greylist(8). As a result, it is impossible to use DNS aliases here. On the other hand, this will work even if your DNS resolver is not thread-safe.

from

This is used to select sender e-mail addresses You should not use that feature, because sender e-mail addresses can be trivially forged. Please note that the sender e-mail is cleared from spaces and anything leading an equal (=) sign so that mailing-lists return-address with unique return paths can still match. If you need unedited sender address, use a rawfrom clause.

Here is an example:

racl whitelist from postmaster@example.com

rawfrom

Same as from but the sender e-mail address is not modified to stip anything. rcpt This is used to select recipient addresses. Example:

racl greylist rcpt John.Doe@example.net

rcptcount

Followed by an operator and a recipient count, this is used to select the amount of recipients. Example:

racl blacklist rcptcount >= 25 msg "No more than 25 recipients, please"

helo

Followed by a quoted string or a regular expression, this can be used to filter on the HELO string.

sm_macro

This is used to select a Sendmail macro value. See the section on that topic for more information.

time

This is used to specify a time set. It should be followed by a quoted string of crontab(5)-like time specification. Here is an example that whitelists mail addressed to a single recipient during office hours (from 8:00 to 16:59 from monday to friday):

racl whitelist time "* 8-16 * * 1-5" rcpt info@example.net

geoip

This is used to specify a country, as reported by GeoIP. The country code must be upper case, and is only available if milter-greylist was built with GeoIP support. Special country code ZZ is used when the country cannot be determined (this happens for private addresses, for instance). The geoipdb statement can be used to specify the location of GeoIP database. geoipv6db statement can be used to specify the location of GeoIPv6 database. geoip2db statement can be used to specify the location of GeoIP2 (maxminddb) database.

p0f

This is used to match against the remote system OS fingerprint genre and detail,obtained from p0f. It is only available if milter-greylist was built with p0f support. p0f clauses can be used with a quoted string for case-insensitive substring match, or against regular expressions. The p0fsock statement can be used to specify the location of the p0f socket.

auth

This is used to select a user that succeeded SMTP AUTH. In order to select any user that succeeds SMTP AUTH, you can use a regular expression matching, like below;

racl whitelist auth /.*/

Using such a clause automatically disable global STARTTLS and SMTP AUTH whitelisting, like if the noauth keyword would have been used.

tls

This is used to select the distinguished name (DN) of a user that succeeded STARTTLS. Using such a clause automatically disable global STARTTLS and SMTP AUTH whitelisting, like if the noauth keyword would have been used.

spf

This is used to test SPF status. Possible values are pass, softfail, fail, neutral, unknown, error, none, and self. The first seven values are plain SPF validation status. The self value is a special test that checks the server's local IP address against the sender's SPF record. If that test validates, odds are good that the sender SPF record is wide open, and this is hint that SPF should not be trusted.

In order to use spf self, Postfix users must specify the local address in the configuration file, using the localaddr option.

Absence of any value after the spf keyword is a synonym for spf pass. This is present for backward compatibility.

The spf clause is only available if SPF support was compiled in. Using it will disable global SPF whitelisting, like if the nospf keyword would have been used.

ldapcheck

This is used to query an LDAP directory. See the section on that topic for more information.

urlcheck

This is used to query an external configuration source through an URL. See the section on that topic for more information.

dnsrbl

This is used to select a DNSRBL. See the section on that topic for more information.

nsupdate

This always-matching clause performs a DNS update, see the section on that topic for more information.

The domain, from, and rcpt clauses may be used with regular expressions. The regular expressions must be enclosed by slashes (/). No escaping is available to provide a slash inside a regular expression, so just do not use it. Regular expressions follow the format described in re_format(7). Here is an example:

racl greylist rcpt /@example\.net$/

When regular expressions are not used, from, and rcpt perform a case insensitive substring match with leading and trailing brackets, spaces and tabs stripped out. domain performs a case insensitive suffix match. This means, for example, that gle.com will match google.com. If you want domain names to match on subdomain boundaries (e.g. gle.com will match mail.gle.com and gle.com but not google.com) then enable domainexact

An ACL entry can also hold various optional parameter used on match: delay, autowhite, flushaddr, nolog, code, ecode, report, maxpeek, addheader, addfooter, and msg

delay

Specify the greylisting delay used before the message can be accepted. This overrides the greylist global setting, and it only makes sense on an racl greylist entry.

autowhite

Specify the autowhitelisting duration for messages matching this ACL. This overrides the autowhite global setting, and it only makes sense on an racl greylist entry. Example:

racl greylist rcpt JDoe@example.net delay 15m autowhite 3d

racl greylist rcpt root@example.net delay 1h autowhite 3d

flushaddr

If a message matches the rule, any entry in the greylist or autowhite databases matching the sender IP is removed. Used with a DNSRBL blacklist ACL, it is useful for freeing the database from entries set up by a machine which is known to be a spammer. Example:

racl blacklist dnsrbl "known-spammer" flushaddr

nolog

Do not generate syslog message if this rule matches. Example:

racl whitelist default nolog

code

ecode

msg

These 3 values can be used to choose the SMTP code, extended code and reply message for temporary failures and rejects. Example:

racl blacklist dnsrbl "spamstomp" msg "IP caught by spamstomp"

racl greylist default code "451" ecode "4.7.1"

The msg strings accepts format string substitution as documented in the FORMAT STRINGS section. For instance, %A gets substituted by the ACL line number.

None of the last 3 values makes sense for a whitelist entry.

report

This value overrides the text displayed in the X-Greylist header, for messages that milter-greylist(8) lets pass through, either because they are whitelisted, or because they passed greylisting (see REPORTING). This string can be substituted as documented in the FORMAT STRINGS section.

maxpeek

This parameter only makes sense in a RCPT-stage ACL. It overrides the global maxpeek setting for DATA-stage handling of the message. It has no effect if global maxpeek is set to 0.

addheader

This quoted string is a RFC822 header that gets added to the message. Format string substitution is supported. No check is done for header length standard compliance, so make sure the substituted string is shorter than 2048 characters. Headers are appended to the bottom, unless an optionnal comma-separated positive index is specified after the quoted string; in this case the header will be inserted at this index point from the top. Here is an example:

```
racl continue addheader "X-Personnal-Header: Hello world!",1
```

addfooter

Append a footer to the message. Usual escape sequences such as \n can be used to get special characters. The string is subject to format string expantion as described in the FORMAT STRINGS section. The footer will not be append if milter-greylist was not able to capture the whole message, therefore maxpeek must be set approriately.

Entries in the access-list are evaluated sequentially, so order is very important. The first matching entry is used to decide if a message will be whitelisted or greylisted. A special default clause can be used in the last ACL entry as a wildcard. Here are a few complete ACL examples:

Example 1:

```
racl whitelist from friend@toto.com rcpt grandma@example.com
racl whitelist from other.friend@example.net rcpt grandma@example.com
racl greylist rcpt grandma@example.com
racl whitelist default
```

Example 2:

```
racl whitelist addr 193.54.0.0/16 domain friendly.com
racl greylist rcpt user1@atmine.com
racl greylist rcpt user2@atmine.com
racl greylist rcpt user3@atmine.com
racl whitelist default
```

Example 3:

```
racl whitelist rcpt /@.*otherdomain\.org$/
racl whitelist addr 192.168.42.0/24 rcpt user1@mydomain.org
racl whitelist from friend@example.net rcpt /@.*mydomain\.org$/
racl whitelist rcpt user2@mydomain.org
racl greylist rcpt /@.*mydomain\.org$/
racl whitelist default
```

## DATA-STAGE ACL
ACL using the racl keyword are evaluated at the RCPT stage of the SMTP transaction. It is also possible to have ACL evaluated at the DATA stage of the SMTP transaction, using the dacl keyword, provided the message went through RCPT-stage ACL, and possibly greylisting. Note that you cannot use the greylist action at DATA-stage if the RCPT-stage ACL that matched had a greylist action itself. The following clauses can be used to work on message content:

dkim

DKIM status (if build with DKIM support). Possible values are pass, fail, unknown, error, and none,

header

String or regular expression searched in message headers

body

String or regular expression searched in message body

msgsize

Operator followed by a message size (k or M suffix allowed for kilobytes or megabytes). Example:

dacl blacklist msgsize >= 4M msg "No more than 4 MB please"

spamd

SpamAssassin score (if build with SpamAssassin support). If used without comparison operator spamd is true if the score is above threshold. The spamdsock keyword can be used to specify the location of the spamd socket.

Example 1:

```
  spamdsock unix "/var/spamassassin/spamd.sock"

  racl whitelist default

  dacl greylist spamd
```

Example 2:

```
  spamdsock inet "127.0.0.1:783"

  racl whitelist default

  dacl blacklist spamd > 15 msg "Your message is considered spam."

  dacl greylist  spamd > 10 delay 2h

  dacl greylist  spamd > 5  delay 1h
```

Note that if there are multiple recipient, a rcpt clause at DATA stage evaluates to true if it matches any of them. If you want to match an exact set of recipients, you can use multiple rcpt clauses along with a rcptcount clause.

## LISTS
It is often useful to group several users or sender IP addresses in a single ACL. This can be done with lists. Lists must be first defined and given a name before they can be used in ACL entries. Here is an example:

list "my users" rcpt { user1@example.com user2@example.com }

list "local" addr { 192.0.2.0/24 10.0.0.0/8 }

racl whitelist list "local"

racl greylist list "my users"

racl whitelist default

## BACKWARD COMPATIBILITY
Previous versions of milter-greylist(8) used addr, domain, from, and rcpt lines, without the racl keyword. Access-list management is intended to replace them. These lines are still accepted by milter-greylist(8), but they are deprecated. milter-greylist(8) handles them as access-list entries with a single clause. They are added at the head of the access-list so the use of these keywords and access-lists may lead to unspecified behaviour. Do not mix them.

test mode (using -T) is also deprecated. Access-list semantics do not depend on this flag.

milter-greylist(8) also used to only have a RCPT-stage ACL, which was configured through acl statements. These have been replaced by racl statements (as opposed to dacl statements for DATA-stage ACL). acl statements are still accepted for backward compatibility and are a synonym for racl statements.

## MX SYNC
Synchronization of the greylist among multiple MX is configured using the peer keyword. List each other MX IP addresses using the peer keyword. Here is an example:

peer 192.0.2.18

peer 192.0.2.17

peer 192.0.2.22 timeout 7

peer 192.0.2.38 timeout 5m

You can list the local machine in the peer statements, it will be ignored.

The timeout clause sets a peer communication timeout to have proper retrial in case of slow MX peer. The default value is 3 seconds. The special value of 0 disables the connection retrials.

By default, milter-greylist will listen on all interfaces using TCP port 5252 or the port number given by service named mxglsync if defined in /etc/services or other directory service. This behaviour can be changed by using the syncaddr keyword. Here are a few examples:

syncaddr *

syncaddr * port 7689

syncaddr 192.0.2.2 port 9785

syncaddr 2001:db8::1:c3b5:123

syncaddr 2001:db8::1:c3b5:123 port 1234

Using '*' as the address means to bind to all local interfaces' addresses. Note that if you are not using the default port, all MXs must use the same port number.

For outbound connections the system is selecting one of the possible addresses. If you want to use a specific IP you can use:

syncsrcaddr 123.456.78.9

## TEXT DUMP
milter-greylist(8) uses a text dump of its database to resume operation after a crash. The dump is performed at regular time interval, but as it is a heavy operation, you might want to configure a particular time interval, using the dumpfreq option.

If the dumpfreq value is too small, it will kill performance. If it is too high, you will loose a bigger part of the database on a crash.

Set dumpfreq to 0 to get a dump on each change (kills performance), Set it to -1 to never dump to a file (unsafe as you lose the whole greylist on each crash), or give a time value for the delay between dumps. The time is given in seconds, except if a unit is given: m for minutes, h for hours, and d for days.

You may further improve the performance of the dump operation at the expense of humanly readable timestamp which by default appears as a comment at the end of each line in the dumpfile. You may disable generation of this comment by specifying dump_no_time_translation option in the configuration file. This is specifically recommended if your dumpfile grows to 100's of megabytes - it can reduce the time needed for the dump operation by the order of magnitude!

## REPORTING
By default, milter-greylist(8) will add a X-Greylist header to any message it handles. The header shows what happened to the message: delayed or not delayed, and why. The following options can be used in greylist.conf to alter this behavior:

report none

Never add a X-Greylist header.

report delays

Only add a header if the message was delayed.

report nodelays

Add a header if the message was not delayed. The header explains why the message was not delayed.

report all

Always add a header. This is the default.

## SENDER CALLBACK SYSTEMS
Sender callback systems are another anti-spam measure that attempts to send a DSN to the sender address before accepting a message. If that fails, then the sender address is wrong and the message is rejected. Such systems usually stop their callback check at the RCPT stage of the SMTP transaction.

Greylisting temporarily rejects at the RCPT stage, so sender callback and greylisting love to fight each other. milter-greylist(8) proposes a workaround to that problem with the delayedreject option. For messages coming from <> (that is, for DSN), it will cause the temporary reject to happen at the DATA stage of the SMTP transaction instead of the RCPT stage. That way, milter-greylist(8) will cope much better with sender callback systems.

This has a minor drawback (and this is why it is not enabled by default): for a multi recipient DSN, whitelisted recipient will not be honoured: the message will be delayed for everyone.

## SENDMAIL MACROS
Any sendmail macro can be used as a clause in the access list. You need to define a (macro, value) pair using the sm_macro keyword before using it. Here is an example that uses the {client_resolve} macro to apply a larger greylisting delay to hosts that have a bogus reverse DNS:

sm_macro "maybe_forged" "{client_resolve}" "FORGED"

racl greylist sm_macro "maybe_forged" delay 1h

racl greylist default delay 15m

A regular expression can be used as the macro value. It must be surrounded with slashes and not by quotes. The special value unset can also be used to match an unset macro:

sm_macro "not_foo" "{foo}" unset

Note that any Sendmail macro that is not exported using the Milter.macros.envrcpt setting of sendmail.cf will be seen as unset from milter-greylist.

## DNSRBL
DNS Reverse Black List can be used to toggle an ACL. They must be defined and named before they can be used. Here is an example which uses a bigger greylisting delay for hosts caught in the SORBS dynamic pool DNRSBL (this will include DSL and cable customers pools, which are well known to be massively infected by spamwares):

dnsrbl "SORBS DUN" dnsbl.sorbs.net 127.0.0.10/32

racl greylist dnsrbl "SORBS DUN" delay 1h

racl greylist default delay 15m

The definition of a DNSRBL starts by the dnsrbl keyword, followed by the quoted name of the DNSRBL, the DNS domain on which addresses should be looked up, and the answer we should consider as a positive hit.

DNSRBL support is only available if enabled through the --enable-dnsrbl config flag. Please make sure milter-greylist(8) is linked against a thread-safe DNS resolver, otherwise it shall crash.

## DNS updates
ACL are able to trigger a DNS update, which can be used to feed a DNSRBL. That functionnality is enabled at build time if the DNS resolver has DNS update support.

Configuration is done with the nsupdate statement, which may be used several times, and the optionnal tsig statement, if you want ot use authenticated DNS update. Here is an example syntax:

tsig "dns-update" "hmac-md5" "1B2M2Y8AsgTpgAmY7PhCfg=="

nsupdate "bl.example.net" { rname "%j.bl.example.net" rvalue "127.0.0.2" tsig "dns-update" }

The options for nsupdate are:

rname

Created record name, which uses format strings.

rvalue

Created record value, which uses format strings.

servers

Quoted comma-separated list of DNS server the update should be sent to. Default is to use the system confifugration, usualy from /etc/resolv.conf

ttl

TTL of created DNS record. Default is 0 seconds.

class

Created record class, as numeric value. Default is 1, for IN class.

type

Created record type, as numeric value. Default is 1, for A type.

tsig

The name of a tsig configuration, which must have been supplied before. If unspecified, unauthenticated DNS updates are performed.

Once configured, DNS updates can be used in any ACL:

racl blacklist rcpt spamtrap@example.net nsupdate "bl.example.net"

## PROPERTIES
Properties are variables that can be set, evaluated and printed in ACL. A property may be dropped once the current recipient is processed, or it can be retained until the message is processed. They can be created through the following always-matching ACL clauses:

set $name="value"

This sets a property that will be retained for all next recipients. Right hand side of the clause may be a quoted string (which will be substituted using format strings, as described in the FORMAT STRINGS section), a number, or another property name (which will be substituted by the property value).

rset $name="value"

Same as set clause, except that the property will be droped once the current user will have been processed.

urlcheck

These clause will cause properties to be fetched from an external web service. See the URL checks section below for details.

ldapcheck

These clause will cause properties to be fetched from a LDAP directory See the LDAP CHECKS section below for details.

Properties can be used as left-hand side part of ACL clauses:

racl blacklist $name "badvalue"

racl blacklist $name /badregex/

If used left-hand side and prefixed by a star, the property will be evaluated as a glob(7) pattern, In the example below, if sender DNS domain is test.example.net and $domain is *.example.net, we get a match.

racl blacklist *$domain "%f"

They are also available as right-hand side of many ACL clauses:

racl continue set $badword="spam"

racl blacklist body $badword

Values of properties can be obtained in any quoted string that is subject to format string expantion:

racl continue set $webmaster="webmaster@example.net"

racl blacklist domain evil.net msg "blacklisted, ask $P{webmaster} why"

When the property value is a number, it can be increased or decreased using this syntax:

racl continue set $score+=5

racl continue set $score-=5

Here again, right hand side may be a quoted string, a number or another property. For the quoted string and property cases, a conversion is first made to an integer, using 0 as a value on failure. Note that no arithmetic evaluation occurs. For instance, the quoted string "1 + 1" will be evaluated as 0.

The log ACL clause can be helpful when one need to figure what happens to property values during the ACL flow. See the CUSTOM REPORT section for more details.

## URL checks
milter-greylist(8) is able to query external sources of information through various URL, if it was built with --with-libcurl. Here is an example:

urlcheck "glusr" "http://www.example.net/mgl-config?rcpt=%r" 5

racl greylist urlcheck "glusr" delay 15m

racl whitelist default

The trailing 5 at the end of the urlcheck definition is the maximum number of simultaneous connections we want to launch on this URL. For each message, the URL will be queried, with % format tags being substituted. For instance, %r is substituted by the recipient. See the FORMAT STRINGS section for the complete list of substitutions.

milter-greylist(8) expects an answer containing a list of \n terminated lines, with key: value pairs. The most basic answer to get a match is:

milterGreylistStatus: Ok

TRUE can be used as an alias for Ok here.

The answer can be more complex, with keys that will overload the ACL settings:

milterGreylistDelay

The greylisting delay to use (time unit suffix allowed).

milterGreylistAutowhite

The autowhite delay to use (time unit suffix allowed).

milterGreylistFlushAddr

The value is ignored. If this key is present, then the IP address for the sender machine will be flushed from greylist and autowhite databases.

milterGreylistCode

The SMTP code to return (e.g.: 551).

milterGreylistECode

The SMTP extended code to return (e.g.: 5.7.1)

milterGreylistMsg

The string to return with SMTP codes.

milterGreylistReport

The string to display in the X-Greylist header.

milterGreylistIgnore

This line will be ignored, without warnings in the logs.

milterGreylistAction

This feature is nifty but use it with caution, as it makes the access list a bit difficult to understand. By specifying the values greylist, whitelist, or blacklist, it is possible to overload the ACL action itself.

The ACL will match if any of the above key is returned: milterGreylistStatus is not mandatory.

Optional keywords can be appended to a urlcheck definition:

postmsg

On DATA-stage ACL, This causes the message to be sent (up to maxpeek bytes) in a POST request. Here is an example:

urlcheck "extfilter" "http://www.example.net/f.cgi" 5 postmsg

dacl blacklist urlcheck "extfilter"

dacl whitelist default

getprop

Gather the properties returned by the URL and reuse them in the ACL. The gathered properties can be accessed in the current and following ACL by prefixing them by a dollar ($).

clear

This causes gathered properties to be cleared on each new recipient. This avoids properties for several recipients to mix.

fork

Tells milter-greylist(8) to fork a separate instance of itself for performing the queries. Use it if you encounter thread-safety problems. fork is not compatible with postmsg.

domatch

Cause the ldapcheck clause to be evaluated in ACL. Default behavior is to ignore the result and just fecth properties, except if the LDAP directory is unreachecable, in which case a temporary failure occurs. The fixldapcheck gloabal settings may also be used to globaly cause all ldapcheck and urlcheck clauses to match.

Here is an example that will use various DNSRBL depending on a per-recipient setting stored in the dnsrbl attribute of a LDAP directory.

dnsrbl "RBL2" "rbl.example.net" "127.0.0.2"

dnsrbl "RBL3" "rbl.example.net" "127.0.0.3"

dnsrbl "RBL4" "rbl.example.net" "127.0.0.4"

urlcheck "userconf" "ldap://localhost/dc=example,dc=net?milterGreylistStatus,dnsrbl?one?mail=%r" 5 getprop clear

racl blacklist urlcheck "userconf" $dnsrbl "RBL2" dnsrbl "RBL2"

racl blacklist $dnsrbl "RBL3" dnsrbl "RBL3"

racl blacklist $dnsrbl "RBL4" dnsrbl "RBL4"

Note that when matching gathered properties, format strings and regex can be used.

## LDAP CHECKS
If milter-greylist was built with --with-openldap, then you can also use ldapcheck for pulling information from an LDAP directory. This works exactly like urlcheck, except that properties are always collected: The getprop option is implicit.

A list of LDAP URL to use can be specified with the ldapconf keyword. The network timeout is optional.

ldapconf "ldap://localhost ldaps://ldap.example.net" timeout 2s

When ldaps:// is used, the system's ldap.conf file is used to locate x509 certificates.

When defining LDAP queries with the ldapcheck statement, note that the scheme and host part of the URL are ignored. Servers listed in ldapconf are used instead.

## RATE LIMIT
The ratelimit keyword specifies a ratelimit configuration to be used in access lists. It must be followed by the rate limit configuration name, what is being accounted (i.e.: session for SMTP sessions, rcpt for recipients, data for bytes in body and headers), the actual limit, and the sampling period. Example:

ratelimit "internalclients" rcpt 10 / 1m

racl blacklist addr 192.0.2.0/24 ratelimit "internalclients" \ msg "you speak too much"

The ratelimit keyword can also have an option key statement, which determine the set of key for message accounting. The default is %i for per IP address accounting (see the FORMAT STRINGS sections for the possible syntax of this field). Here is an example that configures a rate limit of 100 messages per hour for each individual recipient-IP set.

ratelimit "internalclients" rcpt 100 / 1h key "%r%i"

racl blacklist addr 192.0.2.0/24 ratelimit "internalclients" \ msg "you speak too much"

## CUSTOM REPORTS
The stat keyword can be used to specify a custom report for milter-greylist activity. It should be supplied with an output (either file or external command) and a format string. Here is an example:

stat ">>/var/log/milter-greylist.log" "%T{%T},%i,%f,%r,%A\n"

If the output starts by >> or > then it is a file. Use >> to append to an existing file, and use > to overwrite it. If the output starts by a | then the output is a shell command, like in the example below:

stat "|logger -p local7.info" "%T{%T},%i,%f,%r,%A\n"

The format string gets substituted as URL checks format string: %r gets substituted by the recipient, %f by the sender, and so on. See the FORMAT STRINGS section for a complete list of available substitutions.

There is also an always-matching log ACL clause that can be used to send a formated string to syslog with LOG_INFO level. Here is an example:

racl continue rcpt /@example\.com$/ log "I was here"

## COMMAND-LINE FLAG EQUIVALENTS
Most milter-greylist(8) command-line options have equivalent options that can be set in the configuration file. Note that if a command line option is supplied, it will always override the configuration file.

If a command-line equivalent keyword is used more than once, the last keyword will override the previous ones.

verbose

Enable debug output. This is equivalent to the -v flag.

quiet

Do not tell clients how much time remains before their e-mail will be accepted. This is equivalent to the -q flag.

nodetach

Do not fork and go into the background. This is equivalent to the -D flag.

noauth

Greylist clients regardless if they succeeded SMTP AUTH or STARTTLS. Equivalent to the -A flag.

noaccessdb

Normally milter-greylist(8) will whitelist a message if sendmail(8) defines a ${greylist} macro set to WHITE. This enables complex whitelisting rules based on the Sendmail access DB. This option inhibits this behavior.

nospf

Greylist clients regardless if they are SPF-compliant. Equivalent to the -S flag.

testmode

Enable test mode. Equivalent to the -T flag. This option is deprecated.

greylist

The argument sets how much time milter-greylist(8) will want the client to wait between the first attempt and the time the message is accepted. The time is given in seconds, except if a unit is given: m for minutes, h for hours, and d for days. The greylist keyword is equivalent to the -w option. Here is an example that sets the delay to 45 minutes:

greylist 45m

autowhite

This sets the auto-whitelisting duration, equivalent to the -a command-line option. As for the greylist keyword, units can be supplied. Here is an example for a 3 day long auto-whitelisting:

autowhite 3d

pidfile

This causes milter-greylist(8) to write its PID into the file given as argument, like the -P command line argument does. The path to the file must be absolute and it must be enclosed in quotes. Here is an example:

pidfile "/var/run/greylist.pid"

dumpfile

This chooses the location of the greylist dump file, like the -d command line option does. The path must be absolute and enclosed in quotes. It can optionally be followed by an octal permission mode. Example:

dumpfile "/var/milter-greylist/greylist.db" 640

subnetmatch

This is equivalent to the -L command line option. It takes a slash followed by a CIDR mask as argument, and it commands the subnet matching feature. Example, for a class C wide matching:

subnetmatch /24

subnetmatch6

This is equivalent to the -M command line option. It takes a slash followed by a prefixlen as argument, and it commands the subnet matching feature. Example, for a subnet wide matching:

subnetmatch6 /64

socket

Like the -p command line option, this keyword is used to specify the socket used to communicate with sendmail(8). It must be enclosed in quotes and can optionally be followed by an octal permission mode (valid values are 666, 660 or 600, other values cause an error):

socket "/var/milter-greylist/milter-greylist.sock" 660

user

This keyword should be followed by a quoted user login and optionally a colon followed by a groupname. Like the -u option, this is used to run milter-greylist(8) as a non root user. Here is an example:

user "smmsp"

## MISCELLANEOUS
These options have no command line equivalent:

logfac

Sets the syslog facility for messages. Can be set to any of the standard facilities: kern, user, mail, daemon, auth, syslog, lpr, news, uucp, cron, authpriv, ftp, local0, local1, local2, local3, local4, local5, local6, local7. Can also be set to none to disable syslog output completely.

timeout

is used to control how long greylist tuples are retained in the database. Value is in seconds, except if a suffix is given (m for minutes, h for hours, d for days). Default is 5 days.

extendedregex

Use extended regular expressions instead of basic regular expressions.

unbracket

Attempt to resolve sender address when the MTA handed it as bracketed IP address (e.g.: [192.0.2.18] ). Default is to leave it as is.

maxpeek

Limit (in bytes) how much of messages are examined for header and body searches.

lazyaw

Make auto-whitelist look at just the IP instead of the (sender IP, sender e-mail address, recipient e-mail address) tuple.

domainexact

match on subdomain boundaries instead of the default suffix matching. E.g. if domainexact is not enabled (the default) then gle.com will match google.com in addition to gle.com. If domainexact is enabled then, domain names will match on subdomain boundaries (e.g. gle.com will match mail.gle.com and gle.com but not google.com)

drac db

Tell where the DRAC DB file is. This is only available if DRAC support was compiled in. Here is an example:

drac db "/usr/local/etc/drac.db"

nodrac

Disable DRAC.

logexpired

This option causes greylist entries that expire to be logged via syslog. This allows you to easily collect the IP addresses and sender names and use them for blacklisting, SPAM scoring, etc. Normally, expiration's are only logged if the debug option is set, but that generates a lot of extra messages.

localaddr

This keyword can be used to manually define the local MTA's IP address for such uses as spf self and p0f in absence of the milter-API {if_addr} macro support in your MTA (Postfix, Sun/Oracle CommSuite Messaging Server). This is not so useful when using Sendmail, since it serves the macro and the local address can be detected automatically.

The configuration file is reloaded automatically once it is modified when new e-mail arrives. Most configuration keywords will take effect immediately, except the following, which will only take effect after a restart of milter-greylist(8): nodetach, pidfile, socket, and user.

The dumpfreq option can be changed dynamically, but the change will only take effect after the next dump.

multiracl

By default, once a RCPT-stage ACL whitelists a recipient, next recipient gets automatically whitelisted. This historical behavior can be considered a bug, and this option disables it.

## FORMAT STRINGS
Various statements in the configuration file accept format strings, where the following % prefixed tokens are substituted. Here is the complete list of available substitutions (Note that some substitutions are not relevant in any context).

%r

the message recipient e-mail address. This is not substituted for DATA stage ACL since there can be multiple recipients for the message.

%f

the message sender e-mail address

%i

the sender machine IP address

%j

the reversed sender machine IP address. For instance, 192.0.2.12 becomes 12.2.0.192.

%I

the sender machine IP address masked by a CIDR. Example: %I{/24}

%d

the sender machine DNS address

%h

the SMTP transaction HELO string

%mr

the mailbox part of %r (before the @ sign). This is not substituted for DATA stage ACL since there can be multiple recipients for the message.

%sr

the site part of %r (after the @ sign). This is not substituted for DATA stage ACL since there can be multiple recipients for the message.

%mf

the mailbox part of %f (before the @ sign)

%sf

the site part of %f (after the @ sign)

%md

the machine part of %d (before the first . sign)

%sd

the site part of %d (after the first . sign)

%Xc

the SMTP code returned

%Xe

the SMTP extended code returned

%Xm

the SMTP message returned

%Xh

the message displayed in the X-Greylist header

%D

Comma-separated list of DNSRBL for which the sender host matched

%M

a sendmail macro value. Examples: %Mj or %M{if_addr}

%g

a regex back reference. For instance, %g{\2} is substituted by the string matching the second parenthesis group in all ACL regex clauses

%T

a brace-enclosed strftime(3) format string that will be substituted by the system time. Example: %T{%Y%m%d:%H%M%S}

%v

milter-greylist's version

%G

Offset to GMT (e.g.: -0100)

%C

Sender IP country code, as reported by GeoIP. This is only available if milter-greylist was built with GeoIP support

%Fx

p0f OS fingerprint genre and detail. This is only available if milter-greylist was built with p0f support.

%V

Shortcut to "milter-greylist-%v (%Mj [%M{if_addr}]); %T{%a, %d %b %Y %T} %G (%T{%Z})"

%S

the action performed: accept, tempfail, or reject.

%A

the line number of the ACL that caused the action.

%a

the id string of the ACL that caused the action. If no id was given, the line number is used instead.

%cA

the line number of the ACL being evaluated, whether it matches or not.

%ca

the id string of the ACL being avaluated, whether it matches or not. If no id was given, the line number is used instead.

%Et

total elapsed time in seconds before a greylisted message has been accepted

%Eh

hours elapsed

%Em

minutes elapsed (modulo one hour)

%Es

seconds elapsed (modulo one minute)

%E

shortcut to %Eh:%Em:Es

%Rt

total remaining time in seconds before a greylisted message will be accepted

%Rh

hours remaining

%Rm

minutes remaining (modulo one hour)

%Rs

seconds remaining (modulo one minute)

%R

shortcut to %Rh:%Rm:Rs

%Hs

SpamAssassin score (if build with SpamAssassin support)

%pn

Name of last LDAP or CURL gathered property that matched an ACL.

%pv

Value of last LDAP or CURL gathered property that matched an ACL.

%pr

Recipient that caused storage of the last matching LDAP or CURL gathered property. %P a LDAP or CURL gathered propery. Example: %P{mail} Note that this copes very badly with multivalued properties.

%Qd

DKIM query result (pass, fail, etc.), if built with DKIM support.

%Qs

SPF query result (pass, (soft)fail, etc.), if built with SPF support.

%QA

Authentication results summary, suitable for Authentication-Results header. Will included formatted query results from DKIM and SPF if checked.

%QS

SPF result, suitable for Received-SPF header. Available when compiled with libspf2.

%%

a single % character

## AUTHORS
Emmanuel Dreyfus <manu@netbsd.org>

milter-greylist received many contributions from (in alphabetical order): Adrian Dabrowski, Aida Shinra, Adam Katz, Alexander Lobodzinski, Alexandre Cherif, Alexey Popov, Andrew McGill, Attila Bruncsak, Benoit Branciard, Bernhard Schneider, Bob Smith, Constantine A. Murenin, Chris Bennett, Christian Pelissier, Cyril Guibourg, Dan Hollis, David Binderman, Denis Solovyov, Elrond, Enrico Scholz, Eugene Crosser, Fabien Tassin, Fredrik Pettai, Gary Aitken, Georg Horn, Gert Doering, Greg Troxel, Guido Kerkewitz, Hajimu Umemoto, Hideki ONO, Ivan F. Martinez, Jacques Beigbeder, Jean Benoit, Jean-Jacques Puig, Jeff Rife, Jim Klimov, Jobst Schmalenbach, Joe Pruett, Joel Bertrand, Johann E. Klasek, Johann Klasek, John Thiltges, John Wood, Jorgen Lundman, Kazuyuki Yoshida, Klas Heggemann, Kouhei Sutou, Laurence Moindrot, Lev Walkin, Manuel Badzong, Markus Wennrich, Mart Pirita, Martin Paul, Matt Kettler, Mattheu Herrb, Matthias Scheler, Matthieu Herrb, Michael Fromme, Moritz Both, Nerijus Baliunas, Ole Hansen, Pavel Cahyna, Pascal Lalonde, Per Holm, Petar Bogdanovic, Petr Kristof, Piotr Wadas, R P Herrold, Ralf S. Engelschall, Ranko Zivojnovic, Remy Card, Rick Adams, Rogier Maas, Romain Kang, Rudy Eschauzier, Stephane Lentz, Steven Hiscocks, Thomas Scheunemann, Tim Mooney, Vincent Dufresne, Wolfgang Solfrank, and Yaroslav Boychuk.

Thanks to Helmut Messerer and Thomas Pfau for their feedback on the first releases of this software.

## SEE ALSO
milter-greylist(8), sendmail(8), syslogd(8).

Evan Harris's paper:

http://projects.puremagic.com/greylisting/

milter-greylist's web site:

http://hcpnet.free.fr/milter-greylist/


minidlna.conf

package: minidlna

title: minidlna.conf(5)

text:
# minidlna.conf(5)

## NAME
minidlna

## DESCRIPTION
minidlna is a light weight but very functional DLNA server. In most cases, the defaults do not need modifications. The global configuration file is /etc/minidlna.conf but local users without system root access can run minidlna with their own configuration file.

## OPTIONS
The following are user configurable options in /etc/minidlna.conf. minidlna runs by default as user nobody, so make sure system permissions are set correctly for read access to media and write access to cache and log dirs.

friendly_name

The name you want your media server seen as, EG: friendly_name=Home Media Server

port

```
Port for HTTP (descriptions, SOAP, media transfer) traffic etc, defaults to 8200.
There should be no need to change this.
```

network_interface

Network interfaces to serve, comma delimited. Maximum is 8 interfaces. Defaults to all.

strict_dlna

```
Set this to strictly adhere to DLNA standards.
This will allow server-side downscaling of very large JPEG images,
which may hurt JPEG serving performance on (at least) Sony DLNA products.
```

notify_interval

Notify interval in seconds. The default is 895 seconds.

minissdpdsocket

```
Specify the path to the MiniSSDPd socket,
EG: minissdpdsocket=/var/run/minissdpd.sock
```

serial

```
Serial number the daemon will report to clients in its XML description.
Defaults to 12345678
```

model

```
Model number the daemon will report to clients in its XML description.
Defaults to 1
```

media_dir

```
Path to the directory containing the media files minidlna should share.
Use this option multile times if you have more than one directory to share.
Example:

 media_dir=/opt/multimedia/videos

 media_dir=/opt/multimedia/movies
```

You can also restrict an entry to a specific media type, you do this by using the following syntax:

```
   the letter 'A', 'V' or 'P', followed by a comma (',') followed by the path.

   The meaning of the first letter is as follows:

                      'A' for audio files

                      'V' for video files

                      'P' for image files

    For example, if you want to include only video files located

    in /opt/multimedia/videos directory, and only music

    in /opt/multimedia/music, then you would use

                       media_dir=V,/opt/multimedia/videos

                       media_dir=A,/opt/multimedia/music

    Another example would be

                       media_dir=V,/opt/multimedia/videos

                       media_dir=V,/opt/multimedia/movies

                       media_dir=A,/opt/multimedia/music

    Or, if you did not care what type it finds, then you could use

                       media_dir=/opt/multimedia/videos

                       media_dir=/opt/multimedia/movies

                       media_dir=/opt/multimedia/music

    You can mix it up, find anything in music, but only Videos, in videos and movies

                       media_dir=V,/opt/multimedia/videos

                       media_dir=V,/opt/multimedia/movies

                       media_dir=/opt/multimedia/music
```

presentation_url

```
Default presentation url is http address on port 80
EG: presentation_url=http://www.mediaserver.lan/index.php
```

db_dir

Where minidlna stores the data files, including Album cache files, by default this is /var/cache/minidlna

log_dir

Path to the directory where the log file upnp-av.log should be stored, this defaults to /var/log

log_level

Set this to change the verbosity of the information that is logged each section can use a different level: off, fatal, error, warn, info, or debug

```
Example
log_level=general,artwork,database,inotify,scanner,metadata,http,ssdp,tivo=warn
```

inotify

Set to 'yes' to enable inotify monitoring of the files under media_dir to automatically discover new files. Set to 'no' to disable inotify.

album_art_names

This should be a list of file names to check for when searching for album art and names should be delimited with a forward slash ("/").

```
Example
album_art_names=Cover.jpg/cover.jpg/AlbumArtSmall.jpg/albumartsmall.jpg/AlbumArt.jpg
/albumart.jpg/Album.jpg/album.jpg/Folder.jpg/folder.jpg/Thumb.jpg/thumb.jpg

```

enable_tivo

Set this to yes to enable support for streaming .jpg and .mp3 files to a TiVo supporting HMO, default is no.

tivo_discovery

Set this to 'beacon' to use the legacy TiVo broadcast discovery method. Defaults to using Bonjour if Avahi support is available.

root_container

Use a different container as the root of the tree exposed to clients.

```
The possible values are:

             '.' to use the standard container (this is the default)

             'B' to use the "Browse Directory" container;

             'M' to use the "Music" container;

             'V' to use the "Video" container;

             'P' to use the "Pictures" container.

  If you specify 'B' and the client device is audio only, then

  "Music/Folders" will be used as root container and you wont see Videos.
```

force_sort_criteria

Always force SortCriteria to this value, regardless of the SortCriteria passed by the client.

```
You may prepend the sort criteria with "!" to alter the titles of the objects so that they
will be alphanumerically sorted in the order you specify here, to work around clients that do
their own alphanumeric sorting.

Example
force_sort_criteria=+upnp:class,+upnp:originalTrackNumber,+dc:title

```

wide_links

Set to 'yes' to allow symlinks that point outside user-defined media_dirs. By default, wide symlinks are not followed.

enable_subtitles

Set to 'no' to disable subtitle support on unknown clients. By default, subtitles are enabled for unknown or generic clients.

## VERSION
This manpage corresponds to minidlna version 1.3.0

## AUTHOR

```
minidlna developed by Justin Maggard  https://sourceforge.net/projects/minidlna/
man page written by Noel Butler <noelb@ausics.net>
```

## LICENSE
GPL

## FILES
/etc/minidlna.conf

## SEE ALSO

minidlna(8)


miredo.conf

package: miredo

title: miredo.conf(5)

summary: configuration for Miredo

text:
# miredo.conf(5)

## NAME
miredo.conf - configuration for Miredo

## SYNOPSIS
miredo.conf

## DESCRIPTON
miredo.conf is the configuration file for Miredo. Each configuration directive consists of one directive name, possibly followed by one or several spaces and a value for the directive. White spaces, empty lines and lines starting with '#' are ignored.

Directives are case-insensitive. A comprehensive list of the supported directives follows:

## MODES
RelayType (client|autoclient|relay|cone|restricted)

Specifies what type of Teredo relay/client Miredo will serve as. There are three possible choices:

client mode (the default)

In client mode, Miredo acts as a Teredo client. Miredo will first authenticate with a Teredo server (see ServerAddress), and if successful, will setup a Teredo tunneling interface with a public Teredo IPv6 address and a default IPv6 route. That virtual networking interface can be used to reach the IPv6 Internet as well as Teredo clients. The use of Miredo as a Teredo client allows nodes to get an IPv6 connectivity from behind a NAT router device, as it tunnels IPv6 packets over UDP/IPv4 with special support for NAT routers. Routers of that kind usually only forward TCP, UDP, and some ICMP, IPv4 packets (with some limitation).

NOTE: Use of Miredo as a Teredo client is possible even if the system already has IPv6 connectivity through another way (native, 6to4, TSP, etc). In that case, Miredo will only be used to reach other Teredo clients, as its tunneling interface has a default route with a higher metric (which is to say a lower priority) than the other network interfaces.

autoclient is currently an alias for client mode.

cone mode (relay also works)

In cone mode, Miredo acts as a Teredo relay. It will assume that it has public global IPv4 connectivity with no firewall. In other words, the UDP port used by Miredo must receive unsoliticited traffic from the IPv4 Internet (see also BindPort). Miredo will create a virtual networking interface with a route toward Teredo clients. Teredo relays forward IPv6 packets between Teredo clients and the IPv6 Internet. For that to work, Teredo relays MUST have a working IPv6 connectivity through a way distinct from Teredo tunneling (native, 6to4, ISATAP, etc).

Warning: This mode should only be used if the node has a public IPv4 address, or if it is behind a full cone NAT-router with proper port forwarding rules. Otherwise the tunnel will NOT WORK PROPERLY. Note that many NAT port forwarding implementations are broken.

restricted mode

This mode is identical to the cone mode documented above, with the exception that direct Teredo bubbles will be sent. Theoretically (see RFC4380) this permits operation of a Teredo relay from behind a restricted-port NAT. In practice, this makes NAT traversal extremely unreliable. This setting is present for backward syntax compatibility of the miredo.conf file. PLEASE DO NOT USE THIS MODE.

## CLIENT OPTIONS
The following directives are only available in (auto)client mode.

ServerAddress hostname

The ServerAddress directive specifies the hostname or numerical IPv4 address of the Teredo server to use. Teredo clients needs a Teredo server to establish and maintain their IPv6 over UDP/IPv4 tunnel across a NAT device. This directive MUST be specified when Miredo is in client mode. hostname must resolve to a valid IPv4 address. If it is not present, and no server hostname is specified on the command line when starting miredo either, the program will fail.

ServerAddress2 hostname2

Miredo assumes that the secondary Teredo server address equals the primary server address plus one. If that is not the case, this directive must be used.

LocalDiscovery mode

Determines whether the local client discovery procedure is performed. Local discovery works by sending multicast packets on the local network interfaces at regular intervals, announcing a client's Teredo address. If mode is enabled, all the multicast-capable network interfaces with a local IPv4 address will be considered for the exchange of local discovery packets. A value of disabled (the default) will turn off local discovery completely.

## RELAY OPTIONS
The following directives are only available in relay mode. They are not available in (auto)client mode.

InterfaceMTU mtu

This directive overrides the default MTU size of 1280 bytes for the Teredo tunneling interface.

## GENERAL OPTIONS
InterfaceName ifname

Specify the name of the Teredo tunneling interface which Miredo will create ("miredo" by default). On some systems, it is not possible to redefine the tunnel name.

BindAddress bind_address

Bind the Teredo relay or Teredo client to a specific IPv4 address. By default, it is not bound to any particular IPv4 address. Use this option if you have trouble with the default value, such as if you have a multi-homed host with equal-cost IPv4 routing, or if you have specific firewalling constraints.

BindPort udp_port

Define the UDP (IPv4) port number to be used by the relay or client. By default, the operating system allocates an unused port automatically. Use this option if you have firewalling constraints which can cause Miredo to fail when not using a fixed predefined port.

SyslogFacility facility

Specify which syslog's facility is to be used by Miredo for logging. Possible values are: daemon (the default), local0, ... local7, kern and user (see syslog(2)).

## SEE ALSO
miredo(8)

## AUTHOR
Rémi Denis-Courmont <remi at remlab dot net>

http://www.remlab.net/miredo/


miredo-server.conf

package: miredo-server

title: miredo-server.conf(5)

summary: configuration for miredo-server

text:
# miredo-server.conf(5)

## NAME
miredo-server.conf - configuration for miredo-server

## SYNOPSIS
miredo-server.conf

## DESCRIPTON
miredo-server.conf is the configuration file for miredo-server. Each configuration directive consists of one directive name, possibly followed by one or several spaces and a value for the directive. White spaces, empty lines and lines starting with '#' are ignored.

Directives are case-insensitive. A comprehensive list of the supported directives follows:

## SERVER OPTIONS
ServerBindAddress server_ip

Specifies the primary IPv4 address of the Teredo server. miredo-server will bind to UDP/IPv4 port 3544 on this address and waits for packets from Teredo clients. It will advertise the Teredo prefix. A Teredo server needs two subsequent IPv4 addresses. It will wait for UDP IPv4 packets on port 3544 on both addresses. server_ip specifies the lowest of both IPv4 addresses, which is known as the primary IPv4 server address. The secondary IPv4 address should be server_ip + 1 and must also be assigned to the server.

ServerBindAddress2 server_ip2

It is possible to specify a secondary IPv4 server address manually. However, Miredo clients will need manual configuration (with the ServerAddress2 directive in miredo.conf). Other Teredo clients are believed not to support such setup.

InterfaceMTU mtu

This directive overrides the value of the MTU that is advertised to Teredo clients. The default value is 1280 bytes and should not be changed unless a protocol update requires it.

SyslogFacility facility

Specify which syslog's facility is to be used by miredo-server for logging. Possible values are: daemon (the default), local0, ... local7, kern and user (see syslog(2)).

## SEE ALSO
miredo-server(8)

## AUTHOR
Rémi Denis-Courmont <remi at remlab dot net>

http://www.remlab.net/miredo/


mlocate.db

package: mlocate

title: mlocate.db(5)

summary: a mlocate database

text:
# mlocate.db(5)

## NAME
mlocate.db - a mlocate database

## DESCRIPTION
A mlocate database starts with a file header: 8 bytes for a magic number ("\0mlocate" like a C literal), 4 bytes for the configuration block size in big endian, 1 byte for file format version (0), 1 byte for the “require visibility” flag (0 or 1), 2 bytes padding, and a NUL-terminated path name of the root of the database.

The header is followed by a configuration block, included to ensure databases are not reused if some configuration changes could affect their contents. The size of the configuration block in bytes is stored in the file header. The configuration block is a sequence of variable assignments, ordered by variable name. Each variable assignment consists of a NUL-terminated variable name and an ordered list of NUL-terminated values. The value list is terminated by one more NUL character. The ordering used is defined by the strcmp () function.

Currently defined variables are:

prune_bind_mounts

A single entry, the value of PRUNE_BIND_MOUNTS; one of the strings 0 or 1.

prunefs

The value of PRUNEFS, each entry is converted to uppercase.

prunepaths

The value of PRUNEPATHS.

The rest of the file until EOF describes directories and their contents. Each directory starts with a header: 8 bytes for directory time (seconds) in big endian, 4 bytes for directory time (nanoseconds) in big endian (0 if unknown, less than 1,000,000,000), 4 bytes padding, and a NUL-terminated path name of the the directory. Directory contents, a sequence of file entries sorted by name, follow.

Directory time is the maximum of st_ctime and st_mtime of the directory. updatedb(8) uses the original data if the directory time in the database and in the file system match exactly. Directory time equal to 0 always causes rescanning of the directory: this is necessary to handle directories which were being updated while building the database.

Each file entry starts with a single byte, marking its type:

0

A non-directory file. Followed by a NUL-terminated file (not path) name.

1

A subdirectory. Followed by a NUL-terminated file (not path) name.

2

Marks the end of the current directory.

locate(1) only reports file entries, directory names are not reported because they are reported as an entry in their parent directory. The only exception is the root directory of the database, which is stored in the file header.

## AUTHOR
Miloslav Trmac <mitr@redhat.com>

## SEE ALSO
locate(1), updatedb.conf(5), updatedb(8)


updatedb.conf

title: updatedb.conf(5)

summary: a configuration file for updatedb(8)

text:
# updatedb.conf(5)

## NAME
/etc/updatedb.conf - a configuration file for updatedb(8)

## DESCRIPTION
/etc/updatedb.conf is a text file. Blank lines are ignored. A # character outside of a quoted string starts a comment extending until end of line.

Other lines must be of the following form:

VARIABLE = "VALUE"

White space between tokens is ignored. VARIABLE is an alphanumeric string which does not start with a digit. VALUE can contain any character except for ". No escape mechanism is supported within VALUE and there is no way to write VALUE spanning more than one line.

Unknown VARIABLE values are considered an error. The defined variables are:

PRUNEFS

A whitespace-separated list of file system types (as used in /etc/mtab) which should not be scanned by updatedb(8). The file system type matching is case-insensitive. By default, no file system types are skipped. When scanning a file system is skipped, all file systems mounted in the subtree are skipped too, even if their type does not match any entry in PRUNEFS.

PRUNENAMES

A whitespace-separated list of directory names (without paths) which should not be scanned by updatedb(8). By default, no directory names are skipped. Note that only directories can be specified, and no pattern mechanism (e.g. globbing) is used.

PRUNEPATHS

A whitespace-separated list of path names of directories which should not be scanned by updatedb(8). Each path name must be exactly in the form in which the directory would be reported by locate(1). By default, no paths are skipped.

PRUNE_BIND_MOUNTS

One of the strings 0, no, 1 or yes. If PRUNE_BIND_MOUNTS is 1 or yes, bind mounts are not scanned by updatedb(8). All file systems mounted in the subtree of a bind mount are skipped as well, even if they are not bind mounts. As an exception, bind mounts of a directory on itself are not skipped. By default, bind mounts are not skipped.

## NOTES
When a directory is matched by PRUNEFS, PRUNENAMES or PRUNEPATHS, updatedb(8) does not scan the contents of the directory. The path of the directory itself is, however, entered in the created database. For example, if /tmp is in PRUNEPATHS, locate(1) will not show any files stored in /tmp, but it can show the /tmp directory. This behavior differs from traditional locate implementations.

In some updatedb(8) implementations PRUNEPATHS can be used to exclude non-directory files. This is not the case in this implementation.

/etc/updatedb.conf is a shell script in some implementations, which allows much more flexibility in defining the variables. Equivalent functionality can be achieved by using the command-line options to updatedb(8).

## AUTHOR
Miloslav Trmac <mitr@redhat.com>

## SEE ALSO
locate(1), updatedb(8)


indexer.conf

package: mnogosearch

title: indexer.conf(5)

text:
# indexer.conf(5)

## NAME
indexer.conf - configuration file for indexer

## DESCRIPTION
This is configuration file for indexer (1). Configuration file consists of commands and their arguments. All commands are case-insensitive. You can use # to comment out lines.

## Global parameters
These commands should be used only once and take global effect for the whole configuration file.

DBType type

Database type, currently supported values are mysql, pgsql, msql, solid, mssql, oracle, ibase, sqlite Actually it does not matter for native libraries support, but ODBC users must specify one of the supported values. If your database type is not supported, use unknown instead.

DBHost host

SQL host name (Not required for ODBC) Default: localhost

DBName mnogosearch

SQL database name or ODBC DSN Default: mnogosearch

DBUser foo

Database username to connect to database Default: no user

DBPass bar

Database password to connect to database Default: no password

DBMode single/multi/crc/crc-multi

SQL database words storage mode. Does not apply for built-in database. When single is specified, all words are stored in the same table. multi means that words are stored in different tables depending on wordlength. multi mode is usualy faster, but it requires more tables in database. In case of crc mode, mnoGoSearch will store 32 bit integer word ID's calculated by CRC32 algorythm instead of words. crc mode requires less diskspace and is faster than single and multi modes. crc-multi mode shares storage structure with crc mode, but stores words in different tables depending on wordlength like multi mode. Default DBMode value is single

LocalCharset charset

Defines charset for local file system. It is required if you are using 8 bit characters and is not applicable for 7 bit characters. This command is to be used once and takes global effect for the whole configuration file. Example:

LocalCharset windows-1250

CrossWords yes|no

Building CrossWords index. Crosswords are those, that are used in a link to the present page. The default value is no

StopWordFile filename

This command indicates which file contains stopwords list to load. You may specify either absolute file name, or filename with a relative path to mnoGoSearch /etc directory. You may use several StopWordsFile commands.

MinWordLength characters

MinWordLength characters With these commands you can change default length range of words stored in database. By default mnoGoSearch stores words that are longer than 1 and shorter than 32. Example: MaxWordLength 35

MaxDocSize bytes

Specify maximum size of a document in bytes that can be indexed. The default value is 1048576 (1 Mb). This command take global effect for the whole config file.

HTTPHeader header

You may add custom HTTP headers to indexer HTTP request. Do not use "If-modified-since" and "Accept-Charset" headers, since they are composed by indexer itself. "User-Agent: mnoGoSearch/version" is sent too, although you may override it. The command has global effect for the whole configuration file.

ServerTable table_name

This command works only with SQL database and is not applicable for built-in database mode. Load servers with all their parameters from the table table_name For an example of such tables structure, please refer to the file create/mysql/server.txt You may use several arguments with this command: ServerTable my_servers1 my_servers2 my_servers3 or just a single argument: ServerTable server

DeleteNoServer yes|no

Use this command to specify whether to delete the URL that have no corresponding Server commands. Default value is yes

VarDir /path/to/my/var/dir

Specify a custom path to directory that indexer stores data to when use with built-in database and in cache mode. By default /var directory of mnoGoSearch installation is used.

## URL Control Configuration
Allow [Match|NoMatch] {NoCase|Case] [String|Regex] <arg> [<arg> ...]

Use this command to allow URL's that match (does not match) given argument. First three optional parameters describe the type of comparison. Default values are Match, NoCase, String Use NoCase or Case values to to choose case insensitive or sensitive comparison. Use Regex to choose regular expression comparison. Use String to choose string with wildcards comparison. Wildcards are * for any number of characters, and ? for one character. Note that * and ? have special meaning in String match type. Please use Regex to describe documents with ? and * signs in URL. String match is much faster than Regex , so use String where possible. You may use several arguments for one Allow command and use this command any number of times. It takes global effect for the config file. Note that mnoGoSearch automatically adds one Allow regex .* command after reading config file. That command means that everything is allowed that is not disallowed

Disallow [Match|NoMatch] [Case|NoCase] [String|Regex] [<arg> ...]

Use this to disallow indexing documents with URLs that match given argument. The meaning of the first three optional parameters is exactly the same as with the Allow command. You can use several arguments for one Disallow command. Takes global effect for config file.

Example:

\#Exclude cgi-bin and non-parsed-headers

Disallow /cgi-bin/ \.cgi /nph #Exclude some known extensions

Disallow \.b$ \.sh$ \.md5$

Disallow \.arj$ \.tar$ \.zip$ \.tgz$ \.gz$

Disallow \.lha$ \.lzh$ \.tar\.Z$ \.rar$ \.zoo$

Disallow \.gif$ \.jpg$ \.jpeg$ \.bmp$ \.tiff$

Disallow \.vdo$ \.mpeg$ \.mpe$ \.mpg$ \.avi$ \.movie$

Disallow \.mid$ \.mp3$ \.rm$ \.ram$ \.wav$ \.aiff$ \.ra$

Disallow \.vrml$ \.wrl$

Disallow \.exe$ \.cab$ \.dll$ \.bin$ \.class$

Disallow \.tex$ \.texi$ \.xls$ \.doc$ \.texinfo$

Disallow \.rtf$ \.pdf$ \.cdf$ \.ps$

Disallow \.ai$ \.eps$ \.ppt$ \.hqx$

Disallow \.cpt$ \.bms$ \.oda$ \.tcl$

Disallow \.rpm$

\#Exclude Apache directory list in different sort order

Disallow \?D=A$ \?D=A$ \?D=D$ \?M=A$ \?M=D$ \?N=A$ \?N=D$ \?S=A$ \?S=D$

\#Exclude ./. and ./.. from Apache and Squid directory list

Disallow /[.]{1,2} /\%2e /\%2f

CheckOnly regexp [regexp [...] ]

Indexer will use HEAD instead of GET http method for URLs that matches regexp. It means that file will be checked only and will not be downloaded. Usefull for zip,exe,arj etc files. One can use several arguments for one 'CheckOnly' command. One can use this command any times but not more than MAXFILTER in indexer.h Takes global effect for config file.

Examples:

\#Use HEAD method for some known non-text extensions:

CheckOnly \.b$ \.sh$ \.md5$

CheckOnly \.arj$ \.tar$ \.zip$ \.tgz$ \.gz$

CheckOnly \.lha$ \.lzh$ \.tar\.Z$ \.rar$ \.zoo$

CheckOnly \.gif$ \.jpg$ \.jpeg$ \.bmp$ \.tiff$

CheckOnly \.vdo$ \.mpeg$ \.mpe$ \.mpg$ \.avi$ \.movie$

CheckOnly \.mid$ \.mp3$ \.rm$ \.ram$ \.wav$ \.aiff$

CheckOnly \.vrml$ \.wrl$

CheckOnly \.exe$ \.cab$ \.dll$ \.bin$ \.class$

CheckOnly \.tex$ \.texi$ \.xls$ \.doc$ \.texinfo$

CheckOnly \.rtf$ \.pdf$ \.cdf$ \.ps$

CheckOnly \.ai$ \.eps$ \.ppt$ \.hqx$

CheckOnly \.cpt$ \.bms$ \.oda$ \.tcl$

CheckOnly \.rpm$

HrefOnly regexp [regexp [...] ]

Indexer scans html documents that match regexp as it would scan any other URLs, except that it will not index the contents. It will add any URLs it finds in html document to database. Usefull when indexing mail list archives with big index pages which contain mostly URLs. One can use several arguments for one 'HrefOnly' command. One can use this command any times but not more than MAXFILTER in indexer.h Takes global effect for config file.

Examples:

\#Scan these files for href tags only, but do not index there contents.

HrefOnly mail.*\.html$ thr.*\.html$

## MIME types and external parsers
UseRemoteContentType yes|no

This command specifies if the indexer should get content type from HTTP server headers (yes) , or from its AddType settings (no). If set to no , and the indexer could not determine content-type with its AddType settings,

SyslogFacility facility

Useful only if indexer is compiled with syslog support and if you do not like the default. Argument is the same as used in syslog.conf file (for example: local7 , daemon ). For list of possible facilities see syslog.conf(5) Takes global effect and should be used only once ! Default: depends on compilation.

LogdAddr host[:port]

Use cachelogd at given host and port if specified. Required for cache mode only. Default values are localhost and port 7000

FollowOutside yes|no

Allow/disallow indexer to walk outside current server. Should be used carefully (see MaxHops command). Default: no

Period seconds

Reindex period in seconds, 604800 = 1 week. May be used before every Server command and takes effect till the end of config file or till next Period command.

Tag number

Use this parameter for your own purposes. For example for grouping some servers into one group, etc. May be used multiple times before every Server command and takes effect till the end of config file or till next Tag command.

MaxHops number

Maximum way in "mouse clicks" from start URL given in Server command. May be used multiple times before every Server command and takes effect till the end of config file or till next MaxHops command. Default: 256

MaxNetErrors number

Maximum network errors for each server. If there are too many network errors on some server (server is down, host unreachable etc.) indexer will try not to do more than number attempts to connect to this server. May be used multiple times before Server command and takes effect till the end of config file or till next MaxNetErrors command. Default: 16

TitleWeight number

Weight of the words in the <title>...</title> Can be set multiple times before Server command and takes effect till the end of config file or till next TitleWeight command. Default: 2

BodyWeight number

Weight of the words in the ... of the html documents and in the contents of the text/plain documents. Can be set multiple times before Server command and takes effect till the end of config file or till next BodyWeight command. Default: 1

DescWeight number

Weight of the words in the <META NAME="Description" Content="..."> Can be set multiple times before Server command and takes effect till the end of config file or till next DescWeight command. Default: 2

KeywordWeight number

Weight of the words in the <META NAME="Keywords" Content="..."> Can be set multiple times before Server command and takes effect till the end of config file or till next KeywordWeight command. Default: 2

UrlWeight number

Weight of the words in the URL of the documents. Can be set multiple times before Server command and takes effect till the end of config file or till next UrlWeight command. Default: 0

DeleteBad yes|no

Prevent indexer from deleting bad (not found, forbidden etc) URLs from database. Useful if you want to check 'integrity' of you server(s), so if you set it to no , that "bad" URLs will remain in database. Can be set multiple times before Server command and takes effect till the end of config file or till next DeleteBad command. Default: yes

Robots yes|no

Allows/disallows using robots.txt and <META NAME="robots"> exclusions. Useful if you want to check 'integrity' of you server(s). Can be set multiple times before Server command and takes effect till the end of config file or till next Robots command. Default: yes.

Section <string> <number>

where <string> is a section name and <number> is section ID between 0 and 255. Use 0 if you don't want to index some of these sections. It is better to use different sections IDs for different documents parts. In this case during search time you'll be able to give different weight to each part or even disallow some sections at a search time.

Index yes|no

Prevent indexer from storing words into database. Useful if you want to check 'integrity' of you server(s). Can be set multiple times before "Server" command and takes effect till the end of config file or till next Index command. Note: Instead of Index no you can use the alternate form NoIndex

Default: yes

Follow yes|no

Allow/disallow indexer to store  into database. Can be set multiple times before Server command and takes effect till the end of config file or till next Follow command. Note: Instead of Follow no you can use the alternate form NoFollow

Default: yes

MaxDocSize size

Hope the name is self-explanatory, this command is to limit maximum document size. size is in bytes. If there is document with size more than size , indexer will parse only first size bytes of documents.

Default: 1048576 (which is 1 megabyte)

Mime

<from_mime> <to_mime>[;charset] ["command line [$1]"] This is used to add support for parsing documents with mime types other than text/plain and text/html. It can be done via external parser (which should provide output in plain or html text) or just by substituting mime type so indexer can understand it directly.

<from_mime> and <to_mime> are standard mime types. <to_mime> should be either text/plain or text/html , because these are the only types that indexer understands.

We assume external parser generates results on stdout (if not, you have to write a little script and cat results to stdout).

Optional charset parameter used to change charset if needed.

Command line parameter is optional. If there's no command line, this is used to change mime type. Command line could also have $1 parameter which stands for temporary file name. Some parsers could not operate on stdin, so indexer creates temporary file for parser and its name passed instead of $1.

CharSet charset

Useful for 8 bit character sets. WWW-servers send data in different character sets. charset is default character set of server in next Server command(s). May be used before every Server command and takes effect till the end of config file or till next CharSet command. By now indexer supports Cyrillic koi8-r, cp1251, cp866, iso8859-5, x-mac-cyrillic, Arabic cp1256, Western iso-8859-1, Central Europe iso-8859-2 and cp1250 character sets.

This parameter is default character set for "bad" servers that do not send information about charset in header: just "Content-type: text/html" instead of for example "Content-type: text/html; charset=koi8-r" and do not send charset information in META tags.

CharSet command.

Examples:

CharSet koi8-r

CharSet windows-1250

CharSet ISO-8859-1

ForceIISCharset1251 yes/no

This option is useful for users dealing with Cyrillic content and broken (or misconfigured?) Microsoft IIS web servers, which tends to report charset incorrectly. This is a really dirty hack, but if this option is turned on it is assumed that all servers that are reported as 'Microsoft' or 'IIS' have content in Windows-1251 codepage. This command should be used only once in configuration file and takes global effect. Default: no

AuthBasic login:passwd

Use basic http authorization. Can be set before every Server command and takes effect only for next Server command.

Examples:

AuthBasic somebody:something

If you have password protected directory(ies), but whole server is open, use:

AuthBasic login1:passwd1

Server http://my.server.com/my/secure/directory1/

AuthBasic login2:passwd2

Server http://my.server.com/my/secure/directory2/

Server http://my.server.com/

ProxyAuthBasic login:passwd

Use http proxy basic authorisation. Can be used before every Server command and taked effect only for the next one Server command! It should be also before Proxy command.

Example:

ProxyAuthBasic somebody:smth

Proxy your.proxy.host[:port]

Connect ia proxy rather directly. You can index ftp servers (only) when using proxy. If port is not specified, it is set to default value of 3128 (Squid). If proxy host is not specified, direct connection will be performed. Can be set before every Server command and takes effect till the end of config file or till next Proxy command.

Examples:

Proxy atoll.anywhere.com

- proxy on atoll.anywhere.com, port 3128 Proxy lota.anywhere.com:8090

- proxy on lota.anywhere.com, port 8090

Proxy

- turn off proxy usage (direct connection)

Server URL

It is the main configuration command. Use this to add start URL of server to be indexed. You may use many Server commands in the same indexer.conf file

Examples:

Server http://localhost/

Server http://www.yoursite.com/

Server http://www.yoursite.com/~yourname/

Server ftp://ftp.yourdomain.com/pub/

## EXAMPLE
This is a minimal sample indexer config file

DBHost localhost

DBName udmsearch

DBUser foo

DBPass bar

Server http://localhost/

Disallow /cgi-bin/ \.cgi /nph

Disallow \.b$ \.sh$ \.md5$

Disallow \.arj$ \.tar$ \.zip$ \.tgz$ \.gz$

Disallow \.lha$ \.lzh$ \.tar\.Z$ \.rar$ \.zoo$

Disallow \.gif$ \.jpg$ \.jpeg$ \.bmp$ \.tiff$

Disallow \.vdo$ \.mpeg$ \.mpe$ \.mpg$ \.avi$ \.movie$

Disallow \.mid$ \.mp3$ \.rm$ \.ram$ \.wav$ \.aiff$ \.ra$

Disallow \.vrml$ \.wrl$

Disallow \.exe$ \.cab$ \.dll$ \.bin$ \.class$

Disallow \.tex$ \.texi$ \.xls$ \.doc$ \.texinfo$

Disallow \.rtf$ \.pdf$ \.cdf$ \.ps$

Disallow \.ai$ \.eps$ \.ppt$ \.hqx$

Disallow \.cpt$ \.bms$ \.oda$ \.tcl$

Disallow \.rpm$

Disallow \?D=A$ \?D=A$ \?D=D$ \?M=A$ \?M=D$ \?N=A$ \?N=D$ \?S=A$ \?S=D$

Disallow /[.]{1,2} /\%2e /\%2f

## SEE ALSO
indexer(1), syslog.conf(5)


mono-config

package: mono-core

title: mono-config(5)

summary: Mono runtime file format configuration

text:
# mono-config(5)

## NAME
mono-config - Mono runtime file format configuration

## DESCRIPTION
The Mono runtime will load configuration data from the installation prefix /etc/mono/config file, the ~/.mono/config or from the file pointed by the MONO_CONFIG environment variable.

For each assembly loaded a config file with the name: /path/to/the/assembly.exe.config is loaded as well as the ~/.mono/assemblies/ASSEMBLY/ASSEMBLY.EXT.config file.

This file controls the behavior of the runtime.

The file contains an XML-like file with various sections, all of them contained inside a section (It actually uses GMarkup to parse the file).

This page describes the Unix-specific and Mono-specific extensions to the configuration file; For complete details, see the http://www.mono-project.com/Config web page.

## <dllmap> directive
You use the dllmap directive to map shared libraries referenced by P/Invoke in your assemblies to a different shared library.

This is typically used to map Windows libraries to Unix library names. The dllmap element takes two attributes:

dll

This should be the same string used in the DllImport attribute, optionally prefixed with "i:" to indicate that the string must be matched in a case-insensitive way

target

This should be the name of the library where the function can be found: this name should be suitable for use with the platform native shared library loading routines (dlopen etc.), so you may want to check the manpages for that, too.

## <dllentry> directive
This directive can be used to map a specific dll/function pair to a different library and also a different function name. It should appear inside a dllmap element with only the dll attribute specified.

The dllentry element takes 3 attributes:

dll

This is the target library, where the function can be found.

name

This is the name of the function as it appears in the metadata: it is the name of the P/Invoke method.

target

This is the name of the function to lookup instead of the name specified in the P/Invoke method.

## Mapping based on operating system and cpu
Both the dllmap and the dllentry elements allow the following two attributes which make it easy to use a single configuration file and support multiple operating systems and architectures with different mapping requirements:

os

This is the name of the operating system for which the mapping should be applied. Allowed values are: linux, osx, solaris, freebsd, openbsd, netbsd, windows, aix, hpux.

cpu

This is the name of the architecture for which the mapping should be applied. Allowed values are: x86, x86-64, sparc, ppc, s390, s390x, arm, mips, alpha, hppa, ia64.

wordsize

This is the size of registers on the target architecture, it can be either 32 or 64.

The attribute value for both attributes can be a comma-separated list of the allowed values. Additionally, the first character may be a '!' to reverse the meaning. An attribute value of "!windows,osx", for example, would mean that the entry is considered on all operating systems, except on Windows and OS X. No spaces are allowed in any part of the value.

Note that later entries will override the entries defined earlier in the file.

## EXAMPLES
The following example maps references to the `cygwin1.dll' shared library to the `libc.so.6' file.

```
<configuration>
	<dllmap dll="i:cygwin1.dll" target="libc.so.6"/>
</configuration>
```

The library name in the DllImport attribute is allowed to be in any case variant, like the following examples:

```
	[DllImport ("cygwin1.dll")]
	[DllImport ("Cygwin1.dll")]
	[DllImport ("cygwiN1.Dll")]
```

This one maps the following C# method:

```
	[DllImport ("libc")]
	static extern void somefunction ();
```

to differentfunction in libdifferent.so , but to the same function in the library libanother.so when running under the Solaris and FreeBSD operating systems.

```
<configuration>
	<dllmap dll="libc">
		<dllentry dll="libdifferent.so" name="somefunction" target="differentfunction" />
		<dllentry os="solaris,freebsd" dll="libanother.so" name="somefunction" target="differentfunction" />
	</dllmap>
</configuration>
```

## SEE ALSO
mono(1), monodis(1), mint(1)