Split configfiles out of TeX document.
authorTobias Pape <tobias@netshed.de>
Tue, 25 Mar 2014 02:59:49 +0000 (03:59 +0100)
committerTobias Pape <tobias@netshed.de>
Tue, 25 Mar 2014 02:59:49 +0000 (03:59 +0100)
This gives us the possibilty to give complete, downloadable
examles; All config files are linked to a modifieable URL,
the default being https://bettercrypto.org/static/configuration/...

Next step: replace ciphersuite automatically in those config files?

Most configfiles are based on their Debian Wheezy, sometime Jessie,
defaults.

55 files changed:
src/Makefile
src/applied-crypto-hardening.tex
src/common/commands.tex
src/common/configfiles.tex [new file with mode: 0644]
src/common/lstautounindent.tex [new file with mode: 0644]
src/common/style.tex
src/common/system.tex
src/configuration/DBs/MySQL/my.cnf [new file with mode: 0644]
src/configuration/DBs/PostgreSQL/9.1/postgresql.conf [new file with mode: 0644]
src/configuration/DBs/PostgreSQL/9.3/postgresql.conf [new file with mode: 0644]
src/configuration/GPG/GnuPG/gpg.conf [new file with mode: 0644]
src/configuration/IM/Charybdis/ircd.conf [new file with mode: 0644]
src/configuration/IM/ejabberd/ejabberd.cfg [new file with mode: 0644]
src/configuration/Kerberos/krb5/kdc.conf [new file with mode: 0644]
src/configuration/Kerberos/krb5/krb5.conf [new file with mode: 0644]
src/configuration/MailServers/Dovecot/10-ssl.conf [new file with mode: 0644]
src/configuration/MailServers/Exim/configure.client [new file with mode: 0644]
src/configuration/MailServers/Exim/configure.msa [new file with mode: 0644]
src/configuration/MailServers/Exim/configure.server [new file with mode: 0644]
src/configuration/MailServers/Postfix/main.cf [new file with mode: 0644]
src/configuration/MailServers/Postfix/master.cf [new file with mode: 0644]
src/configuration/MailServers/cyrus-imapd/cyrus.conf [new file with mode: 0644]
src/configuration/MailServers/cyrus-imapd/imapd.conf [new file with mode: 0644]
src/configuration/Proxies/Pound/pound.cfg [new file with mode: 0644]
src/configuration/Proxies/Squid/squid.conf [new file with mode: 0644]
src/configuration/SSH/OpenSSH/6.0/sshd_config [new file with mode: 0644]
src/configuration/SSH/OpenSSH/6.5/sshd_config [new file with mode: 0644]
src/configuration/SSH/OpenSSH/6.6/sshd_config [new file with mode: 0644]
src/configuration/VPNs/OpenVPN/client.conf [new file with mode: 0644]
src/configuration/VPNs/OpenVPN/server.conf [new file with mode: 0644]
src/configuration/VPNs/OpenVPN/vars [new file with mode: 0644]
src/configuration/VPNs/tinc/tinc.conf [new file with mode: 0644]
src/configuration/Webservers-legacy/Apache/000-default-ssl [new file with mode: 0644]
src/configuration/Webservers-legacy/Apache/ports.conf [new file with mode: 0644]
src/configuration/Webservers-legacy/nginx/default [new file with mode: 0644]
src/configuration/Webservers/Apache/default-ssl [new file with mode: 0644]
src/configuration/Webservers/Apache/hsts-vhost [new file with mode: 0644]
src/configuration/Webservers/lighttpd/10-ssl-dh.conf [new file with mode: 0644]
src/configuration/Webservers/lighttpd/10-ssl.conf [new file with mode: 0644]
src/configuration/Webservers/lighttpd/11-hsts.conf [new file with mode: 0644]
src/configuration/Webservers/nginx/default [new file with mode: 0644]
src/configuration/Webservers/nginx/default-ec [new file with mode: 0644]
src/configuration/Webservers/nginx/default-hsts [new file with mode: 0644]
src/conventions.tex [new file with mode: 0644]
src/img/ConfigIcns.pdf [new file with mode: 0644]
src/practical_settings/DBs.tex
src/practical_settings/GPG.tex
src/practical_settings/im.tex
src/practical_settings/kerberos.tex
src/practical_settings/mailserver.tex
src/practical_settings/proxy_solutions.tex
src/practical_settings/ssh.tex
src/practical_settings/vpn.tex
src/practical_settings/webserver.tex
src/theory/cipher_suites/recommended.tex

index 767709f..fbf7649 100644 (file)
@@ -41,6 +41,7 @@ epub:
 
 upload:
        rsync -avz --progress --no-p --no-g --no-t applied-crypto-hardening.pdf www.bettercrypto.org:/var/www/static/
+       rsync -avz --progress --no-p --no-g --no-t configuration www.bettercrypto.org:/var/www/static/
 
 www:   pdf upload
 
index 724008e..cb3a30a 100644 (file)
 \documentclass{scrreprt}
 \fi
 \input{common/system}
+\input{common/lstautounindent}
 \input{common/style}
 \input{common/commands}
+\input{common/configfiles}
+
+\configurationbaseurl{https://bettercrypto.org/static/}
 
 \begin{document}
 \input{title}
@@ -21,6 +25,7 @@
 \input{acknowledgements}
 \input{abstract}
 \tableofcontents
+\lstlistoflistings
 \chapter{Introduction}
 \label{chapter:Intro}
 \input{whoshouldread}
 \input{disclaimer}
 \input{motivation}
 \input{methods}
+\input{conventions}
 %%
+
 \chapter{Practical recommendations}
 \label{chapter:PracticalSettings}
+\startconfigfiles
 \input{practical_settings}
+\stopconfigfiles
 %%
 \chapter{Theory}
 %\epigraph{``Number theorists are like lotus-eaters - having tasted this food they can never give it up.''}{Leopold Kronecker}
index 95ef7d3..d5468da 100644 (file)
 \usepackage{seqsplit} % Use Sequence split. Basically it inserts between every character pair a box with zero width to allow linebreaks everywhere. Better solution wanted, but is there any better?
 \CatchFileDef{\cipherStringB}{common/cipherStringB.tex}{\endlinechar=-1 }%
 
+\newcommand\warningbox[1]{
+\par\leavevmode\noindent%
+\fcolorbox{black}{pink!20}{\parbox{.99\linewidth}{%
+\begingroup
+\vspace*{.2\baselineskip}%
+\addtolength{\textwidth}{-.4\baselineskip}
+  #1%
+\vspace*{.2\baselineskip}%
+\endgroup
+}}\par}
+
+\newcommand\ttbox[1]{
+\par\leavevmode\noindent%
+\fcolorbox{black}{black!10}{\parbox{.99\linewidth}{%
+    \texttt{#1}%
+}}}
+
+
 %%% Local Variables: 
 %%% mode: latex
 %%% TeX-master: "../applied-crypto-hardening"
diff --git a/src/common/configfiles.tex b/src/common/configfiles.tex
new file mode 100644 (file)
index 0000000..25062fe
--- /dev/null
@@ -0,0 +1,98 @@
+%%%
+%%% Applied Crypto Hardening
+%%% bettercrypto.org
+%%%
+%%% configfiles.tex -- macros for automatically inserting config file parts
+%%%
+%%%
+
+%%%
+%%    I need dis
+%%%
+\RequirePackage{etoolbox}
+
+% for convenienc
+\newwrite\configfileout
+\immediate\openout\configfileout configfiles.txt
+
+% do not trace everything
+\newif\iftracingsections
+\tracingsectionsfalse
+\newcommand*\currentsectionname{}%
+\newcommand*\currentsubsectionname{}%
+
+\makeatletter
+\def\@configurationdir{configuration}
+\newcommand*\configurationdir[1]{%
+  \gdef\@configurationdir{#1}}
+\def\@configurationbaseurl{}
+\newcommand*\configurationbaseurl[1]{%
+  \gdef\@configurationbaseurl{#1}}
+
+% patch the section command to record information for our config files
+
+\pretocmd{\@sect}{%
+  \iftracingsections%
+    \def\sectn@me{section}%
+    \def\subsectn@me{subsection}%
+    \def\tempa{#1}%
+    \edef\tempn@me{#8}%
+    \ifx\tempa\sectn@me\relax%
+      \expandafter\xdef\expandafter\currentsectionname{\tempn@me}%
+    \else\relax\fi%
+    \ifx\tempa\subsectn@me\relax%
+      \expandafter\xdef\expandafter\currentsubsectionname%
+        {\tempn@me}\else\relax\fi%
+  \fi
+}{}{}
+
+%
+%
+%  \configfile[args]{filename}{range}
+%  --> \lstinputlisting[linerange={range},args]{configurations/Section/Subsection/filename}
+%
+\newcommand*\configfile[4][]{%
+  \iftracingsections%
+    \edef\configfilen@me{\@configurationdir/\currentsectionname/\currentsubsectionname/#2}
+    \edef\configfilename{\expandafter\detokenize\expandafter{\configfilen@me}}
+    \def\configfilepres{\expandafter\protect\expandafter\path\expandafter{\configfilename}}
+    \immediate\write\configfileout{\configfilename}
+    \lstinputlisting[%
+      linerange={#3},%
+      autounindent,%
+      frame=single,%
+      caption={[#4\\\configfilepres]%
+          #4\\\mbox{\protect\href{\@configurationbaseurl\configfilename}{%
+              {\upshape [\configfilepres]}%
+        }}}
+      #1]{\configfilename}%
+    \marginpar{\vspace*{-2\baselineskip}\protect\href{\@configurationbaseurl\configfilename}{%
+        \includegraphics[height=2\baselineskip]{img/ConfigIcns}}}
+  \else%
+    \@warning{\string\configfile outside a sectiontraced region}%
+  \fi%
+}
+
+%
+% start tracing section commands to record (sub)section names
+\newcommand*\startconfigfiles{%
+  \tracingsectionstrue%
+}
+
+%
+% stop tracing section commands
+\newcommand*\stopconfigfiles{%
+  \tracingsectionsfalse%
+  \renewcommand*\currentsectionname{%
+    \@warning{\string\currentsectionname outside sectiontraced region}}%
+  \renewcommand*\currentsubsectionname{%
+    \@warning{\string\currentsubsectionname outside sectiontraced region}}%
+}%
+
+% ok, we're done here
+\makeatother
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "../applied-crypto-hardening"
+%%% End:
diff --git a/src/common/lstautounindent.tex b/src/common/lstautounindent.tex
new file mode 100644 (file)
index 0000000..bea8def
--- /dev/null
@@ -0,0 +1,127 @@
+%
+%
+% https://tex.stackexchange.com/questions/151208/how-to-remove-the-leading-unnecessary-white-spaces-when-using-linerange-option/164610#164610
+
+\makeatletter
+
+% -------- ugly details --------
+
+% custom key
+\lst@Key{autounindent}f[t]{\lstKV@SetIf{#1}\lst@ifautounindent}
+
+% --- accumulation of tokens ---
+\toks@={
+    \lst@DefSaveDef{`\ }\lsts@myspace{\processmyspace}
+    %\lst@DefSaveDef{`\^^I}\lsts@mytab{\processmytab}
+}
+
+
+% --- egreg's helper function for accumulating tokens ---
+\def\add@savedef#1#2{%
+  \begingroup\lccode`?=#1\relax
+  \lowercase{\endgroup
+  \edef\@temp{%
+    \noexpand\lst@DefSaveDef{\number#1}%
+    \expandafter\noexpand\csname lsts@?\endcsname{\noexpand#2% % I had to swap things around to fix a bug here;
+      \expandafter\noexpand\csname lsts@?\endcsname}%          % otherwise, comment highlighting would be broken.
+  }}%
+  \toks@=\expandafter{\the\expandafter\toks@\@temp}%
+}
+
+\count@=33
+\loop
+    \add@savedef\count@\processchar
+  \ifnum\count@<127
+  \advance\count@\@ne
+\repeat
+
+% --- to keep track of the state ---
+\newcount\spacesToGobble
+\newcount\spacesGobbledSoFar
+\newif\ifafterindent
+\newif\ifonBasisLine
+\newif\ifPostponeCountToNextLine
+
+
+\lst@AddToHook{Init}
+{%
+  \lst@ifautounindent%
+    % patch hook macros
+    \let\@ddedToInitVarsBOLhook\@@ddedToInitVarsBOLhook%
+    \let\@ddedToEOLhook\@@ddedToEOLhook%
+    % initialise things
+    \global\onBasisLinetrue%
+    \global\afterindentfalse%
+    \global\spacesToGobble=0%
+    \lst@ifincluderangemarker%
+      \ifnum9999999=\lst@firstline% (i.e. if firstline option not used)
+        \global\PostponeCountToNextLinetrue%
+      \fi
+    \fi
+  \fi
+}
+
+
+\lst@AddToHook{SelectCharTable}
+{%
+    \lst@ifautounindent%
+        \lst@lAddTo\lst@DeveloperSCT{\the\toks@}%
+    \fi
+}
+
+
+\lst@AddToHook{InitVarsBOL}{\@ddedToInitVarsBOLhook}
+\newcommand\@ddedToInitVarsBOLhook{}
+\newcommand\@@ddedToInitVarsBOLhook
+{%
+  \global\afterindentfalse%
+}
+
+\lst@AddToHook{EOL}{\@ddedToEOLhook}
+\newcommand\@ddedToEOLhook{}
+\newcommand\@@ddedToEOLhook
+{%
+  \ifonBasisLine%
+    \ifPostponeCountToNextLine%
+    \else
+      \global\onBasisLinefalse%
+    \fi
+  \fi
+  \global\spacesGobbledSoFar=0%
+  \global\PostponeCountToNextLinefalse%
+}
+
+\lst@AddToHook{DeInit}
+{%
+  \lst@ifautounindent%
+    % undo patches
+    \def\@ddedToInitVarsBOLhook{}%
+    \def\@ddedToEOLhook{}%
+  \fi
+}
+
+
+% --- helper macros ---
+\newcommand\processchar
+{%
+  \global\afterindenttrue%
+}
+
+\newcommand\processmyspace
+{%
+  \ifafterindent%
+    \lsts@myspace%
+  \else
+    \ifonBasisLine%
+      \global\advance\spacesToGobble\@ne\relax%
+    \else
+      \ifnum\spacesGobbledSoFar<\spacesToGobble\relax%
+        \global\advance\spacesGobbledSoFar\@ne\relax%
+      \else
+        \lsts@myspace%
+      \fi
+    \fi
+  \fi
+}
+
+\makeatother
\ No newline at end of file
index 60f1a73..6b2c555 100644 (file)
 % Graphics
 %tell TeX where to look for graphics/logos
 \graphicspath{ {/img/} }
-
-% This block is for listings
-\usepackage[framemethod=TikZ]{mdframed} % mdframed is used to draw a grey box
-\mdfdefinestyle{listingstyle}{
-  backgroundcolor=black!10,outerlinewidth=0,outerlinecolor=black,
-  innerleftmargin=9pt,innerrightmargin=0,innertopmargin=9pt,innerbottommargin=2pt
-}
-%\usepackage{amssymb}% for \curvearrowright
-% Insert a grey box behind the listing for uniform background color (The \cipherstring would the listing and the background would turn white)
-\BeforeBeginEnvironment{lstlisting}{\vspace{0.2cm}\begin{mdframed}[style=listingstyle]}
-\AfterEndEnvironment{lstlisting}{\end{mdframed}}
 % Listings
 \lstset{
   basicstyle=\ttfamily,
@@ -94,6 +83,7 @@
   showstringspaces=false,
   tabsize=2,
   captionpos=b,
+  frame=single,
   breaklines=true,
   breakatwhitespace=false,
   inputencoding=utf8,
   columns=fullflexible,                   % Column format: no spaces are inserted for monospaced appearance
   breakindent=10pt,
   morekeywords={__global__, __device__},% 
+  % breakautoindent=false,
+  prebreak=\raisebox{0ex}[0ex][0ex]{{\color{red}\textbackslash}},
+  postbreak=\raisebox{0ex}[0ex][0ex]{{\color{red}\textbackslash}},
   escapechar=\`,
   escapeinside={\%*}{*)},                 % Escape TeX commands inside %* and *)
-%  prebreak=\mbox{$\curvearrowright$},     % Disply curved arrow before linebreak
-  prebreak=\small\symbol{'134},
-}
-
-% red warning box (for SSH section)
-\mdfdefinestyle{warningboxstyle}{
-  backgroundcolor=pink!20,
-  innerleftmargin=9pt,innerrightmargin=9pt,innertopmargin=9pt,innerbottommargin=9pt
+% %  prebreak=\mbox{$\curvearrowright$},     % Disply curved arrow before linebreak
+%   prebreak=\small\symbol{'134},
 }
 
 % Hyperref styles
index 1aab75a..c23d291 100644 (file)
@@ -2,12 +2,14 @@
 %%% system.tex
 %%% Necessary packages and sytem changes
 %%%
+
 % Document Encoding. important.
 \usepackage[utf8]{inputenc}
 
 % changes font encoding to T1
 \usepackage[T1]{fontenc}
 \usepackage{textcomp}
+\usepackage{relsize}
 
 % For searchable pdfs
 \input glyphtounicode
@@ -23,6 +25,7 @@
   ,parskip=true%
 }
 
+
 % Language
 \usepackage[english]{babel}
 
diff --git a/src/configuration/DBs/MySQL/my.cnf b/src/configuration/DBs/MySQL/my.cnf
new file mode 100644 (file)
index 0000000..f497d0d
--- /dev/null
@@ -0,0 +1,127 @@
+#
+# The MySQL database server configuration file.
+#
+# You can copy this to one of:
+# - "/etc/mysql/my.cnf" to set global options,
+# - "~/.my.cnf" to set user-specific options.
+# 
+# One can use all long options that the program supports.
+# Run program with --help to get a list of available options and with
+# --print-defaults to see which it would actually understand and use.
+#
+# For explanations see
+# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
+
+# This will be passed to all mysql clients
+# It has been reported that passwords should be enclosed with ticks/quotes
+# escpecially if they contain "#" chars...
+# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
+[client]
+port           = 3306
+socket         = /var/run/mysqld/mysqld.sock
+
+# Here is entries for some specific programs
+# The following values assume you have at least 32M ram
+
+# This was formally known as [safe_mysqld]. Both versions are currently parsed.
+[mysqld_safe]
+socket         = /var/run/mysqld/mysqld.sock
+nice           = 0
+
+[mysqld]
+#
+# * Basic Settings
+#
+user           = mysql
+pid-file       = /var/run/mysqld/mysqld.pid
+socket         = /var/run/mysqld/mysqld.sock
+port           = 3306
+basedir                = /usr
+datadir                = /var/lib/mysql
+tmpdir         = /tmp
+lc-messages-dir        = /usr/share/mysql
+skip-external-locking
+#
+# Instead of skip-networking the default is now to listen only on
+# localhost which is more compatible and is not less secure.
+bind-address           = 127.0.0.1
+#
+# * Fine Tuning
+#
+key_buffer             = 16M
+max_allowed_packet     = 16M
+thread_stack           = 192K
+thread_cache_size       = 8
+# This replaces the startup script and checks MyISAM tables if needed
+# the first time they are touched
+myisam-recover         = BACKUP
+#max_connections        = 100
+#table_cache            = 64
+#thread_concurrency     = 10
+#
+# * Query Cache Configuration
+#
+query_cache_limit      = 1M
+query_cache_size        = 16M
+#
+# * Logging and Replication
+#
+# Both location gets rotated by the cronjob.
+# Be aware that this log type is a performance killer.
+# As of 5.1 you can enable the log at runtime!
+#general_log_file        = /var/log/mysql/mysql.log
+#general_log             = 1
+#
+# Error logging goes to syslog due to /etc/mysql/conf.d/mysqld_safe_syslog.cnf.
+#
+# Here you can see queries with especially long duration
+#log_slow_queries      = /var/log/mysql/mysql-slow.log
+#long_query_time = 2
+#log-queries-not-using-indexes
+#
+# The following can be used as easy to replay backup logs or for replication.
+# note: if you are setting up a replication slave, see README.Debian about
+#       other settings you may need to change.
+#server-id             = 1
+#log_bin                       = /var/log/mysql/mysql-bin.log
+expire_logs_days       = 10
+max_binlog_size         = 100M
+#binlog_do_db          = include_database_name
+#binlog_ignore_db      = include_database_name
+#
+# * InnoDB
+#
+# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
+# Read the manual for more InnoDB related options. There are many!
+#
+# * Security Features
+#
+# Read the manual, too, if you want chroot!
+# chroot = /var/lib/mysql/
+#
+# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
+#
+ssl
+ssl-ca=/etc/mysql/cacert.pem
+ssl-cert=/etc/mysql/server-cert.pem
+ssl-key=/etc/mysql/server-key.pem
+# needs OpennSSL build
+ssl-cipher=DH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
+
+
+[mysqldump]
+quick
+quote-names
+max_allowed_packet     = 16M
+
+[mysql]
+#no-auto-rehash        # faster start of mysql but no tab completition
+
+[isamchk]
+key_buffer             = 16M
+
+#
+# * IMPORTANT: Additional settings that can override those from this file!
+#   The files must end with '.cnf', otherwise they'll be ignored.
+#
+!includedir /etc/mysql/conf.d/
diff --git a/src/configuration/DBs/PostgreSQL/9.1/postgresql.conf b/src/configuration/DBs/PostgreSQL/9.1/postgresql.conf
new file mode 100644 (file)
index 0000000..2585719
--- /dev/null
@@ -0,0 +1,556 @@
+# -----------------------------
+# PostgreSQL configuration file
+# -----------------------------
+#
+# This file consists of lines of the form:
+#
+#   name = value
+#
+# (The "=" is optional.)  Whitespace may be used.  Comments are introduced with
+# "#" anywhere on a line.  The complete list of parameter names and allowed
+# values can be found in the PostgreSQL documentation.
+#
+# The commented-out settings shown in this file represent the default values.
+# Re-commenting a setting is NOT sufficient to revert it to the default value;
+# you need to reload the server.
+#
+# This file is read on server startup and when the server receives a SIGHUP
+# signal.  If you edit the file on a running system, you have to SIGHUP the
+# server for the changes to take effect, or use "pg_ctl reload".  Some
+# parameters, which are marked below, require a server shutdown and restart to
+# take effect.
+#
+# Any parameter can also be given as a command-line option to the server, e.g.,
+# "postgres -c log_connections=on".  Some parameters can be changed at run time
+# with the "SET" SQL command.
+#
+# Memory units:  kB = kilobytes        Time units:  ms  = milliseconds
+#                MB = megabytes                     s   = seconds
+#                GB = gigabytes                     min = minutes
+#                                                   h   = hours
+#                                                   d   = days
+
+
+#------------------------------------------------------------------------------
+# FILE LOCATIONS
+#------------------------------------------------------------------------------
+
+# The default values of these variables are driven from the -D command-line
+# option or PGDATA environment variable, represented here as ConfigDir.
+
+#data_directory = 'ConfigDir'          # use data in another directory
+                                       # (change requires restart)
+#hba_file = 'ConfigDir/pg_hba.conf'    # host-based authentication file
+                                       # (change requires restart)
+#ident_file = 'ConfigDir/pg_ident.conf'        # ident configuration file
+                                       # (change requires restart)
+
+# If external_pid_file is not explicitly set, no extra PID file is written.
+#external_pid_file = '(none)'          # write an extra PID file
+                                       # (change requires restart)
+
+
+#------------------------------------------------------------------------------
+# CONNECTIONS AND AUTHENTICATION
+#------------------------------------------------------------------------------
+
+# - Connection Settings -
+
+#listen_addresses = 'localhost'                # what IP address(es) to listen on;
+                                       # comma-separated list of addresses;
+                                       # defaults to 'localhost', '*' = all
+                                       # (change requires restart)
+#port = 5432                           # (change requires restart)
+#max_connections = 100                 # (change requires restart)
+# Note:  Increasing max_connections costs ~400 bytes of shared memory per
+# connection slot, plus lock space (see max_locks_per_transaction).
+#superuser_reserved_connections = 3    # (change requires restart)
+#unix_socket_directory = ''            # (change requires restart)
+#unix_socket_group = ''                        # (change requires restart)
+#unix_socket_permissions = 0777                # begin with 0 to use octal notation
+                                       # (change requires restart)
+#bonjour = off                         # advertise server via Bonjour
+                                       # (change requires restart)
+#bonjour_name = ''                     # defaults to the computer name
+                                       # (change requires restart)
+
+# - Security and Authentication -
+
+#authentication_timeout = 1min         # 1s-600s
+ssl = on                               # (change requires restart)
+ssl_ciphers = 'EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA'        # allowed SSL ciphers
+                                       # (change requires restart)
+#ssl_renegotiation_limit = 512MB       # amount of data between renegotiations
+#password_encryption = on
+#db_user_namespace = off
+
+# Kerberos and GSSAPI
+#krb_server_keyfile = ''
+#krb_srvname = 'postgres'              # (Kerberos only)
+#krb_caseins_users = off
+
+# - TCP Keepalives -
+# see "man 7 tcp" for details
+
+#tcp_keepalives_idle = 0               # TCP_KEEPIDLE, in seconds;
+                                       # 0 selects the system default
+#tcp_keepalives_interval = 0           # TCP_KEEPINTVL, in seconds;
+                                       # 0 selects the system default
+#tcp_keepalives_count = 0              # TCP_KEEPCNT;
+                                       # 0 selects the system default
+
+
+#------------------------------------------------------------------------------
+# RESOURCE USAGE (except WAL)
+#------------------------------------------------------------------------------
+
+# - Memory -
+
+#shared_buffers = 32MB                 # min 128kB
+                                       # (change requires restart)
+#temp_buffers = 8MB                    # min 800kB
+#max_prepared_transactions = 0         # zero disables the feature
+                                       # (change requires restart)
+# Note:  Increasing max_prepared_transactions costs ~600 bytes of shared memory
+# per transaction slot, plus lock space (see max_locks_per_transaction).
+# It is not advisable to set max_prepared_transactions nonzero unless you
+# actively intend to use prepared transactions.
+#work_mem = 1MB                                # min 64kB
+#maintenance_work_mem = 16MB           # min 1MB
+#max_stack_depth = 2MB                 # min 100kB
+
+# - Kernel Resource Usage -
+
+#max_files_per_process = 1000          # min 25
+                                       # (change requires restart)
+#shared_preload_libraries = ''         # (change requires restart)
+
+# - Cost-Based Vacuum Delay -
+
+#vacuum_cost_delay = 0ms               # 0-100 milliseconds
+#vacuum_cost_page_hit = 1              # 0-10000 credits
+#vacuum_cost_page_miss = 10            # 0-10000 credits
+#vacuum_cost_page_dirty = 20           # 0-10000 credits
+#vacuum_cost_limit = 200               # 1-10000 credits
+
+# - Background Writer -
+
+#bgwriter_delay = 200ms                        # 10-10000ms between rounds
+#bgwriter_lru_maxpages = 100           # 0-1000 max buffers written/round
+#bgwriter_lru_multiplier = 2.0         # 0-10.0 multipler on buffers scanned/round
+
+# - Asynchronous Behavior -
+
+#effective_io_concurrency = 1          # 1-1000. 0 disables prefetching
+
+
+#------------------------------------------------------------------------------
+# WRITE AHEAD LOG
+#------------------------------------------------------------------------------
+
+# - Settings -
+
+#wal_level = minimal                   # minimal, archive, or hot_standby
+                                       # (change requires restart)
+#fsync = on                            # turns forced synchronization on or off
+#synchronous_commit = on               # synchronization level; on, off, or local
+#wal_sync_method = fsync               # the default is the first option
+                                       # supported by the operating system:
+                                       #   open_datasync
+                                       #   fdatasync (default on Linux)
+                                       #   fsync
+                                       #   fsync_writethrough
+                                       #   open_sync
+#full_page_writes = on                 # recover from partial page writes
+#wal_buffers = -1                      # min 32kB, -1 sets based on shared_buffers
+                                       # (change requires restart)
+#wal_writer_delay = 200ms              # 1-10000 milliseconds
+
+#commit_delay = 0                      # range 0-100000, in microseconds
+#commit_siblings = 5                   # range 1-1000
+
+# - Checkpoints -
+
+#checkpoint_segments = 3               # in logfile segments, min 1, 16MB each
+#checkpoint_timeout = 5min             # range 30s-1h
+#checkpoint_completion_target = 0.5    # checkpoint target duration, 0.0 - 1.0
+#checkpoint_warning = 30s              # 0 disables
+
+# - Archiving -
+
+#archive_mode = off            # allows archiving to be done
+                               # (change requires restart)
+#archive_command = ''          # command to use to archive a logfile segment
+#archive_timeout = 0           # force a logfile segment switch after this
+                               # number of seconds; 0 disables
+
+
+#------------------------------------------------------------------------------
+# REPLICATION
+#------------------------------------------------------------------------------
+
+# - Master Server -
+
+# These settings are ignored on a standby server
+
+#max_wal_senders = 0           # max number of walsender processes
+                               # (change requires restart)
+#wal_sender_delay = 1s         # walsender cycle time, 1-10000 milliseconds
+#wal_keep_segments = 0         # in logfile segments, 16MB each; 0 disables
+#vacuum_defer_cleanup_age = 0  # number of xacts by which cleanup is delayed
+#replication_timeout = 60s     # in milliseconds; 0 disables
+#synchronous_standby_names = ''        # standby servers that provide sync rep
+                               # comma-separated list of application_name
+                               # from standby(s); '*' = all
+
+# - Standby Servers -
+
+# These settings are ignored on a master server
+
+#hot_standby = off                     # "on" allows queries during recovery
+                                       # (change requires restart)
+#max_standby_archive_delay = 30s       # max delay before canceling queries
+                                       # when reading WAL from archive;
+                                       # -1 allows indefinite delay
+#max_standby_streaming_delay = 30s     # max delay before canceling queries
+                                       # when reading streaming WAL;
+                                       # -1 allows indefinite delay
+#wal_receiver_status_interval = 10s    # send replies at least this often
+                                       # 0 disables
+#hot_standby_feedback = off            # send info from standby to prevent
+                                       # query conflicts
+
+
+#------------------------------------------------------------------------------
+# QUERY TUNING
+#------------------------------------------------------------------------------
+
+# - Planner Method Configuration -
+
+#enable_bitmapscan = on
+#enable_hashagg = on
+#enable_hashjoin = on
+#enable_indexscan = on
+#enable_material = on
+#enable_mergejoin = on
+#enable_nestloop = on
+#enable_seqscan = on
+#enable_sort = on
+#enable_tidscan = on
+
+# - Planner Cost Constants -
+
+#seq_page_cost = 1.0                   # measured on an arbitrary scale
+#random_page_cost = 4.0                        # same scale as above
+#cpu_tuple_cost = 0.01                 # same scale as above
+#cpu_index_tuple_cost = 0.005          # same scale as above
+#cpu_operator_cost = 0.0025            # same scale as above
+#effective_cache_size = 128MB
+
+# - Genetic Query Optimizer -
+
+#geqo = on
+#geqo_threshold = 12
+#geqo_effort = 5                       # range 1-10
+#geqo_pool_size = 0                    # selects default based on effort
+#geqo_generations = 0                  # selects default based on effort
+#geqo_selection_bias = 2.0             # range 1.5-2.0
+#geqo_seed = 0.0                       # range 0.0-1.0
+
+# - Other Planner Options -
+
+#default_statistics_target = 100       # range 1-10000
+#constraint_exclusion = partition      # on, off, or partition
+#cursor_tuple_fraction = 0.1           # range 0.0-1.0
+#from_collapse_limit = 8
+#join_collapse_limit = 8               # 1 disables collapsing of explicit
+                                       # JOIN clauses
+
+
+#------------------------------------------------------------------------------
+# ERROR REPORTING AND LOGGING
+#------------------------------------------------------------------------------
+
+# - Where to Log -
+
+#log_destination = 'stderr'            # Valid values are combinations of
+                                       # stderr, csvlog, syslog, and eventlog,
+                                       # depending on platform.  csvlog
+                                       # requires logging_collector to be on.
+
+# This is used when logging to stderr:
+#logging_collector = off               # Enable capturing of stderr and csvlog
+                                       # into log files. Required to be on for
+                                       # csvlogs.
+                                       # (change requires restart)
+
+# These are only used if logging_collector is on:
+#log_directory = 'pg_log'              # directory where log files are written,
+                                       # can be absolute or relative to PGDATA
+#log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'       # log file name pattern,
+                                       # can include strftime() escapes
+#log_file_mode = 0600                  # creation mode for log files,
+                                       # begin with 0 to use octal notation
+#log_truncate_on_rotation = off                # If on, an existing log file with the
+                                       # same name as the new log file will be
+                                       # truncated rather than appended to.
+                                       # But such truncation only occurs on
+                                       # time-driven rotation, not on restarts
+                                       # or size-driven rotation.  Default is
+                                       # off, meaning append to existing files
+                                       # in all cases.
+#log_rotation_age = 1d                 # Automatic rotation of logfiles will
+                                       # happen after that time.  0 disables.
+#log_rotation_size = 10MB              # Automatic rotation of logfiles will
+                                       # happen after that much log output.
+                                       # 0 disables.
+
+# These are relevant when logging to syslog:
+#syslog_facility = 'LOCAL0'
+#syslog_ident = 'postgres'
+
+#silent_mode = off                     # Run server silently.
+                                       # DO NOT USE without syslog or
+                                       # logging_collector
+                                       # (change requires restart)
+
+
+# - When to Log -
+
+#client_min_messages = notice          # values in order of decreasing detail:
+                                       #   debug5
+                                       #   debug4
+                                       #   debug3
+                                       #   debug2
+                                       #   debug1
+                                       #   log
+                                       #   notice
+                                       #   warning
+                                       #   error
+
+#log_min_messages = warning            # values in order of decreasing detail:
+                                       #   debug5
+                                       #   debug4
+                                       #   debug3
+                                       #   debug2
+                                       #   debug1
+                                       #   info
+                                       #   notice
+                                       #   warning
+                                       #   error
+                                       #   log
+                                       #   fatal
+                                       #   panic
+
+#log_min_error_statement = error       # values in order of decreasing detail:
+                                       #   debug5
+                                       #   debug4
+                                       #   debug3
+                                       #   debug2
+                                       #   debug1
+                                       #   info
+                                       #   notice
+                                       #   warning
+                                       #   error
+                                       #   log
+                                       #   fatal
+                                       #   panic (effectively off)
+
+#log_min_duration_statement = -1       # -1 is disabled, 0 logs all statements
+                                       # and their durations, > 0 logs only
+                                       # statements running at least this number
+                                       # of milliseconds
+
+
+# - What to Log -
+
+#debug_print_parse = off
+#debug_print_rewritten = off
+#debug_print_plan = off
+#debug_pretty_print = on
+#log_checkpoints = off
+#log_connections = off
+#log_disconnections = off
+#log_duration = off
+#log_error_verbosity = default         # terse, default, or verbose messages
+#log_hostname = off
+#log_line_prefix = ''                  # special values:
+                                       #   %a = application name
+                                       #   %u = user name
+                                       #   %d = database name
+                                       #   %r = remote host and port
+                                       #   %h = remote host
+                                       #   %p = process ID
+                                       #   %t = timestamp without milliseconds
+                                       #   %m = timestamp with milliseconds
+                                       #   %i = command tag
+                                       #   %e = SQL state
+                                       #   %c = session ID
+                                       #   %l = session line number
+                                       #   %s = session start timestamp
+                                       #   %v = virtual transaction ID
+                                       #   %x = transaction ID (0 if none)
+                                       #   %q = stop here in non-session
+                                       #        processes
+                                       #   %% = '%'
+                                       # e.g. '<%u%%%d> '
+#log_lock_waits = off                  # log lock waits >= deadlock_timeout
+#log_statement = 'none'                        # none, ddl, mod, all
+#log_temp_files = -1                   # log temporary files equal or larger
+                                       # than the specified size in kilobytes;
+                                       # -1 disables, 0 logs all temp files
+#log_timezone = '(defaults to server environment setting)'
+
+
+#------------------------------------------------------------------------------
+# RUNTIME STATISTICS
+#------------------------------------------------------------------------------
+
+# - Query/Index Statistics Collector -
+
+#track_activities = on
+#track_counts = on
+#track_functions = none                        # none, pl, all
+#track_activity_query_size = 1024      # (change requires restart)
+#update_process_title = on
+#stats_temp_directory = 'pg_stat_tmp'
+
+
+# - Statistics Monitoring -
+
+#log_parser_stats = off
+#log_planner_stats = off
+#log_executor_stats = off
+#log_statement_stats = off
+
+
+#------------------------------------------------------------------------------
+# AUTOVACUUM PARAMETERS
+#------------------------------------------------------------------------------
+
+#autovacuum = on                       # Enable autovacuum subprocess?  'on'
+                                       # requires track_counts to also be on.
+#log_autovacuum_min_duration = -1      # -1 disables, 0 logs all actions and
+                                       # their durations, > 0 logs only
+                                       # actions running at least this number
+                                       # of milliseconds.
+#autovacuum_max_workers = 3            # max number of autovacuum subprocesses
+                                       # (change requires restart)
+#autovacuum_naptime = 1min             # time between autovacuum runs
+#autovacuum_vacuum_threshold = 50      # min number of row updates before
+                                       # vacuum
+#autovacuum_analyze_threshold = 50     # min number of row updates before
+                                       # analyze
+#autovacuum_vacuum_scale_factor = 0.2  # fraction of table size before vacuum
+#autovacuum_analyze_scale_factor = 0.1 # fraction of table size before analyze
+#autovacuum_freeze_max_age = 200000000 # maximum XID age before forced vacuum
+                                       # (change requires restart)
+#autovacuum_vacuum_cost_delay = 20ms   # default vacuum cost delay for
+                                       # autovacuum, in milliseconds;
+                                       # -1 means use vacuum_cost_delay
+#autovacuum_vacuum_cost_limit = -1     # default vacuum cost limit for
+                                       # autovacuum, -1 means use
+                                       # vacuum_cost_limit
+
+
+#------------------------------------------------------------------------------
+# CLIENT CONNECTION DEFAULTS
+#------------------------------------------------------------------------------
+
+# - Statement Behavior -
+
+#search_path = '"$user",public'                # schema names
+#default_tablespace = ''               # a tablespace name, '' uses the default
+#temp_tablespaces = ''                 # a list of tablespace names, '' uses
+                                       # only default tablespace
+#check_function_bodies = on
+#default_transaction_isolation = 'read committed'
+#default_transaction_read_only = off
+#default_transaction_deferrable = off
+#session_replication_role = 'origin'
+#statement_timeout = 0                 # in milliseconds, 0 is disabled
+#vacuum_freeze_min_age = 50000000
+#vacuum_freeze_table_age = 150000000
+#bytea_output = 'hex'                  # hex, escape
+#xmlbinary = 'base64'
+#xmloption = 'content'
+
+# - Locale and Formatting -
+
+#datestyle = 'iso, mdy'
+#intervalstyle = 'postgres'
+#timezone = '(defaults to server environment setting)'
+#timezone_abbreviations = 'Default'     # Select the set of available time zone
+                                       # abbreviations.  Currently, there are
+                                       #   Default
+                                       #   Australia
+                                       #   India
+                                       # You can create your own file in
+                                       # share/timezonesets/.
+#extra_float_digits = 0                        # min -15, max 3
+#client_encoding = sql_ascii           # actually, defaults to database
+                                       # encoding
+
+# These settings are initialized by initdb, but they can be changed.
+#lc_messages = 'C'                     # locale for system error message
+                                       # strings
+#lc_monetary = 'C'                     # locale for monetary formatting
+#lc_numeric = 'C'                      # locale for number formatting
+#lc_time = 'C'                         # locale for time formatting
+
+# default configuration for text search
+#default_text_search_config = 'pg_catalog.simple'
+
+# - Other Defaults -
+
+#dynamic_library_path = '$libdir'
+#local_preload_libraries = ''
+
+
+#------------------------------------------------------------------------------
+# LOCK MANAGEMENT
+#------------------------------------------------------------------------------
+
+#deadlock_timeout = 1s
+#max_locks_per_transaction = 64                # min 10
+                                       # (change requires restart)
+# Note:  Each lock table slot uses ~270 bytes of shared memory, and there are
+# max_locks_per_transaction * (max_connections + max_prepared_transactions)
+# lock table slots.
+#max_pred_locks_per_transaction = 64   # min 10
+                                       # (change requires restart)
+
+#------------------------------------------------------------------------------
+# VERSION/PLATFORM COMPATIBILITY
+#------------------------------------------------------------------------------
+
+# - Previous PostgreSQL Versions -
+
+#array_nulls = on
+#backslash_quote = safe_encoding       # on, off, or safe_encoding
+#default_with_oids = off
+#escape_string_warning = on
+#lo_compat_privileges = off
+#quote_all_identifiers = off
+#sql_inheritance = on
+#standard_conforming_strings = on
+#synchronize_seqscans = on
+
+# - Other Platforms and Clients -
+
+#transform_null_equals = off
+
+
+#------------------------------------------------------------------------------
+# ERROR HANDLING
+#------------------------------------------------------------------------------
+
+#exit_on_error = off                           # terminate session on any error?
+#restart_after_crash = on                      # reinitialize after backend crash?
+
+
+#------------------------------------------------------------------------------
+# CUSTOMIZED OPTIONS
+#------------------------------------------------------------------------------
+
+#custom_variable_classes = ''          # list of custom variable class names
diff --git a/src/configuration/DBs/PostgreSQL/9.3/postgresql.conf b/src/configuration/DBs/PostgreSQL/9.3/postgresql.conf
new file mode 100644 (file)
index 0000000..08f20f4
--- /dev/null
@@ -0,0 +1,596 @@
+# -----------------------------
+# PostgreSQL configuration file
+# -----------------------------
+#
+# This file consists of lines of the form:
+#
+#   name = value
+#
+# (The "=" is optional.)  Whitespace may be used.  Comments are introduced with
+# "#" anywhere on a line.  The complete list of parameter names and allowed
+# values can be found in the PostgreSQL documentation.
+#
+# The commented-out settings shown in this file represent the default values.
+# Re-commenting a setting is NOT sufficient to revert it to the default value;
+# you need to reload the server.
+#
+# This file is read on server startup and when the server receives a SIGHUP
+# signal.  If you edit the file on a running system, you have to SIGHUP the
+# server for the changes to take effect, or use "pg_ctl reload".  Some
+# parameters, which are marked below, require a server shutdown and restart to
+# take effect.
+#
+# Any parameter can also be given as a command-line option to the server, e.g.,
+# "postgres -c log_connections=on".  Some parameters can be changed at run time
+# with the "SET" SQL command.
+#
+# Memory units:  kB = kilobytes        Time units:  ms  = milliseconds
+#                MB = megabytes                     s   = seconds
+#                GB = gigabytes                     min = minutes
+#                                                   h   = hours
+#                                                   d   = days
+
+
+#------------------------------------------------------------------------------
+# FILE LOCATIONS
+#------------------------------------------------------------------------------
+
+# The default values of these variables are driven from the -D command-line
+# option or PGDATA environment variable, represented here as ConfigDir.
+
+#data_directory = 'ConfigDir'          # use data in another directory
+                                       # (change requires restart)
+#hba_file = 'ConfigDir/pg_hba.conf'    # host-based authentication file
+                                       # (change requires restart)
+#ident_file = 'ConfigDir/pg_ident.conf'        # ident configuration file
+                                       # (change requires restart)
+
+# If external_pid_file is not explicitly set, no extra PID file is written.
+#external_pid_file = ''                        # write an extra PID file
+                                       # (change requires restart)
+
+
+#------------------------------------------------------------------------------
+# CONNECTIONS AND AUTHENTICATION
+#------------------------------------------------------------------------------
+
+# - Connection Settings -
+
+#listen_addresses = 'localhost'                # what IP address(es) to listen on;
+                                       # comma-separated list of addresses;
+                                       # defaults to 'localhost'; use '*' for all
+                                       # (change requires restart)
+#port = 5432                           # (change requires restart)
+#max_connections = 100                 # (change requires restart)
+# Note:  Increasing max_connections costs ~400 bytes of shared memory per
+# connection slot, plus lock space (see max_locks_per_transaction).
+#superuser_reserved_connections = 3    # (change requires restart)
+#unix_socket_directories = '/tmp'      # comma-separated list of directories
+                                       # (change requires restart)
+#unix_socket_group = ''                        # (change requires restart)
+#unix_socket_permissions = 0777                # begin with 0 to use octal notation
+                                       # (change requires restart)
+#bonjour = off                         # advertise server via Bonjour
+                                       # (change requires restart)
+#bonjour_name = ''                     # defaults to the computer name
+                                       # (change requires restart)
+
+# - Security and Authentication -
+
+#authentication_timeout = 1min         # 1s-600s
+ssl = on                               # (change requires restart)
+ssl_ciphers = 'EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA'        # allowed SSL ciphers
+                                       # (change requires restart)
+#ssl_renegotiation_limit = 512MB       # amount of data between renegotiations
+ssl_cert_file = 'server.crt'           # (change requires restart)
+ssl_key_file = 'server.key'            # (change requires restart)
+ssl_ca_file = 'root.crt'                       # (change requires restart)
+#ssl_crl_file = ''                     # (change requires restart)
+#password_encryption = on
+#db_user_namespace = off
+
+# Kerberos and GSSAPI
+#krb_server_keyfile = ''
+#krb_srvname = 'postgres'              # (Kerberos only)
+#krb_caseins_users = off
+
+# - TCP Keepalives -
+# see "man 7 tcp" for details
+
+#tcp_keepalives_idle = 0               # TCP_KEEPIDLE, in seconds;
+                                       # 0 selects the system default
+#tcp_keepalives_interval = 0           # TCP_KEEPINTVL, in seconds;
+                                       # 0 selects the system default
+#tcp_keepalives_count = 0              # TCP_KEEPCNT;
+                                       # 0 selects the system default
+
+
+#------------------------------------------------------------------------------
+# RESOURCE USAGE (except WAL)
+#------------------------------------------------------------------------------
+
+# - Memory -
+
+#shared_buffers = 32MB                 # min 128kB
+                                       # (change requires restart)
+#temp_buffers = 8MB                    # min 800kB
+#max_prepared_transactions = 0         # zero disables the feature
+                                       # (change requires restart)
+# Note:  Increasing max_prepared_transactions costs ~600 bytes of shared memory
+# per transaction slot, plus lock space (see max_locks_per_transaction).
+# It is not advisable to set max_prepared_transactions nonzero unless you
+# actively intend to use prepared transactions.
+#work_mem = 1MB                                # min 64kB
+#maintenance_work_mem = 16MB           # min 1MB
+#max_stack_depth = 2MB                 # min 100kB
+
+# - Disk -
+
+#temp_file_limit = -1                  # limits per-session temp file space
+                                       # in kB, or -1 for no limit
+
+# - Kernel Resource Usage -
+
+#max_files_per_process = 1000          # min 25
+                                       # (change requires restart)
+#shared_preload_libraries = ''         # (change requires restart)
+
+# - Cost-Based Vacuum Delay -
+
+#vacuum_cost_delay = 0                 # 0-100 milliseconds
+#vacuum_cost_page_hit = 1              # 0-10000 credits
+#vacuum_cost_page_miss = 10            # 0-10000 credits
+#vacuum_cost_page_dirty = 20           # 0-10000 credits
+#vacuum_cost_limit = 200               # 1-10000 credits
+
+# - Background Writer -
+
+#bgwriter_delay = 200ms                        # 10-10000ms between rounds
+#bgwriter_lru_maxpages = 100           # 0-1000 max buffers written/round
+#bgwriter_lru_multiplier = 2.0         # 0-10.0 multipler on buffers scanned/round
+
+# - Asynchronous Behavior -
+
+#effective_io_concurrency = 1          # 1-1000; 0 disables prefetching
+
+
+#------------------------------------------------------------------------------
+# WRITE AHEAD LOG
+#------------------------------------------------------------------------------
+
+# - Settings -
+
+#wal_level = minimal                   # minimal, archive, or hot_standby
+                                       # (change requires restart)
+#fsync = on                            # turns forced synchronization on or off
+#synchronous_commit = on               # synchronization level;
+                                       # off, local, remote_write, or on
+#wal_sync_method = fsync               # the default is the first option
+                                       # supported by the operating system:
+                                       #   open_datasync
+                                       #   fdatasync (default on Linux)
+                                       #   fsync
+                                       #   fsync_writethrough
+                                       #   open_sync
+#full_page_writes = on                 # recover from partial page writes
+#wal_buffers = -1                      # min 32kB, -1 sets based on shared_buffers
+                                       # (change requires restart)
+#wal_writer_delay = 200ms              # 1-10000 milliseconds
+
+#commit_delay = 0                      # range 0-100000, in microseconds
+#commit_siblings = 5                   # range 1-1000
+
+# - Checkpoints -
+
+#checkpoint_segments = 3               # in logfile segments, min 1, 16MB each
+#checkpoint_timeout = 5min             # range 30s-1h
+#checkpoint_completion_target = 0.5    # checkpoint target duration, 0.0 - 1.0
+#checkpoint_warning = 30s              # 0 disables
+
+# - Archiving -
+
+#archive_mode = off            # allows archiving to be done
+                               # (change requires restart)
+#archive_command = ''          # command to use to archive a logfile segment
+                               # placeholders: %p = path of file to archive
+                               #               %f = file name only
+                               # e.g. 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f'
+#archive_timeout = 0           # force a logfile segment switch after this
+                               # number of seconds; 0 disables
+
+
+#------------------------------------------------------------------------------
+# REPLICATION
+#------------------------------------------------------------------------------
+
+# - Sending Server(s) -
+
+# Set these on the master and on any standby that will send replication data.
+
+#max_wal_senders = 0           # max number of walsender processes
+                               # (change requires restart)
+#wal_keep_segments = 0         # in logfile segments, 16MB each; 0 disables
+#wal_sender_timeout = 60s      # in milliseconds; 0 disables
+
+# - Master Server -
+
+# These settings are ignored on a standby server.
+
+#synchronous_standby_names = ''        # standby servers that provide sync rep
+                               # comma-separated list of application_name
+                               # from standby(s); '*' = all
+#vacuum_defer_cleanup_age = 0  # number of xacts by which cleanup is delayed
+
+# - Standby Servers -
+
+# These settings are ignored on a master server.
+
+#hot_standby = off                     # "on" allows queries during recovery
+                                       # (change requires restart)
+#max_standby_archive_delay = 30s       # max delay before canceling queries
+                                       # when reading WAL from archive;
+                                       # -1 allows indefinite delay
+#max_standby_streaming_delay = 30s     # max delay before canceling queries
+                                       # when reading streaming WAL;
+                                       # -1 allows indefinite delay
+#wal_receiver_status_interval = 10s    # send replies at least this often
+                                       # 0 disables
+#hot_standby_feedback = off            # send info from standby to prevent
+                                       # query conflicts
+#wal_receiver_timeout = 60s            # time that receiver waits for
+                                       # communication from master
+                                       # in milliseconds; 0 disables
+
+
+#------------------------------------------------------------------------------
+# QUERY TUNING
+#------------------------------------------------------------------------------
+
+# - Planner Method Configuration -
+
+#enable_bitmapscan = on
+#enable_hashagg = on
+#enable_hashjoin = on
+#enable_indexscan = on
+#enable_indexonlyscan = on
+#enable_material = on
+#enable_mergejoin = on
+#enable_nestloop = on
+#enable_seqscan = on
+#enable_sort = on
+#enable_tidscan = on
+
+# - Planner Cost Constants -
+
+#seq_page_cost = 1.0                   # measured on an arbitrary scale
+#random_page_cost = 4.0                        # same scale as above
+#cpu_tuple_cost = 0.01                 # same scale as above
+#cpu_index_tuple_cost = 0.005          # same scale as above
+#cpu_operator_cost = 0.0025            # same scale as above
+#effective_cache_size = 128MB
+
+# - Genetic Query Optimizer -
+
+#geqo = on
+#geqo_threshold = 12
+#geqo_effort = 5                       # range 1-10
+#geqo_pool_size = 0                    # selects default based on effort
+#geqo_generations = 0                  # selects default based on effort
+#geqo_selection_bias = 2.0             # range 1.5-2.0
+#geqo_seed = 0.0                       # range 0.0-1.0
+
+# - Other Planner Options -
+
+#default_statistics_target = 100       # range 1-10000
+#constraint_exclusion = partition      # on, off, or partition
+#cursor_tuple_fraction = 0.1           # range 0.0-1.0
+#from_collapse_limit = 8
+#join_collapse_limit = 8               # 1 disables collapsing of explicit
+                                       # JOIN clauses
+
+
+#------------------------------------------------------------------------------
+# ERROR REPORTING AND LOGGING
+#------------------------------------------------------------------------------
+
+# - Where to Log -
+
+#log_destination = 'stderr'            # Valid values are combinations of
+                                       # stderr, csvlog, syslog, and eventlog,
+                                       # depending on platform.  csvlog
+                                       # requires logging_collector to be on.
+
+# This is used when logging to stderr:
+#logging_collector = off               # Enable capturing of stderr and csvlog
+                                       # into log files. Required to be on for
+                                       # csvlogs.
+                                       # (change requires restart)
+
+# These are only used if logging_collector is on:
+#log_directory = 'pg_log'              # directory where log files are written,
+                                       # can be absolute or relative to PGDATA
+#log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'       # log file name pattern,
+                                       # can include strftime() escapes
+#log_file_mode = 0600                  # creation mode for log files,
+                                       # begin with 0 to use octal notation
+#log_truncate_on_rotation = off                # If on, an existing log file with the
+                                       # same name as the new log file will be
+                                       # truncated rather than appended to.
+                                       # But such truncation only occurs on
+                                       # time-driven rotation, not on restarts
+                                       # or size-driven rotation.  Default is
+                                       # off, meaning append to existing files
+                                       # in all cases.
+#log_rotation_age = 1d                 # Automatic rotation of logfiles will
+                                       # happen after that time.  0 disables.
+#log_rotation_size = 10MB              # Automatic rotation of logfiles will
+                                       # happen after that much log output.
+                                       # 0 disables.
+
+# These are relevant when logging to syslog:
+#syslog_facility = 'LOCAL0'
+#syslog_ident = 'postgres'
+
+# This is only relevant when logging to eventlog (win32):
+#event_source = 'PostgreSQL'
+
+# - When to Log -
+
+#client_min_messages = notice          # values in order of decreasing detail:
+                                       #   debug5
+                                       #   debug4
+                                       #   debug3
+                                       #   debug2
+                                       #   debug1
+                                       #   log
+                                       #   notice
+                                       #   warning
+                                       #   error
+
+#log_min_messages = warning            # values in order of decreasing detail:
+                                       #   debug5
+                                       #   debug4
+                                       #   debug3
+                                       #   debug2
+                                       #   debug1
+                                       #   info
+                                       #   notice
+                                       #   warning
+                                       #   error
+                                       #   log
+                                       #   fatal
+                                       #   panic
+
+#log_min_error_statement = error       # values in order of decreasing detail:
+                                       #   debug5
+                                       #   debug4
+                                       #   debug3
+                                       #   debug2
+                                       #   debug1
+                                       #   info
+                                       #   notice
+                                       #   warning
+                                       #   error
+                                       #   log
+                                       #   fatal
+                                       #   panic (effectively off)
+
+#log_min_duration_statement = -1       # -1 is disabled, 0 logs all statements
+                                       # and their durations, > 0 logs only
+                                       # statements running at least this number
+                                       # of milliseconds
+
+
+# - What to Log -
+
+#debug_print_parse = off
+#debug_print_rewritten = off
+#debug_print_plan = off
+#debug_pretty_print = on
+#log_checkpoints = off
+#log_connections = off
+#log_disconnections = off
+#log_duration = off
+#log_error_verbosity = default         # terse, default, or verbose messages
+#log_hostname = off
+#log_line_prefix = ''                  # special values:
+                                       #   %a = application name
+                                       #   %u = user name
+                                       #   %d = database name
+                                       #   %r = remote host and port
+                                       #   %h = remote host
+                                       #   %p = process ID
+                                       #   %t = timestamp without milliseconds
+                                       #   %m = timestamp with milliseconds
+                                       #   %i = command tag
+                                       #   %e = SQL state
+                                       #   %c = session ID
+                                       #   %l = session line number
+                                       #   %s = session start timestamp
+                                       #   %v = virtual transaction ID
+                                       #   %x = transaction ID (0 if none)
+                                       #   %q = stop here in non-session
+                                       #        processes
+                                       #   %% = '%'
+                                       # e.g. '<%u%%%d> '
+#log_lock_waits = off                  # log lock waits >= deadlock_timeout
+#log_statement = 'none'                        # none, ddl, mod, all
+#log_temp_files = -1                   # log temporary files equal or larger
+                                       # than the specified size in kilobytes;
+                                       # -1 disables, 0 logs all temp files
+#log_timezone = 'GMT'
+
+
+#------------------------------------------------------------------------------
+# RUNTIME STATISTICS
+#------------------------------------------------------------------------------
+
+# - Query/Index Statistics Collector -
+
+#track_activities = on
+#track_counts = on
+#track_io_timing = off
+#track_functions = none                        # none, pl, all
+#track_activity_query_size = 1024      # (change requires restart)
+#update_process_title = on
+#stats_temp_directory = 'pg_stat_tmp'
+
+
+# - Statistics Monitoring -
+
+#log_parser_stats = off
+#log_planner_stats = off
+#log_executor_stats = off
+#log_statement_stats = off
+
+
+#------------------------------------------------------------------------------
+# AUTOVACUUM PARAMETERS
+#------------------------------------------------------------------------------
+
+#autovacuum = on                       # Enable autovacuum subprocess?  'on'
+                                       # requires track_counts to also be on.
+#log_autovacuum_min_duration = -1      # -1 disables, 0 logs all actions and
+                                       # their durations, > 0 logs only
+                                       # actions running at least this number
+                                       # of milliseconds.
+#autovacuum_max_workers = 3            # max number of autovacuum subprocesses
+                                       # (change requires restart)
+#autovacuum_naptime = 1min             # time between autovacuum runs
+#autovacuum_vacuum_threshold = 50      # min number of row updates before
+                                       # vacuum
+#autovacuum_analyze_threshold = 50     # min number of row updates before
+                                       # analyze
+#autovacuum_vacuum_scale_factor = 0.2  # fraction of table size before vacuum
+#autovacuum_analyze_scale_factor = 0.1 # fraction of table size before analyze
+#autovacuum_freeze_max_age = 200000000 # maximum XID age before forced vacuum
+                                       # (change requires restart)
+#autovacuum_multixact_freeze_max_age = 400000000       # maximum Multixact age
+                                       # before forced vacuum
+                                       # (change requires restart)
+#autovacuum_vacuum_cost_delay = 20ms   # default vacuum cost delay for
+                                       # autovacuum, in milliseconds;
+                                       # -1 means use vacuum_cost_delay
+#autovacuum_vacuum_cost_limit = -1     # default vacuum cost limit for
+                                       # autovacuum, -1 means use
+                                       # vacuum_cost_limit
+
+
+#------------------------------------------------------------------------------
+# CLIENT CONNECTION DEFAULTS
+#------------------------------------------------------------------------------
+
+# - Statement Behavior -
+
+#search_path = '"$user",public'                # schema names
+#default_tablespace = ''               # a tablespace name, '' uses the default
+#temp_tablespaces = ''                 # a list of tablespace names, '' uses
+                                       # only default tablespace
+#check_function_bodies = on
+#default_transaction_isolation = 'read committed'
+#default_transaction_read_only = off
+#default_transaction_deferrable = off
+#session_replication_role = 'origin'
+#statement_timeout = 0                 # in milliseconds, 0 is disabled
+#lock_timeout = 0                      # in milliseconds, 0 is disabled
+#vacuum_freeze_min_age = 50000000
+#vacuum_freeze_table_age = 150000000
+#vacuum_multixact_freeze_min_age = 5000000
+#vacuum_multixact_freeze_table_age = 150000000
+#bytea_output = 'hex'                  # hex, escape
+#xmlbinary = 'base64'
+#xmloption = 'content'
+
+# - Locale and Formatting -
+
+#datestyle = 'iso, mdy'
+#intervalstyle = 'postgres'
+#timezone = 'GMT'
+#timezone_abbreviations = 'Default'     # Select the set of available time zone
+                                       # abbreviations.  Currently, there are
+                                       #   Default
+                                       #   Australia
+                                       #   India
+                                       # You can create your own file in
+                                       # share/timezonesets/.
+#extra_float_digits = 0                        # min -15, max 3
+#client_encoding = sql_ascii           # actually, defaults to database
+                                       # encoding
+
+# These settings are initialized by initdb, but they can be changed.
+#lc_messages = 'C'                     # locale for system error message
+                                       # strings
+#lc_monetary = 'C'                     # locale for monetary formatting
+#lc_numeric = 'C'                      # locale for number formatting
+#lc_time = 'C'                         # locale for time formatting
+
+# default configuration for text search
+#default_text_search_config = 'pg_catalog.simple'
+
+# - Other Defaults -
+
+#dynamic_library_path = '$libdir'
+#local_preload_libraries = ''
+
+
+#------------------------------------------------------------------------------
+# LOCK MANAGEMENT
+#------------------------------------------------------------------------------
+
+#deadlock_timeout = 1s
+#max_locks_per_transaction = 64                # min 10
+                                       # (change requires restart)
+# Note:  Each lock table slot uses ~270 bytes of shared memory, and there are
+# max_locks_per_transaction * (max_connections + max_prepared_transactions)
+# lock table slots.
+#max_pred_locks_per_transaction = 64   # min 10
+                                       # (change requires restart)
+
+
+#------------------------------------------------------------------------------
+# VERSION/PLATFORM COMPATIBILITY
+#------------------------------------------------------------------------------
+
+# - Previous PostgreSQL Versions -
+
+#array_nulls = on
+#backslash_quote = safe_encoding       # on, off, or safe_encoding
+#default_with_oids = off
+#escape_string_warning = on
+#lo_compat_privileges = off
+#quote_all_identifiers = off
+#sql_inheritance = on
+#standard_conforming_strings = on
+#synchronize_seqscans = on
+
+# - Other Platforms and Clients -
+
+#transform_null_equals = off
+
+
+#------------------------------------------------------------------------------
+# ERROR HANDLING
+#------------------------------------------------------------------------------
+
+#exit_on_error = off                   # terminate session on any error?
+#restart_after_crash = on              # reinitialize after backend crash?
+
+
+#------------------------------------------------------------------------------
+# CONFIG FILE INCLUDES
+#------------------------------------------------------------------------------
+
+# These options allow settings to be loaded from files other than the
+# default postgresql.conf.
+
+#include_dir = 'conf.d'                        # include files ending in '.conf' from
+                                       # directory 'conf.d'
+#include_if_exists = 'exists.conf'     # include file only if it exists
+#include = 'special.conf'              # include file
+
+
+#------------------------------------------------------------------------------
+# CUSTOMIZED OPTIONS
+#------------------------------------------------------------------------------
+
+# Add settings for extensions here
diff --git a/src/configuration/GPG/GnuPG/gpg.conf b/src/configuration/GPG/GnuPG/gpg.conf
new file mode 100644 (file)
index 0000000..f4ac54b
--- /dev/null
@@ -0,0 +1,212 @@
+# These first three lines are not copied to the gpg.conf file in
+# the users home directory.
+# $Id$
+# Options for GnuPG
+# Copyright 1998, 1999, 2000, 2001, 2002, 2003,
+#           2010 Free Software Foundation, Inc.
+# 
+# This file is free software; as a special exception the author gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+# 
+# This file is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+#
+# Unless you specify which option file to use (with the command line
+# option "--options filename"), GnuPG uses the file ~/.gnupg/gpg.conf
+# by default.
+#
+# An options file can contain any long options which are available in
+# GnuPG. If the first non white space character of a line is a '#',
+# this line is ignored.  Empty lines are also ignored.
+#
+# See the man page for a list of options.
+
+# Uncomment the following option to get rid of the copyright notice
+
+#no-greeting
+
+# If you have more than 1 secret key in your keyring, you may want to
+# uncomment the following option and set your preferred keyid.
+
+#default-key 621CC013
+
+# If you do not pass a recipient to gpg, it will ask for one.  Using
+# this option you can encrypt to a default key.  Key validation will
+# not be done in this case.  The second form uses the default key as
+# default recipient.
+
+#default-recipient some-user-id
+#default-recipient-self
+
+# By default GnuPG creates version 4 signatures for data files as
+# specified by OpenPGP.  Some earlier (PGP 6, PGP 7) versions of PGP
+# require the older version 3 signatures.  Setting this option forces
+# GnuPG to create version 3 signatures.
+
+#force-v3-sigs
+
+# Because some mailers change lines starting with "From " to ">From "
+# it is good to handle such lines in a special way when creating
+# cleartext signatures; all other PGP versions do it this way too.
+# To enable full OpenPGP compliance you may want to use this option.
+
+#no-escape-from-lines
+
+# When verifying a signature made from a subkey, ensure that the cross
+# certification "back signature" on the subkey is present and valid.
+# This protects against a subtle attack against subkeys that can sign.
+# Defaults to --no-require-cross-certification.  However for new
+# installations it should be enabled.
+
+require-cross-certification
+
+
+# If you do not use the Latin-1 (ISO-8859-1) charset, you should tell
+# GnuPG which is the native character set.  Please check the man page
+# for supported character sets.  This character set is only used for
+# metadata and not for the actual message which does not undergo any
+# translation.  Note that future version of GnuPG will change to UTF-8
+# as default character set.
+
+#charset utf-8
+
+# Group names may be defined like this:
+#   group mynames = paige 0x12345678 joe patti
+#
+# Any time "mynames" is a recipient (-r or --recipient), it will be
+# expanded to the names "paige", "joe", and "patti", and the key ID
+# "0x12345678".  Note there is only one level of expansion - you
+# cannot make an group that points to another group.  Note also that
+# if there are spaces in the recipient name, this will appear as two
+# recipients.  In these cases it is better to use the key ID.
+
+#group mynames = paige 0x12345678 joe patti
+
+# Some old Windows platforms require 8.3 filenames.  If your system
+# can handle long filenames, uncomment this.
+
+#no-mangle-dos-filenames
+
+# Lock the file only once for the lifetime of a process.  If you do
+# not define this, the lock will be obtained and released every time
+# it is needed - normally this is not needed.
+
+#lock-once
+
+# GnuPG can send and receive keys to and from a keyserver.  These
+# servers can be HKP, email, or LDAP (if GnuPG is built with LDAP
+# support).
+#
+# Example HKP keyservers:
+#      hkp://keys.gnupg.net
+#      hkp://subkeys.pgp.net
+#
+# Example email keyserver:
+#      mailto:pgp-public-keys@keys.pgp.net
+#
+# Example LDAP keyservers:
+#      ldap://pgp.surfnet.nl:11370
+#      ldap://keyserver.pgp.com
+#
+# Regular URL syntax applies, and you can set an alternate port
+# through the usual method:
+#      hkp://keyserver.example.net:22742
+#
+# If you have problems connecting to a HKP server through a buggy http
+# proxy, you can use keyserver option broken-http-proxy (see below),
+# but first you should make sure that you have read the man page
+# regarding proxies (keyserver option honor-http-proxy)
+#
+# Most users just set the name and type of their preferred keyserver.
+# Note that most servers (with the notable exception of
+# ldap://keyserver.pgp.com) synchronize changes with each other.  Note
+# also that a single server name may actually point to multiple
+# servers via DNS round-robin.  hkp://keys.gnupg.net is an example of
+# such a "server", which spreads the load over a number of physical
+# servers.  To see the IP address of the server actually used, you may use
+# the "--keyserver-options debug".
+
+keyserver hkp://keys.gnupg.net
+#keyserver http://http-keys.gnupg.net
+#keyserver mailto:pgp-public-keys@keys.nl.pgp.net
+#keyserver ldap://pgp.surfnet.nl:11370
+#keyserver ldap://keyserver.pgp.com
+
+# Common options for keyserver functions:
+#
+# include-disabled = when searching, include keys marked as "disabled"
+#                    on the keyserver (not all keyservers support this).
+#
+# no-include-revoked = when searching, do not include keys marked as
+#                      "revoked" on the keyserver.
+#
+# verbose = show more information as the keys are fetched.
+#           Can be used more than once to increase the amount
+#           of information shown.
+#
+# use-temp-files = use temporary files instead of a pipe to talk to the
+#                  keyserver.  Some platforms (Win32 for one) always
+#                  have this on.
+#
+# keep-temp-files = do not delete temporary files after using them
+#                   (really only useful for debugging)
+#
+# honor-http-proxy = if the keyserver uses HTTP, honor the http_proxy
+#                    environment variable
+#
+# broken-http-proxy = try to work around a buggy HTTP proxy
+#
+# auto-key-retrieve = automatically fetch keys as needed from the keyserver
+#                     when verifying signatures or when importing keys that
+#                     have been revoked by a revocation key that is not
+#                     present on the keyring.
+#
+# no-include-attributes = do not include attribute IDs (aka "photo IDs")
+#                         when sending keys to the keyserver.
+
+#keyserver-options auto-key-retrieve
+
+# Uncomment this line to display photo user IDs in key listings and
+# when a signature from a key with a photo is verified.
+
+#show-photos
+
+# Use this program to display photo user IDs
+#
+# %i is expanded to a temporary file that contains the photo.
+# %I is the same as %i, but the file isn't deleted afterwards by GnuPG.
+# %k is expanded to the key ID of the key.
+# %K is expanded to the long OpenPGP key ID of the key.
+# %t is expanded to the extension of the image (e.g. "jpg").
+# %T is expanded to the MIME type of the image (e.g. "image/jpeg").
+# %f is expanded to the fingerprint of the key.
+# %% is %, of course.
+#
+# If %i or %I are not present, then the photo is supplied to the
+# viewer on standard input.  If your platform supports it, standard
+# input is the best way to do this as it avoids the time and effort in
+# generating and then cleaning up a secure temp file.
+#
+# The default program is "xloadimage -fork -quiet -title 'KeyID 0x%k' stdin"
+# On Mac OS X and Windows, the default is to use your regular JPEG image
+# viewer.
+#
+# Some other viewers:
+# photo-viewer "qiv %i"
+# photo-viewer "ee %i"
+# photo-viewer "display -title 'KeyID 0x%k'"
+#
+# This one saves a copy of the photo ID in your home directory:
+# photo-viewer "cat > ~/photoid-for-key-%k.%t"
+#
+# Use your MIME handler to view photos:
+# photo-viewer "metamail -q -d -b -c %T -s 'KeyID 0x%k' -f GnuPG"
+
+
+personal-digest-preferences SHA256
+cert-digest-algo SHA256
+default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed
+
+
diff --git a/src/configuration/IM/Charybdis/ircd.conf b/src/configuration/IM/Charybdis/ircd.conf
new file mode 100644 (file)
index 0000000..66a4298
--- /dev/null
@@ -0,0 +1,501 @@
+/* doc/example.conf - brief example configuration file
+ *
+ * Copyright (C) 2000-2002 Hybrid Development Team
+ * Copyright (C) 2002-2005 ircd-ratbox development team
+ * Copyright (C) 2005-2006 charybdis development team
+ *
+ * $Id: example.conf 3582 2007-11-17 21:55:48Z jilles $
+ *
+ * See reference.conf for more information.
+ */
+
+/* Extensions */
+#loadmodule "extensions/chm_operonly_compat.so";
+#loadmodule "extensions/chm_quietunreg_compat.so";
+#loadmodule "extensions/chm_sslonly_compat.so";
+#loadmodule "extensions/createauthonly.so";
+#loadmodule "extensions/extb_account.so";
+#loadmodule "extensions/extb_canjoin.so";
+#loadmodule "extensions/extb_channel.so";
+#loadmodule "extensions/extb_extgecos.so";
+#loadmodule "extensions/extb_oper.so";
+#loadmodule "extensions/extb_realname.so";
+#loadmodule "extensions/extb_server.so";
+loadmodule "extensions/extb_ssl.so";
+#loadmodule "extensions/hurt.so";
+#loadmodule "extensions/m_findforwards.so";
+#loadmodule "extensions/m_identify.so";
+#loadmodule "extensions/no_oper_invis.so";
+#loadmodule "extensions/sno_farconnect.so";
+#loadmodule "extensions/sno_globalkline.so";
+#loadmodule "extensions/sno_globaloper.so";
+#loadmodule "extensions/sno_whois.so";
+
+/*
+ * IP cloaking extensions: use ip_cloaking_4.0
+ * if you're linking 3.2 and later, otherwise use
+ * ip_cloaking.so, for compatibility with older 3.x
+ * releases.
+ */
+
+#loadmodule "extensions/ip_cloaking_4.0.so";
+#loadmodule "extensions/ip_cloaking.so";
+
+serverinfo {
+       name = "hades.arpa";
+       sid = "42X";
+       description = "charybdis test server";
+       network_name = "AthemeNET";
+       network_desc = "Your IRC network.";
+       hub = yes;
+
+       /* On multi-homed hosts you may need the following. These define
+        * the addresses we connect from to other servers. */
+       /* for IPv4 */
+       #vhost = "192.169.0.1";
+       /* for IPv6 */
+       #vhost6 = "3ffe:80e8:546::2";
+       
+       /* ssl_private_key: our ssl private key */
+       ssl_private_key = "etc/test.key";
+
+       /* ssl_cert: certificate for our ssl server */
+       ssl_cert = "etc/test.cert";
+
+       /* ssl_dh_params: DH parameters, generate with openssl dhparam -out dh.pem 1024 */
+       ssl_dh_params = "etc/dh.pem";
+
+       /* ssld_count: number of ssld processes you want to start, if you
+        * have a really busy server, using N-1 where N is the number of
+        * cpu/cpu cores you have might be useful. A number greater than one
+        * can also be useful in case of bugs in ssld and because ssld needs
+        * two file descriptors per SSL connection.
+        */
+       # set ssld_count as number of cores - 1
+       ssld_count = 1;
+
+       /* default max clients: the default maximum number of clients
+        * allowed to connect.  This can be changed once ircd has started by
+        * issuing:
+        *   /quote set maxclients <limit>
+        */
+       default_max_clients = 1024;
+};
+
+admin {
+       name = "Lazy admin (lazya)";
+       description = "AthemeNET client server";
+       email = "nobody@127.0.0.1";
+};
+
+log {
+       fname_userlog = "/var/log/charybdis/userlog";
+       #fname_fuserlog = "/var/log/charybdis/fuserlog";
+       fname_operlog = "/var/log/charybdis/operlog";
+       #fname_foperlog = "/var/log/charybdis/foperlog";
+       fname_serverlog = "/var/log/charybdis/serverlog";
+       #fname_klinelog = "/var/log/charybdis/klinelog";
+       fname_killlog = "/var/log/charybdis/killlog";
+       fname_operspylog = "/var/log/charybdis/operspylog";
+       #fname_ioerrorlog = "/var/log/charybdis/ioerror";
+};
+
+/* class {} blocks MUST be specified before anything that uses them.  That
+ * means they must be defined before auth {} and before connect {}.
+ */
+class "users" {
+       ping_time = 2 minutes;
+       number_per_ident = 10;
+       number_per_ip = 10;
+       number_per_ip_global = 50;
+       cidr_ipv4_bitlen = 24;
+       cidr_ipv6_bitlen = 64;
+       number_per_cidr = 200;
+       max_number = 3000;
+       sendq = 400 kbytes;
+};
+
+class "opers" {
+       ping_time = 5 minutes;
+       number_per_ip = 10;
+       max_number = 1000;
+       sendq = 1 megabyte;
+};
+
+class "server" {
+       ping_time = 5 minutes;
+       connectfreq = 5 minutes;
+       max_number = 1;
+       sendq = 4 megabytes;
+};
+
+listen {
+       /* If you want to listen on a specific IP only, specify host.
+        * host definitions apply only to the following port line.
+        */
+       #host = "192.169.0.1";
+       port = 5000, 6665 .. 6669;
+       sslport = 6697;
+
+       /* Listen on IPv6 (if you used host= above). */
+       #host = "3ffe:1234:a:b:c::d";
+        #port = 5000, 6665 .. 6669;
+        #sslport = 9999;
+};
+
+/* auth {}: allow users to connect to the ircd (OLD I:)
+ * auth {} blocks MUST be specified in order of precedence.  The first one
+ * that matches a user will be used.  So place spoofs first, then specials,
+ * then general access, then restricted.
+ */
+auth {
+       /* user: the user@host allowed to connect.  Multiple IPv4/IPv6 user
+        * lines are permitted per auth block.  This is matched against the
+        * hostname and IP address (using :: shortening for IPv6 and
+        * prepending a 0 if it starts with a colon) and can also use CIDR
+        * masks.
+        */
+       user = "*@172.16.0.0/12";
+       user = "*@fc00::*";
+
+       /* password: an optional password that is required to use this block.
+        * By default this is not encrypted, specify the flag "encrypted" in
+        * flags = ...; below if it is.
+        */
+       password = "letmein";
+       
+       /* spoof: fake the users user@host to be be this.  You may either
+        * specify a host or a user@host to spoof to.  This is free-form,
+        * just do everyone a favour and dont abuse it. (OLD I: = flag)
+        */
+        spoof = "I.still.hate.packets";
+
+       /* Possible flags in auth:
+        * 
+        * encrypted                  | password is encrypted with mkpasswd
+        * spoof_notice               | give a notice when spoofing hosts
+        * exceed_limit (old > flag)  | allow user to exceed class user limits
+        * kline_exempt (old ^ flag)  | exempt this user from k/g/xlines&dnsbls
+        * dnsbl_exempt               | exempt this user from dnsbls
+        * spambot_exempt             | exempt this user from spambot checks
+        * shide_exempt               | exempt this user from serverhiding
+        * jupe_exempt                | exempt this user from generating
+        *                              warnings joining juped channels
+        * resv_exempt                | exempt this user from resvs
+         * flood_exempt               | exempt this user from flood limits
+         *                                     USE WITH CAUTION.
+        * no_tilde     (old - flag)  | don't prefix ~ to username if no ident
+        * need_ident   (old + flag)  | require ident for user in this class
+        * need_ssl                   | require SSL/TLS for user in this class
+        * need_sasl                  | require SASL id for user in this class
+        */
+       flags = kline_exempt, exceed_limit;
+       
+       /* class: the class the user is placed in */
+       class = "opers";
+};
+
+auth {
+       user = "*@*";
+       class = "users";
+};
+
+/* privset {} blocks MUST be specified before anything that uses them.  That
+ * means they must be defined before operator {}.
+ */
+privset "local_op" {
+       privs = oper:local_kill, oper:operwall;
+};
+
+privset "server_bot" {
+       extends = "local_op";
+       privs = oper:kline, oper:remoteban, snomask:nick_changes;
+};
+
+privset "global_op" {
+       extends = "local_op";
+       privs = oper:global_kill, oper:routing, oper:kline, oper:unkline, oper:xline,
+               oper:resv, oper:mass_notice, oper:remoteban;
+};
+
+privset "admin" {
+       extends = "global_op";
+       privs = oper:admin, oper:die, oper:rehash, oper:spy;
+};
+
+operator "god" {
+       /* name: the name of the oper must go above */
+
+       /* user: the user@host required for this operator.  CIDR *is*
+        * supported now. auth{} spoofs work here, other spoofs do not.
+        * multiple user="" lines are supported.
+        */
+       user = "*god@127.0.0.1";
+
+       /* password: the password required to oper.  Unless ~encrypted is
+        * contained in flags = ...; this will need to be encrypted using 
+        * mkpasswd, MD5 is supported
+        */
+       password = "etcnjl8juSU1E";
+
+       /* rsa key: the public key for this oper when using Challenge.
+        * A password should not be defined when this is used, see 
+        * doc/challenge.txt for more information.
+        */
+       #rsa_public_key_file = "/usr/local/ircd/etc/oper.pub";
+
+       /* umodes: the specific umodes this oper gets when they oper.
+        * If this is specified an oper will not be given oper_umodes
+        * These are described above oper_only_umodes in general {};
+        */
+       #umodes = locops, servnotice, operwall, wallop;
+
+       /* fingerprint: if specified, the oper's client certificate
+        * fingerprint will be checked against the specified fingerprint
+        * below.
+        */
+       #fingerprint = "c77106576abf7f9f90cca0f63874a60f2e40a64b";
+
+       /* snomask: specific server notice mask on oper up.
+        * If this is specified an oper will not be given oper_snomask.
+        */
+       snomask = "+Zbfkrsuy";
+
+       /* flags: misc options for the operator.  You may prefix an option
+        * with ~ to disable it, e.g. ~encrypted.
+        *
+        * Default flags are encrypted.
+        *
+        * Available options:
+        *
+        * encrypted:    the password above is encrypted [DEFAULT]
+        * need_ssl:     must be using SSL/TLS to oper up
+         */
+       flags = encrypted;
+
+       /* privset: privileges set to grant */
+       privset = "admin";
+};
+
+#connect "irc.uplink.com" {
+#      host = "192.168.0.1";
+#      send_password = "password";
+#      accept_password = "anotherpassword";
+#      port = 6666;
+#      hub_mask = "*";
+#      class = "server";
+#      flags = compressed, topicburst;
+#
+#      /* If the connection is IPv6, uncomment below.
+#       * Use 0::1, not ::1, for IPv6 localhost. */
+#      #aftype = ipv6;
+#};
+#
+#connect "ssl.uplink.com" {
+#      host = "192.168.0.1";
+#      send_password = "password";
+#      accept_password = "anotherpassword";
+#      port = 9999;
+#      hub_mask = "*";
+#      class = "server";
+#      flags = ssl, topicburst;
+#};
+
+service {
+       name = "services.int";
+};
+
+cluster {
+       name = "*";
+       flags = kline, tkline, unkline, xline, txline, unxline, resv, tresv, unresv;
+};
+
+shared {
+       oper = "*@*", "*";
+       flags = all, rehash;
+};
+
+/* exempt {}: IPs that are exempt from Dlines and rejectcache. (OLD d:) */
+exempt {
+       ip = "127.0.0.1";
+};
+
+channel {
+       use_invex = yes;
+       use_except = yes;
+       use_knock = yes;
+       use_forward = yes;
+       knock_delay = 5 minutes;
+       knock_delay_channel = 1 minute;
+       max_chans_per_user = 15;
+        max_bans = 100;
+        max_bans_large = 500;
+       default_split_user_count = 0;
+       default_split_server_count = 0;
+       no_create_on_split = no;
+       no_join_on_split = no;
+       burst_topicwho = yes;
+       kick_on_split_riding = no;
+       only_ascii_channels = no;
+       resv_forcepart = yes;
+       channel_target_change = yes;
+};
+
+serverhide {
+       flatten_links = yes;
+       links_delay = 5 minutes;
+        hidden = no;
+       disable_hidden = no;
+};
+
+/* These are the blacklist settings.
+ * You can have multiple combinations of host and rejection reasons.
+ * They are used in pairs of one host/rejection reason.
+ *
+ * These settings should be adequate for most networks, and are (presently)
+ * required for use on AthemeNet.
+ *
+ * Word to the wise: Do not use blacklists like SPEWS for blocking IRC
+ * connections.
+ *
+ * As of charybdis 2.1.3, you can do some keyword substitution on the rejection
+ * reason. The available keyword substitutions are:
+ *
+ *   ${ip}           - the user's IP
+ *   ${host}         - the user's canonical hostname
+ *   ${dnsbl-host}   - the dnsbl hostname the lookup was done against
+ *   ${nick}         - the user's nickname
+ *   ${network-name} - the name of the network
+ *
+ * Note: AHBL (the providers of the below *.ahbl.org BLs) request that they be
+ * contacted, via email, at admins@2mbit.com before using these BLs.
+ * See <http://www.ahbl.org/services.php> for more information.
+ */
+blacklist {
+       host = "rbl.efnetrbl.org";
+       reject_reason = "${nick}, your IP (${ip}) is listed in EFnet's RBL. For assistance, see http://efnetrbl.org/?i=${ip}";
+
+#      host = "ircbl.ahbl.org";
+#      reject_reason = "${nick}, your IP (${ip}) is listed in ${dnsbl-host} for having an open proxy. In order to protect ${network-name} from abuse, we are not allowing connections with open proxies to connect.";
+#
+#      host = "tor.ahbl.org";
+#      reject_reason = "${nick}, your IP (${ip}) is listed as a TOR exit node. In order to protect ${network-name} from tor-based abuse, we are not allowing TOR exit nodes to connect to our network.";
+};
+
+alias "NickServ" {
+       target = "NickServ";
+};
+
+alias "ChanServ" {
+       target = "ChanServ";
+};
+
+alias "OperServ" {
+       target = "OperServ";
+};
+
+alias "MemoServ" {
+       target = "MemoServ";
+};
+
+alias "NS" {
+       target = "NickServ";
+};
+
+alias "CS" {
+       target = "ChanServ";
+};
+
+alias "OS" {
+       target = "OperServ";
+};
+
+alias "MS" {
+       target = "MemoServ";
+};
+
+general {
+       hide_error_messages = opers;
+       hide_spoof_ips = yes;
+
+       /*
+        * default_umodes: umodes to enable on connect.
+        * If you have enabled the new ip_cloaking_4.0 module, and you want
+        * to make use of it, add +x to this option, i.e.:
+        *      default_umodes = "+ix";
+        *
+        * If you have enabled the old ip_cloaking module, and you want
+        * to make use of it, add +h to this option, i.e.:
+        *      default_umodes = "+ih";
+        */
+       default_umodes = "+i";
+
+       default_operstring = "is an IRC Operator";
+       default_adminstring = "is a Server Administrator";
+       servicestring = "is a Network Service";
+       disable_fake_channels = no;
+        tkline_expire_notices = no;
+        default_floodcount = 10;
+       failed_oper_notice = yes;
+       dots_in_ident=2;
+       min_nonwildcard = 4;
+       min_nonwildcard_simple = 3;
+        max_accept = 100;
+       max_monitor = 100;
+       anti_nick_flood = yes;
+       max_nick_time = 20 seconds;
+       max_nick_changes = 5;
+        anti_spam_exit_message_time = 5 minutes;
+       ts_warn_delta = 30 seconds;
+       ts_max_delta = 5 minutes;
+       client_exit = yes;
+       collision_fnc = yes;
+       global_snotices = yes;
+       dline_with_reason = yes;
+       kline_delay = 0 seconds;
+       kline_with_reason = yes;
+       kline_reason = "K-Lined";
+       identify_service = "NickServ@services.int";
+       identify_command = "IDENTIFY";
+       non_redundant_klines = yes;
+       warn_no_nline = yes;
+       use_propagated_bans = yes;
+       stats_e_disabled = no;
+       stats_c_oper_only=no;
+       stats_h_oper_only=no;
+       stats_y_oper_only=no;
+       stats_o_oper_only=yes;
+       stats_P_oper_only=no;
+       stats_i_oper_only=masked;
+       stats_k_oper_only=masked;
+        map_oper_only = no;
+       operspy_admin_only = no;
+       operspy_dont_care_user_info = no;
+       caller_id_wait = 1 minute;
+       pace_wait_simple = 1 second;
+       pace_wait = 10 seconds;
+       short_motd = no;
+       ping_cookie = no;
+       connect_timeout = 30 seconds;
+       default_ident_timeout = 5;
+       disable_auth = no;
+       no_oper_flood = yes;
+       max_targets = 4;
+       client_flood = 20;
+        use_whois_actually = no;
+       oper_only_umodes = operwall, locops, servnotice;
+       oper_umodes = locops, servnotice, operwall, wallop;
+       oper_snomask = "+s";
+        burst_away = yes;
+       nick_delay = 0 seconds; # 15 minutes if you want to enable this
+       reject_ban_time = 1 minute;
+       reject_after_count = 3;
+       reject_duration = 5 minutes;
+       throttle_duration = 60;
+       throttle_count = 4;
+};
+
+modules {
+       path = "modules";
+       path = "modules/autoload";
+};
diff --git a/src/configuration/IM/ejabberd/ejabberd.cfg b/src/configuration/IM/ejabberd/ejabberd.cfg
new file mode 100644 (file)
index 0000000..6d204c3
--- /dev/null
@@ -0,0 +1,613 @@
+%%%
+%%%               ejabberd configuration file
+%%%
+%%%'
+
+%%% The parameters used in this configuration file are explained in more detail
+%%% in the ejabberd Installation and Operation Guide.
+%%% Please consult the Guide in case of doubts, it is included with
+%%% your copy of ejabberd, and is also available online at
+%%% http://www.process-one.net/en/ejabberd/docs/
+
+%%% This configuration file contains Erlang terms.
+%%% In case you want to understand the syntax, here are the concepts:
+%%%
+%%%  - The character to comment a line is %
+%%%
+%%%  - Each term ends in a dot, for example:
+%%%      override_global.
+%%%
+%%%  - A tuple has a fixed definition, its elements are
+%%%    enclosed in {}, and separated with commas:
+%%%      {loglevel, 4}.
+%%%
+%%%  - A list can have as many elements as you want,
+%%%    and is enclosed in [], for example:
+%%%      [http_poll, web_admin, tls]
+%%%
+%%%  - A keyword of ejabberd is a word in lowercase.
+%%%    Strings are enclosed in "" and can contain spaces, dots, ...
+%%%      {language, "en"}.
+%%%      {ldap_rootdn, "dc=example,dc=com"}.
+%%%
+%%%  - This term includes a tuple, a keyword, a list, and two strings:
+%%%      {hosts, ["jabber.example.net", "im.example.com"]}.
+%%%
+
+
+%%%.   =======================
+%%%'   OVERRIDE STORED OPTIONS
+
+%%
+%% Override the old values stored in the database.
+%%
+
+%%
+%% Override global options (shared by all ejabberd nodes in a cluster).
+%%
+%%override_global.
+
+%%
+%% Override local options (specific for this particular ejabberd node).
+%%
+%%override_local.
+
+%%
+%% Remove the Access Control Lists before new ones are added.
+%%
+%%override_acls.
+
+
+%%%.   =========
+%%%'   DEBUGGING
+
+%%
+%% loglevel: Verbosity of log files generated by ejabberd.
+%% 0: No ejabberd log at all (not recommended)
+%% 1: Critical
+%% 2: Error
+%% 3: Warning
+%% 4: Info
+%% 5: Debug
+%%
+{loglevel, 4}.
+
+%%
+%% watchdog_admins: Only useful for developers: if an ejabberd process
+%% consumes a lot of memory, send live notifications to these XMPP
+%% accounts.
+%%
+%%{watchdog_admins, ["bob@example.com"]}.
+
+
+%%%.   ================
+%%%'   SERVED HOSTNAMES
+
+%%
+%% hosts: Domains served by ejabberd.
+%% You can define one or several, for example:
+%% {hosts, ["example.net", "example.com", "example.org"]}.
+%%
+{hosts, ["localhost"]}.
+
+%%
+%% route_subdomains: Delegate subdomains to other XMPP servers.
+%% For example, if this ejabberd serves example.org and you want
+%% to allow communication with an XMPP server called im.example.org.
+%%
+%%{route_subdomains, s2s}.
+
+
+%%%.   ===============
+%%%'   LISTENING PORTS
+
+%%
+%% listen: The ports ejabberd will listen on, which service each is handled
+%% by and what options to start it with.
+%%
+{listen,
+ [
+
+  {5222, ejabberd_c2s, [
+
+                       %%
+                       %% If TLS is compiled in and you installed a SSL
+                       %% certificate, specify the full path to the
+                       %% file and uncomment this line:
+                       %%
+                       %%{certfile, "/path/to/ssl.pem"}, starttls,
+
+                       {access, c2s},
+                       {shaper, c2s_shaper},
+                       {max_stanza_size, 65536},
+                       starttls,
+                       starttls_required, 
+                       {certfile, "/etc/ejabberd/ejabberd.pem"}
+               ]},
+
+  %%
+  %% To enable the old SSL connection method on port 5223:
+  %%
+  %%{5223, ejabberd_c2s, [
+  %%                   {access, c2s},
+  %%                   {shaper, c2s_shaper},
+  %%                   {certfile, "/path/to/ssl.pem"}, tls,
+  %%                   {max_stanza_size, 65536}
+  %%                  ]},
+
+  {5269, ejabberd_s2s_in, [
+                          {shaper, s2s_shaper},
+                          {max_stanza_size, 131072}
+                         ]},
+
+  %%
+  %% ejabberd_service: Interact with external components (transports, ...)
+  %%
+  %%{8888, ejabberd_service, [
+  %%                       {access, all},
+  %%                       {shaper_rule, fast},
+  %%                       {ip, {127, 0, 0, 1}},
+  %%                       {hosts, ["icq.example.org", "sms.example.org"],
+  %%                        [{password, "secret"}]
+  %%                       }
+  %%                      ]},
+
+  %%
+  %% ejabberd_stun: Handles STUN Binding requests
+  %%
+  %%{{3478, udp}, ejabberd_stun, []},
+
+  {5280, ejabberd_http, [
+                        %%{request_handlers,
+                        %% [
+                        %%  {["pub", "archive"], mod_http_fileserver}
+                        %% ]},
+                        captcha,
+                        http_bind,
+                        http_poll,
+                        %%register,
+                        web_admin
+                       ]}
+
+ ]}.
+
+%%
+%% s2s_use_starttls: Enable STARTTLS + Dialback for S2S connections.
+%% Allowed values are: false optional required required_trusted
+%% You must specify a certificate file.
+%%
+{s2s_use_starttls, required_trusted}.
+
+%%
+%% s2s_certfile: Specify a certificate file.
+%%
+{s2s_certfile, "/etc/ejabberd/ejabberd.pem"}.
+
+%%
+%% domain_certfile: Specify a different certificate for each served hostname.
+%%
+%%{domain_certfile, "example.org", "/path/to/example_org.pem"}.
+%%{domain_certfile, "example.com", "/path/to/example_com.pem"}.
+
+%%
+%% S2S whitelist or blacklist
+%%
+%% Default s2s policy for undefined hosts.
+%%
+%%{s2s_default_policy, allow}.
+
+%%
+%% Allow or deny communication with specific servers.
+%%
+%%{{s2s_host, "goodhost.org"}, allow}.
+%%{{s2s_host, "badhost.org"}, deny}.
+
+%%
+%% Outgoing S2S options
+%%
+%% Preferred address families (which to try first) and connect timeout
+%% in milliseconds.
+%%
+%%{outgoing_s2s_options, [ipv4, ipv6], 10000}.
+
+
+%%%.   ==============
+%%%'   AUTHENTICATION
+
+%%
+%% auth_method: Method used to authenticate the users.
+%% The default method is the internal.
+%% If you want to use a different method,
+%% comment this line and enable the correct ones.
+%%
+{auth_method, internal}.
+%%
+%% Store the plain passwords or hashed for SCRAM:
+%%{auth_password_format, plain}.
+%%{auth_password_format, scram}.
+%%
+%% Define the FQDN if ejabberd doesn't detect it:
+%%{fqdn, "server3.example.com"}.
+
+%%
+%% Authentication using external script
+%% Make sure the script is executable by ejabberd.
+%%
+%%{auth_method, external}.
+%%{extauth_program, "/path/to/authentication/script"}.
+
+%%
+%% Authentication using ODBC
+%% Remember to setup a database in the next section.
+%%
+%%{auth_method, odbc}.
+
+%%
+%% Authentication using PAM
+%%
+%%{auth_method, pam}.
+%%{pam_service, "pamservicename"}.
+
+%%
+%% Authentication using LDAP
+%%
+%%{auth_method, ldap}.
+%%
+%% List of LDAP servers:
+%%{ldap_servers, ["localhost"]}.
+%%
+%% Encryption of connection to LDAP servers:
+%%{ldap_encrypt, none}.
+%%{ldap_encrypt, tls}.
+%%
+%% Port to connect to on LDAP servers:
+%%{ldap_port, 389}.
+%%{ldap_port, 636}.
+%%
+%% LDAP manager:
+%%{ldap_rootdn, "dc=example,dc=com"}.
+%%
+%% Password of LDAP manager:
+%%{ldap_password, "******"}.
+%%
+%% Search base of LDAP directory:
+%%{ldap_base, "dc=example,dc=com"}.
+%%
+%% LDAP attribute that holds user ID:
+%%{ldap_uids, [{"mail", "%u@mail.example.org"}]}.
+%%
+%% LDAP filter:
+%%{ldap_filter, "(objectClass=shadowAccount)"}.
+
+%%
+%% Anonymous login support:
+%%   auth_method: anonymous
+%%   anonymous_protocol: sasl_anon | login_anon | both
+%%   allow_multiple_connections: true | false
+%%
+%%{host_config, "public.example.org", [{auth_method, anonymous},
+%%                                     {allow_multiple_connections, false},
+%%                                     {anonymous_protocol, sasl_anon}]}.
+%%
+%% To use both anonymous and internal authentication:
+%%
+%%{host_config, "public.example.org", [{auth_method, [internal, anonymous]}]}.
+
+
+%%%.   ==============
+%%%'   DATABASE SETUP
+
+%% ejabberd by default uses the internal Mnesia database,
+%% so you do not necessarily need this section.
+%% This section provides configuration examples in case
+%% you want to use other database backends.
+%% Please consult the ejabberd Guide for details on database creation.
+
+%%
+%% MySQL server:
+%%
+%%{odbc_server, {mysql, "server", "database", "username", "password"}}.
+%%
+%% If you want to specify the port:
+%%{odbc_server, {mysql, "server", 1234, "database", "username", "password"}}.
+
+%%
+%% PostgreSQL server:
+%%
+%%{odbc_server, {pgsql, "server", "database", "username", "password"}}.
+%%
+%% If you want to specify the port:
+%%{odbc_server, {pgsql, "server", 1234, "database", "username", "password"}}.
+%%
+%% If you use PostgreSQL, have a large database, and need a
+%% faster but inexact replacement for "select count(*) from users"
+%%
+%%{pgsql_users_number_estimate, true}.
+
+%%
+%% ODBC compatible or MSSQL server:
+%%
+%%{odbc_server, "DSN=ejabberd;UID=ejabberd;PWD=ejabberd"}.
+
+%%
+%% Number of connections to open to the database for each virtual host
+%%
+%%{odbc_pool_size, 10}.
+
+%%
+%% Interval to make a dummy SQL request to keep the connections to the
+%% database alive. Specify in seconds: for example 28800 means 8 hours
+%%
+%%{odbc_keepalive_interval, undefined}.
+
+
+%%%.   ===============
+%%%'   TRAFFIC SHAPERS
+
+%%
+%% The "normal" shaper limits traffic speed to 1000 B/s
+%%
+{shaper, normal, {maxrate, 1000}}.
+
+%%
+%% The "fast" shaper limits traffic speed to 50000 B/s
+%%
+{shaper, fast, {maxrate, 50000}}.
+
+%%
+%% This option specifies the maximum number of elements in the queue
+%% of the FSM. Refer to the documentation for details.
+%%
+{max_fsm_queue, 1000}.
+
+
+%%%.   ====================
+%%%'   ACCESS CONTROL LISTS
+
+%%
+%% The 'admin' ACL grants administrative privileges to XMPP accounts.
+%% You can put here as many accounts as you want.
+%%
+%%{acl, admin, {user, "aleksey", "localhost"}}.
+%%{acl, admin, {user, "ermine", "example.org"}}.
+
+%%
+%% Blocked users
+%%
+%%{acl, blocked, {user, "baduser", "example.org"}}.
+%%{acl, blocked, {user, "test"}}.
+
+%%
+%% Local users: don't modify this line.
+%%
+{acl, local, {user_regexp, ""}}.
+
+%%
+%% More examples of ACLs
+%%
+%%{acl, jabberorg, {server, "jabber.org"}}.
+%%{acl, aleksey, {user, "aleksey", "jabber.ru"}}.
+%%{acl, test, {user_regexp, "^test"}}.
+%%{acl, test, {user_glob, "test*"}}.
+
+%%
+%% Define specific ACLs in a virtual host.
+%%
+%%{host_config, "localhost",
+%% [
+%%  {acl, admin, {user, "bob-local", "localhost"}}
+%% ]
+%%}.
+
+
+%%%.   ============
+%%%'   ACCESS RULES
+
+%% Maximum number of simultaneous sessions allowed for a single user:
+{access, max_user_sessions, [{10, all}]}.
+
+%% Maximum number of offline messages that users can have:
+{access, max_user_offline_messages, [{5000, admin}, {100, all}]}.
+
+%% This rule allows access only for local users:
+{access, local, [{allow, local}]}.
+
+%% Only non-blocked users can use c2s connections:
+{access, c2s, [{deny, blocked},
+              {allow, all}]}.
+
+%% For C2S connections, all users except admins use the "normal" shaper
+{access, c2s_shaper, [{none, admin},
+                     {normal, all}]}.
+
+%% All S2S connections use the "fast" shaper
+{access, s2s_shaper, [{fast, all}]}.
+
+%% Only admins can send announcement messages:
+{access, announce, [{allow, admin}]}.
+
+%% Only admins can use the configuration interface:
+{access, configure, [{allow, admin}]}.
+
+%% Admins of this server are also admins of the MUC service:
+{access, muc_admin, [{allow, admin}]}.
+
+%% Only accounts of the local ejabberd server can create rooms:
+{access, muc_create, [{allow, local}]}.
+
+%% All users are allowed to use the MUC service:
+{access, muc, [{allow, all}]}.
+
+%% Only accounts on the local ejabberd server can create Pubsub nodes:
+{access, pubsub_createnode, [{allow, local}]}.
+
+%% In-band registration allows registration of any possible username.
+%% To disable in-band registration, replace 'allow' with 'deny'.
+{access, register, [{allow, all}]}.
+
+%% By default the frequency of account registrations from the same IP
+%% is limited to 1 account every 10 minutes. To disable, specify: infinity
+%%{registration_timeout, 600}.
+
+%%
+%% Define specific Access Rules in a virtual host.
+%%
+%%{host_config, "localhost",
+%% [
+%%  {access, c2s, [{allow, admin}, {deny, all}]},
+%%  {access, register, [{deny, all}]}
+%% ]
+%%}.
+
+
+%%%.   ================
+%%%'   DEFAULT LANGUAGE
+
+%%
+%% language: Default language used for server messages.
+%%
+{language, "en"}.
+
+%%
+%% Set a different default language in a virtual host.
+%%
+%%{host_config, "localhost",
+%% [{language, "ru"}]
+%%}.
+
+
+%%%.   =======
+%%%'   CAPTCHA
+
+%%
+%% Full path to a script that generates the image.
+%%
+%%{captcha_cmd, "/lib/ejabberd/priv/bin/captcha.sh"}.
+
+%%
+%% Host for the URL and port where ejabberd listens for CAPTCHA requests.
+%%
+%%{captcha_host, "example.org:5280"}.
+
+%%
+%% Limit CAPTCHA calls per minute for JID/IP to avoid DoS.
+%%
+%%{captcha_limit, 5}.
+
+%%%.   =======
+%%%'   MODULES
+
+%%
+%% Modules enabled in all ejabberd virtual hosts.
+%%
+{modules,
+ [
+  {mod_adhoc,    []},
+  {mod_announce, [{access, announce}]}, % recommends mod_adhoc
+  {mod_blocking,[]}, % requires mod_privacy
+  {mod_caps,     []},
+  {mod_configure,[]}, % requires mod_adhoc
+  {mod_disco,    []},
+  %%{mod_echo,   [{host, "echo.localhost"}]},
+  {mod_irc,      []},
+  {mod_http_bind, []},
+  %%{mod_http_fileserver, [
+  %%                       {docroot, "/var/www"},
+  %%                       {accesslog, "/var/log/ejabberd/access.log"}
+  %%                      ]},
+  {mod_last,     []},
+  {mod_muc,      [
+                 %%{host, "conference.@HOST@"},
+                 {access, muc},
+                 {access_create, muc_create},
+                 {access_persistent, muc_create},
+                 {access_admin, muc_admin}
+                ]},
+  %%{mod_muc_log,[]},
+  {mod_offline,  [{access_max_user_messages, max_user_offline_messages}]},
+  {mod_ping,     []},
+  %%{mod_pres_counter,[{count, 5}, {interval, 60}]},
+  {mod_privacy,  []},
+  {mod_private,  []},
+  %%{mod_proxy65,[]},
+  {mod_pubsub,   [
+                 {access_createnode, pubsub_createnode},
+                 {ignore_pep_from_offline, true}, % reduces resource comsumption, but XEP incompliant
+                 %%{ignore_pep_from_offline, false},  % XEP compliant, but increases resource comsumption
+                 {last_item_cache, false},
+                 {plugins, ["flat", "hometree", "pep"]}  % pep requires mod_caps
+                ]},
+  {mod_register, [
+                 %%
+                 %% Protect In-Band account registrations with CAPTCHA.
+                 %%
+                 %%{captcha_protected, true},
+
+                 %%
+                 %% Set the minimum informational entropy for passwords.
+                 %%
+                 %%{password_strength, 32},
+
+                 %%
+                 %% After successful registration, the user receives
+                 %% a message with this subject and body.
+                 %%
+                 {welcome_message, {"Welcome!",
+                                    "Hi.\nWelcome to this XMPP server."}},
+
+                 %%
+                 %% When a user registers, send a notification to
+                 %% these XMPP accounts.
+                 %%
+                 %%{registration_watchers, ["admin1@example.org"]},
+
+                 %%
+                 %% Only clients in the server machine can register accounts
+                 %%
+                 {ip_access, [{allow, "127.0.0.0/8"},
+                              {deny, "0.0.0.0/0"}]},
+
+                 %%
+                 %% Local c2s or remote s2s users cannot register accounts
+                 %%
+                 %%{access_from, deny},
+
+                 {access, register}
+                ]},
+  %%{mod_register_web, [
+                 %%
+                 %% When a user registers, send a notification to
+                 %% these XMPP accounts.
+                 %%
+                 %%{registration_watchers, ["admin1@example.org"]}
+  %%            ]},
+  {mod_roster,   []},
+  %%{mod_service_log,[]},
+  {mod_shared_roster,[]},
+  {mod_stats,    []},
+  {mod_time,     []},
+  {mod_vcard,    []},
+  {mod_version,  []}
+ ]}.
+
+%%
+%% Enable modules with custom options in a specific virtual host
+%%
+%%{host_config, "localhost",
+%% [{{add, modules},
+%%   [
+%%    {mod_echo, [{host, "mirror.localhost"}]}
+%%   ]
+%%  }
+%% ]}.
+
+
+%%%.
+%%%'
+
+%%% $Id$
+
+%%% Local Variables:
+%%% mode: erlang
+%%% End:
+%%% vim: set filetype=erlang tabstop=8 foldmarker=%%%',%%%. foldmethod=marker:
diff --git a/src/configuration/Kerberos/krb5/kdc.conf b/src/configuration/Kerberos/krb5/kdc.conf
new file mode 100644 (file)
index 0000000..4c7a11e
--- /dev/null
@@ -0,0 +1,16 @@
+[kdcdefaults]
+    kdc_ports = 750,88
+
+[realms]
+    @MYREALM = {
+        database_name = /var/lib/krb5kdc/principal
+        admin_keytab = FILE:/etc/krb5kdc/kadm5.keytab
+        acl_file = /etc/krb5kdc/kadm5.acl
+        key_stash_file = /etc/krb5kdc/stash
+        kdc_ports = 750,88
+        max_life = 10h 0m 0s
+        max_renewable_life = 7d 0h 0m 0s
+        master_key_type = des3-hmac-sha1
+        supported_enctypes = aes256-cts-hmac-sha1-96:normal camellia256-cts-cmac:normal aes128-cts-hmac-sha1-96:normal camellia128-cts-cmac:normal
+        default_principal_flags = +preauth
+    }
diff --git a/src/configuration/Kerberos/krb5/krb5.conf b/src/configuration/Kerberos/krb5/krb5.conf
new file mode 100644 (file)
index 0000000..7bcc45d
--- /dev/null
@@ -0,0 +1,140 @@
+[libdefaults]
+       default_realm = ATHENA.MIT.EDU
+
+# The following krb5.conf variables are only for MIT Kerberos.
+       krb4_config = /etc/krb.conf
+       krb4_realms = /etc/krb.realms
+       kdc_timesync = 1
+       ccache_type = 4
+       forwardable = true
+       proxiable = true
+
+# The following encryption type specification will be used by MIT Kerberos
+# if uncommented.  In general, the defaults in the MIT Kerberos code are
+# correct and overriding these specifications only serves to disable new
+# encryption types as they are added, creating interoperability problems.
+#
+# Thie only time when you might need to uncomment these lines and change
+# the enctypes is if you have local software that will break on ticket
+# caches containing ticket encryption types it doesn't know about (such as
+# old versions of Sun Java).
+
+       allow_weak_crypto = false
+       permitted_enctypes= aes256-cts-hmac-sha1-96 camellia256-cts-cmac aes128-cts-hmac-sha1-96 camellia128-cts-cmac
+       default_tkt_enctypes= aes256-cts-hmac-sha1-96 camellia256-cts-cmac aes128-cts-hmac-sha1-96 camellia128-cts-cmac
+       default_tgs_enctypes= aes256-cts-hmac-sha1-96 camellia256-cts-cmac aes128-cts-hmac-sha1-96 camellia128-cts-cmac
+
+# The following libdefaults parameters are only for Heimdal Kerberos.
+       v4_instance_resolve = false
+       v4_name_convert = {
+               host = {
+                       rcmd = host
+                       ftp = ftp
+               }
+               plain = {
+                       something = something-else
+               }
+       }
+       fcc-mit-ticketflags = true
+
+[realms]
+       ATHENA.MIT.EDU = {
+               kdc = kerberos.mit.edu:88
+               kdc = kerberos-1.mit.edu:88
+               kdc = kerberos-2.mit.edu:88
+               admin_server = kerberos.mit.edu
+               default_domain = mit.edu
+       }
+       MEDIA-LAB.MIT.EDU = {
+               kdc = kerberos.media.mit.edu
+               admin_server = kerberos.media.mit.edu
+       }
+       ZONE.MIT.EDU = {
+               kdc = casio.mit.edu
+               kdc = seiko.mit.edu
+               admin_server = casio.mit.edu
+       }
+       MOOF.MIT.EDU = {
+               kdc = three-headed-dogcow.mit.edu:88
+               kdc = three-headed-dogcow-1.mit.edu:88
+               admin_server = three-headed-dogcow.mit.edu
+       }
+       CSAIL.MIT.EDU = {
+               kdc = kerberos-1.csail.mit.edu
+               kdc = kerberos-2.csail.mit.edu
+               admin_server = kerberos.csail.mit.edu
+               default_domain = csail.mit.edu
+               krb524_server = krb524.csail.mit.edu
+       }
+       IHTFP.ORG = {
+               kdc = kerberos.ihtfp.org
+               admin_server = kerberos.ihtfp.org
+       }
+       GNU.ORG = {
+               kdc = kerberos.gnu.org
+               kdc = kerberos-2.gnu.org
+               kdc = kerberos-3.gnu.org
+               admin_server = kerberos.gnu.org
+       }
+       1TS.ORG = {
+               kdc = kerberos.1ts.org
+               admin_server = kerberos.1ts.org
+       }
+       GRATUITOUS.ORG = {
+               kdc = kerberos.gratuitous.org
+               admin_server = kerberos.gratuitous.org
+       }
+       DOOMCOM.ORG = {
+               kdc = kerberos.doomcom.org
+               admin_server = kerberos.doomcom.org
+       }
+       ANDREW.CMU.EDU = {
+               kdc = kerberos.andrew.cmu.edu
+               kdc = kerberos2.andrew.cmu.edu
+               kdc = kerberos3.andrew.cmu.edu
+               admin_server = kerberos.andrew.cmu.edu
+               default_domain = andrew.cmu.edu
+       }
+       CS.CMU.EDU = {
+               kdc = kerberos.cs.cmu.edu
+               kdc = kerberos-2.srv.cs.cmu.edu
+               admin_server = kerberos.cs.cmu.edu
+       }
+       DEMENTIA.ORG = {
+               kdc = kerberos.dementix.org
+               kdc = kerberos2.dementix.org
+               admin_server = kerberos.dementix.org
+       }
+       stanford.edu = {
+               kdc = krb5auth1.stanford.edu
+               kdc = krb5auth2.stanford.edu
+               kdc = krb5auth3.stanford.edu
+               master_kdc = krb5auth1.stanford.edu
+               admin_server = krb5-admin.stanford.edu
+               default_domain = stanford.edu
+       }
+        UTORONTO.CA = {
+                kdc = kerberos1.utoronto.ca
+                kdc = kerberos2.utoronto.ca
+                kdc = kerberos3.utoronto.ca
+                admin_server = kerberos1.utoronto.ca
+                default_domain = utoronto.ca
+       }
+
+[domain_realm]
+       .mit.edu = ATHENA.MIT.EDU
+       mit.edu = ATHENA.MIT.EDU
+       .media.mit.edu = MEDIA-LAB.MIT.EDU
+       media.mit.edu = MEDIA-LAB.MIT.EDU
+       .csail.mit.edu = CSAIL.MIT.EDU
+       csail.mit.edu = CSAIL.MIT.EDU
+       .whoi.edu = ATHENA.MIT.EDU
+       whoi.edu = ATHENA.MIT.EDU
+       .stanford.edu = stanford.edu
+       .slac.stanford.edu = SLAC.STANFORD.EDU
+        .toronto.edu = UTORONTO.CA
+        .utoronto.ca = UTORONTO.CA
+
+[login]
+       krb4_convert = true
+       krb4_get_tickets = false
diff --git a/src/configuration/MailServers/Dovecot/10-ssl.conf b/src/configuration/MailServers/Dovecot/10-ssl.conf
new file mode 100644 (file)
index 0000000..04bf926
--- /dev/null
@@ -0,0 +1,58 @@
+##
+## SSL settings
+##
+
+# SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>
+#ssl = yes
+
+# PEM encoded X.509 SSL/TLS certificate and private key. They're opened before
+# dropping root privileges, so keep the key file unreadable by anyone but
+# root. Included doc/mkcert.sh can be used to easily generate self-signed
+# certificate, just make sure to update the domains in dovecot-openssl.cnf
+ssl_cert = </etc/dovecot/dovecot.pem
+ssl_key = </etc/dovecot/private/dovecot.pem
+
+# If key file is password protected, give the password here. Alternatively
+# give it when starting dovecot with -p parameter. Since this file is often
+# world-readable, you may want to place this setting instead to a different
+# root owned 0600 file by using ssl_key_password = <path.
+#ssl_key_password =
+
+# PEM encoded trusted certificate authority. Set this only if you intend to use
+# ssl_verify_client_cert=yes. The file should contain the CA certificate(s)
+# followed by the matching CRL(s). (e.g. ssl_ca = </etc/ssl/certs/ca.pem)
+#ssl_ca = 
+
+# Require that CRL check succeeds for client certificates.
+#ssl_require_crl = yes
+
+# Directory and/or file for trusted SSL CA certificates. These are used only
+# when Dovecot needs to act as an SSL client (e.g. imapc backend). The
+# directory is usually /etc/ssl/certs in Debian-based systems and the file is
+# /etc/pki/tls/cert.pem in RedHat-based systems.
+#ssl_client_ca_dir =
+#ssl_client_ca_file =
+
+# Request client to send a certificate. If you also want to require it, set
+# auth_ssl_require_client_cert=yes in auth section.
+#ssl_verify_client_cert = no
+
+# Which field from certificate to use for username. commonName and
+# x500UniqueIdentifier are the usual choices. You'll also need to set
+# auth_ssl_username_from_cert=yes.
+#ssl_cert_username_field = commonName
+
+# DH parameters length to use.
+#ssl_dh_parameters_length = 1024
+
+# SSL protocols to use
+#ssl_protocols = !SSLv2
+
+# SSL ciphers to use
+ssl_cipher_list = EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
+
+# Prefer the server's order of ciphers over client's.
+ssl_prefer_server_ciphers = yes
+
+# SSL crypto device to use, for valid values run "openssl engine"
+#ssl_crypto_device =
diff --git a/src/configuration/MailServers/Exim/configure.client b/src/configuration/MailServers/Exim/configure.client
new file mode 100644 (file)
index 0000000..525a299
--- /dev/null
@@ -0,0 +1,822 @@
+######################################################################
+#                  Runtime configuration file for Exim               #
+######################################################################
+
+
+# This is a default configuration file which will operate correctly in
+# uncomplicated installations. Please see the manual for a complete list
+# of all the runtime configuration options that can be included in a
+# configuration file. There are many more than are mentioned here. The
+# manual is in the file doc/spec.txt in the Exim distribution as a plain
+# ASCII file. Other formats (PostScript, Texinfo, HTML, PDF) are available
+# from the Exim ftp sites. The manual is also online at the Exim web sites.
+
+
+# This file is divided into several parts, all but the first of which are
+# headed by a line starting with the word "begin". Only those parts that
+# are required need to be present. Blank lines, and lines starting with #
+# are ignored.
+
+
+########### IMPORTANT ########## IMPORTANT ########### IMPORTANT ###########
+#                                                                          #
+# Whenever you change Exim's configuration file, you *must* remember to    #
+# HUP the Exim daemon, because it will not pick up the new configuration   #
+# until you do. However, any other Exim processes that are started, for    #
+# example, a process started by an MUA in order to send a message, will    #
+# see the new configuration as soon as it is in place.                     #
+#                                                                          #
+# You do not need to HUP the daemon for changes in auxiliary files that    #
+# are referenced from this file. They are read every time they are used.   #
+#                                                                          #
+# It is usually a good idea to test a new configuration for syntactic      #
+# correctness before installing it (for example, by running the command    #
+# "exim -C /config/file.new -bV").                                         #
+#                                                                          #
+########### IMPORTANT ########## IMPORTANT ########### IMPORTANT ###########
+
+
+
+######################################################################
+#                    MAIN CONFIGURATION SETTINGS                     #
+######################################################################
+
+# Specify your host's canonical name here. This should normally be the fully
+# qualified "official" name of your host. If this option is not set, the
+# uname() function is called to obtain the name. In many cases this does
+# the right thing and you need not set anything explicitly.
+
+# primary_hostname =
+
+
+# The next three settings create two lists of domains and one list of hosts.
+# These lists are referred to later in this configuration using the syntax
+# +local_domains, +relay_to_domains, and +relay_from_hosts, respectively. They
+# are all colon-separated lists:
+
+domainlist local_domains = @
+domainlist relay_to_domains =
+hostlist   relay_from_hosts = localhost
+# (We rely upon hostname resolution working for localhost, because the default
+# uncommented configuration needs to work in IPv4-only environments.)
+
+# Most straightforward access control requirements can be obtained by
+# appropriate settings of the above options. In more complicated situations,
+# you may need to modify the Access Control Lists (ACLs) which appear later in
+# this file.
+
+# The first setting specifies your local domains, for example:
+#
+#   domainlist local_domains = my.first.domain : my.second.domain
+#
+# You can use "@" to mean "the name of the local host", as in the default
+# setting above. This is the name that is specified by primary_hostname,
+# as specified above (or defaulted). If you do not want to do any local
+# deliveries, remove the "@" from the setting above. If you want to accept mail
+# addressed to your host's literal IP address, for example, mail addressed to
+# "user@[192.168.23.44]", you can add "@[]" as an item in the local domains
+# list. You also need to uncomment "allow_domain_literals" below. This is not
+# recommended for today's Internet.
+
+# The second setting specifies domains for which your host is an incoming relay.
+# If you are not doing any relaying, you should leave the list empty. However,
+# if your host is an MX backup or gateway of some kind for some domains, you
+# must set relay_to_domains to match those domains. For example:
+#
+# domainlist relay_to_domains = *.myco.com : my.friend.org
+#
+# This will allow any host to relay through your host to those domains.
+# See the section of the manual entitled "Control of relaying" for more
+# information.
+
+# The third setting specifies hosts that can use your host as an outgoing relay
+# to any other host on the Internet. Such a setting commonly refers to a
+# complete local network as well as the localhost. For example:
+#
+# hostlist relay_from_hosts = <; 127.0.0.1 ; ::1 ; 192.168.0.0/16
+#
+# The "/16" is a bit mask (CIDR notation), not a number of hosts. Note that you
+# have to include 127.0.0.1 if you want to allow processes on your host to send
+# SMTP mail by using the loopback address. A number of MUAs use this method of
+# sending mail.  Often, connections are made to "localhost", which might be ::1
+# on IPv6-enabled hosts.  Do not forget CIDR for your IPv6 networks.
+
+# All three of these lists may contain many different kinds of item, including
+# wildcarded names, regular expressions, and file lookups. See the reference
+# manual for details. The lists above are used in the access control lists for
+# checking incoming messages. The names of these ACLs are defined here:
+
+acl_smtp_rcpt = acl_check_rcpt
+acl_smtp_data = acl_check_data
+
+# You should not change those settings until you understand how ACLs work.
+
+
+# If you are running a version of Exim that was compiled with the content-
+# scanning extension, you can cause incoming messages to be automatically
+# scanned for viruses. You have to modify the configuration in two places to
+# set this up. The first of them is here, where you define the interface to
+# your scanner. This example is typical for ClamAV; see the manual for details
+# of what to set for other virus scanners. The second modification is in the
+# acl_check_data access control list (see below).
+
+# av_scanner = clamd:/tmp/clamd
+
+
+# For spam scanning, there is a similar option that defines the interface to
+# SpamAssassin. You do not need to set this if you are using the default, which
+# is shown in this commented example. As for virus scanning, you must also
+# modify the acl_check_data access control list to enable spam scanning.
+
+# spamd_address = 127.0.0.1 783
+
+
+# If Exim is compiled with support for TLS, you may want to enable the
+# following options so that Exim allows clients to make encrypted
+# connections. In the authenticators section below, there are template
+# configurations for plaintext username/password authentication. This kind
+# of authentication is only safe when used within a TLS connection, so the
+# authenticators will only work if the following TLS settings are turned on
+# as well.
+
+# Allow any client to use TLS.
+
+# tls_advertise_hosts = *
+
+# Specify the location of the Exim server's TLS certificate and private key.
+# The private key must not be encrypted (password protected). You can put
+# the certificate and private key in the same file, in which case you only
+# need the first setting, or in separate files, in which case you need both
+# options.
+
+tls_certificate = /etc/ssl/exim.crt
+tls_privatekey = /etc/ssl/exim.pem
+
+# In order to support roaming users who wish to send email from anywhere,
+# you may want to make Exim listen on other ports as well as port 25, in
+# case these users need to send email from a network that blocks port 25.
+# The standard port for this purpose is port 587, the "message submission"
+# port. See RFC 4409 for details. Microsoft MUAs cannot be configured to
+# talk the message submission protocol correctly, so if you need to support
+# them you should also allow TLS-on-connect on the traditional but
+# non-standard port 465.
+
+# daemon_smtp_ports = 25 : 465 : 587
+# tls_on_connect_ports = 465
+
+
+# Specify the domain you want to be added to all unqualified addresses
+# here. An unqualified address is one that does not contain an "@" character
+# followed by a domain. For example, "caesar@rome.example" is a fully qualified
+# address, but the string "caesar" (i.e. just a login name) is an unqualified
+# email address. Unqualified addresses are accepted only from local callers by
+# default. See the recipient_unqualified_hosts option if you want to permit
+# unqualified addresses from remote sources. If this option is not set, the
+# primary_hostname value is used for qualification.
+
+# qualify_domain =
+
+
+# If you want unqualified recipient addresses to be qualified with a different
+# domain to unqualified sender addresses, specify the recipient domain here.
+# If this option is not set, the qualify_domain value is used.
+
+# qualify_recipient =
+
+
+# The following line must be uncommented if you want Exim to recognize
+# addresses of the form "user@[10.11.12.13]" that is, with a "domain literal"
+# (an IP address) instead of a named domain. The RFCs still require this form,
+# but it makes little sense to permit mail to be sent to specific hosts by
+# their IP address in the modern Internet. This ancient format has been used
+# by those seeking to abuse hosts by using them for unwanted relaying. If you
+# really do want to support domain literals, uncomment the following line, and
+# see also the "domain_literal" router below.
+
+# allow_domain_literals
+
+
+# No deliveries will ever be run under the uids of users specified by
+# never_users (a colon-separated list). An attempt to do so causes a panic
+# error to be logged, and the delivery to be deferred. This is a paranoic
+# safety catch. There is an even stronger safety catch in the form of the
+# FIXED_NEVER_USERS setting in the configuration for building Exim. The list of
+# users that it specifies is built into the binary, and cannot be changed. The
+# option below just adds additional users to the list. The default for
+# FIXED_NEVER_USERS is "root", but just to be absolutely sure, the default here
+# is also "root".
+
+# Note that the default setting means you cannot deliver mail addressed to root
+# as if it were a normal user. This isn't usually a problem, as most sites have
+# an alias for root that redirects such mail to a human administrator.
+
+never_users = root
+
+
+# The setting below causes Exim to do a reverse DNS lookup on all incoming
+# IP calls, in order to get the true host name. If you feel this is too
+# expensive, you can specify the networks for which a lookup is done, or
+# remove the setting entirely.
+
+host_lookup = *
+
+
+# The settings below, which are actually the same as the defaults in the
+# code, cause Exim to make RFC 1413 (ident) callbacks for all incoming SMTP
+# calls. You can limit the hosts to which these calls are made, and/or change
+# the timeout that is used. If you set the timeout to zero, all RFC 1413 calls
+# are disabled. RFC 1413 calls are cheap and can provide useful information
+# for tracing problem messages, but some hosts and firewalls have problems
+# with them. This can result in a timeout instead of an immediate refused
+# connection, leading to delays on starting up SMTP sessions. (The default was
+# reduced from 30s to 5s for release 4.61.)
+
+rfc1413_hosts = *
+rfc1413_query_timeout = 5s
+
+
+# By default, Exim expects all envelope addresses to be fully qualified, that
+# is, they must contain both a local part and a domain. If you want to accept
+# unqualified addresses (just a local part) from certain hosts, you can specify
+# these hosts by setting one or both of
+#
+# sender_unqualified_hosts =
+# recipient_unqualified_hosts =
+#
+# to control sender and recipient addresses, respectively. When this is done,
+# unqualified addresses are qualified using the settings of qualify_domain
+# and/or qualify_recipient (see above).
+
+
+# If you want Exim to support the "percent hack" for certain domains,
+# uncomment the following line and provide a list of domains. The "percent
+# hack" is the feature by which mail addressed to x%y@z (where z is one of
+# the domains listed) is locally rerouted to x@y and sent on. If z is not one
+# of the "percent hack" domains, x%y is treated as an ordinary local part. This
+# hack is rarely needed nowadays; you should not enable it unless you are sure
+# that you really need it.
+#
+# percent_hack_domains =
+#
+# As well as setting this option you will also need to remove the test
+# for local parts containing % in the ACL definition below.
+
+
+# When Exim can neither deliver a message nor return it to sender, it "freezes"
+# the delivery error message (aka "bounce message"). There are also other
+# circumstances in which messages get frozen. They will stay on the queue for
+# ever unless one of the following options is set.
+
+# This option unfreezes frozen bounce messages after two days, tries
+# once more to deliver them, and ignores any delivery failures.
+
+ignore_bounce_errors_after = 2d
+
+# This option cancels (removes) frozen messages that are older than a week.
+
+timeout_frozen_after = 7d
+
+
+# By default, messages that are waiting on Exim's queue are all held in a
+# single directory called "input" which it itself within Exim's spool
+# directory. (The default spool directory is specified when Exim is built, and
+# is often /var/spool/exim/.) Exim works best when its queue is kept short, but
+# there are circumstances where this is not always possible. If you uncomment
+# the setting below, messages on the queue are held in 62 subdirectories of
+# "input" instead of all in the same directory. The subdirectories are called
+# 0, 1, ... A, B, ... a, b, ... z. This has two benefits: (1) If your file
+# system degrades with many files in one directory, this is less likely to
+# happen; (2) Exim can process the queue one subdirectory at a time instead of
+# all at once, which can give better performance with large queues.
+
+# split_spool_directory = true
+
+
+# If you're in a part of the world where ASCII is not sufficient for most
+# text, then you're probably familiar with RFC2047 message header extensions.
+# By default, Exim adheres to the specification, including a limit of 76
+# characters to a line, with encoded words fitting within a line.
+# If you wish to use decoded headers in message filters in such a way
+# that successful decoding of malformed messages matters, you may wish to
+# configure Exim to be more lenient.
+#
+# check_rfc2047_length = false
+#
+# In particular, the Exim maintainers have had multiple reports of problems
+# from Russian administrators of issues until they disable this check,
+# because of some popular, yet buggy, mail composition software.
+
+
+# If you wish to be strictly RFC compliant, or if you know you'll be
+# exchanging email with systems that are not 8-bit clean, then you may
+# wish to disable advertising 8BITMIME.  Uncomment this option to do so.
+
+# accept_8bitmime = false
+
+
+######################################################################
+#                       ACL CONFIGURATION                            #
+#         Specifies access control lists for incoming SMTP mail      #
+######################################################################
+
+begin acl
+
+# This access control list is used for every RCPT command in an incoming
+# SMTP message. The tests are run in order until the address is either
+# accepted or denied.
+
+acl_check_rcpt:
+
+  # Accept if the source is local SMTP (i.e. not over TCP/IP). We do this by
+  # testing for an empty sending host field.
+
+  accept  hosts = :
+          control = dkim_disable_verify
+
+  #############################################################################
+  # The following section of the ACL is concerned with local parts that contain
+  # @ or % or ! or / or | or dots in unusual places.
+  #
+  # The characters other than dots are rarely found in genuine local parts, but
+  # are often tried by people looking to circumvent relaying restrictions.
+  # Therefore, although they are valid in local parts, these rules lock them
+  # out, as a precaution.
+  #
+  # Empty components (two dots in a row) are not valid in RFC 2822, but Exim
+  # allows them because they have been encountered. (Consider local parts
+  # constructed as "firstinitial.secondinitial.familyname" when applied to
+  # someone like me, who has no second initial.) However, a local part starting
+  # with a dot or containing /../ can cause trouble if it is used as part of a
+  # file name (e.g. for a mailing list). This is also true for local parts that
+  # contain slashes. A pipe symbol can also be troublesome if the local part is
+  # incorporated unthinkingly into a shell command line.
+  #
+  # Two different rules are used. The first one is stricter, and is applied to
+  # messages that are addressed to one of the local domains handled by this
+  # host. The line "domains = +local_domains" restricts it to domains that are
+  # defined by the "domainlist local_domains" setting above. The rule  blocks
+  # local parts that begin with a dot or contain @ % ! / or |. If you have
+  # local accounts that include these characters, you will have to modify this
+  # rule.
+
+  deny    message       = Restricted characters in address
+          domains       = +local_domains
+          local_parts   = ^[.] : ^.*[@%!/|]
+
+  # The second rule applies to all other domains, and is less strict. The line
+  # "domains = !+local_domains" restricts it to domains that are NOT defined by
+  # the "domainlist local_domains" setting above. The exclamation mark is a
+  # negating operator. This rule allows your own users to send outgoing
+  # messages to sites that use slashes and vertical bars in their local parts.
+  # It blocks local parts that begin with a dot, slash, or vertical bar, but
+  # allows these characters within the local part. However, the sequence /../
+  # is barred. The use of @ % and ! is blocked, as before. The motivation here
+  # is to prevent your users (or your users' viruses) from mounting certain
+  # kinds of attack on remote sites.
+
+  deny    message       = Restricted characters in address
+          domains       = !+local_domains
+          local_parts   = ^[./|] : ^.*[@%!] : ^.*/\\.\\./
+  #############################################################################
+
+  # Accept mail to postmaster in any local domain, regardless of the source,
+  # and without verifying the sender.
+
+  accept  local_parts   = postmaster
+          domains       = +local_domains
+
+  # Deny unless the sender address can be verified.
+
+  require verify        = sender
+
+  # Accept if the message comes from one of the hosts for which we are an
+  # outgoing relay. It is assumed that such hosts are most likely to be MUAs,
+  # so we set control=submission to make Exim treat the message as a
+  # submission. It will fix up various errors in the message, for example, the
+  # lack of a Date: header line. If you are actually relaying out out from
+  # MTAs, you may want to disable this. If you are handling both relaying from
+  # MTAs and submissions from MUAs you should probably split them into two
+  # lists, and handle them differently.
+
+  # Recipient verification is omitted here, because in many cases the clients
+  # are dumb MUAs that don't cope well with SMTP error responses. If you are
+  # actually relaying out from MTAs, you should probably add recipient
+  # verification here.
+
+  # Note that, by putting this test before any DNS black list checks, you will
+  # always accept from these hosts, even if they end up on a black list. The
+  # assumption is that they are your friends, and if they get onto a black
+  # list, it is a mistake.
+
+  accept  hosts         = +relay_from_hosts
+          control       = submission
+          control       = dkim_disable_verify
+
+  # Accept if the message arrived over an authenticated connection, from
+  # any host. Again, these messages are usually from MUAs, so recipient
+  # verification is omitted, and submission mode is set. And again, we do this
+  # check before any black list tests.
+
+  accept  authenticated = *
+          control       = submission
+          control       = dkim_disable_verify
+
+  # Insist that any other recipient address that we accept is either in one of
+  # our local domains, or is in a domain for which we explicitly allow
+  # relaying. Any other domain is rejected as being unacceptable for relaying.
+
+  require message = relay not permitted
+          domains = +local_domains : +relay_to_domains
+
+  # We also require all accepted addresses to be verifiable. This check will
+  # do local part verification for local domains, but only check the domain
+  # for remote domains. The only way to check local parts for the remote
+  # relay domains is to use a callout (add /callout), but please read the
+  # documentation about callouts before doing this.
+
+  require verify = recipient
+
+  #############################################################################
+  # There are no default checks on DNS black lists because the domains that
+  # contain these lists are changing all the time. However, here are two
+  # examples of how you can get Exim to perform a DNS black list lookup at this
+  # point. The first one denies, whereas the second just warns.
+  #
+  # deny    message       = rejected because $sender_host_address is in a black list at $dnslist_domain\n$dnslist_text
+  #         dnslists      = black.list.example
+  #
+  # warn    dnslists      = black.list.example
+  #         add_header    = X-Warning: $sender_host_address is in a black list at $dnslist_domain
+  #         log_message   = found in $dnslist_domain
+  #############################################################################
+
+  #############################################################################
+  # This check is commented out because it is recognized that not every
+  # sysadmin will want to do it. If you enable it, the check performs
+  # Client SMTP Authorization (csa) checks on the sending host. These checks
+  # do DNS lookups for SRV records. The CSA proposal is currently (May 2005)
+  # an Internet draft. You can, of course, add additional conditions to this
+  # ACL statement to restrict the CSA checks to certain hosts only.
+  #
+  # require verify = csa
+  #############################################################################
+
+  # At this point, the address has passed all the checks that have been
+  # configured, so we accept it unconditionally.
+
+  accept
+
+
+# This ACL is used after the contents of a message have been received. This
+# is the ACL in which you can test a message's headers or body, and in
+# particular, this is where you can invoke external virus or spam scanners.
+# Some suggested ways of configuring these tests are shown below, commented
+# out. Without any tests, this ACL accepts all messages. If you want to use
+# such tests, you must ensure that Exim is compiled with the content-scanning
+# extension (WITH_CONTENT_SCAN=yes in Local/Makefile).
+
+acl_check_data:
+
+  # Deny if the message contains a virus. Before enabling this check, you
+  # must install a virus scanner and set the av_scanner option above.
+  #
+  # deny    malware    = *
+  #         message    = This message contains a virus ($malware_name).
+
+  # Add headers to a message if it is judged to be spam. Before enabling this,
+  # you must install SpamAssassin. You may also need to set the spamd_address
+  # option above.
+  #
+  # warn    spam       = nobody
+  #         add_header = X-Spam_score: $spam_score\n\
+  #                      X-Spam_score_int: $spam_score_int\n\
+  #                      X-Spam_bar: $spam_bar\n\
+  #                      X-Spam_report: $spam_report
+
+  # Accept the message.
+
+  accept
+
+
+
+######################################################################
+#                      ROUTERS CONFIGURATION                         #
+#               Specifies how addresses are handled                  #
+######################################################################
+#     THE ORDER IN WHICH THE ROUTERS ARE DEFINED IS IMPORTANT!       #
+# An address is passed to each router in turn until it is accepted.  #
+######################################################################
+
+begin routers
+
+# This router routes to remote hosts over SMTP by explicit IP address,
+# when an email address is given in "domain literal" form, for example,
+# <user@[192.168.35.64]>. The RFCs require this facility. However, it is
+# little-known these days, and has been exploited by evil people seeking
+# to abuse SMTP relays. Consequently it is commented out in the default
+# configuration. If you uncomment this router, you also need to uncomment
+# allow_domain_literals above, so that Exim can recognize the syntax of
+# domain literal addresses.
+
+# domain_literal:
+#   driver = ipliteral
+#   domains = ! +local_domains
+#   transport = remote_smtp
+
+
+# This router routes addresses that are not in local domains by doing a DNS
+# lookup on the domain name. The exclamation mark that appears in "domains = !
+# +local_domains" is a negating operator, that is, it can be read as "not". The
+# recipient's domain must not be one of those defined by "domainlist
+# local_domains" above for this router to be used.
+#
+# If the router is used, any domain that resolves to 0.0.0.0 or to a loopback
+# interface address (127.0.0.0/8) is treated as if it had no DNS entry. Note
+# that 0.0.0.0 is the same as 0.0.0.0/32, which is commonly treated as the
+# local host inside the network stack. It is not 0.0.0.0/0, the default route.
+# If the DNS lookup fails, no further routers are tried because of the no_more
+# setting, and consequently the address is unrouteable.
+
+dnslookup:
+  driver = dnslookup
+  domains = ! +local_domains
+  transport = remote_smtp
+  ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
+# if ipv6-enabled then instead use:
+# ignore_target_hosts = <; 0.0.0.0 ; 127.0.0.0/8 ; ::1
+  no_more
+
+
+# This alternative router can be used when you want to send all mail to a
+# server which handles DNS lookups for you; an ISP will typically run such
+# a server for their customers.  If you uncomment "smarthost" then you
+# should comment out "dnslookup" above.  Setting a real hostname in route_data
+# wouldn't hurt either.
+
+# smarthost:
+#   driver = manualroute
+#   domains = ! +local_domains
+#   transport = remote_smtp
+#   route_data = MAIL.HOSTNAME.FOR.CENTRAL.SERVER.EXAMPLE
+#   ignore_target_hosts = <; 0.0.0.0 ; 127.0.0.0/8 ; ::1
+#   no_more
+
+
+# The remaining routers handle addresses in the local domain(s), that is those
+# domains that are defined by "domainlist local_domains" above.
+
+
+# This router handles aliasing using a linearly searched alias file with the
+# name SYSTEM_ALIASES_FILE. When this configuration is installed automatically,
+# the name gets inserted into this file from whatever is set in Exim's
+# build-time configuration. The default path is the traditional /etc/aliases.
+# If you install this configuration by hand, you need to specify the correct
+# path in the "data" setting below.
+#
+##### NB  You must ensure that the alias file exists. It used to be the case
+##### NB  that every Unix had that file, because it was the Sendmail default.
+##### NB  These days, there are systems that don't have it. Your aliases
+##### NB  file should at least contain an alias for "postmaster".
+#
+# If any of your aliases expand to pipes or files, you will need to set
+# up a user and a group for these deliveries to run under. You can do
+# this by uncommenting the "user" option below (changing the user name
+# as appropriate) and adding a "group" option if necessary. Alternatively, you
+# can specify "user" on the transports that are used. Note that the transports
+# listed below are the same as are used for .forward files; you might want
+# to set up different ones for pipe and file deliveries from aliases.
+
+system_aliases:
+  driver = redirect
+  allow_fail
+  allow_defer
+  data = ${lookup{$local_part}lsearch{SYSTEM_ALIASES_FILE}}
+# user = exim
+  file_transport = address_file
+  pipe_transport = address_pipe
+
+
+# This router handles forwarding using traditional .forward files in users'
+# home directories. If you want it also to allow mail filtering when a forward
+# file starts with the string "# Exim filter" or "# Sieve filter", uncomment
+# the "allow_filter" option.
+
+# The no_verify setting means that this router is skipped when Exim is
+# verifying addresses. Similarly, no_expn means that this router is skipped if
+# Exim is processing an EXPN command.
+
+# If you want this router to treat local parts with suffixes introduced by "-"
+# or "+" characters as if the suffixes did not exist, uncomment the two local_
+# part_suffix options. Then, for example, xxxx-foo@your.domain will be treated
+# in the same way as xxxx@your.domain by this router. Because this router is
+# not used for verification, if you choose to uncomment those options, then you
+# will *need* to make the same change to the localuser router.  (There are
+# other approaches, if this is undesirable, but they add complexity).
+
+# The check_ancestor option means that if the forward file generates an
+# address that is an ancestor of the current one, the current one gets
+# passed on instead. This covers the case where A is aliased to B and B
+# has a .forward file pointing to A.
+
+# The three transports specified at the end are those that are used when
+# forwarding generates a direct delivery to a file, or to a pipe, or sets
+# up an auto-reply, respectively.
+
+userforward:
+  driver = redirect
+  check_local_user
+# local_part_suffix = +* : -*
+# local_part_suffix_optional
+  file = $home/.forward
+# allow_filter
+  no_verify
+  no_expn
+  check_ancestor
+  file_transport = address_file
+  pipe_transport = address_pipe
+  reply_transport = address_reply
+
+
+# This router matches local user mailboxes. If the router fails, the error
+# message is "Unknown user".
+
+# If you want this router to treat local parts with suffixes introduced by "-"
+# or "+" characters as if the suffixes did not exist, uncomment the two local_
+# part_suffix options. Then, for example, xxxx-foo@your.domain will be treated
+# in the same way as xxxx@your.domain by this router.
+
+localuser:
+  driver = accept
+  check_local_user
+# local_part_suffix = +* : -*
+# local_part_suffix_optional
+  transport = local_delivery
+  cannot_route_message = Unknown user
+
+
+
+######################################################################
+#                      TRANSPORTS CONFIGURATION                      #
+######################################################################
+#                       ORDER DOES NOT MATTER                        #
+#     Only one appropriate transport is called for each delivery.    #
+######################################################################
+
+# A transport is used only when referenced from a router that successfully
+# handles an address.
+
+begin transports
+
+
+# This transport is used for delivering messages over SMTP connections.
+
+remote_smtp:
+  driver = smtp
+
+
+# This transport is used for local delivery to user mailboxes in traditional
+# BSD mailbox format. By default it will be run under the uid and gid of the
+# local user, and requires the sticky bit to be set on the /var/mail directory.
+# Some systems use the alternative approach of running mail deliveries under a
+# particular group instead of using the sticky bit. The commented options below
+# show how this can be done.
+
+local_delivery:
+  driver = appendfile
+  file = /var/mail/$local_part
+  delivery_date_add
+  envelope_to_add
+  return_path_add
+# group = mail
+# mode = 0660
+
+
+# This transport is used for handling pipe deliveries generated by alias or
+# .forward files. If the pipe generates any standard output, it is returned
+# to the sender of the message as a delivery error. Set return_fail_output
+# instead of return_output if you want this to happen only when the pipe fails
+# to complete normally. You can set different transports for aliases and
+# forwards if you want to - see the references to address_pipe in the routers
+# section above.
+
+address_pipe:
+  driver = pipe
+  return_output
+
+
+# This transport is used for handling deliveries directly to files that are
+# generated by aliasing or forwarding.
+
+address_file:
+  driver = appendfile
+  delivery_date_add
+  envelope_to_add
+  return_path_add
+
+
+# This transport is used for handling autoreplies generated by the filtering
+# option of the userforward router.
+
+address_reply:
+  driver = autoreply
+
+
+
+######################################################################
+#                      RETRY CONFIGURATION                           #
+######################################################################
+
+begin retry
+
+# This single retry rule applies to all domains and all errors. It specifies
+# retries every 15 minutes for 2 hours, then increasing retry intervals,
+# starting at 1 hour and increasing each time by a factor of 1.5, up to 16
+# hours, then retries every 6 hours until 4 days have passed since the first
+# failed delivery.
+
+# WARNING: If you do not have any retry rules at all (this section of the
+# configuration is non-existent or empty), Exim will not do any retries of
+# messages that fail to get delivered at the first attempt. The effect will
+# be to treat temporary errors as permanent. Therefore, DO NOT remove this
+# retry rule unless you really don't want any retries.
+
+# Address or Domain    Error       Retries
+# -----------------    -----       -------
+
+*                      *           F,2h,15m; G,16h,1h,1.5; F,4d,6h
+
+
+
+######################################################################
+#                      REWRITE CONFIGURATION                         #
+######################################################################
+
+# There are no rewriting specifications in this default configuration file.
+
+begin rewrite
+
+
+
+######################################################################
+#                   AUTHENTICATION CONFIGURATION                     #
+######################################################################
+
+# The following authenticators support plaintext username/password
+# authentication using the standard PLAIN mechanism and the traditional
+# but non-standard LOGIN mechanism, with Exim acting as the server.
+# PLAIN and LOGIN are enough to support most MUA software.
+#
+# These authenticators are not complete: you need to change the
+# server_condition settings to specify how passwords are verified.
+# They are set up to offer authentication to the client only if the
+# connection is encrypted with TLS, so you also need to add support
+# for TLS. See the global configuration options section at the start
+# of this file for more about TLS.
+#
+# The default RCPT ACL checks for successful authentication, and will accept
+# messages from authenticated users from anywhere on the Internet.
+
+begin authenticators
+
+# PLAIN authentication has no server prompts. The client sends its
+# credentials in one lump, containing an authorization ID (which we do not
+# use), an authentication ID, and a password. The latter two appear as
+# $auth2 and $auth3 in the configuration and should be checked against a
+# valid username and password. In a real configuration you would typically
+# use $auth2 as a lookup key, and compare $auth3 against the result of the
+# lookup, perhaps using the crypteq{}{} condition.
+
+#PLAIN:
+#  driver                     = plaintext
+#  server_set_id              = $auth2
+#  server_prompts             = :
+#  server_condition           = Authentication is not yet configured
+#  server_advertise_condition = ${if def:tls_in_cipher }
+
+# LOGIN authentication has traditional prompts and responses. There is no
+# authorization ID in this mechanism, so unlike PLAIN the username and
+# password are $auth1 and $auth2. Apart from that you can use the same
+# server_condition setting for both authenticators.
+
+#LOGIN:
+#  driver                     = plaintext
+#  server_set_id              = $auth1
+#  server_prompts             = <| Username: | Password:
+#  server_condition           = Authentication is not yet configured
+#  server_advertise_condition = ${if def:tls_in_cipher }
+
+
+######################################################################
+#                   CONFIGURATION FOR local_scan()                   #
+######################################################################
+
+# If you have built Exim to include a local_scan() function that contains
+# tables for private options, you can define those options here. Remember to
+# uncomment the "begin" line. It is commented by default because it provokes
+# an error with Exim binaries that are not built with LOCAL_SCAN_HAS_OPTIONS
+# set in the Local/Makefile.
+
+# begin local_scan
+
+
+# End of Exim configuration file
diff --git a/src/configuration/MailServers/Exim/configure.msa b/src/configuration/MailServers/Exim/configure.msa
new file mode 100644 (file)
index 0000000..5c66fb6
--- /dev/null
@@ -0,0 +1,828 @@
+######################################################################
+#                  Runtime configuration file for Exim               #
+######################################################################
+
+
+# This is a default configuration file which will operate correctly in
+# uncomplicated installations. Please see the manual for a complete list
+# of all the runtime configuration options that can be included in a
+# configuration file. There are many more than are mentioned here. The
+# manual is in the file doc/spec.txt in the Exim distribution as a plain
+# ASCII file. Other formats (PostScript, Texinfo, HTML, PDF) are available
+# from the Exim ftp sites. The manual is also online at the Exim web sites.
+
+
+# This file is divided into several parts, all but the first of which are
+# headed by a line starting with the word "begin". Only those parts that
+# are required need to be present. Blank lines, and lines starting with #
+# are ignored.
+
+
+########### IMPORTANT ########## IMPORTANT ########### IMPORTANT ###########
+#                                                                          #
+# Whenever you change Exim's configuration file, you *must* remember to    #
+# HUP the Exim daemon, because it will not pick up the new configuration   #
+# until you do. However, any other Exim processes that are started, for    #
+# example, a process started by an MUA in order to send a message, will    #
+# see the new configuration as soon as it is in place.                     #
+#                                                                          #
+# You do not need to HUP the daemon for changes in auxiliary files that    #
+# are referenced from this file. They are read every time they are used.   #
+#                                                                          #
+# It is usually a good idea to test a new configuration for syntactic      #
+# correctness before installing it (for example, by running the command    #
+# "exim -C /config/file.new -bV").                                         #
+#                                                                          #
+########### IMPORTANT ########## IMPORTANT ########### IMPORTANT ###########
+
+
+
+######################################################################
+#                    MAIN CONFIGURATION SETTINGS                     #
+######################################################################
+
+# Specify your host's canonical name here. This should normally be the fully
+# qualified "official" name of your host. If this option is not set, the
+# uname() function is called to obtain the name. In many cases this does
+# the right thing and you need not set anything explicitly.
+
+# primary_hostname =
+
+
+# The next three settings create two lists of domains and one list of hosts.
+# These lists are referred to later in this configuration using the syntax
+# +local_domains, +relay_to_domains, and +relay_from_hosts, respectively. They
+# are all colon-separated lists:
+
+domainlist local_domains = @
+domainlist relay_to_domains =
+hostlist   relay_from_hosts = localhost
+# (We rely upon hostname resolution working for localhost, because the default
+# uncommented configuration needs to work in IPv4-only environments.)
+
+# Most straightforward access control requirements can be obtained by
+# appropriate settings of the above options. In more complicated situations,
+# you may need to modify the Access Control Lists (ACLs) which appear later in
+# this file.
+
+# The first setting specifies your local domains, for example:
+#
+#   domainlist local_domains = my.first.domain : my.second.domain
+#
+# You can use "@" to mean "the name of the local host", as in the default
+# setting above. This is the name that is specified by primary_hostname,
+# as specified above (or defaulted). If you do not want to do any local
+# deliveries, remove the "@" from the setting above. If you want to accept mail
+# addressed to your host's literal IP address, for example, mail addressed to
+# "user@[192.168.23.44]", you can add "@[]" as an item in the local domains
+# list. You also need to uncomment "allow_domain_literals" below. This is not
+# recommended for today's Internet.
+
+# The second setting specifies domains for which your host is an incoming relay.
+# If you are not doing any relaying, you should leave the list empty. However,
+# if your host is an MX backup or gateway of some kind for some domains, you
+# must set relay_to_domains to match those domains. For example:
+#
+# domainlist relay_to_domains = *.myco.com : my.friend.org
+#
+# This will allow any host to relay through your host to those domains.
+# See the section of the manual entitled "Control of relaying" for more
+# information.
+
+# The third setting specifies hosts that can use your host as an outgoing relay
+# to any other host on the Internet. Such a setting commonly refers to a
+# complete local network as well as the localhost. For example:
+#
+# hostlist relay_from_hosts = <; 127.0.0.1 ; ::1 ; 192.168.0.0/16
+#
+# The "/16" is a bit mask (CIDR notation), not a number of hosts. Note that you
+# have to include 127.0.0.1 if you want to allow processes on your host to send
+# SMTP mail by using the loopback address. A number of MUAs use this method of
+# sending mail.  Often, connections are made to "localhost", which might be ::1
+# on IPv6-enabled hosts.  Do not forget CIDR for your IPv6 networks.
+
+# All three of these lists may contain many different kinds of item, including
+# wildcarded names, regular expressions, and file lookups. See the reference
+# manual for details. The lists above are used in the access control lists for
+# checking incoming messages. The names of these ACLs are defined here:
+
+acl_smtp_rcpt = acl_check_rcpt
+acl_smtp_data = acl_check_data
+acl_smtp_mail = acl_check_mail
+
+# You should not change those settings until you understand how ACLs work.
+
+
+# If you are running a version of Exim that was compiled with the content-
+# scanning extension, you can cause incoming messages to be automatically
+# scanned for viruses. You have to modify the configuration in two places to
+# set this up. The first of them is here, where you define the interface to
+# your scanner. This example is typical for ClamAV; see the manual for details
+# of what to set for other virus scanners. The second modification is in the
+# acl_check_data access control list (see below).
+
+# av_scanner = clamd:/tmp/clamd
+
+
+# For spam scanning, there is a similar option that defines the interface to
+# SpamAssassin. You do not need to set this if you are using the default, which
+# is shown in this commented example. As for virus scanning, you must also
+# modify the acl_check_data access control list to enable spam scanning.
+
+# spamd_address = 127.0.0.1 783
+
+
+# If Exim is compiled with support for TLS, you may want to enable the
+# following options so that Exim allows clients to make encrypted
+# connections. In the authenticators section below, there are template
+# configurations for plaintext username/password authentication. This kind
+# of authentication is only safe when used within a TLS connection, so the
+# authenticators will only work if the following TLS settings are turned on
+# as well.
+
+# Allow any client to use TLS.
+
+tls_advertise_hosts = *
+
+# Specify the location of the Exim server's TLS certificate and private key.
+# The private key must not be encrypted (password protected). You can put
+# the certificate and private key in the same file, in which case you only
+# need the first setting, or in separate files, in which case you need both
+# options.
+
+tls_certificate = /etc/ssl/exim.crt
+tls_privatekey = /etc/ssl/exim.pem
+
+# In order to support roaming users who wish to send email from anywhere,
+# you may want to make Exim listen on other ports as well as port 25, in
+# case these users need to send email from a network that blocks port 25.
+# The standard port for this purpose is port 587, the "message submission"
+# port. See RFC 4409 for details. Microsoft MUAs cannot be configured to
+# talk the message submission protocol correctly, so if you need to support
+# them you should also allow TLS-on-connect on the traditional but
+# non-standard port 465.
+
+daemon_smtp_ports = smtp : smtps : submission
+tls_on_connect_ports = 465
+
+
+# Specify the domain you want to be added to all unqualified addresses
+# here. An unqualified address is one that does not contain an "@" character
+# followed by a domain. For example, "caesar@rome.example" is a fully qualified
+# address, but the string "caesar" (i.e. just a login name) is an unqualified
+# email address. Unqualified addresses are accepted only from local callers by
+# default. See the recipient_unqualified_hosts option if you want to permit
+# unqualified addresses from remote sources. If this option is not set, the
+# primary_hostname value is used for qualification.
+
+# qualify_domain =
+
+
+# If you want unqualified recipient addresses to be qualified with a different
+# domain to unqualified sender addresses, specify the recipient domain here.
+# If this option is not set, the qualify_domain value is used.
+
+# qualify_recipient =
+
+
+# The following line must be uncommented if you want Exim to recognize
+# addresses of the form "user@[10.11.12.13]" that is, with a "domain literal"
+# (an IP address) instead of a named domain. The RFCs still require this form,
+# but it makes little sense to permit mail to be sent to specific hosts by
+# their IP address in the modern Internet. This ancient format has been used
+# by those seeking to abuse hosts by using them for unwanted relaying. If you
+# really do want to support domain literals, uncomment the following line, and
+# see also the "domain_literal" router below.
+
+# allow_domain_literals
+
+
+# No deliveries will ever be run under the uids of users specified by
+# never_users (a colon-separated list). An attempt to do so causes a panic
+# error to be logged, and the delivery to be deferred. This is a paranoic
+# safety catch. There is an even stronger safety catch in the form of the
+# FIXED_NEVER_USERS setting in the configuration for building Exim. The list of
+# users that it specifies is built into the binary, and cannot be changed. The
+# option below just adds additional users to the list. The default for
+# FIXED_NEVER_USERS is "root", but just to be absolutely sure, the default here
+# is also "root".
+
+# Note that the default setting means you cannot deliver mail addressed to root
+# as if it were a normal user. This isn't usually a problem, as most sites have
+# an alias for root that redirects such mail to a human administrator.
+
+never_users = root
+
+
+# The setting below causes Exim to do a reverse DNS lookup on all incoming
+# IP calls, in order to get the true host name. If you feel this is too
+# expensive, you can specify the networks for which a lookup is done, or
+# remove the setting entirely.
+
+host_lookup = *
+
+
+# The settings below, which are actually the same as the defaults in the
+# code, cause Exim to make RFC 1413 (ident) callbacks for all incoming SMTP
+# calls. You can limit the hosts to which these calls are made, and/or change
+# the timeout that is used. If you set the timeout to zero, all RFC 1413 calls
+# are disabled. RFC 1413 calls are cheap and can provide useful information
+# for tracing problem messages, but some hosts and firewalls have problems
+# with them. This can result in a timeout instead of an immediate refused
+# connection, leading to delays on starting up SMTP sessions. (The default was
+# reduced from 30s to 5s for release 4.61.)
+
+rfc1413_hosts = *
+rfc1413_query_timeout = 5s
+
+
+# By default, Exim expects all envelope addresses to be fully qualified, that
+# is, they must contain both a local part and a domain. If you want to accept
+# unqualified addresses (just a local part) from certain hosts, you can specify
+# these hosts by setting one or both of
+#
+# sender_unqualified_hosts =
+# recipient_unqualified_hosts =
+#
+# to control sender and recipient addresses, respectively. When this is done,
+# unqualified addresses are qualified using the settings of qualify_domain
+# and/or qualify_recipient (see above).
+
+
+# If you want Exim to support the "percent hack" for certain domains,
+# uncomment the following line and provide a list of domains. The "percent
+# hack" is the feature by which mail addressed to x%y@z (where z is one of
+# the domains listed) is locally rerouted to x@y and sent on. If z is not one
+# of the "percent hack" domains, x%y is treated as an ordinary local part. This
+# hack is rarely needed nowadays; you should not enable it unless you are sure
+# that you really need it.
+#
+# percent_hack_domains =
+#
+# As well as setting this option you will also need to remove the test
+# for local parts containing % in the ACL definition below.
+
+
+# When Exim can neither deliver a message nor return it to sender, it "freezes"
+# the delivery error message (aka "bounce message"). There are also other
+# circumstances in which messages get frozen. They will stay on the queue for
+# ever unless one of the following options is set.
+
+# This option unfreezes frozen bounce messages after two days, tries
+# once more to deliver them, and ignores any delivery failures.
+
+ignore_bounce_errors_after = 2d
+
+# This option cancels (removes) frozen messages that are older than a week.
+
+timeout_frozen_after = 7d
+
+
+# By default, messages that are waiting on Exim's queue are all held in a
+# single directory called "input" which it itself within Exim's spool
+# directory. (The default spool directory is specified when Exim is built, and
+# is often /var/spool/exim/.) Exim works best when its queue is kept short, but
+# there are circumstances where this is not always possible. If you uncomment
+# the setting below, messages on the queue are held in 62 subdirectories of
+# "input" instead of all in the same directory. The subdirectories are called
+# 0, 1, ... A, B, ... a, b, ... z. This has two benefits: (1) If your file
+# system degrades with many files in one directory, this is less likely to
+# happen; (2) Exim can process the queue one subdirectory at a time instead of
+# all at once, which can give better performance with large queues.
+
+# split_spool_directory = true
+
+
+# If you're in a part of the world where ASCII is not sufficient for most
+# text, then you're probably familiar with RFC2047 message header extensions.
+# By default, Exim adheres to the specification, including a limit of 76
+# characters to a line, with encoded words fitting within a line.
+# If you wish to use decoded headers in message filters in such a way
+# that successful decoding of malformed messages matters, you may wish to
+# configure Exim to be more lenient.
+#
+# check_rfc2047_length = false
+#
+# In particular, the Exim maintainers have had multiple reports of problems
+# from Russian administrators of issues until they disable this check,
+# because of some popular, yet buggy, mail composition software.
+
+
+# If you wish to be strictly RFC compliant, or if you know you'll be
+# exchanging email with systems that are not 8-bit clean, then you may
+# wish to disable advertising 8BITMIME.  Uncomment this option to do so.
+
+# accept_8bitmime = false
+
+
+######################################################################
+#                       ACL CONFIGURATION                            #
+#         Specifies access control lists for incoming SMTP mail      #
+######################################################################
+
+begin acl
+
+# This access control list is used for every RCPT command in an incoming
+# SMTP message. The tests are run in order until the address is either
+# accepted or denied.
+
+acl_check_rcpt:
+
+  # Accept if the source is local SMTP (i.e. not over TCP/IP). We do this by
+  # testing for an empty sending host field.
+
+  accept  hosts = :
+          control = dkim_disable_verify
+
+  #############################################################################
+  # The following section of the ACL is concerned with local parts that contain
+  # @ or % or ! or / or | or dots in unusual places.
+  #
+  # The characters other than dots are rarely found in genuine local parts, but
+  # are often tried by people looking to circumvent relaying restrictions.
+  # Therefore, although they are valid in local parts, these rules lock them
+  # out, as a precaution.
+  #
+  # Empty components (two dots in a row) are not valid in RFC 2822, but Exim
+  # allows them because they have been encountered. (Consider local parts
+  # constructed as "firstinitial.secondinitial.familyname" when applied to
+  # someone like me, who has no second initial.) However, a local part starting
+  # with a dot or containing /../ can cause trouble if it is used as part of a
+  # file name (e.g. for a mailing list). This is also true for local parts that
+  # contain slashes. A pipe symbol can also be troublesome if the local part is
+  # incorporated unthinkingly into a shell command line.
+  #
+  # Two different rules are used. The first one is stricter, and is applied to
+  # messages that are addressed to one of the local domains handled by this
+  # host. The line "domains = +local_domains" restricts it to domains that are
+  # defined by the "domainlist local_domains" setting above. The rule  blocks
+  # local parts that begin with a dot or contain @ % ! / or |. If you have
+  # local accounts that include these characters, you will have to modify this
+  # rule.
+
+  deny    message       = Restricted characters in address
+          domains       = +local_domains
+          local_parts   = ^[.] : ^.*[@%!/|]
+
+  # The second rule applies to all other domains, and is less strict. The line
+  # "domains = !+local_domains" restricts it to domains that are NOT defined by
+  # the "domainlist local_domains" setting above. The exclamation mark is a
+  # negating operator. This rule allows your own users to send outgoing
+  # messages to sites that use slashes and vertical bars in their local parts.
+  # It blocks local parts that begin with a dot, slash, or vertical bar, but
+  # allows these characters within the local part. However, the sequence /../
+  # is barred. The use of @ % and ! is blocked, as before. The motivation here
+  # is to prevent your users (or your users' viruses) from mounting certain
+  # kinds of attack on remote sites.
+
+  deny    message       = Restricted characters in address
+          domains       = !+local_domains
+          local_parts   = ^[./|] : ^.*[@%!] : ^.*/\\.\\./
+  #############################################################################
+
+  # Accept mail to postmaster in any local domain, regardless of the source,
+  # and without verifying the sender.
+
+  accept  local_parts   = postmaster
+          domains       = +local_domains
+
+  # Deny unless the sender address can be verified.
+
+  require verify        = sender
+
+  # Accept if the message comes from one of the hosts for which we are an
+  # outgoing relay. It is assumed that such hosts are most likely to be MUAs,
+  # so we set control=submission to make Exim treat the message as a
+  # submission. It will fix up various errors in the message, for example, the
+  # lack of a Date: header line. If you are actually relaying out out from
+  # MTAs, you may want to disable this. If you are handling both relaying from
+  # MTAs and submissions from MUAs you should probably split them into two
+  # lists, and handle them differently.
+
+  # Recipient verification is omitted here, because in many cases the clients
+  # are dumb MUAs that don't cope well with SMTP error responses. If you are
+  # actually relaying out from MTAs, you should probably add recipient
+  # verification here.
+
+  # Note that, by putting this test before any DNS black list checks, you will
+  # always accept from these hosts, even if they end up on a black list. The
+  # assumption is that they are your friends, and if they get onto a black
+  # list, it is a mistake.
+
+  accept  hosts         = +relay_from_hosts
+          control       = submission
+          control       = dkim_disable_verify
+
+  # Accept if the message arrived over an authenticated connection, from
+  # any host. Again, these messages are usually from MUAs, so recipient
+  # verification is omitted, and submission mode is set. And again, we do this
+  # check before any black list tests.
+
+  accept  authenticated = *
+          control       = submission
+          control       = dkim_disable_verify
+
+  # Insist that any other recipient address that we accept is either in one of
+  # our local domains, or is in a domain for which we explicitly allow
+  # relaying. Any other domain is rejected as being unacceptable for relaying.
+
+  require message = relay not permitted
+          domains = +local_domains : +relay_to_domains
+
+  # We also require all accepted addresses to be verifiable. This check will
+  # do local part verification for local domains, but only check the domain
+  # for remote domains. The only way to check local parts for the remote
+  # relay domains is to use a callout (add /callout), but please read the
+  # documentation about callouts before doing this.
+
+  require verify = recipient
+
+  #############################################################################
+  # There are no default checks on DNS black lists because the domains that
+  # contain these lists are changing all the time. However, here are two
+  # examples of how you can get Exim to perform a DNS black list lookup at this
+  # point. The first one denies, whereas the second just warns.
+  #
+  # deny    message       = rejected because $sender_host_address is in a black list at $dnslist_domain\n$dnslist_text
+  #         dnslists      = black.list.example
+  #
+  # warn    dnslists      = black.list.example
+  #         add_header    = X-Warning: $sender_host_address is in a black list at $dnslist_domain
+  #         log_message   = found in $dnslist_domain
+  #############################################################################
+
+  #############################################################################
+  # This check is commented out because it is recognized that not every
+  # sysadmin will want to do it. If you enable it, the check performs
+  # Client SMTP Authorization (csa) checks on the sending host. These checks
+  # do DNS lookups for SRV records. The CSA proposal is currently (May 2005)
+  # an Internet draft. You can, of course, add additional conditions to this
+  # ACL statement to restrict the CSA checks to certain hosts only.
+  #
+  # require verify = csa
+  #############################################################################
+
+  # At this point, the address has passed all the checks that have been
+  # configured, so we accept it unconditionally.
+
+  accept
+
+
+# This ACL is used after the contents of a message have been received. This
+# is the ACL in which you can test a message's headers or body, and in
+# particular, this is where you can invoke external virus or spam scanners.
+# Some suggested ways of configuring these tests are shown below, commented
+# out. Without any tests, this ACL accepts all messages. If you want to use
+# such tests, you must ensure that Exim is compiled with the content-scanning
+# extension (WITH_CONTENT_SCAN=yes in Local/Makefile).
+
+acl_check_data:
+
+  # Deny if the message contains a virus. Before enabling this check, you
+  # must install a virus scanner and set the av_scanner option above.
+  #
+  # deny    malware    = *
+  #         message    = This message contains a virus ($malware_name).
+
+  # Add headers to a message if it is judged to be spam. Before enabling this,
+  # you must install SpamAssassin. You may also need to set the spamd_address
+  # option above.
+  #
+  # warn    spam       = nobody
+  #         add_header = X-Spam_score: $spam_score\n\
+  #                      X-Spam_score_int: $spam_score_int\n\
+  #                      X-Spam_bar: $spam_bar\n\
+  #                      X-Spam_report: $spam_report
+
+  # Accept the message.
+
+  accept
+
+acl_check_mail:
+
+  warn hosts   = *
+       control = submission/sender_retain
+  accept
+
+######################################################################
+#                      ROUTERS CONFIGURATION                         #
+#               Specifies how addresses are handled                  #
+######################################################################
+#     THE ORDER IN WHICH THE ROUTERS ARE DEFINED IS IMPORTANT!       #
+# An address is passed to each router in turn until it is accepted.  #
+######################################################################
+
+begin routers
+
+# This router routes to remote hosts over SMTP by explicit IP address,
+# when an email address is given in "domain literal" form, for example,
+# <user@[192.168.35.64]>. The RFCs require this facility. However, it is
+# little-known these days, and has been exploited by evil people seeking
+# to abuse SMTP relays. Consequently it is commented out in the default
+# configuration. If you uncomment this router, you also need to uncomment
+# allow_domain_literals above, so that Exim can recognize the syntax of
+# domain literal addresses.
+
+# domain_literal:
+#   driver = ipliteral
+#   domains = ! +local_domains
+#   transport = remote_smtp
+
+
+# This router routes addresses that are not in local domains by doing a DNS
+# lookup on the domain name. The exclamation mark that appears in "domains = !
+# +local_domains" is a negating operator, that is, it can be read as "not". The
+# recipient's domain must not be one of those defined by "domainlist
+# local_domains" above for this router to be used.
+#
+# If the router is used, any domain that resolves to 0.0.0.0 or to a loopback
+# interface address (127.0.0.0/8) is treated as if it had no DNS entry. Note
+# that 0.0.0.0 is the same as 0.0.0.0/32, which is commonly treated as the
+# local host inside the network stack. It is not 0.0.0.0/0, the default route.
+# If the DNS lookup fails, no further routers are tried because of the no_more
+# setting, and consequently the address is unrouteable.
+
+dnslookup:
+  driver = dnslookup
+  domains = ! +local_domains
+  transport = remote_smtp
+  ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
+# if ipv6-enabled then instead use:
+# ignore_target_hosts = <; 0.0.0.0 ; 127.0.0.0/8 ; ::1
+  no_more
+
+
+# This alternative router can be used when you want to send all mail to a
+# server which handles DNS lookups for you; an ISP will typically run such
+# a server for their customers.  If you uncomment "smarthost" then you
+# should comment out "dnslookup" above.  Setting a real hostname in route_data
+# wouldn't hurt either.
+
+# smarthost:
+#   driver = manualroute
+#   domains = ! +local_domains
+#   transport = remote_smtp
+#   route_data = MAIL.HOSTNAME.FOR.CENTRAL.SERVER.EXAMPLE
+#   ignore_target_hosts = <; 0.0.0.0 ; 127.0.0.0/8 ; ::1
+#   no_more
+
+
+# The remaining routers handle addresses in the local domain(s), that is those
+# domains that are defined by "domainlist local_domains" above.
+
+
+# This router handles aliasing using a linearly searched alias file with the
+# name SYSTEM_ALIASES_FILE. When this configuration is installed automatically,
+# the name gets inserted into this file from whatever is set in Exim's
+# build-time configuration. The default path is the traditional /etc/aliases.
+# If you install this configuration by hand, you need to specify the correct
+# path in the "data" setting below.
+#
+##### NB  You must ensure that the alias file exists. It used to be the case
+##### NB  that every Unix had that file, because it was the Sendmail default.
+##### NB  These days, there are systems that don't have it. Your aliases
+##### NB  file should at least contain an alias for "postmaster".
+#
+# If any of your aliases expand to pipes or files, you will need to set
+# up a user and a group for these deliveries to run under. You can do
+# this by uncommenting the "user" option below (changing the user name
+# as appropriate) and adding a "group" option if necessary. Alternatively, you
+# can specify "user" on the transports that are used. Note that the transports
+# listed below are the same as are used for .forward files; you might want
+# to set up different ones for pipe and file deliveries from aliases.
+
+system_aliases:
+  driver = redirect
+  allow_fail
+  allow_defer
+  data = ${lookup{$local_part}lsearch{SYSTEM_ALIASES_FILE}}
+# user = exim
+  file_transport = address_file
+  pipe_transport = address_pipe
+
+
+# This router handles forwarding using traditional .forward files in users'
+# home directories. If you want it also to allow mail filtering when a forward
+# file starts with the string "# Exim filter" or "# Sieve filter", uncomment
+# the "allow_filter" option.
+
+# The no_verify setting means that this router is skipped when Exim is
+# verifying addresses. Similarly, no_expn means that this router is skipped if
+# Exim is processing an EXPN command.
+
+# If you want this router to treat local parts with suffixes introduced by "-"
+# or "+" characters as if the suffixes did not exist, uncomment the two local_
+# part_suffix options. Then, for example, xxxx-foo@your.domain will be treated
+# in the same way as xxxx@your.domain by this router. Because this router is
+# not used for verification, if you choose to uncomment those options, then you
+# will *need* to make the same change to the localuser router.  (There are
+# other approaches, if this is undesirable, but they add complexity).
+
+# The check_ancestor option means that if the forward file generates an
+# address that is an ancestor of the current one, the current one gets
+# passed on instead. This covers the case where A is aliased to B and B
+# has a .forward file pointing to A.
+
+# The three transports specified at the end are those that are used when
+# forwarding generates a direct delivery to a file, or to a pipe, or sets
+# up an auto-reply, respectively.
+
+userforward:
+  driver = redirect
+  check_local_user
+# local_part_suffix = +* : -*
+# local_part_suffix_optional
+  file = $home/.forward
+# allow_filter
+  no_verify
+  no_expn
+  check_ancestor
+  file_transport = address_file
+  pipe_transport = address_pipe
+  reply_transport = address_reply
+
+
+# This router matches local user mailboxes. If the router fails, the error
+# message is "Unknown user".
+
+# If you want this router to treat local parts with suffixes introduced by "-"
+# or "+" characters as if the suffixes did not exist, uncomment the two local_
+# part_suffix options. Then, for example, xxxx-foo@your.domain will be treated
+# in the same way as xxxx@your.domain by this router.
+
+localuser:
+  driver = accept
+  check_local_user
+# local_part_suffix = +* : -*
+# local_part_suffix_optional
+  transport = local_delivery
+  cannot_route_message = Unknown user
+
+
+
+######################################################################
+#                      TRANSPORTS CONFIGURATION                      #
+######################################################################
+#                       ORDER DOES NOT MATTER                        #
+#     Only one appropriate transport is called for each delivery.    #
+######################################################################
+
+# A transport is used only when referenced from a router that successfully
+# handles an address.
+
+begin transports
+
+
+# This transport is used for delivering messages over SMTP connections.
+
+remote_smtp:
+  driver = smtp
+
+
+# This transport is used for local delivery to user mailboxes in traditional
+# BSD mailbox format. By default it will be run under the uid and gid of the
+# local user, and requires the sticky bit to be set on the /var/mail directory.
+# Some systems use the alternative approach of running mail deliveries under a
+# particular group instead of using the sticky bit. The commented options below
+# show how this can be done.
+
+local_delivery:
+  driver = appendfile
+  file = /var/mail/$local_part
+  delivery_date_add
+  envelope_to_add
+  return_path_add
+# group = mail
+# mode = 0660
+
+
+# This transport is used for handling pipe deliveries generated by alias or
+# .forward files. If the pipe generates any standard output, it is returned
+# to the sender of the message as a delivery error. Set return_fail_output
+# instead of return_output if you want this to happen only when the pipe fails
+# to complete normally. You can set different transports for aliases and
+# forwards if you want to - see the references to address_pipe in the routers
+# section above.
+
+address_pipe:
+  driver = pipe
+  return_output
+
+
+# This transport is used for handling deliveries directly to files that are
+# generated by aliasing or forwarding.
+
+address_file:
+  driver = appendfile
+  delivery_date_add
+  envelope_to_add
+  return_path_add
+
+
+# This transport is used for handling autoreplies generated by the filtering
+# option of the userforward router.
+
+address_reply:
+  driver = autoreply
+
+
+
+######################################################################
+#                      RETRY CONFIGURATION                           #
+######################################################################
+
+begin retry
+
+# This single retry rule applies to all domains and all errors. It specifies
+# retries every 15 minutes for 2 hours, then increasing retry intervals,
+# starting at 1 hour and increasing each time by a factor of 1.5, up to 16
+# hours, then retries every 6 hours until 4 days have passed since the first
+# failed delivery.
+
+# WARNING: If you do not have any retry rules at all (this section of the
+# configuration is non-existent or empty), Exim will not do any retries of
+# messages that fail to get delivered at the first attempt. The effect will
+# be to treat temporary errors as permanent. Therefore, DO NOT remove this
+# retry rule unless you really don't want any retries.
+
+# Address or Domain    Error       Retries
+# -----------------    -----       -------
+
+*                      *           F,2h,15m; G,16h,1h,1.5; F,4d,6h
+
+
+
+######################################################################
+#                      REWRITE CONFIGURATION                         #
+######################################################################
+
+# There are no rewriting specifications in this default configuration file.
+
+begin rewrite
+
+
+
+######################################################################
+#                   AUTHENTICATION CONFIGURATION                     #
+######################################################################
+
+# The following authenticators support plaintext username/password
+# authentication using the standard PLAIN mechanism and the traditional
+# but non-standard LOGIN mechanism, with Exim acting as the server.
+# PLAIN and LOGIN are enough to support most MUA software.
+#
+# These authenticators are not complete: you need to change the
+# server_condition settings to specify how passwords are verified.
+# They are set up to offer authentication to the client only if the
+# connection is encrypted with TLS, so you also need to add support
+# for TLS. See the global configuration options section at the start
+# of this file for more about TLS.
+#
+# The default RCPT ACL checks for successful authentication, and will accept
+# messages from authenticated users from anywhere on the Internet.
+
+begin authenticators
+
+# PLAIN authentication has no server prompts. The client sends its
+# credentials in one lump, containing an authorization ID (which we do not
+# use), an authentication ID, and a password. The latter two appear as
+# $auth2 and $auth3 in the configuration and should be checked against a
+# valid username and password. In a real configuration you would typically
+# use $auth2 as a lookup key, and compare $auth3 against the result of the
+# lookup, perhaps using the crypteq{}{} condition.
+
+#PLAIN:
+#  driver                     = plaintext
+#  server_set_id              = $auth2
+#  server_prompts             = :
+#  server_condition           = Authentication is not yet configured
+#  server_advertise_condition = ${if def:tls_in_cipher }
+
+# LOGIN authentication has traditional prompts and responses. There is no
+# authorization ID in this mechanism, so unlike PLAIN the username and
+# password are $auth1 and $auth2. Apart from that you can use the same
+# server_condition setting for both authenticators.
+
+#LOGIN:
+#  driver                     = plaintext
+#  server_set_id              = $auth1
+#  server_prompts             = <| Username: | Password:
+#  server_condition           = Authentication is not yet configured
+#  server_advertise_condition = ${if def:tls_in_cipher }
+
+server_advertise_condition = ${if eq{$tls_cipher}{}{no}{yes}}
+
+######################################################################
+#                   CONFIGURATION FOR local_scan()                   #
+######################################################################
+
+# If you have built Exim to include a local_scan() function that contains
+# tables for private options, you can define those options here. Remember to
+# uncomment the "begin" line. It is commented by default because it provokes
+# an error with Exim binaries that are not built with LOCAL_SCAN_HAS_OPTIONS
+# set in the Local/Makefile.
+
+# begin local_scan
+
+
+# End of Exim configuration file
diff --git a/src/configuration/MailServers/Exim/configure.server b/src/configuration/MailServers/Exim/configure.server
new file mode 100644 (file)
index 0000000..628fdc6
--- /dev/null
@@ -0,0 +1,824 @@
+######################################################################
+#                  Runtime configuration file for Exim               #
+######################################################################
+
+
+# This is a default configuration file which will operate correctly in
+# uncomplicated installations. Please see the manual for a complete list
+# of all the runtime configuration options that can be included in a
+# configuration file. There are many more than are mentioned here. The
+# manual is in the file doc/spec.txt in the Exim distribution as a plain
+# ASCII file. Other formats (PostScript, Texinfo, HTML, PDF) are available
+# from the Exim ftp sites. The manual is also online at the Exim web sites.
+
+
+# This file is divided into several parts, all but the first of which are
+# headed by a line starting with the word "begin". Only those parts that
+# are required need to be present. Blank lines, and lines starting with #
+# are ignored.
+
+
+########### IMPORTANT ########## IMPORTANT ########### IMPORTANT ###########
+#                                                                          #
+# Whenever you change Exim's configuration file, you *must* remember to    #
+# HUP the Exim daemon, because it will not pick up the new configuration   #
+# until you do. However, any other Exim processes that are started, for    #
+# example, a process started by an MUA in order to send a message, will    #
+# see the new configuration as soon as it is in place.                     #
+#                                                                          #
+# You do not need to HUP the daemon for changes in auxiliary files that    #
+# are referenced from this file. They are read every time they are used.   #
+#                                                                          #
+# It is usually a good idea to test a new configuration for syntactic      #
+# correctness before installing it (for example, by running the command    #
+# "exim -C /config/file.new -bV").                                         #
+#                                                                          #
+########### IMPORTANT ########## IMPORTANT ########### IMPORTANT ###########
+
+
+
+######################################################################
+#                    MAIN CONFIGURATION SETTINGS                     #
+######################################################################
+
+# Specify your host's canonical name here. This should normally be the fully
+# qualified "official" name of your host. If this option is not set, the
+# uname() function is called to obtain the name. In many cases this does
+# the right thing and you need not set anything explicitly.
+
+# primary_hostname =
+
+
+# The next three settings create two lists of domains and one list of hosts.
+# These lists are referred to later in this configuration using the syntax
+# +local_domains, +relay_to_domains, and +relay_from_hosts, respectively. They
+# are all colon-separated lists:
+
+domainlist local_domains = @
+domainlist relay_to_domains =
+hostlist   relay_from_hosts = localhost
+# (We rely upon hostname resolution working for localhost, because the default
+# uncommented configuration needs to work in IPv4-only environments.)
+
+# Most straightforward access control requirements can be obtained by
+# appropriate settings of the above options. In more complicated situations,
+# you may need to modify the Access Control Lists (ACLs) which appear later in
+# this file.
+
+# The first setting specifies your local domains, for example:
+#
+#   domainlist local_domains = my.first.domain : my.second.domain
+#
+# You can use "@" to mean "the name of the local host", as in the default
+# setting above. This is the name that is specified by primary_hostname,
+# as specified above (or defaulted). If you do not want to do any local
+# deliveries, remove the "@" from the setting above. If you want to accept mail
+# addressed to your host's literal IP address, for example, mail addressed to
+# "user@[192.168.23.44]", you can add "@[]" as an item in the local domains
+# list. You also need to uncomment "allow_domain_literals" below. This is not
+# recommended for today's Internet.
+
+# The second setting specifies domains for which your host is an incoming relay.
+# If you are not doing any relaying, you should leave the list empty. However,
+# if your host is an MX backup or gateway of some kind for some domains, you
+# must set relay_to_domains to match those domains. For example:
+#
+# domainlist relay_to_domains = *.myco.com : my.friend.org
+#
+# This will allow any host to relay through your host to those domains.
+# See the section of the manual entitled "Control of relaying" for more
+# information.
+
+# The third setting specifies hosts that can use your host as an outgoing relay
+# to any other host on the Internet. Such a setting commonly refers to a
+# complete local network as well as the localhost. For example:
+#
+# hostlist relay_from_hosts = <; 127.0.0.1 ; ::1 ; 192.168.0.0/16
+#
+# The "/16" is a bit mask (CIDR notation), not a number of hosts. Note that you
+# have to include 127.0.0.1 if you want to allow processes on your host to send
+# SMTP mail by using the loopback address. A number of MUAs use this method of
+# sending mail.  Often, connections are made to "localhost", which might be ::1
+# on IPv6-enabled hosts.  Do not forget CIDR for your IPv6 networks.
+
+# All three of these lists may contain many different kinds of item, including
+# wildcarded names, regular expressions, and file lookups. See the reference
+# manual for details. The lists above are used in the access control lists for
+# checking incoming messages. The names of these ACLs are defined here:
+
+acl_smtp_rcpt = acl_check_rcpt
+acl_smtp_data = acl_check_data
+
+# You should not change those settings until you understand how ACLs work.
+
+
+# If you are running a version of Exim that was compiled with the content-
+# scanning extension, you can cause incoming messages to be automatically
+# scanned for viruses. You have to modify the configuration in two places to
+# set this up. The first of them is here, where you define the interface to
+# your scanner. This example is typical for ClamAV; see the manual for details
+# of what to set for other virus scanners. The second modification is in the
+# acl_check_data access control list (see below).
+
+# av_scanner = clamd:/tmp/clamd
+
+
+# For spam scanning, there is a similar option that defines the interface to
+# SpamAssassin. You do not need to set this if you are using the default, which
+# is shown in this commented example. As for virus scanning, you must also
+# modify the acl_check_data access control list to enable spam scanning.
+
+# spamd_address = 127.0.0.1 783
+
+
+# If Exim is compiled with support for TLS, you may want to enable the
+# following options so that Exim allows clients to make encrypted
+# connections. In the authenticators section below, there are template
+# configurations for plaintext username/password authentication. This kind
+# of authentication is only safe when used within a TLS connection, so the
+# authenticators will only work if the following TLS settings are turned on
+# as well.
+
+# Allow any client to use TLS.
+
+tls_advertise_hosts = *
+
+# Specify the location of the Exim server's TLS certificate and private key.
+# The private key must not be encrypted (password protected). You can put
+# the certificate and private key in the same file, in which case you only
+# need the first setting, or in separate files, in which case you need both
+# options.
+
+tls_certificate = /etc/ssl/exim.crt
+tls_privatekey = /etc/ssl/exim.pem
+tls_verify_certificates = /etc/pki/tls/certs/ca-bundle.crt
+tls_try_verify_hosts = *
+
+# In order to support roaming users who wish to send email from anywhere,
+# you may want to make Exim listen on other ports as well as port 25, in
+# case these users need to send email from a network that blocks port 25.
+# The standard port for this purpose is port 587, the "message submission"
+# port. See RFC 4409 for details. Microsoft MUAs cannot be configured to
+# talk the message submission protocol correctly, so if you need to support
+# them you should also allow TLS-on-connect on the traditional but
+# non-standard port 465.
+
+daemon_smtp_ports = smtp
+# tls_on_connect_ports = 465
+
+
+# Specify the domain you want to be added to all unqualified addresses
+# here. An unqualified address is one that does not contain an "@" character
+# followed by a domain. For example, "caesar@rome.example" is a fully qualified
+# address, but the string "caesar" (i.e. just a login name) is an unqualified
+# email address. Unqualified addresses are accepted only from local callers by
+# default. See the recipient_unqualified_hosts option if you want to permit
+# unqualified addresses from remote sources. If this option is not set, the
+# primary_hostname value is used for qualification.
+
+# qualify_domain =
+
+
+# If you want unqualified recipient addresses to be qualified with a different
+# domain to unqualified sender addresses, specify the recipient domain here.
+# If this option is not set, the qualify_domain value is used.
+
+# qualify_recipient =
+
+
+# The following line must be uncommented if you want Exim to recognize
+# addresses of the form "user@[10.11.12.13]" that is, with a "domain literal"
+# (an IP address) instead of a named domain. The RFCs still require this form,
+# but it makes little sense to permit mail to be sent to specific hosts by
+# their IP address in the modern Internet. This ancient format has been used
+# by those seeking to abuse hosts by using them for unwanted relaying. If you
+# really do want to support domain literals, uncomment the following line, and
+# see also the "domain_literal" router below.
+
+# allow_domain_literals
+
+
+# No deliveries will ever be run under the uids of users specified by
+# never_users (a colon-separated list). An attempt to do so causes a panic
+# error to be logged, and the delivery to be deferred. This is a paranoic
+# safety catch. There is an even stronger safety catch in the form of the
+# FIXED_NEVER_USERS setting in the configuration for building Exim. The list of
+# users that it specifies is built into the binary, and cannot be changed. The
+# option below just adds additional users to the list. The default for
+# FIXED_NEVER_USERS is "root", but just to be absolutely sure, the default here
+# is also "root".
+
+# Note that the default setting means you cannot deliver mail addressed to root
+# as if it were a normal user. This isn't usually a problem, as most sites have
+# an alias for root that redirects such mail to a human administrator.
+
+never_users = root
+
+
+# The setting below causes Exim to do a reverse DNS lookup on all incoming
+# IP calls, in order to get the true host name. If you feel this is too
+# expensive, you can specify the networks for which a lookup is done, or
+# remove the setting entirely.
+
+host_lookup = *
+
+
+# The settings below, which are actually the same as the defaults in the
+# code, cause Exim to make RFC 1413 (ident) callbacks for all incoming SMTP
+# calls. You can limit the hosts to which these calls are made, and/or change
+# the timeout that is used. If you set the timeout to zero, all RFC 1413 calls
+# are disabled. RFC 1413 calls are cheap and can provide useful information
+# for tracing problem messages, but some hosts and firewalls have problems
+# with them. This can result in a timeout instead of an immediate refused
+# connection, leading to delays on starting up SMTP sessions. (The default was
+# reduced from 30s to 5s for release 4.61.)
+
+rfc1413_hosts = *
+rfc1413_query_timeout = 5s
+
+
+# By default, Exim expects all envelope addresses to be fully qualified, that
+# is, they must contain both a local part and a domain. If you want to accept
+# unqualified addresses (just a local part) from certain hosts, you can specify
+# these hosts by setting one or both of
+#
+# sender_unqualified_hosts =
+# recipient_unqualified_hosts =
+#
+# to control sender and recipient addresses, respectively. When this is done,
+# unqualified addresses are qualified using the settings of qualify_domain
+# and/or qualify_recipient (see above).
+
+
+# If you want Exim to support the "percent hack" for certain domains,
+# uncomment the following line and provide a list of domains. The "percent
+# hack" is the feature by which mail addressed to x%y@z (where z is one of
+# the domains listed) is locally rerouted to x@y and sent on. If z is not one
+# of the "percent hack" domains, x%y is treated as an ordinary local part. This
+# hack is rarely needed nowadays; you should not enable it unless you are sure
+# that you really need it.
+#
+# percent_hack_domains =
+#
+# As well as setting this option you will also need to remove the test
+# for local parts containing % in the ACL definition below.
+
+
+# When Exim can neither deliver a message nor return it to sender, it "freezes"
+# the delivery error message (aka "bounce message"). There are also other
+# circumstances in which messages get frozen. They will stay on the queue for
+# ever unless one of the following options is set.
+
+# This option unfreezes frozen bounce messages after two days, tries
+# once more to deliver them, and ignores any delivery failures.
+
+ignore_bounce_errors_after = 2d
+
+# This option cancels (removes) frozen messages that are older than a week.
+
+timeout_frozen_after = 7d
+
+
+# By default, messages that are waiting on Exim's queue are all held in a
+# single directory called "input" which it itself within Exim's spool
+# directory. (The default spool directory is specified when Exim is built, and
+# is often /var/spool/exim/.) Exim works best when its queue is kept short, but
+# there are circumstances where this is not always possible. If you uncomment
+# the setting below, messages on the queue are held in 62 subdirectories of
+# "input" instead of all in the same directory. The subdirectories are called
+# 0, 1, ... A, B, ... a, b, ... z. This has two benefits: (1) If your file
+# system degrades with many files in one directory, this is less likely to
+# happen; (2) Exim can process the queue one subdirectory at a time instead of
+# all at once, which can give better performance with large queues.
+
+# split_spool_directory = true
+
+
+# If you're in a part of the world where ASCII is not sufficient for most
+# text, then you're probably familiar with RFC2047 message header extensions.
+# By default, Exim adheres to the specification, including a limit of 76
+# characters to a line, with encoded words fitting within a line.
+# If you wish to use decoded headers in message filters in such a way
+# that successful decoding of malformed messages matters, you may wish to
+# configure Exim to be more lenient.
+#
+# check_rfc2047_length = false
+#
+# In particular, the Exim maintainers have had multiple reports of problems
+# from Russian administrators of issues until they disable this check,
+# because of some popular, yet buggy, mail composition software.
+
+
+# If you wish to be strictly RFC compliant, or if you know you'll be
+# exchanging email with systems that are not 8-bit clean, then you may
+# wish to disable advertising 8BITMIME.  Uncomment this option to do so.
+
+# accept_8bitmime = false
+
+
+######################################################################
+#                       ACL CONFIGURATION                            #
+#         Specifies access control lists for incoming SMTP mail      #
+######################################################################
+
+begin acl
+
+# This access control list is used for every RCPT command in an incoming
+# SMTP message. The tests are run in order until the address is either
+# accepted or denied.
+
+acl_check_rcpt:
+
+  # Accept if the source is local SMTP (i.e. not over TCP/IP). We do this by
+  # testing for an empty sending host field.
+
+  accept  hosts = :
+          control = dkim_disable_verify
+
+  #############################################################################
+  # The following section of the ACL is concerned with local parts that contain
+  # @ or % or ! or / or | or dots in unusual places.
+  #
+  # The characters other than dots are rarely found in genuine local parts, but
+  # are often tried by people looking to circumvent relaying restrictions.
+  # Therefore, although they are valid in local parts, these rules lock them
+  # out, as a precaution.
+  #
+  # Empty components (two dots in a row) are not valid in RFC 2822, but Exim
+  # allows them because they have been encountered. (Consider local parts
+  # constructed as "firstinitial.secondinitial.familyname" when applied to
+  # someone like me, who has no second initial.) However, a local part starting
+  # with a dot or containing /../ can cause trouble if it is used as part of a
+  # file name (e.g. for a mailing list). This is also true for local parts that
+  # contain slashes. A pipe symbol can also be troublesome if the local part is
+  # incorporated unthinkingly into a shell command line.
+  #
+  # Two different rules are used. The first one is stricter, and is applied to
+  # messages that are addressed to one of the local domains handled by this
+  # host. The line "domains = +local_domains" restricts it to domains that are
+  # defined by the "domainlist local_domains" setting above. The rule  blocks
+  # local parts that begin with a dot or contain @ % ! / or |. If you have
+  # local accounts that include these characters, you will have to modify this
+  # rule.
+
+  deny    message       = Restricted characters in address
+          domains       = +local_domains
+          local_parts   = ^[.] : ^.*[@%!/|]
+
+  # The second rule applies to all other domains, and is less strict. The line
+  # "domains = !+local_domains" restricts it to domains that are NOT defined by
+  # the "domainlist local_domains" setting above. The exclamation mark is a
+  # negating operator. This rule allows your own users to send outgoing
+  # messages to sites that use slashes and vertical bars in their local parts.
+  # It blocks local parts that begin with a dot, slash, or vertical bar, but
+  # allows these characters within the local part. However, the sequence /../
+  # is barred. The use of @ % and ! is blocked, as before. The motivation here
+  # is to prevent your users (or your users' viruses) from mounting certain
+  # kinds of attack on remote sites.
+
+  deny    message       = Restricted characters in address
+          domains       = !+local_domains
+          local_parts   = ^[./|] : ^.*[@%!] : ^.*/\\.\\./
+  #############################################################################
+
+  # Accept mail to postmaster in any local domain, regardless of the source,
+  # and without verifying the sender.
+
+  accept  local_parts   = postmaster
+          domains       = +local_domains
+
+  # Deny unless the sender address can be verified.
+
+  require verify        = sender
+
+  # Accept if the message comes from one of the hosts for which we are an
+  # outgoing relay. It is assumed that such hosts are most likely to be MUAs,
+  # so we set control=submission to make Exim treat the message as a
+  # submission. It will fix up various errors in the message, for example, the
+  # lack of a Date: header line. If you are actually relaying out out from
+  # MTAs, you may want to disable this. If you are handling both relaying from
+  # MTAs and submissions from MUAs you should probably split them into two
+  # lists, and handle them differently.
+
+  # Recipient verification is omitted here, because in many cases the clients
+  # are dumb MUAs that don't cope well with SMTP error responses. If you are
+  # actually relaying out from MTAs, you should probably add recipient
+  # verification here.
+
+  # Note that, by putting this test before any DNS black list checks, you will
+  # always accept from these hosts, even if they end up on a black list. The
+  # assumption is that they are your friends, and if they get onto a black
+  # list, it is a mistake.
+
+  accept  hosts         = +relay_from_hosts
+          control       = submission
+          control       = dkim_disable_verify
+
+  # Accept if the message arrived over an authenticated connection, from
+  # any host. Again, these messages are usually from MUAs, so recipient
+  # verification is omitted, and submission mode is set. And again, we do this
+  # check before any black list tests.
+
+  accept  authenticated = *
+          control       = submission
+          control       = dkim_disable_verify
+
+  # Insist that any other recipient address that we accept is either in one of
+  # our local domains, or is in a domain for which we explicitly allow
+  # relaying. Any other domain is rejected as being unacceptable for relaying.
+
+  require message = relay not permitted
+          domains = +local_domains : +relay_to_domains
+
+  # We also require all accepted addresses to be verifiable. This check will
+  # do local part verification for local domains, but only check the domain
+  # for remote domains. The only way to check local parts for the remote
+  # relay domains is to use a callout (add /callout), but please read the
+  # documentation about callouts before doing this.
+
+  require verify = recipient
+
+  #############################################################################
+  # There are no default checks on DNS black lists because the domains that
+  # contain these lists are changing all the time. However, here are two
+  # examples of how you can get Exim to perform a DNS black list lookup at this
+  # point. The first one denies, whereas the second just warns.
+  #
+  # deny    message       = rejected because $sender_host_address is in a black list at $dnslist_domain\n$dnslist_text
+  #         dnslists      = black.list.example
+  #
+  # warn    dnslists      = black.list.example
+  #         add_header    = X-Warning: $sender_host_address is in a black list at $dnslist_domain
+  #         log_message   = found in $dnslist_domain
+  #############################################################################
+
+  #############################################################################
+  # This check is commented out because it is recognized that not every
+  # sysadmin will want to do it. If you enable it, the check performs
+  # Client SMTP Authorization (csa) checks on the sending host. These checks
+  # do DNS lookups for SRV records. The CSA proposal is currently (May 2005)
+  # an Internet draft. You can, of course, add additional conditions to this
+  # ACL statement to restrict the CSA checks to certain hosts only.
+  #
+  # require verify = csa
+  #############################################################################
+
+  # At this point, the address has passed all the checks that have been
+  # configured, so we accept it unconditionally.
+
+  accept
+
+
+# This ACL is used after the contents of a message have been received. This
+# is the ACL in which you can test a message's headers or body, and in
+# particular, this is where you can invoke external virus or spam scanners.
+# Some suggested ways of configuring these tests are shown below, commented
+# out. Without any tests, this ACL accepts all messages. If you want to use
+# such tests, you must ensure that Exim is compiled with the content-scanning
+# extension (WITH_CONTENT_SCAN=yes in Local/Makefile).
+
+acl_check_data:
+
+  # Deny if the message contains a virus. Before enabling this check, you
+  # must install a virus scanner and set the av_scanner option above.
+  #
+  # deny    malware    = *
+  #         message    = This message contains a virus ($malware_name).
+
+  # Add headers to a message if it is judged to be spam. Before enabling this,
+  # you must install SpamAssassin. You may also need to set the spamd_address
+  # option above.
+  #
+  # warn    spam       = nobody
+  #         add_header = X-Spam_score: $spam_score\n\
+  #                      X-Spam_score_int: $spam_score_int\n\
+  #                      X-Spam_bar: $spam_bar\n\
+  #                      X-Spam_report: $spam_report
+
+  # Accept the message.
+
+  accept
+
+
+
+######################################################################
+#                      ROUTERS CONFIGURATION                         #
+#               Specifies how addresses are handled                  #
+######################################################################
+#     THE ORDER IN WHICH THE ROUTERS ARE DEFINED IS IMPORTANT!       #
+# An address is passed to each router in turn until it is accepted.  #
+######################################################################
+
+begin routers
+
+# This router routes to remote hosts over SMTP by explicit IP address,
+# when an email address is given in "domain literal" form, for example,
+# <user@[192.168.35.64]>. The RFCs require this facility. However, it is
+# little-known these days, and has been exploited by evil people seeking
+# to abuse SMTP relays. Consequently it is commented out in the default
+# configuration. If you uncomment this router, you also need to uncomment
+# allow_domain_literals above, so that Exim can recognize the syntax of
+# domain literal addresses.
+
+# domain_literal:
+#   driver = ipliteral
+#   domains = ! +local_domains
+#   transport = remote_smtp
+
+
+# This router routes addresses that are not in local domains by doing a DNS
+# lookup on the domain name. The exclamation mark that appears in "domains = !
+# +local_domains" is a negating operator, that is, it can be read as "not". The
+# recipient's domain must not be one of those defined by "domainlist
+# local_domains" above for this router to be used.
+#
+# If the router is used, any domain that resolves to 0.0.0.0 or to a loopback
+# interface address (127.0.0.0/8) is treated as if it had no DNS entry. Note
+# that 0.0.0.0 is the same as 0.0.0.0/32, which is commonly treated as the
+# local host inside the network stack. It is not 0.0.0.0/0, the default route.
+# If the DNS lookup fails, no further routers are tried because of the no_more
+# setting, and consequently the address is unrouteable.
+
+dnslookup:
+  driver = dnslookup
+  domains = ! +local_domains
+  transport = remote_smtp
+  ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
+# if ipv6-enabled then instead use:
+# ignore_target_hosts = <; 0.0.0.0 ; 127.0.0.0/8 ; ::1
+  no_more
+
+
+# This alternative router can be used when you want to send all mail to a
+# server which handles DNS lookups for you; an ISP will typically run such
+# a server for their customers.  If you uncomment "smarthost" then you
+# should comment out "dnslookup" above.  Setting a real hostname in route_data
+# wouldn't hurt either.
+
+# smarthost:
+#   driver = manualroute
+#   domains = ! +local_domains
+#   transport = remote_smtp
+#   route_data = MAIL.HOSTNAME.FOR.CENTRAL.SERVER.EXAMPLE
+#   ignore_target_hosts = <; 0.0.0.0 ; 127.0.0.0/8 ; ::1
+#   no_more
+
+
+# The remaining routers handle addresses in the local domain(s), that is those
+# domains that are defined by "domainlist local_domains" above.
+
+
+# This router handles aliasing using a linearly searched alias file with the
+# name SYSTEM_ALIASES_FILE. When this configuration is installed automatically,
+# the name gets inserted into this file from whatever is set in Exim's
+# build-time configuration. The default path is the traditional /etc/aliases.
+# If you install this configuration by hand, you need to specify the correct
+# path in the "data" setting below.
+#
+##### NB  You must ensure that the alias file exists. It used to be the case
+##### NB  that every Unix had that file, because it was the Sendmail default.
+##### NB  These days, there are systems that don't have it. Your aliases
+##### NB  file should at least contain an alias for "postmaster".
+#
+# If any of your aliases expand to pipes or files, you will need to set
+# up a user and a group for these deliveries to run under. You can do
+# this by uncommenting the "user" option below (changing the user name
+# as appropriate) and adding a "group" option if necessary. Alternatively, you
+# can specify "user" on the transports that are used. Note that the transports
+# listed below are the same as are used for .forward files; you might want
+# to set up different ones for pipe and file deliveries from aliases.
+
+system_aliases:
+  driver = redirect
+  allow_fail
+  allow_defer
+  data = ${lookup{$local_part}lsearch{SYSTEM_ALIASES_FILE}}
+# user = exim
+  file_transport = address_file
+  pipe_transport = address_pipe
+
+
+# This router handles forwarding using traditional .forward files in users'
+# home directories. If you want it also to allow mail filtering when a forward
+# file starts with the string "# Exim filter" or "# Sieve filter", uncomment
+# the "allow_filter" option.
+
+# The no_verify setting means that this router is skipped when Exim is
+# verifying addresses. Similarly, no_expn means that this router is skipped if
+# Exim is processing an EXPN command.
+
+# If you want this router to treat local parts with suffixes introduced by "-"
+# or "+" characters as if the suffixes did not exist, uncomment the two local_
+# part_suffix options. Then, for example, xxxx-foo@your.domain will be treated
+# in the same way as xxxx@your.domain by this router. Because this router is
+# not used for verification, if you choose to uncomment those options, then you
+# will *need* to make the same change to the localuser router.  (There are
+# other approaches, if this is undesirable, but they add complexity).
+
+# The check_ancestor option means that if the forward file generates an
+# address that is an ancestor of the current one, the current one gets
+# passed on instead. This covers the case where A is aliased to B and B
+# has a .forward file pointing to A.
+
+# The three transports specified at the end are those that are used when
+# forwarding generates a direct delivery to a file, or to a pipe, or sets
+# up an auto-reply, respectively.
+
+userforward:
+  driver = redirect
+  check_local_user
+# local_part_suffix = +* : -*
+# local_part_suffix_optional
+  file = $home/.forward
+# allow_filter
+  no_verify
+  no_expn
+  check_ancestor
+  file_transport = address_file
+  pipe_transport = address_pipe
+  reply_transport = address_reply
+
+
+# This router matches local user mailboxes. If the router fails, the error
+# message is "Unknown user".
+
+# If you want this router to treat local parts with suffixes introduced by "-"
+# or "+" characters as if the suffixes did not exist, uncomment the two local_
+# part_suffix options. Then, for example, xxxx-foo@your.domain will be treated
+# in the same way as xxxx@your.domain by this router.
+
+localuser:
+  driver = accept
+  check_local_user
+# local_part_suffix = +* : -*
+# local_part_suffix_optional
+  transport = local_delivery
+  cannot_route_message = Unknown user
+
+
+
+######################################################################
+#                      TRANSPORTS CONFIGURATION                      #
+######################################################################
+#                       ORDER DOES NOT MATTER                        #
+#     Only one appropriate transport is called for each delivery.    #
+######################################################################
+
+# A transport is used only when referenced from a router that successfully
+# handles an address.
+
+begin transports
+
+
+# This transport is used for delivering messages over SMTP connections.
+
+remote_smtp:
+  driver = smtp
+
+
+# This transport is used for local delivery to user mailboxes in traditional
+# BSD mailbox format. By default it will be run under the uid and gid of the
+# local user, and requires the sticky bit to be set on the /var/mail directory.
+# Some systems use the alternative approach of running mail deliveries under a
+# particular group instead of using the sticky bit. The commented options below
+# show how this can be done.
+
+local_delivery:
+  driver = appendfile
+  file = /var/mail/$local_part
+  delivery_date_add
+  envelope_to_add
+  return_path_add
+# group = mail
+# mode = 0660
+
+
+# This transport is used for handling pipe deliveries generated by alias or
+# .forward files. If the pipe generates any standard output, it is returned
+# to the sender of the message as a delivery error. Set return_fail_output
+# instead of return_output if you want this to happen only when the pipe fails
+# to complete normally. You can set different transports for aliases and
+# forwards if you want to - see the references to address_pipe in the routers
+# section above.
+
+address_pipe:
+  driver = pipe
+  return_output
+
+
+# This transport is used for handling deliveries directly to files that are
+# generated by aliasing or forwarding.
+
+address_file:
+  driver = appendfile
+  delivery_date_add
+  envelope_to_add
+  return_path_add
+
+
+# This transport is used for handling autoreplies generated by the filtering
+# option of the userforward router.
+
+address_reply:
+  driver = autoreply
+
+
+
+######################################################################
+#                      RETRY CONFIGURATION                           #
+######################################################################
+
+begin retry
+
+# This single retry rule applies to all domains and all errors. It specifies
+# retries every 15 minutes for 2 hours, then increasing retry intervals,
+# starting at 1 hour and increasing each time by a factor of 1.5, up to 16
+# hours, then retries every 6 hours until 4 days have passed since the first
+# failed delivery.
+
+# WARNING: If you do not have any retry rules at all (this section of the
+# configuration is non-existent or empty), Exim will not do any retries of
+# messages that fail to get delivered at the first attempt. The effect will
+# be to treat temporary errors as permanent. Therefore, DO NOT remove this
+# retry rule unless you really don't want any retries.
+
+# Address or Domain    Error       Retries
+# -----------------    -----       -------
+
+*                      *           F,2h,15m; G,16h,1h,1.5; F,4d,6h
+
+
+
+######################################################################
+#                      REWRITE CONFIGURATION                         #
+######################################################################
+
+# There are no rewriting specifications in this default configuration file.
+
+begin rewrite
+
+
+
+######################################################################
+#                   AUTHENTICATION CONFIGURATION                     #
+######################################################################
+
+# The following authenticators support plaintext username/password
+# authentication using the standard PLAIN mechanism and the traditional
+# but non-standard LOGIN mechanism, with Exim acting as the server.
+# PLAIN and LOGIN are enough to support most MUA software.
+#
+# These authenticators are not complete: you need to change the
+# server_condition settings to specify how passwords are verified.
+# They are set up to offer authentication to the client only if the
+# connection is encrypted with TLS, so you also need to add support
+# for TLS. See the global configuration options section at the start
+# of this file for more about TLS.
+#
+# The default RCPT ACL checks for successful authentication, and will accept
+# messages from authenticated users from anywhere on the Internet.
+
+begin authenticators
+
+# PLAIN authentication has no server prompts. The client sends its
+# credentials in one lump, containing an authorization ID (which we do not
+# use), an authentication ID, and a password. The latter two appear as
+# $auth2 and $auth3 in the configuration and should be checked against a
+# valid username and password. In a real configuration you would typically
+# use $auth2 as a lookup key, and compare $auth3 against the result of the
+# lookup, perhaps using the crypteq{}{} condition.
+
+#PLAIN:
+#  driver                     = plaintext
+#  server_set_id              = $auth2
+#  server_prompts             = :
+#  server_condition           = Authentication is not yet configured
+#  server_advertise_condition = ${if def:tls_in_cipher }
+
+# LOGIN authentication has traditional prompts and responses. There is no
+# authorization ID in this mechanism, so unlike PLAIN the username and
+# password are $auth1 and $auth2. Apart from that you can use the same
+# server_condition setting for both authenticators.
+
+#LOGIN:
+#  driver                     = plaintext
+#  server_set_id              = $auth1
+#  server_prompts             = <| Username: | Password:
+#  server_condition           = Authentication is not yet configured
+#  server_advertise_condition = ${if def:tls_in_cipher }
+
+
+######################################################################
+#                   CONFIGURATION FOR local_scan()                   #
+######################################################################
+
+# If you have built Exim to include a local_scan() function that contains
+# tables for private options, you can define those options here. Remember to
+# uncomment the "begin" line. It is commented by default because it provokes
+# an error with Exim binaries that are not built with LOCAL_SCAN_HAS_OPTIONS
+# set in the Local/Makefile.
+
+# begin local_scan
+
+
+# End of Exim configuration file
diff --git a/src/configuration/MailServers/Postfix/main.cf b/src/configuration/MailServers/Postfix/main.cf
new file mode 100644 (file)
index 0000000..15aede5
--- /dev/null
@@ -0,0 +1,51 @@
+# See /usr/share/postfix/main.cf.dist for a commented, more complete version
+
+
+# Debian specific:  Specifying a file name will cause the first
+# line of that file to be used as the name.  The Debian default
+# is /etc/mailname.
+myorigin = /etc/mailname
+
+smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
+biff = no
+
+# appending .domain is the MUA's job.
+append_dot_mydomain = no
+
+# Uncomment the next line to generate "delayed mail" warnings
+#delay_warning_time = 4h
+
+readme_directory = no
+
+readme_directory = no
+
+# TLS parameters
+smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
+smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
+# use 0 for Postfix >= 2.9, and 1 for earlier versions
+smtpd_tls_loglevel = 0
+# enable opportunistic TLS support in the SMTP server and client
+smtpd_tls_security_level = may
+smtp_tls_security_level = may
+smtp_tls_loglevel = 1
+# if you have authentication enabled, only offer it after STARTTLS
+smtpd_tls_auth_only = yes
+tls_ssl_options = NO_COMPRESSION
+
+smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
+smtpd_tls_mandatory_ciphers=high
+tls_high_cipherlist=EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
+smtpd_tls_eecdh_grade=ultra
+
+smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
+smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
+
+# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
+# information on enabling SSL in the smtp client.
+
+myhostname = 
+alias_maps = hash:/etc/aliases
+alias_database = hash:/etc/aliases
+myorigin = /etc/mailname
+mydestination = 
+
diff --git a/src/configuration/MailServers/Postfix/master.cf b/src/configuration/MailServers/Postfix/master.cf
new file mode 100644 (file)
index 0000000..545a2f9
--- /dev/null
@@ -0,0 +1,110 @@
+#
+# Postfix master process configuration file.  For details on the format
+# of the file, see the master(5) manual page (command: "man 5 master").
+#
+# Do not forget to execute "postfix reload" after editing this file.
+#
+# ==========================================================================
+# service type  private unpriv  chroot  wakeup  maxproc command + args
+#               (yes)   (yes)   (yes)   (never) (100)
+# ==========================================================================
+smtp      inet  n       -       -       -       -       smtpd
+submission inet n       -       -       -       -       smtpd
+  -o smtpd_tls_security_level=encrypt
+  -o tls_preempt_cipherlist=yes
+#  -o smtpd_sasl_auth_enable=yes
+#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
+#  -o milter_macro_daemon_name=ORIGINATING
+#smtps     inet  n       -       -       -       -       smtpd
+#  -o smtpd_tls_wrappermode=yes
+#  -o smtpd_sasl_auth_enable=yes
+#  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
+#  -o milter_macro_daemon_name=ORIGINATING
+#628       inet  n       -       -       -       -       qmqpd
+pickup    fifo  n       -       -       60      1       pickup
+cleanup   unix  n       -       -       -       0       cleanup
+qmgr      fifo  n       -       n       300     1       qmgr
+#qmgr     fifo  n       -       -       300     1       oqmgr
+tlsmgr    unix  -       -       -       1000?   1       tlsmgr
+rewrite   unix  -       -       -       -       -       trivial-rewrite
+bounce    unix  -       -       -       -       0       bounce
+defer     unix  -       -       -       -       0       bounce
+trace     unix  -       -       -       -       0       bounce
+verify    unix  -       -       -       -       1       verify
+flush     unix  n       -       -       1000?   0       flush
+proxymap  unix  -       -       n       -       -       proxymap
+proxywrite unix -       -       n       -       1       proxymap
+smtp      unix  -       -       -       -       -       smtp
+# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
+relay     unix  -       -       -       -       -       smtp
+       -o smtp_fallback_relay=
+#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
+showq     unix  n       -       -       -       -       showq
+error     unix  -       -       -       -       -       error
+retry     unix  -       -       -       -       -       error
+discard   unix  -       -       -       -       -       discard
+local     unix  -       n       n       -       -       local
+virtual   unix  -       n       n       -       -       virtual
+lmtp      unix  -       -       -       -       -       lmtp
+anvil     unix  -       -       -       -       1       anvil
+scache    unix  -       -       -       -       1       scache
+#
+# ====================================================================
+# Interfaces to non-Postfix software. Be sure to examine the manual
+# pages of the non-Postfix software to find out what options it wants.
+#
+# Many of the following services use the Postfix pipe(8) delivery
+# agent.  See the pipe(8) man page for information about ${recipient}
+# and other message envelope options.
+# ====================================================================
+#
+# maildrop. See the Postfix MAILDROP_README file for details.
+# Also specify in main.cf: maildrop_destination_recipient_limit=1
+#
+maildrop  unix  -       n       n       -       -       pipe
+  flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
+#
+# ====================================================================
+#
+# Recent Cyrus versions can use the existing "lmtp" master.cf entry.
+#
+# Specify in cyrus.conf:
+#   lmtp    cmd="lmtpd -a" listen="localhost:lmtp" proto=tcp4
+#
+# Specify in main.cf one or more of the following:
+#  mailbox_transport = lmtp:inet:localhost
+#  virtual_transport = lmtp:inet:localhost
+#
+# ====================================================================
+#
+# Cyrus 2.1.5 (Amos Gouaux)
+# Also specify in main.cf: cyrus_destination_recipient_limit=1
+#
+#cyrus     unix  -       n       n       -       -       pipe
+#  user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
+#
+# ====================================================================
+# Old example of delivery via Cyrus.
+#
+#old-cyrus unix  -       n       n       -       -       pipe
+#  flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
+#
+# ====================================================================
+#
+# See the Postfix UUCP_README file for configuration details.
+#
+uucp      unix  -       n       n       -       -       pipe
+  flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
+#
+# Other external delivery methods.
+#
+ifmail    unix  -       n       n       -       -       pipe
+  flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
+bsmtp     unix  -       n       n       -       -       pipe
+  flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
+scalemail-backend unix -       n       n       -       2       pipe
+  flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
+mailman   unix  -       n       n       -       -       pipe
+  flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
+  ${nexthop} ${user}
+
diff --git a/src/configuration/MailServers/cyrus-imapd/cyrus.conf b/src/configuration/MailServers/cyrus-imapd/cyrus.conf
new file mode 100644 (file)
index 0000000..e623417
--- /dev/null
@@ -0,0 +1,90 @@
+# Debian defaults for Cyrus IMAP server/cluster implementation
+# see cyrus.conf(5) for more information
+#
+# All the tcp services are tcpd-wrapped. see hosts_access(5)
+
+START {
+       # do not delete this entry!
+       recover         cmd="/usr/sbin/cyrus ctl_cyrusdb -r"
+  
+       # this is only necessary if idlemethod is set to "idled" in imapd.conf
+       #idled          cmd="idled"
+
+       # this is useful on backend nodes of a Murder cluster
+       # it causes the backend to syncronize its mailbox list with
+       # the mupdate master upon startup
+       #mupdatepush   cmd="/usr/sbin/cyrus ctl_mboxlist -m"
+
+       # this is recommended if using duplicate delivery suppression
+       delprune        cmd="/usr/sbin/cyrus expire -E 3"
+       # this is recommended if caching TLS sessions
+       tlsprune        cmd="/usr/sbin/cyrus tls_prune"
+}
+
+# UNIX sockets start with a slash and are absolute paths
+# you can use a maxchild=# to limit the maximum number of forks of a service
+# you can use babysit=true and maxforkrate=# to keep tight tabs on the service
+# most services also accept -U (limit number of reuses) and -T (timeout)
+SERVICES {
+       # --- Normal cyrus spool, or Murder backends ---
+       # add or remove based on preferences
+       imap            cmd="imapd -U 30" listen="imap" prefork=0 maxchild=100
+       imaps           cmd="imapd -s -U 30" listen="imaps" prefork=0 maxchild=100
+       pop3            cmd="pop3d -U 30" listen="pop3" prefork=0 maxchild=50
+       pop3s           cmd="pop3d -s -U 30" listen="pop3s" prefork=0 maxchild=50
+       nntp            cmd="nntpd -U 30" listen="nntp" prefork=0 maxchild=100
+       #nntps          cmd="nntpd -s -U 30" listen="nntps" prefork=0 maxchild=100
+       http            cmd="httpd -U 30" listen="8008" prefork=0 maxchild=100
+       #https          cmd="httpd -s -U 30" listen="8443" prefork=0 maxchild=100
+
+
+       # At least one form of LMTP is required for delivery
+       # (you must keep the Unix socket name in sync with imap.conf)
+       #lmtp           cmd="lmtpd" listen="localhost:lmtp" prefork=0 maxchild=20
+       lmtpunix        cmd="lmtpd" listen="/var/run/cyrus/socket/lmtp" prefork=0 maxchild=20
+       # ----------------------------------------------
+
+       # useful if you need to give users remote access to sieve
+       # by default, we limit this to localhost in Debian
+       sieve           cmd="timsieved" listen="localhost:sieve" prefork=0 maxchild=100
+
+       # this one is needed for the notification services
+       notify          cmd="notifyd" listen="/var/run/cyrus/socket/notify" proto="udp" prefork=1
+
+       # --- Murder frontends -------------------------
+       # enable these and disable the matching services above, 
+       # except for sieve (which deals automatically with Murder)
+
+       # mupdate database service - must prefork at least 1
+       # (mupdate slaves)
+       #mupdate       cmd="mupdate" listen=3905 prefork=1
+       # (mupdate master, only one in the entire cluster)
+       #mupdate       cmd="mupdate -m" listen=3905 prefork=1
+
+       # proxies that will connect to the backends
+       #imap           cmd="proxyd" listen="imap" prefork=0 maxchild=100
+       #imaps          cmd="proxyd -s" listen="imaps" prefork=0 maxchild=100
+       #pop3           cmd="pop3proxyd" listen="pop3" prefork=0 maxchild=50
+       #pop3s          cmd="pop3proxyd -s" listen="pop3s" prefork=0 maxchild=50
+       #lmtp           cmd="lmtpproxyd" listen="lmtp" prefork=1 maxchild=20
+       # ----------------------------------------------
+}
+
+EVENTS {
+       # this is required
+       checkpoint      cmd="/usr/sbin/cyrus ctl_cyrusdb -c" period=30
+
+       # this is only necessary if using duplicate delivery suppression
+       delprune        cmd="/usr/sbin/cyrus expire -E 3" at=0401
+
+       # this is only necessary if caching TLS sessions
+       tlsprune        cmd="/usr/sbin/cyrus tls_prune" at=0401
+       
+       # indexing of mailboxes for server side fulltext searches
+
+       # reindex changed mailboxes (fulltext) approximately every other hour
+       #squatter_1     cmd="/usr/bin/nice -n 19 /usr/sbin/cyrus squatter -s" period=120
+
+       # reindex all mailboxes (fulltext) daily
+       #squatter_a     cmd="/usr/sbin/cyrus squatter" at=0517
+}
diff --git a/src/configuration/MailServers/cyrus-imapd/imapd.conf b/src/configuration/MailServers/cyrus-imapd/imapd.conf
new file mode 100644 (file)
index 0000000..f60586d
--- /dev/null
@@ -0,0 +1,321 @@
+# Debian Cyrus imapd.conf
+# See imapd.conf(5) for more information and more options
+
+# Configuration directory
+configdirectory: /var/lib/cyrus
+
+# Directories for proc and lock files
+proc_path: /run/cyrus/proc
+mboxname_lockpath: /run/cyrus/lock
+
+# Which partition to use for default mailboxes
+defaultpartition: default
+partition-default: /var/spool/cyrus/mail
+
+# News setup
+partition-news: /var/spool/cyrus/news
+newsspool: /var/spool/news
+
+# Alternate namespace
+# If enabled, activate the alternate namespace as documented in
+# /usr/share/doc/cyrus-doc-2.4/html/altnamespace.html, where an user's
+# subfolders are in the same level as the INBOX
+# See also userprefix and sharedprefix on imapd.conf(5)
+altnamespace: no
+
+# UNIX Hierarchy Convention
+# Set to yes, and cyrus will accept dots in names, and use the forward
+# slash "/" to delimit levels of the hierarchy. This is done by converting
+# internally all dots to "^", and all "/" to dots. So the "rabbit.holes"
+# mailbox of user "helmer.fudd" is stored in "user.elmer^fud.rabbit^holes"
+unixhierarchysep: no
+
+# Rejecting illegal characters in headers
+# Headers of RFC2882 messages must not have characters with the 8th bit
+# set. However, too many badly-written MUAs generate this, including most
+# spamware. Enable this to reject such messages.
+#reject8bit: yes
+
+# Munging illegal characters in headers
+# Headers of RFC2882 messages must not have characters with the 8th bit
+# set. However, too many badly-written MUAs generate this, including most
+# spamware. If you kept reject8bit disabled, you can choose to leave the
+# crappage untouched by disabling this (if you don't care that IMAP SEARCH
+# won't work right anymore.
+#munge8bit: no
+
+# Forcing recipient user to lowercase
+# Cyrus IMAPD is case-sensitive.  If all your mail users are in lowercase, it is
+# probably a very good idea to set lmtp_downcase_rcpt to true.  This is set by 
+# default, per RFC2821.
+lmtp_downcase_rcpt: yes
+
+# Uncomment the following and add the space-separated users who 
+# have admin rights for all services.
+#admins: cyrus
+
+# Space-separated list of users that have lmtp "admin" status (i.e. that
+# can deliver email through TCP/IP lmtp). If specified, this parameter
+# overrides the "admins" parameter above
+#lmtp_admins: postman
+
+# Space-separated list of users that have mupdate "admin" status, in
+# addition to those in the admins: entry above. Note that mupdate slaves and 
+# backends in a Murder cluster need to autenticate against the mupdate master
+# as admin users.
+#mupdate_admins: mupdateman
+
+# Space-separated list of users that have imapd "admin" status, in
+# addition to those in the admins: entry above
+#imap_admins: cyrus
+
+# Space-separated list of users that have sieve "admin" status, in
+# addition to those in the admins: entry above
+#sieve_admins: cyrus
+
+# List of users and groups that are allowed to proxy for other users,
+# seperated by spaces.  Any user listed in this will be allowed to login
+# for any other user.  Like "admins:" above, you can have imap_proxyservers
+# and sieve_proxyservers.
+#proxyservers: cyrus
+
+# No anonymous logins
+allowanonymouslogin: no
+
+# Minimum time between POP mail fetches in minutes
+popminpoll: 1
+
+# If nonzero, normal users may create their own IMAP accounts by creating
+# the mailbox INBOX.  The user's quota is set to the value if it is positive,
+# otherwise the user has unlimited quota.
+autocreatequota: 0
+
+# umask used by Cyrus programs
+umask: 077
+
+# Sendmail binary location
+# DUE TO A BUG, Cyrus sends CRLF EOLs to this program. This breaks Exim 3. 
+# For now, to work around the bug, set this to a wrapper that calls 
+# /usr/sbin/sendmail -dropcr instead if you use Exim 3.
+#sendmail: /usr/sbin/sendmail
+
+# If enabled, cyrdeliver will look for Sieve scripts in user's home
+# directories: ~user/.sieve.
+sieveusehomedir: false
+
+# If sieveusehomedir is false, this directory is searched for Sieve scripts.
+sievedir: /var/spool/sieve
+
+# Space-separated list of HTTP modules that will be enabled in
+# httpd(8).  This option has no effect on modules that are disabled at
+# compile time due to missing dependencies (e.g. libical).
+# 
+# Allowed values: caldav, carddav, domainkey, ischedule, rss
+httpmodules: caldav carddav
+
+# notifyd(8) method to use for "MAIL" notifications.  If not set, "MAIL"
+# notifications are disabled.  Valid methods are: null, log, zephyr
+#mailnotifier: zephyr
+
+# notifyd(8) method to use for "SIEVE" notifications.  If not set, "SIEVE"
+# notifications are disabled.  This method is only used when no method is
+# specified in the script.  Valid methods are null, log, zephyr, mailto
+#sievenotifier: zephyr
+
+# If enabled, the partitions will also be hashed, in addition to the hashing
+# done on configuration directories. This is recommended if one partition has a
+# very bushy mailbox tree.
+hashimapspool: true
+
+# Allow plaintext logins by default (SASL PLAIN)
+allowplaintext: no
+
+# Force PLAIN/LOGIN authentication only
+# (you need to uncomment this if you are not using an auxprop-based SASL
+# mechanism.  saslauthd users, that means you!). And pay attention to
+# sasl_minimum_layer and allowapop below, too.
+#sasl_mech_list: PLAIN
+
+# Allow use of the POP3 APOP authentication command.
+# Note that this command requires that the plaintext passwords are 
+# available in a SASL auxprop backend (eg. sasldb), and that the system
+# can provide enough entropy (eg. from /dev/urandom) to create a challenge
+# in the banner.
+#allowapop: no
+
+# The minimum SSF that the server will allow a client to negotiate. A
+# value of 1 requires integrity protection; any higher value requires some
+# amount of encryption.
+#sasl_minimum_layer: 0
+
+# The maximum SSF that the server will allow a client to negotiate. A
+# value of 1 requires integrity protection; any higher value requires some
+# amount of encryption.
+#sasl_maximum_layer: 256
+
+# List of remote realms whose users may log in using cross-realm
+# authentications. Seperate each realm name by a space. A cross-realm
+# identity is considered any identity returned by SASL with an "@" in it.
+# NOTE: To support multiple virtual domains on the same interface/IP,
+# you need to list them all as loginreals. If you don't list them here,
+# (most of) your users probably won't be able to log in.
+#loginrealms: example.com
+
+# Enable virtual domain support.  If enabled, the user's domain will
+# be determined by splitting a fully qualified userid at the last '@'
+# or '%' symbol.  If the userid is unqualified, and the virtdomains
+# option is set to "on", then the domain will be determined by doing
+# a reverse lookup on the IP address of the incoming network
+# interface, otherwise the user is assumed to be in the default
+# domain (if set).
+#virtdomains: userid
+
+# The default domain for virtual domain support
+# If the domain of a user can't be taken from its login and it can't
+# be determined by doing a reverse lookup on the interface IP, this
+# domain is used.
+#defaultdomain: 
+
+#
+# SASL library options (these are handled directly by the SASL libraries,
+# refer to SASL documentation for an up-to-date list of these)
+#
+
+# The mechanism(s) used by the server to verify plaintext passwords. Possible
+# values are "saslauthd", "auxprop", "pwcheck" and "alwaystrue".  They
+# are tried in order, you can specify more than one, separated by spaces.
+#
+# Do note that, since sasl will be run as user cyrus, you may have a lot of
+# trouble to set this up right.
+sasl_pwcheck_method: auxprop
+
+# What auxpropd plugins to load, if using sasl_pwcheck_method: auxprop
+# by default, all plugins are tried (which is probably NOT what you want).
+#sasl_auxprop_plugin: sasldb
+
+# If enabled, the SASL library will automatically create authentication secrets
+# when given a plaintext password. Refer to SASL documentation 
+sasl_auto_transition: no
+
+#
+# SSL/TLS Options
+#
+
+# File containing the global certificate used for ALL services (imap, pop3,
+# lmtp, sieve)
+tls_cert_file: /etc/ssl/certs/ssl-cert-snakeoil.pem
+
+# File containing the private key belonging to the global server certificate.
+tls_key_file: /etc/ssl/private/ssl-cert-snakeoil.key
+
+# File containing the certificate used for imap. If not specified, the global
+# certificate is used.  A value of "disabled" will disable SSL/TLS for imap.
+#imap_tls_cert_file: /etc/ssl/certs/cyrus-imap.pem
+
+# File containing the private key belonging to the imap-specific server
+# certificate.  If not specified, the global private key is used.  A value of
+# "disabled" will disable SSL/TLS for imap.
+#imap_tls_key_file: /etc/ssl/private/cyrus-imap.key
+
+# File containing the certificate used for pop3. If not specified, the global
+# certificate is used.  A value of "disabled" will disable SSL/TLS for pop3.
+#pop3_tls_cert_file: /etc/ssl/certs/cyrus-pop3.pem
+
+# File containing the private key belonging to the pop3-specific server
+# certificate.  If not specified, the global private key is used.  A value of
+# "disabled" will disable SSL/TLS for pop3.
+#pop3_tls_key_file: /etc/ssl/private/cyrus-pop3.key
+
+# File containing the certificate used for lmtp. If not specified, the global
+# certificate is used.  A value of "disabled" will disable SSL/TLS for lmtp.
+#lmtp_tls_cert_file: /etc/ssl/certs/cyrus-lmtp.pem
+
+# File containing the private key belonging to the lmtp-specific server
+# certificate.  If not specified, the global private key is used.  A value of
+# "disabled" will disable SSL/TLS for lmtp.
+#lmtp_tls_key_file: /etc/ssl/private/cyrus-lmtp.key
+
+# File containing the certificate used for sieve. If not specified, the global
+# certificate is used.  A value of "disabled" will disable SSL/TLS for sieve.
+#sieve_tls_cert_file: /etc/ssl/certs/cyrus-sieve.pem
+
+# File containing the private key belonging to the sieve-specific server
+# certificate.  If not specified, the global private key is used.  A value of
+# "disabled" will disable SSL/TLS for sieve.
+#sieve_tls_key_file: /etc/ssl/private/cyrus-sieve.key
+
+# File containing one or more Certificate Authority (CA) certificates.
+#tls_ca_file: /etc/ssl/certs/cyrus-imapd-ca.pem
+
+# Path to directory with certificates of CAs.
+tls_ca_path: /etc/ssl/certs
+
+# The length of time (in minutes) that a TLS session will be cached for later
+# reuse.  The maximum value is 1440 (24 hours), the default.  A value of 0 will
+# disable session caching.
+tls_session_timeout: 1440
+
+# The list of SSL/TLS ciphers to allow, in decreasing order of precedence.  
+# The format of the string is described in ciphers(1).  The Debian default
+# selects TLSv1 high-security ciphers only, and removes all anonymous ciphers
+# from the list (because they provide no defense against man-in-the-middle
+# attacks).  It also orders the list so that stronger ciphers come first.
+tls_cipher_list: EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
+
+# Require a client certificate for ALL services (imap, pop3, lmtp, sieve).
+#tls_require_cert: false
+
+# Require a client certificate for imap ONLY.
+#imap_tls_require_cert: false
+
+# Require a client certificate for pop3 ONLY.
+#pop3_tls_require_cert: false
+
+# Require a client certificate for lmtp ONLY.
+#lmtp_tls_require_cert: false
+
+# Require a client certificate for sieve ONLY.
+#sieve_tls_require_cert: false
+
+#
+# Cyrus Murder cluster configuration
+#
+# Set the following options to the values needed for this server to
+# autenticate against the mupdate master server:
+# mupdate_server
+# mupdate_port
+# mupdate_username
+# mupdate_authname
+# mupdate_realm
+# mupdate_password
+# mupdate_retry_delay
+
+##
+## KEEP THESE IN SYNC WITH cyrus.conf
+##
+# Unix domain socket that lmtpd listens on.
+lmtpsocket: /var/run/cyrus/socket/lmtp
+
+# Unix domain socket that idled listens on.
+idlesocket: /var/run/cyrus/socket/idle
+
+# Unix domain socket that the new mail notification daemon listens on.
+notifysocket: /var/run/cyrus/socket/notify
+
+# Syslog prefix. Defaults to cyrus (so logging is done as cyrus/imap etc.)
+syslog_prefix: cyrus
+
+##
+## DEBUGGING
+##
+# Debugging hook. See /usr/share/doc/cyrus-common-2.4/README.Debian.debug
+# Keep the hook disabled when it is not in use
+#
+# gdb Back-traces
+#debug_command: /usr/bin/gdb -batch -cd=/tmp -x /usr/lib/cyrus/get-backtrace.gdb /usr/lib/cyrus/bin/%s %d >/tmp/gdb-backtrace.cyrus.%1$s.%2$d <&- 2>&1 &
+#
+# system-call traces
+#debug_command: /usr/bin/strace -tt -o /tmp/strace.cyrus.%s.%d -p %2$d <&- 2>&1 &
+#
+# library traces
+#debug_command: /usr/bin/ltrace -tt -n 2 -o /tmp/ltrace.cyrus.%s.%d -p %2$d <&- 2>&1 &
diff --git a/src/configuration/Proxies/Pound/pound.cfg b/src/configuration/Proxies/Pound/pound.cfg
new file mode 100644 (file)
index 0000000..66ffa2c
--- /dev/null
@@ -0,0 +1,53 @@
+## Minimal sample pound.cfg
+##
+## see pound(8) for details
+
+
+######################################################################
+## global options:
+
+User           "www-data"
+Group          "www-data"
+#RootJail      "/chroot/pound"
+
+## Logging: (goes to syslog by default)
+##     0       no logging
+##     1       normal
+##     2       extended
+##     3       Apache-style (common log format)
+LogLevel       1
+
+## check backend every X secs:
+Alive          30
+
+## use hardware-accelleration card supported by openssl(1):
+#SSLEngine     "<hw>"
+
+# poundctl control socket
+Control "/var/run/pound/poundctl.socket"
+
+
+######################################################################
+# HTTP Listener, redirects to HTTPS
+ListenHTTP
+    Address 10.10.0.10
+    Port    80
+    Service
+        Redirect "https://some.site.tld"
+    End
+End
+## HTTPS Listener
+ListenHTTPS
+    Address      10.10.0.10
+    Port         443
+    AddHeader    "Front-End-Https: on"
+    Cert         "/path/to/your/cert.pem"
+    ## See 'man ciphers'.
+    Ciphers      "TLSv1.2:TLSv1.1:!SSLv3:!SSLv2:EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA"
+    Service
+        BackEnd
+            Address 10.20.0.10
+            Port 80
+        End
+    End
+End
diff --git a/src/configuration/Proxies/Squid/squid.conf b/src/configuration/Proxies/Squid/squid.conf
new file mode 100644 (file)
index 0000000..88759df
--- /dev/null
@@ -0,0 +1,7147 @@
+#      WELCOME TO SQUID 3.3.8
+#      ----------------------------
+#      
+#      This is the documentation for the Squid configuration file.
+#      This documentation can also be found online at:
+#              http://www.squid-cache.org/Doc/config/
+#      
+#      You may wish to look at the Squid home page and wiki for the
+#      FAQ and other documentation:
+#              http://www.squid-cache.org/
+#              http://wiki.squid-cache.org/SquidFaq
+#              http://wiki.squid-cache.org/ConfigExamples
+#      
+#      This documentation shows what the defaults for various directives
+#      happen to be.  If you don't need to change the default, you should
+#      leave the line out of your squid.conf in most cases.
+#      
+#      In some cases "none" refers to no default setting at all,
+#      while in other cases it refers to the value of the option
+#      - the comments for that keyword indicate if this is the case.
+#
+
+#  Configuration options can be included using the "include" directive.
+#  Include takes a list of files to include. Quoting and wildcards are
+#  supported.
+#
+#  For example,
+#
+#  include /path/to/included/file/squid.acl.config
+#
+#  Includes can be nested up to a hard-coded depth of 16 levels.
+#  This arbitrary restriction is to prevent recursive include references
+#  from causing Squid entering an infinite loop whilst trying to load
+#  configuration files.
+#
+#
+#  Conditional configuration
+#
+#      If-statements can be used to make configuration directives
+#      depend on conditions:
+#
+#          if <CONDITION>
+#              ... regular configuration directives ...
+#          [else
+#              ... regular configuration directives ...]
+#          endif
+#
+#      The else part is optional. The keywords "if", "else", and "endif"
+#      must be typed on their own lines, as if they were regular
+#      configuration directives.
+#
+#      NOTE: An else-if condition is not supported.
+#
+#      These individual conditions types are supported:
+#
+#          true
+#              Always evaluates to true.
+#          false
+#              Always evaluates to false.
+#          <integer> = <integer>
+#              Equality comparison of two integer numbers.
+#
+#
+#  SMP-Related Macros
+#
+#      The following SMP-related preprocessor macros can be used.
+#
+#      ${process_name} expands to the current Squid process "name"
+#      (e.g., squid1, squid2, or cache1).
+#
+#      ${process_number} expands to the current Squid process
+#      identifier, which is an integer number (e.g., 1, 2, 3) unique
+#      across all Squid processes.
+
+#  TAG: broken_vary_encoding
+#      This option is not yet supported by Squid-3.
+#Default:
+# none
+
+#  TAG: cache_vary
+#      This option is not yet supported by Squid-3.
+#Default:
+# none
+
+#  TAG: collapsed_forwarding
+#      This option is not yet supported by Squid-3. see http://bugs.squid-cache.org/show_bug.cgi?id=3495
+#Default:
+# none
+
+#  TAG: error_map
+#      This option is not yet supported by Squid-3.
+#Default:
+# none
+
+#  TAG: external_refresh_check
+#      This option is not yet supported by Squid-3.
+#Default:
+# none
+
+#  TAG: ignore_ims_on_miss
+#      This option is not yet supported by Squid-3.
+#Default:
+# none
+
+#  TAG: location_rewrite_program
+#      This option is not yet supported by Squid-3.
+#Default:
+# none
+
+#  TAG: refresh_stale_hit
+#      This option is not yet supported by Squid-3.
+#Default:
+# none
+
+#  TAG: storeurl_access
+#      This option is not yet supported by this version of Squid-3. Please try a later release.
+#Default:
+# none
+
+#  TAG: ignore_expect_100
+#      Remove this line. The HTTP/1.1 feature is now fully supported by default.
+#Default:
+# none
+
+#  TAG: dns_v4_fallback
+#      Remove this line. Squid performs a 'Happy Eyeballs' algorithm, the 'fallback' algorithm is no longer relevant.
+#Default:
+# none
+
+#  TAG: ftp_list_width
+#      Remove this line. Configure FTP page display using the CSS controls in errorpages.css instead.
+#Default:
+# none
+
+#  TAG: maximum_single_addr_tries
+#      Replaced by connect_retries. The behaviour has changed, please read the documentation before altering.
+#Default:
+# none
+
+#  TAG: update_headers
+#      Remove this line. The feature is supported by default in storage types where update is implemented.
+#Default:
+# none
+
+#  TAG: url_rewrite_concurrency
+#      Remove this line. Set the 'concurrency=' option of url_rewrite_children instead.
+#Default:
+# none
+
+#  TAG: dns_testnames
+#      Remove this line. DNS is no longer tested on startup.
+#Default:
+# none
+
+#  TAG: extension_methods
+#      Remove this line. All valid methods for HTTP are accepted by default.
+#Default:
+# none
+
+#  TAG: zero_buffers
+#Default:
+# none
+
+#  TAG: incoming_rate
+#Default:
+# none
+
+#  TAG: server_http11
+#      Remove this line. HTTP/1.1 is supported by default.
+#Default:
+# none
+
+#  TAG: upgrade_http0.9
+#      Remove this line. ICY/1.0 streaming protocol is supported by default.
+#Default:
+# none
+
+#  TAG: zph_local
+#      Alter these entries. Use the qos_flows directive instead.
+#Default:
+# none
+
+#  TAG: header_access
+#      Since squid-3.0 replace with request_header_access or reply_header_access
+#      depending on whether you wish to match client requests or server replies.
+#Default:
+# none
+
+#  TAG: httpd_accel_no_pmtu_disc
+#      Since squid-3.0 use the 'disable-pmtu-discovery' flag on http_port instead.
+#Default:
+# none
+
+#  TAG: wais_relay_host
+#      Replace this line with 'cache_peer' configuration.
+#Default:
+# none
+
+#  TAG: wais_relay_port
+#      Replace this line with 'cache_peer' configuration.
+#Default:
+# none
+
+# OPTIONS FOR AUTHENTICATION
+# -----------------------------------------------------------------------------
+
+#  TAG: auth_param
+#      This is used to define parameters for the various authentication
+#      schemes supported by Squid.
+#
+#      format: auth_param scheme parameter [setting]
+#
+#      The order in which authentication schemes are presented to the client is
+#      dependent on the order the scheme first appears in config file. IE
+#      has a bug (it's not RFC 2617 compliant) in that it will use the basic
+#      scheme if basic is the first entry presented, even if more secure
+#      schemes are presented. For now use the order in the recommended
+#      settings section below. If other browsers have difficulties (don't
+#      recognize the schemes offered even if you are using basic) either
+#      put basic first, or disable the other schemes (by commenting out their
+#      program entry).
+#
+#      Once an authentication scheme is fully configured, it can only be
+#      shutdown by shutting squid down and restarting. Changes can be made on
+#      the fly and activated with a reconfigure. I.E. You can change to a
+#      different helper, but not unconfigure the helper completely.
+#
+#      Please note that while this directive defines how Squid processes
+#      authentication it does not automatically activate authentication.
+#      To use authentication you must in addition make use of ACLs based
+#      on login name in http_access (proxy_auth, proxy_auth_regex or
+#      external with %LOGIN used in the format tag). The browser will be
+#      challenged for authentication on the first such acl encountered
+#      in http_access processing and will also be re-challenged for new
+#      login credentials if the request is being denied by a proxy_auth
+#      type acl.
+#
+#      WARNING: authentication can't be used in a transparently intercepting
+#      proxy as the client then thinks it is talking to an origin server and
+#      not the proxy. This is a limitation of bending the TCP/IP protocol to
+#      transparently intercepting port 80, not a limitation in Squid.
+#      Ports flagged 'transparent', 'intercept', or 'tproxy' have
+#      authentication disabled.
+#
+#      === Parameters for the basic scheme follow. ===
+#
+#      "program" cmdline
+#      Specify the command for the external authenticator.  Such a program
+#      reads a line containing "username password" and replies "OK" or
+#      "ERR" in an endless loop. "ERR" responses may optionally be followed
+#      by a error description available as %m in the returned error page.
+#      If you use an authenticator, make sure you have 1 acl of type
+#      proxy_auth.
+#
+#      By default, the basic authentication scheme is not used unless a
+#      program is specified.
+#
+#      If you want to use the traditional NCSA proxy authentication, set
+#      this line to something like
+#
+#      auth_param basic program /usr/lib/squid3/basic_ncsa_auth /usr/etc/passwd
+#
+#      "utf8" on|off
+#      HTTP uses iso-latin-1 as character set, while some authentication
+#      backends such as LDAP expects UTF-8. If this is set to on Squid will
+#      translate the HTTP iso-latin-1 charset to UTF-8 before sending the
+#      username & password to the helper.
+#
+#      "children" numberofchildren [startup=N] [idle=N] [concurrency=N]
+#      The maximum number of authenticator processes to spawn. If you start too few
+#      Squid will have to wait for them to process a backlog of credential
+#      verifications, slowing it down. When password verifications are
+#      done via a (slow) network you are likely to need lots of
+#      authenticator processes.
+#
+#      The startup= and idle= options permit some skew in the exact amount
+#      run. A minimum of startup=N will begin during startup and reconfigure.
+#      Squid will start more in groups of up to idle=N in an attempt to meet
+#      traffic needs and to keep idle=N free above those traffic needs up to
+#      the maximum.
+#
+#      The concurrency= option sets the number of concurrent requests the
+#      helper can process.  The default of 0 is used for helpers who only
+#      supports one request at a time. Setting this to a number greater than
+#      0 changes the protocol used to include a channel number first on the
+#      request/response line, allowing multiple requests to be sent to the
+#      same helper in parallel without waiting for the response.
+#      Must not be set unless it's known the helper supports this.
+#
+#      auth_param basic children 20 startup=0 idle=1
+#
+#      "realm" realmstring
+#      Specifies the realm name which is to be reported to the
+#      client for the basic proxy authentication scheme (part of
+#      the text the user will see when prompted their username and
+#      password). There is no default.
+#      auth_param basic realm Squid proxy-caching web server
+#
+#      "credentialsttl" timetolive
+#      Specifies how long squid assumes an externally validated
+#      username:password pair is valid for - in other words how
+#      often the helper program is called for that user. Set this
+#      low to force revalidation with short lived passwords.  Note
+#      setting this high does not impact your susceptibility
+#      to replay attacks unless you are using an one-time password
+#      system (such as SecureID).  If you are using such a system,
+#      you will be vulnerable to replay attacks unless you also
+#      use the max_user_ip ACL in an http_access rule.
+#
+#      "casesensitive" on|off
+#      Specifies if usernames are case sensitive. Most user databases are
+#      case insensitive allowing the same username to be spelled using both
+#      lower and upper case letters, but some are case sensitive. This
+#      makes a big difference for user_max_ip ACL processing and similar.
+#      auth_param basic casesensitive off
+#
+#      === Parameters for the digest scheme follow ===
+#
+#      "program" cmdline
+#      Specify the command for the external authenticator.  Such
+#      a program reads a line containing "username":"realm" and
+#      replies with the appropriate H(A1) value hex encoded or
+#      ERR if the user (or his H(A1) hash) does not exists.
+#      See rfc 2616 for the definition of H(A1).
+#      "ERR" responses may optionally be followed by a error description
+#      available as %m in the returned error page.
+#
+#      By default, the digest authentication scheme is not used unless a
+#      program is specified.
+#
+#      If you want to use a digest authenticator, set this line to
+#      something like
+#
+#      auth_param digest program /usr/lib/squid3/digest_pw_auth /usr/etc/digpass
+#
+#      "utf8" on|off
+#      HTTP uses iso-latin-1 as character set, while some authentication
+#      backends such as LDAP expects UTF-8. If this is set to on Squid will
+#      translate the HTTP iso-latin-1 charset to UTF-8 before sending the
+#      username & password to the helper.
+#
+#      "children" numberofchildren [startup=N] [idle=N] [concurrency=N]
+#      The maximum number of authenticator processes to spawn (default 5).
+#      If you start too few Squid will have to wait for them to
+#      process a backlog of H(A1) calculations, slowing it down.
+#      When the H(A1) calculations are done via a (slow) network
+#      you are likely to need lots of authenticator processes.
+#
+#      The startup= and idle= options permit some skew in the exact amount
+#      run. A minimum of startup=N will begin during startup and reconfigure.
+#      Squid will start more in groups of up to idle=N in an attempt to meet
+#      traffic needs and to keep idle=N free above those traffic needs up to
+#      the maximum.
+#
+#      The concurrency= option sets the number of concurrent requests the
+#      helper can process.  The default of 0 is used for helpers who only
+#      supports one request at a time. Setting this to a number greater than
+#      0 changes the protocol used to include a channel number first on the
+#      request/response line, allowing multiple requests to be sent to the
+#      same helper in parallel without waiting for the response.
+#      Must not be set unless it's known the helper supports this.
+#
+#      auth_param digest children 20 startup=0 idle=1
+#
+#      "realm" realmstring
+#      Specifies the realm name which is to be reported to the
+#      client for the digest proxy authentication scheme (part of
+#      the text the user will see when prompted their username and
+#      password). There is no default.
+#      auth_param digest realm Squid proxy-caching web server
+#
+#      "nonce_garbage_interval" timeinterval
+#      Specifies the interval that nonces that have been issued
+#      to client_agent's are checked for validity.
+#
+#      "nonce_max_duration" timeinterval
+#      Specifies the maximum length of time a given nonce will be
+#      valid for.
+#
+#      "nonce_max_count" number
+#      Specifies the maximum number of times a given nonce can be
+#      used.
+#
+#      "nonce_strictness" on|off
+#      Determines if squid requires strict increment-by-1 behavior
+#      for nonce counts, or just incrementing (off - for use when
+#      user agents generate nonce counts that occasionally miss 1
+#      (ie, 1,2,4,6)). Default off.
+#
+#      "check_nonce_count" on|off
+#      This directive if set to off can disable the nonce count check
+#      completely to work around buggy digest qop implementations in
+#      certain mainstream browser versions. Default on to check the
+#      nonce count to protect from authentication replay attacks.
+#
+#      "post_workaround" on|off
+#      This is a workaround to certain buggy browsers who sends
+#      an incorrect request digest in POST requests when reusing
+#      the same nonce as acquired earlier on a GET request.
+#
+#      === NTLM scheme options follow ===
+#
+#      "program" cmdline
+#      Specify the command for the external NTLM authenticator.
+#      Such a program reads exchanged NTLMSSP packets with
+#      the browser via Squid until authentication is completed.
+#      If you use an NTLM authenticator, make sure you have 1 acl
+#      of type proxy_auth.  By default, the NTLM authenticator_program
+#      is not used.
+#
+#      NOTE: In Debian the ntlm_auth program is distributed in the winbindd package
+#            which is required for this auth scheme to work
+#
+#      auth_param ntlm program /usr/bin/ntlm_auth
+#
+#      "children" numberofchildren [startup=N] [idle=N]
+#      The maximum number of authenticator processes to spawn (default 5).
+#      If you start too few Squid will have to wait for them to
+#      process a backlog of credential verifications, slowing it
+#      down. When credential verifications are done via a (slow)
+#      network you are likely to need lots of authenticator
+#      processes.
+#
+#      The startup= and idle= options permit some skew in the exact amount
+#      run. A minimum of startup=N will begin during startup and reconfigure.
+#      Squid will start more in groups of up to idle=N in an attempt to meet
+#      traffic needs and to keep idle=N free above those traffic needs up to
+#      the maximum.
+#
+#      auth_param ntlm children 20 startup=0 idle=1
+#
+#      "keep_alive" on|off
+#      If you experience problems with PUT/POST requests when using the
+#      Negotiate authentication scheme then you can try setting this to
+#      off. This will cause Squid to forcibly close the connection on
+#      the initial requests where the browser asks which schemes are
+#      supported by the proxy.
+#
+#      auth_param ntlm keep_alive on
+#
+#      === Options for configuring the NEGOTIATE auth-scheme follow ===
+#
+#      "program" cmdline
+#      Specify the command for the external Negotiate authenticator.
+#      This protocol is used in Microsoft Active-Directory enabled setups with
+#      the Microsoft Internet Explorer or Mozilla Firefox browsers.
+#      Its main purpose is to exchange credentials with the Squid proxy
+#      using the Kerberos mechanisms.
+#      If you use a Negotiate authenticator, make sure you have at least
+#      one acl of type proxy_auth active. By default, the negotiate
+#      authenticator_program is not used.
+#      The only supported program for this role is the ntlm_auth
+#      program distributed as part of Samba, version 4 or later.
+#
+#      NOTE: In Debian the ntlm_auth program is distributed in the winbindd package
+#            which is required for this auth scheme to work
+#
+#      auth_param negotiate program /usr/bin/ntlm_auth --helper-protocol=gss-spnego
+#
+#      "children" numberofchildren [startup=N] [idle=N]
+#      The maximum number of authenticator processes to spawn (default 5).
+#      If you start too few Squid will have to wait for them to
+#      process a backlog of credential verifications, slowing it
+#      down. When credential verifications are done via a (slow)
+#      network you are likely to need lots of authenticator
+#      processes.
+#
+#      The startup= and idle= options permit some skew in the exact amount
+#      run. A minimum of startup=N will begin during startup and reconfigure.
+#      Squid will start more in groups of up to idle=N in an attempt to meet
+#      traffic needs and to keep idle=N free above those traffic needs up to
+#      the maximum.
+#
+#      auth_param negotiate children 20 startup=0 idle=1
+#
+#      "keep_alive" on|off
+#      If you experience problems with PUT/POST requests when using the
+#      Negotiate authentication scheme then you can try setting this to
+#      off. This will cause Squid to forcibly close the connection on
+#      the initial requests where the browser asks which schemes are
+#      supported by the proxy.
+#
+#      auth_param negotiate keep_alive on
+#
+#      
+#      Examples:
+#
+##Recommended minimum configuration per scheme:
+##auth_param negotiate program <uncomment and complete this line to activate>
+##auth_param negotiate children 20 startup=0 idle=1
+##auth_param negotiate keep_alive on
+##
+##auth_param ntlm program <uncomment and complete this line to activate>
+##auth_param ntlm children 20 startup=0 idle=1
+##auth_param ntlm keep_alive on
+##
+##auth_param digest program <uncomment and complete this line>
+##auth_param digest children 20 startup=0 idle=1
+##auth_param digest realm Squid proxy-caching web server
+##auth_param digest nonce_garbage_interval 5 minutes
+##auth_param digest nonce_max_duration 30 minutes
+##auth_param digest nonce_max_count 50
+##
+##auth_param basic program <uncomment and complete this line>
+##auth_param basic children 5 startup=5 idle=1
+##auth_param basic realm Squid proxy-caching web server
+##auth_param basic credentialsttl 2 hours
+#Default:
+# none
+
+#  TAG: authenticate_cache_garbage_interval
+#      The time period between garbage collection across the username cache.
+#      This is a trade-off between memory utilization (long intervals - say
+#      2 days) and CPU (short intervals - say 1 minute). Only change if you
+#      have good reason to.
+#Default:
+# authenticate_cache_garbage_interval 1 hour
+
+#  TAG: authenticate_ttl
+#      The time a user & their credentials stay in the logged in
+#      user cache since their last request. When the garbage
+#      interval passes, all user credentials that have passed their
+#      TTL are removed from memory.
+#Default:
+# authenticate_ttl 1 hour
+
+#  TAG: authenticate_ip_ttl
+#      If you use proxy authentication and the 'max_user_ip' ACL,
+#      this directive controls how long Squid remembers the IP
+#      addresses associated with each user.  Use a small value
+#      (e.g., 60 seconds) if your users might change addresses
+#      quickly, as is the case with dialup.   You might be safe
+#      using a larger value (e.g., 2 hours) in a corporate LAN
+#      environment with relatively static address assignments.
+#Default:
+# authenticate_ip_ttl 0 seconds
+
+# ACCESS CONTROLS
+# -----------------------------------------------------------------------------
+
+#  TAG: external_acl_type
+#      This option defines external acl classes using a helper program
+#      to look up the status
+#
+#        external_acl_type name [options] FORMAT.. /path/to/helper [helper arguments..]
+#
+#      Options:
+#
+#        ttl=n         TTL in seconds for cached results (defaults to 3600
+#                      for 1 hour)
+#        negative_ttl=n
+#                      TTL for cached negative lookups (default same
+#                      as ttl)
+#        children-max=n
+#                      Maximum number of acl helper processes spawned to service
+#                      external acl lookups of this type. (default 20)
+#        children-startup=n
+#                      Minimum number of acl helper processes to spawn during
+#                      startup and reconfigure to service external acl lookups
+#                      of this type. (default 0)
+#        children-idle=n
+#                      Number of acl helper processes to keep ahead of traffic
+#                      loads. Squid will spawn this many at once whenever load
+#                      rises above the capabilities of existing processes.
+#                      Up to the value of children-max. (default 1)
+#        concurrency=n concurrency level per process. Only used with helpers
+#                      capable of processing more than one query at a time.
+#        cache=n       limit the result cache size, default is unbounded.
+#        grace=n       Percentage remaining of TTL where a refresh of a
+#                      cached entry should be initiated without needing to
+#                      wait for a new reply. (default is for no grace period)
+#        protocol=2.5  Compatibility mode for Squid-2.5 external acl helpers
+#        ipv4 / ipv6   IP protocol used to communicate with this helper.
+#                      The default is to auto-detect IPv6 and use it when available.
+#
+#      FORMAT specifications
+#
+#        %LOGIN        Authenticated user login name
+#        %EXT_USER     Username from previous external acl
+#        %EXT_LOG      Log details from previous external acl
+#        %EXT_TAG      Tag from previous external acl
+#        %IDENT        Ident user name
+#        %SRC          Client IP
+#        %SRCPORT      Client source port
+#        %URI          Requested URI
+#        %DST          Requested host
+#        %PROTO        Requested protocol
+#        %PORT         Requested port
+#        %PATH         Requested URL path
+#        %METHOD       Request method
+#        %MYADDR       Squid interface address
+#        %MYPORT       Squid http_port number
+#        %PATH         Requested URL-path (including query-string if any)
+#        %USER_CERT    SSL User certificate in PEM format
+#        %USER_CERTCHAIN SSL User certificate chain in PEM format
+#        %USER_CERT_xx SSL User certificate subject attribute xx
+#        %USER_CA_xx   SSL User certificate issuer attribute xx
+#
+#        %>{Header}    HTTP request header "Header"
+#        %>{Hdr:member}
+#                      HTTP request header "Hdr" list member "member"
+#        %>{Hdr:;member}
+#                      HTTP request header list member using ; as
+#                      list separator. ; can be any non-alphanumeric
+#                      character.
+#
+#        %<{Header}    HTTP reply header "Header"
+#        %<{Hdr:member}
+#                      HTTP reply header "Hdr" list member "member"
+#        %<{Hdr:;member}
+#                      HTTP reply header list member using ; as
+#                      list separator. ; can be any non-alphanumeric
+#                      character.
+#
+#        %ACL          The name of the ACL being tested.
+#        %DATA         The ACL arguments. If not used then any arguments
+#                      is automatically added at the end of the line
+#                      sent to the helper.
+#                      NOTE: this will encode the arguments as one token,
+#                      whereas the default will pass each separately.
+#
+#        %%            The percent sign. Useful for helpers which need
+#                      an unchanging input format.
+#
+#      In addition to the above, any string specified in the referencing
+#      acl will also be included in the helper request line, after the
+#      specified formats (see the "acl external" directive)
+#
+#      The helper receives lines per the above format specification,
+#      and returns lines starting with OK or ERR indicating the validity
+#      of the request and optionally followed by additional keywords with
+#      more details.
+#
+#      General result syntax:
+#
+#        OK/ERR keyword=value ...
+#
+#      Defined keywords:
+#
+#        user=         The users name (login)
+#        password=     The users password (for login= cache_peer option)
+#        message=      Message describing the reason. Available as %o
+#                      in error pages
+#        tag=          Apply a tag to a request (for both ERR and OK results)
+#                      Only sets a tag, does not alter existing tags.
+#        log=          String to be logged in access.log. Available as
+#                      %ea in logformat specifications
+#
+#      If protocol=3.0 (the default) then URL escaping is used to protect
+#      each value in both requests and responses.
+#
+#      If using protocol=2.5 then all values need to be enclosed in quotes
+#      if they may contain whitespace, or the whitespace escaped using \.
+#      And quotes or \ characters within the keyword value must be \ escaped.
+#
+#      When using the concurrency= option the protocol is changed by
+#      introducing a query channel tag infront of the request/response.
+#      The query channel tag is a number between 0 and concurrency-1.
+#Default:
+# none
+
+#  TAG: acl
+#      Defining an Access List
+#
+#      Every access list definition must begin with an aclname and acltype, 
+#      followed by either type-specific arguments or a quoted filename that
+#      they are read from.
+#
+#         acl aclname acltype argument ...
+#         acl aclname acltype "file" ...
+#
+#      When using "file", the file should contain one item per line.
+#
+#      By default, regular expressions are CASE-SENSITIVE.
+#      To make them case-insensitive, use the -i option. To return case-sensitive
+#      use the +i option between patterns, or make a new ACL line without -i.
+#
+#      Some acl types require suspending the current request in order
+#      to access some external data source.
+#      Those which do are marked with the tag [slow], those which
+#      don't are marked as [fast].
+#      See http://wiki.squid-cache.org/SquidFaq/SquidAcl
+#      for further information
+#
+#      ***** ACL TYPES AVAILABLE *****
+#
+#      acl aclname src ip-address/mask ...     # clients IP address [fast]
+#      acl aclname src addr1-addr2/mask ...    # range of addresses [fast]
+#      acl aclname dst ip-address/mask ...     # URL host's IP address [slow]
+#      acl aclname localip ip-address/mask ... # IP address the client connected to [fast]
+#
+#      acl aclname arp      mac-address ... (xx:xx:xx:xx:xx:xx notation)
+#        # The arp ACL requires the special configure option --enable-arp-acl.
+#        # Furthermore, the ARP ACL code is not portable to all operating systems.
+#        # It works on Linux, Solaris, Windows, FreeBSD, and some
+#        # other *BSD variants.
+#        # [fast]
+#        #
+#        # NOTE: Squid can only determine the MAC address for clients that are on
+#        # the same subnet. If the client is on a different subnet,
+#        # then Squid cannot find out its MAC address.
+#
+#      acl aclname srcdomain   .foo.com ...
+#        # reverse lookup, from client IP [slow]
+#      acl aclname dstdomain   .foo.com ...
+#        # Destination server from URL [fast]
+#      acl aclname srcdom_regex [-i] \.foo\.com ...
+#        # regex matching client name [slow]
+#      acl aclname dstdom_regex [-i] \.foo\.com ...
+#        # regex matching server [fast]
+#        #
+#        # For dstdomain and dstdom_regex a reverse lookup is tried if a IP
+#        # based URL is used and no match is found. The name "none" is used
+#        # if the reverse lookup fails.
+#
+#      acl aclname src_as number ...
+#      acl aclname dst_as number ...
+#        # [fast]
+#        # Except for access control, AS numbers can be used for
+#        # routing of requests to specific caches. Here's an
+#        # example for routing all requests for AS#1241 and only
+#        # those to mycache.mydomain.net:
+#        # acl asexample dst_as 1241
+#        # cache_peer_access mycache.mydomain.net allow asexample
+#        # cache_peer_access mycache_mydomain.net deny all
+#
+#      acl aclname peername myPeer ...
+#        # [fast]
+#        # match against a named cache_peer entry
+#        # set unique name= on cache_peer lines for reliable use.
+#
+#      acl aclname time [day-abbrevs] [h1:m1-h2:m2]
+#        # [fast]
+#        #  day-abbrevs:
+#        #     S - Sunday
+#        #     M - Monday
+#        #     T - Tuesday
+#        #     W - Wednesday
+#        #     H - Thursday
+#        #     F - Friday
+#        #     A - Saturday
+#        #  h1:m1 must be less than h2:m2
+#
+#      acl aclname url_regex [-i] ^http:// ...
+#        # regex matching on whole URL [fast]
+#      acl aclname urllogin [-i] [^a-zA-Z0-9] ...
+#        # regex matching on URL login field
+#      acl aclname urlpath_regex [-i] \.gif$ ...
+#        # regex matching on URL path [fast]
+#
+#      acl aclname port 80 70 21 0-1024...   # destination TCP port [fast]
+#                                            # ranges are alloed
+#      acl aclname localport 3128 ...        # TCP port the client connected to [fast]
+#                                            # NP: for interception mode this is usually '80'
+#
+#      acl aclname myportname 3128 ...       # http(s)_port name [fast]
+#
+#      acl aclname proto HTTP FTP ...        # request protocol [fast]
+# 
+#      acl aclname method GET POST ...       # HTTP request method [fast]
+#
+#      acl aclname http_status 200 301 500- 400-403 ... 
+#        # status code in reply [fast]
+#
+#      acl aclname browser [-i] regexp ...
+#        # pattern match on User-Agent header (see also req_header below) [fast]
+#
+#      acl aclname referer_regex [-i] regexp ...
+#        # pattern match on Referer header [fast]
+#        # Referer is highly unreliable, so use with care
+#
+#      acl aclname ident username ...
+#      acl aclname ident_regex [-i] pattern ...
+#        # string match on ident output [slow]
+#        # use REQUIRED to accept any non-null ident.
+#
+#      acl aclname proxy_auth [-i] username ...
+#      acl aclname proxy_auth_regex [-i] pattern ...
+#        # perform http authentication challenge to the client and match against
+#        # supplied credentials [slow]
+#        #
+#        # takes a list of allowed usernames.
+#        # use REQUIRED to accept any valid username.
+#        #
+#        # Will use proxy authentication in forward-proxy scenarios, and plain
+#        # http authenticaiton in reverse-proxy scenarios
+#        #
+#        # NOTE: when a Proxy-Authentication header is sent but it is not
+#        # needed during ACL checking the username is NOT logged
+#        # in access.log.
+#        #
+#        # NOTE: proxy_auth requires a EXTERNAL authentication program
+#        # to check username/password combinations (see
+#        # auth_param directive).
+#        #
+#        # NOTE: proxy_auth can't be used in a transparent/intercepting proxy
+#        # as the browser needs to be configured for using a proxy in order
+#        # to respond to proxy authentication.
+#
+#      acl aclname snmp_community string ...
+#        # A community string to limit access to your SNMP Agent [fast]
+#        # Example:
+#        #
+#        #     acl snmppublic snmp_community public
+#
+#      acl aclname maxconn number
+#        # This will be matched when the client's IP address has
+#        # more than <number> TCP connections established. [fast]
+#        # NOTE: This only measures direct TCP links so X-Forwarded-For
+#        # indirect clients are not counted.
+#
+#      acl aclname max_user_ip [-s] number
+#        # This will be matched when the user attempts to log in from more
+#        # than <number> different ip addresses. The authenticate_ip_ttl
+#        # parameter controls the timeout on the ip entries. [fast]
+#        # If -s is specified the limit is strict, denying browsing
+#        # from any further IP addresses until the ttl has expired. Without
+#        # -s Squid will just annoy the user by "randomly" denying requests.
+#        # (the counter is reset each time the limit is reached and a
+#        # request is denied)
+#        # NOTE: in acceleration mode or where there is mesh of child proxies,
+#        # clients may appear to come from multiple addresses if they are
+#        # going through proxy farms, so a limit of 1 may cause user problems.
+#
+#      acl aclname random probability
+#        # Pseudo-randomly match requests. Based on the probability given.
+#        # Probability may be written as a decimal (0.333), fraction (1/3)
+#        # or ratio of matches:non-matches (3:5).
+#
+#      acl aclname req_mime_type [-i] mime-type ...
+#        # regex match against the mime type of the request generated
+#        # by the client. Can be used to detect file upload or some
+#        # types HTTP tunneling requests [fast]
+#        # NOTE: This does NOT match the reply. You cannot use this
+#        # to match the returned file type.
+#
+#      acl aclname req_header header-name [-i] any\.regex\.here
+#        # regex match against any of the known request headers.  May be
+#        # thought of as a superset of "browser", "referer" and "mime-type"
+#        # ACL [fast]
+#
+#      acl aclname rep_mime_type [-i] mime-type ...
+#        # regex match against the mime type of the reply received by
+#        # squid. Can be used to detect file download or some
+#        # types HTTP tunneling requests. [fast]
+#        # NOTE: This has no effect in http_access rules. It only has
+#        # effect in rules that affect the reply data stream such as
+#        # http_reply_access.
+#
+#      acl aclname rep_header header-name [-i] any\.regex\.here
+#        # regex match against any of the known reply headers. May be
+#        # thought of as a superset of "browser", "referer" and "mime-type"
+#        # ACLs [fast]
+#
+#      acl aclname external class_name [arguments...]
+#        # external ACL lookup via a helper class defined by the
+#        # external_acl_type directive [slow]
+#
+#      acl aclname user_cert attribute values...
+#        # match against attributes in a user SSL certificate
+#        # attribute is one of DN/C/O/CN/L/ST [fast]
+#
+#      acl aclname ca_cert attribute values...
+#        # match against attributes a users issuing CA SSL certificate
+#        # attribute is one of DN/C/O/CN/L/ST [fast]
+#
+#      acl aclname ext_user username ...
+#      acl aclname ext_user_regex [-i] pattern ...
+#        # string match on username returned by external acl helper [slow]
+#        # use REQUIRED to accept any non-null user name.
+#
+#      acl aclname tag tagvalue ...
+#        # string match on tag returned by external acl helper [slow]
+#
+#      acl aclname hier_code codename ...
+#        # string match against squid hierarchy code(s); [fast]
+#        #  e.g., DIRECT, PARENT_HIT, NONE, etc.
+#        #
+#        # NOTE: This has no effect in http_access rules. It only has
+#        # effect in rules that affect the reply data stream such as
+#        # http_reply_access.
+#
+#
+#      Examples:
+#              acl macaddress arp 09:00:2b:23:45:67
+#              acl myexample dst_as 1241
+#              acl password proxy_auth REQUIRED
+#              acl fileupload req_mime_type -i ^multipart/form-data$
+#              acl javascript rep_mime_type -i ^application/x-javascript$
+#
+#Default:
+# ACLs all, manager, localhost, and to_localhost are predefined.
+#
+#
+# Recommended minimum configuration:
+#
+
+# Example rule allowing access from your local networks.
+# Adapt to list your (internal) IP networks from where browsing
+# should be allowed
+#acl localnet src 10.0.0.0/8   # RFC1918 possible internal network
+#acl localnet src 172.16.0.0/12        # RFC1918 possible internal network
+#acl localnet src 192.168.0.0/16       # RFC1918 possible internal network
+#acl localnet src fc00::/7       # RFC 4193 local private network range
+#acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines
+
+acl SSL_ports port 443
+acl Safe_ports port 80         # http
+acl Safe_ports port 21         # ftp
+acl Safe_ports port 443                # https
+acl Safe_ports port 70         # gopher
+acl Safe_ports port 210                # wais
+acl Safe_ports port 1025-65535 # unregistered ports
+acl Safe_ports port 280                # http-mgmt
+acl Safe_ports port 488                # gss-http
+acl Safe_ports port 591                # filemaker
+acl Safe_ports port 777                # multiling http
+acl CONNECT method CONNECT
+
+#  TAG: follow_x_forwarded_for
+#      Allowing or Denying the X-Forwarded-For header to be followed to
+#      find the original source of a request.
+#
+#      Requests may pass through a chain of several other proxies
+#      before reaching us.  The X-Forwarded-For header will contain a
+#      comma-separated list of the IP addresses in the chain, with the
+#      rightmost address being the most recent.
+#
+#      If a request reaches us from a source that is allowed by this
+#      configuration item, then we consult the X-Forwarded-For header
+#      to see where that host received the request from.  If the
+#      X-Forwarded-For header contains multiple addresses, we continue
+#      backtracking until we reach an address for which we are not allowed
+#      to follow the X-Forwarded-For header, or until we reach the first
+#      address in the list. For the purpose of ACL used in the
+#      follow_x_forwarded_for directive the src ACL type always matches
+#      the address we are testing and srcdomain matches its rDNS.
+#
+#      The end result of this process is an IP address that we will
+#      refer to as the indirect client address.  This address may
+#      be treated as the client address for access control, ICAP, delay
+#      pools and logging, depending on the acl_uses_indirect_client,
+#      icap_uses_indirect_client, delay_pool_uses_indirect_client, 
+#      log_uses_indirect_client and tproxy_uses_indirect_client options.
+#
+#      This clause only supports fast acl types.
+#      See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
+#
+#      SECURITY CONSIDERATIONS:
+#
+#              Any host for which we follow the X-Forwarded-For header
+#              can place incorrect information in the header, and Squid
+#              will use the incorrect information as if it were the
+#              source address of the request.  This may enable remote
+#              hosts to bypass any access control restrictions that are
+#              based on the client's source addresses.
+#
+#      For example:
+#
+#              acl localhost src 127.0.0.1
+#              acl my_other_proxy srcdomain .proxy.example.com
+#              follow_x_forwarded_for allow localhost
+#              follow_x_forwarded_for allow my_other_proxy
+#Default:
+# X-Forwarded-For header will be ignored.
+
+#  TAG: acl_uses_indirect_client       on|off
+#      Controls whether the indirect client address
+#      (see follow_x_forwarded_for) is used instead of the
+#      direct client address in acl matching.
+#
+#      NOTE: maxconn ACL considers direct TCP links and indirect
+#            clients will always have zero. So no match.
+#Default:
+# acl_uses_indirect_client on
+
+#  TAG: delay_pool_uses_indirect_client        on|off
+#      Controls whether the indirect client address
+#      (see follow_x_forwarded_for) is used instead of the
+#      direct client address in delay pools.
+#Default:
+# delay_pool_uses_indirect_client on
+
+#  TAG: log_uses_indirect_client       on|off
+#      Controls whether the indirect client address
+#      (see follow_x_forwarded_for) is used instead of the
+#      direct client address in the access log.
+#Default:
+# log_uses_indirect_client on
+
+#  TAG: tproxy_uses_indirect_client    on|off
+#      Controls whether the indirect client address
+#      (see follow_x_forwarded_for) is used instead of the
+#      direct client address when spoofing the outgoing client.
+#
+#      This has no effect on requests arriving in non-tproxy
+#      mode ports.
+#
+#      SECURITY WARNING: Usage of this option is dangerous
+#      and should not be used trivially. Correct configuration
+#      of follow_x_forewarded_for with a limited set of trusted
+#      sources is required to prevent abuse of your proxy.
+#Default:
+# tproxy_uses_indirect_client off
+
+#  TAG: http_access
+#      Allowing or Denying access based on defined access lists
+#
+#      Access to the HTTP port:
+#      http_access allow|deny [!]aclname ...
+#
+#      NOTE on default values:
+#
+#      If there are no "access" lines present, the default is to deny
+#      the request.
+#
+#      If none of the "access" lines cause a match, the default is the
+#      opposite of the last line in the list.  If the last line was
+#      deny, the default is allow.  Conversely, if the last line
+#      is allow, the default will be deny.  For these reasons, it is a
+#      good idea to have an "deny all" entry at the end of your access
+#      lists to avoid potential confusion.
+#
+#      This clause supports both fast and slow acl types.
+#      See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
+#
+#Default:
+# Deny, unless rules exist in squid.conf.
+#
+
+#
+# Recommended minimum Access Permission configuration:
+#
+# Deny requests to certain unsafe ports
+http_access deny !Safe_ports
+
+# Deny CONNECT to other than secure SSL ports
+http_access deny CONNECT !SSL_ports
+
+# Only allow cachemgr access from localhost
+http_access allow localhost manager
+http_access deny manager
+
+# We strongly recommend the following be uncommented to protect innocent
+# web applications running on the proxy server who think the only
+# one who can access services on "localhost" is a local user
+#http_access deny to_localhost
+
+#
+# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
+#
+
+# Example rule allowing access from your local networks.
+# Adapt localnet in the ACL section to list your (internal) IP networks
+# from where browsing should be allowed
+#http_access allow localnet
+http_access allow localhost
+
+# And finally deny all other access to this proxy
+http_access deny all
+
+#  TAG: adapted_http_access
+#      Allowing or Denying access based on defined access lists
+#
+#      Essentially identical to http_access, but runs after redirectors
+#      and ICAP/eCAP adaptation. Allowing access control based on their
+#      output.
+#
+#      If not set then only http_access is used.
+#Default:
+# Allow, unless rules exist in squid.conf.
+
+#  TAG: http_reply_access
+#      Allow replies to client requests. This is complementary to http_access.
+#
+#      http_reply_access allow|deny [!] aclname ...
+#
+#      NOTE: if there are no access lines present, the default is to allow
+#      all replies.
+#
+#      If none of the access lines cause a match the opposite of the
+#      last line will apply. Thus it is good practice to end the rules
+#      with an "allow all" or "deny all" entry.
+#
+#      This clause supports both fast and slow acl types.
+#      See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
+#Default:
+# Allow, unless rules exist in squid.conf.
+
+#  TAG: icp_access
+#      Allowing or Denying access to the ICP port based on defined
+#      access lists
+#
+#      icp_access  allow|deny [!]aclname ...
+#
+#      NOTE: The default if no icp_access lines are present is to
+#      deny all traffic. This default may cause problems with peers
+#      using ICP.
+#
+#      This clause only supports fast acl types.
+#      See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
+#
+## Allow ICP queries from local networks only
+##icp_access allow localnet
+##icp_access deny all
+#Default:
+# Deny, unless rules exist in squid.conf.
+
+#  TAG: htcp_access
+#      Allowing or Denying access to the HTCP port based on defined
+#      access lists
+#
+#      htcp_access  allow|deny [!]aclname ...
+#
+#      See also htcp_clr_access for details on access control for
+#      cache purge (CLR) HTCP messages.
+#
+#      NOTE: The default if no htcp_access lines are present is to
+#      deny all traffic. This default may cause problems with peers
+#      using the htcp option.
+#
+#      This clause only supports fast acl types.
+#      See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
+#
+## Allow HTCP queries from local networks only
+##htcp_access allow localnet
+##htcp_access deny all
+#Default:
+# Deny, unless rules exist in squid.conf.
+
+#  TAG: htcp_clr_access
+#      Allowing or Denying access to purge content using HTCP based
+#      on defined access lists.
+#      See htcp_access for details on general HTCP access control.
+#
+#      htcp_clr_access  allow|deny [!]aclname ...
+#
+#      This clause only supports fast acl types.
+#      See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
+#
+## Allow HTCP CLR requests from trusted peers
+#acl htcp_clr_peer src 192.0.2.2 2001:DB8::2
+#htcp_clr_access allow htcp_clr_peer
+#htcp_clr_access deny all
+#Default:
+# Deny, unless rules exist in squid.conf.
+
+#  TAG: miss_access
+#      Determins whether network access is permitted when satisfying a request.
+#
+#      For example;
+#          to force your neighbors to use you as a sibling instead of
+#          a parent.
+#
+#              acl localclients src 192.0.2.0/24 2001:DB8::a:0/64
+#              miss_access deny  !localclients
+#              miss_access allow all
+#
+#      This means only your local clients are allowed to fetch relayed/MISS
+#      replies from the network and all other clients can only fetch cached
+#      objects (HITs).
+#
+#      The default for this setting allows all clients who passed the
+#      http_access rules to relay via this proxy.
+#
+#      This clause only supports fast acl types.
+#      See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
+#Default:
+# Allow, unless rules exist in squid.conf.
+
+#  TAG: ident_lookup_access
+#      A list of ACL elements which, if matched, cause an ident
+#      (RFC 931) lookup to be performed for this request.  For
+#      example, you might choose to always perform ident lookups
+#      for your main multi-user Unix boxes, but not for your Macs
+#      and PCs.  By default, ident lookups are not performed for
+#      any requests.
+#
+#      To enable ident lookups for specific client addresses, you
+#      can follow this example:
+#
+#      acl ident_aware_hosts src 198.168.1.0/24
+#      ident_lookup_access allow ident_aware_hosts
+#      ident_lookup_access deny all
+#
+#      Only src type ACL checks are fully supported.  A srcdomain
+#      ACL might work at times, but it will not always provide
+#      the correct result.
+#
+#      This clause only supports fast acl types.
+#      See http://wiki.squid-cache.org/SquidFaq/SquidAcl for details.
+#Default:
+# Unless rules exist in squid.conf, IDENT is not fetched.
+
+#  TAG: reply_body_max_size    size [acl acl...]
+#      This option specifies the maximum size of a reply body. It can be
+#      used to prevent users from downloading very large files, such as
+#      MP3's and movies. When the reply headers are received, the
+#      reply_body_max_size lines are processed, and the first line where
+#      all (if any) listed ACLs are true is used as the maximum body size
+#      for this reply.
+#
+#      This size is checked twice. First when we get the reply headers,
+#      we check the content-length value.  If the content length value exists
+#      and is larger than the allowed size, the request is denied and the
+#      user receives an error message that says "the request or reply
+#      is too large." If there is no content-length, and the reply
+#      size exceeds this limit, the client's connection is just closed
+#      and they will receive a partial reply.
+#
+#      WARNING: downstream caches probably can not detect a partial reply
+#      if there is no content-length header, so they will cache
+#      partial responses and give them out as hits.  You should NOT
+#      use this option if you have downstream caches.
+#
+#      WARNING: A maximum size smaller than the size of squid's error messages
+#      will cause an infinite loop and crash squid. Ensure that the smallest
+#      non-zero value you use is greater that the maximum header size plus
+#      the size of your largest error page.
+#
+#      If you set this parameter none (the default), there will be
+#      no limit imposed.
+#
+#      Configuration Format is:
+#              reply_body_max_size SIZE UNITS [acl ...]
+#      ie.
+#              reply_body_max_size 10 MB
+#
+#Default:
+# No limit is applied.
+
+# NETWORK OPTIONS
+# -----------------------------------------------------------------------------
+
+#  TAG: http_port
+#      Usage:  port [mode] [options]
+#              hostname:port [mode] [options]
+#              1.2.3.4:port [mode] [options]
+#
+#      The socket addresses where Squid will listen for HTTP client
+#      requests.  You may specify multiple socket addresses.
+#      There are three forms: port alone, hostname with port, and
+#      IP address with port.  If you specify a hostname or IP
+#      address, Squid binds the socket to that specific
+#      address. Most likely, you do not need to bind to a specific
+#      address, so you can use the port number alone.
+#
+#      If you are running Squid in accelerator mode, you
+#      probably want to listen on port 80 also, or instead.
+#
+#      The -a command line option may be used to specify additional
+#      port(s) where Squid listens for proxy request. Such ports will
+#      be plain proxy ports with no options.
+#
+#      You may specify multiple socket addresses on multiple lines.
+#
+#      Modes:
+#
+#         intercept    Support for IP-Layer interception of
+#                      outgoing requests without browser settings.
+#                      NP: disables authentication and IPv6 on the port.
+#
+#         tproxy       Support Linux TPROXY for spoofing outgoing
+#                      connections using the client IP address.
+#                      NP: disables authentication and maybe IPv6 on the port.
+#
+#         accel        Accelerator / reverse proxy mode
+#
+#         ssl-bump     For each CONNECT request allowed by ssl_bump ACLs,
+#                      establish secure connection with the client and with
+#                      the server, decrypt HTTPS messages as they pass through
+#                      Squid, and treat them as unencrypted HTTP messages,
+#                      becoming the man-in-the-middle.
+#
+#                      The ssl_bump option is required to fully enable
+#                      bumping of CONNECT requests.
+#
+#      Omitting the mode flag causes default forward proxy mode to be used.
+#
+#
+#      Accelerator Mode Options:
+#
+#         defaultsite=domainname
+#                      What to use for the Host: header if it is not present
+#                      in a request. Determines what site (not origin server)
+#                      accelerators should consider the default.
+#
+#         no-vhost     Disable using HTTP/1.1 Host header for virtual domain support.
+#
+#         protocol=    Protocol to reconstruct accelerated requests with.
+#                      Defaults to http for http_port and https for
+#                      https_port
+#
+#         vport        Virtual host port support. Using the http_port number
+#                      instead of the port passed on Host: headers.
+#
+#         vport=NN     Virtual host port support. Using the specified port
+#                      number instead of the port passed on Host: headers.
+#
+#         act-as-origin
+#                      Act as if this Squid is the origin server.
+#                      This currently means generate new Date: and Expires:
+#                      headers on HIT instead of adding Age:.
+#
+#         ignore-cc    Ignore request Cache-Control headers.
+#
+#                      WARNING: This option violates HTTP specifications if
+#                      used in non-accelerator setups.
+#
+#         allow-direct Allow direct forwarding in accelerator mode. Normally
+#                      accelerated requests are denied direct forwarding as if
+#                      never_direct was used.
+#
+#                      WARNING: this option opens accelerator mode to security
+#                      vulnerabilities usually only affecting in interception
+#                      mode. Make sure to protect forwarding with suitable
+#                      http_access rules when using this.
+#
+#
+#      SSL Bump Mode Options:
+#          In addition to these options ssl-bump requires TLS/SSL options.
+#
+#         generate-host-certificates[=<on|off>]
+#                      Dynamically create SSL server certificates for the
+#                      destination hosts of bumped CONNECT requests.When 
+#                      enabled, the cert and key options are used to sign
+#                      generated certificates. Otherwise generated
+#                      certificate will be selfsigned.
+#                      If there is a CA certificate lifetime of the generated 
+#                      certificate equals lifetime of the CA certificate. If
+#                      generated certificate is selfsigned lifetime is three 
+#                      years.
+#                      This option is enabled by default when ssl-bump is used.
+#                      See the ssl-bump option above for more information.
+#                      
+#         dynamic_cert_mem_cache_size=SIZE
+#                      Approximate total RAM size spent on cached generated
+#                      certificates. If set to zero, caching is disabled. The
+#                      default value is 4MB.
+#
+#      TLS / SSL Options:
+#
+#         cert=        Path to SSL certificate (PEM format).
+#
+#         key=         Path to SSL private key file (PEM format)
+#                      if not specified, the certificate file is
+#                      assumed to be a combined certificate and
+#                      key file.
+#
+#         version=     The version of SSL/TLS supported
+#                          1   automatic (default)
+#                          2   SSLv2 only
+#                          3   SSLv3 only
+#                          4   TLSv1.0 only
+#                          5   TLSv1.1 only
+#                          6   TLSv1.2 only
+#
+#         cipher=      Colon separated list of supported ciphers.
+#                      NOTE: some ciphers such as EDH ciphers depend on
+#                            additional settings. If those settings are
+#                            omitted the ciphers may be silently ignored
+#                            by the OpenSSL library.
+       cipher=EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3D  ES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
+#         options=     Various SSL implementation options. The most important
+#                      being:
+#                          NO_SSLv2    Disallow the use of SSLv2
+#                          NO_SSLv3    Disallow the use of SSLv3
+#                          NO_TLSv1    Disallow the use of TLSv1.0
+#                          NO_TLSv1_1  Disallow the use of TLSv1.1
+#                          NO_TLSv1_2  Disallow the use of TLSv1.2
+#                          SINGLE_DH_USE Always create a new key when using
+#                                    temporary/ephemeral DH key exchanges
+#                          ALL       Enable various bug workarounds
+#                                    suggested as "harmless" by OpenSSL
+#                                    Be warned that this reduces SSL/TLS
+#                                    strength to some attacks.
+#                      See OpenSSL SSL_CTX_set_options documentation for a
+#                      complete list of options.
+       options=NO_SSLv2,NO_TLSv1,NO_Compression,CIPHER_SERVER_PREFERENCE
+
+#         clientca=    File containing the list of CAs to use when
+#                      requesting a client certificate.
+#
+#         cafile=      File containing additional CA certificates to
+#                      use when verifying client certificates. If unset
+#                      clientca will be used.
+#
+#         capath=      Directory containing additional CA certificates
+#                      and CRL lists to use when verifying client certificates.
+#
+#         crlfile=     File of additional CRL lists to use when verifying
+#                      the client certificate, in addition to CRLs stored in
+#                      the capath. Implies VERIFY_CRL flag below.
+#
+#         dhparams=    File containing DH parameters for temporary/ephemeral
+#                      DH key exchanges. See OpenSSL documentation for details
+#                      on how to create this file.
+#                      WARNING: EDH ciphers will be silently disabled if this
+#                               option is not set.
+#
+#         sslflags=    Various flags modifying the use of SSL:
+#                          DELAYED_AUTH
+#                              Don't request client certificates
+#                              immediately, but wait until acl processing
+#                              requires a certificate (not yet implemented).
+#                          NO_DEFAULT_CA
+#                              Don't use the default CA lists built in
+#                              to OpenSSL.
+#                          NO_SESSION_REUSE
+#                              Don't allow for session reuse. Each connection
+#                              will result in a new SSL session.
+#                          VERIFY_CRL
+#                              Verify CRL lists when accepting client
+#                              certificates.
+#                          VERIFY_CRL_ALL
+#                              Verify CRL lists for all certificates in the
+#                              client certificate chain.
+#
+#         sslcontext=  SSL session ID context identifier.
+#
+#      Other Options:
+#
+#         connection-auth[=on|off]
+#                      use connection-auth=off to tell Squid to prevent 
+#                      forwarding Microsoft connection oriented authentication
+#                      (NTLM, Negotiate and Kerberos)
+#
+#         disable-pmtu-discovery=
+#                      Control Path-MTU discovery usage:
+#                          off         lets OS decide on what to do (default).
+#                          transparent disable PMTU discovery when transparent
+#                                      support is enabled.
+#                          always      disable always PMTU discovery.
+#
+#                      In many setups of transparently intercepting proxies
+#                      Path-MTU discovery can not work on traffic towards the
+#                      clients. This is the case when the intercepting device
+#                      does not fully track connections and fails to forward
+#                      ICMP must fragment messages to the cache server. If you
+#                      have such setup and experience that certain clients
+#                      sporadically hang or never complete requests set
+#                      disable-pmtu-discovery option to 'transparent'.
+#
+#         name=        Specifies a internal name for the port. Defaults to
+#                      the port specification (port or addr:port)
+#
+#         tcpkeepalive[=idle,interval,timeout]
+#                      Enable TCP keepalive probes of idle connections.
+#                      In seconds; idle is the initial time before TCP starts
+#                      probing the connection, interval how often to probe, and
+#                      timeout the time before giving up.
+#
+#      If you run Squid on a dual-homed machine with an internal
+#      and an external interface we recommend you to specify the
+#      internal address:port in http_port. This way Squid will only be
+#      visible on the internal address.
+#
+#
+
+# Squid normally listens to port 3128
+http_port 3128
+
+#  TAG: https_port
+# Note: This option is only available if Squid is rebuilt with the
+#       --enable-ssl
+#
+#      Usage:  [ip:]port cert=certificate.pem [key=key.pem] [mode] [options...]
+#
+#      The socket address where Squid will listen for client requests made
+#      over TLS or SSL connections. Commonly referred to as HTTPS.
+#
+#      This is most useful for situations where you are running squid in
+#      accelerator mode and you want to do the SSL work at the accelerator level.
+#
+#      You may specify multiple socket addresses on multiple lines,
+#      each with their own SSL certificate and/or options.
+#
+#      Modes:
+#
+#         accel        Accelerator / reverse proxy mode
+#
+#         intercept    Support for IP-Layer interception of
+#                      outgoing requests without browser settings.
+#                      NP: disables authentication and IPv6 on the port.
+#
+#         tproxy       Support Linux TPROXY for spoofing outgoing
+#                      connections using the client IP address.
+#                      NP: disables authentication and maybe IPv6 on the port.
+#
+#         ssl-bump     For each intercepted connection allowed by ssl_bump
+#                      ACLs, establish a secure connection with the client and with
+#                      the server, decrypt HTTPS messages as they pass through
+#                      Squid, and treat them as unencrypted HTTP messages,
+#                      becoming the man-in-the-middle.
+#
+#                      An "ssl_bump server-first" match is required to
+#                      fully enable bumping of intercepted SSL connections.
+#
+#                      Requires tproxy or intercept.
+#
+#      Omitting the mode flag causes default forward proxy mode to be used.
+#
+#
+#      See http_port for a list of generic options
+#
+#
+#      SSL Options:
+#
+#         cert=        Path to SSL certificate (PEM format).
+#
+#         key=         Path to SSL private key file (PEM format)
+#                      if not specified, the certificate file is
+#                      assumed to be a combined certificate and
+#                      key file.
+#
+#         version=     The version of SSL/TLS supported
+#                          1   automatic (default)
+#                          2   SSLv2 only
+#                          3   SSLv3 only
+#                          4   TLSv1 only
+#
+#         cipher=      Colon separated list of supported ciphers.
+#
+#         options=     Various SSL engine options. The most important
+#                      being:
+#                          NO_SSLv2  Disallow the use of SSLv2
+#                          NO_SSLv3  Disallow the use of SSLv3
+#                          NO_TLSv1  Disallow the use of TLSv1
+#                          SINGLE_DH_USE Always create a new key when using
+#                                    temporary/ephemeral DH key exchanges
+#                      See src/ssl_support.c or OpenSSL SSL_CTX_set_options
+#                      documentation for a complete list of options.
+#
+#         clientca=    File containing the list of CAs to use when
+#                      requesting a client certificate.
+#
+#         cafile=      File containing additional CA certificates to
+#                      use when verifying client certificates. If unset
+#                      clientca will be used.
+#
+#         capath=      Directory containing additional CA certificates
+#                      and CRL lists to use when verifying client certificates.
+#
+#         crlfile=     File of additional CRL lists to use when verifying
+#                      the client certificate, in addition to CRLs stored in
+#                      the capath. Implies VERIFY_CRL flag below.
+#
+#         dhparams=    File containing DH parameters for temporary/ephemeral
+#                      DH key exchanges.
+#
+#         sslflags=    Various flags modifying the use of SSL:
+#                          DELAYED_AUTH
+#                              Don't request client certificates
+#                              immediately, but wait until acl processing
+#                              requires a certificate (not yet implemented).
+#                          NO_DEFAULT_CA
+#                              Don't use the default CA lists built in
+#                              to OpenSSL.
+#                          NO_SESSION_REUSE
+#                              Don't allow for session reuse. Each connection
+#                              will result in a new SSL session.
+#                          VERIFY_CRL
+#                              Verify CRL lists when accepting client
+#                              certificates.
+#                          VERIFY_CRL_ALL
+#                              Verify CRL lists for all certificates in the
+#                              client certificate chain.
+#
+#         sslcontext=  SSL session ID context identifier.
+#
+#         generate-host-certificates[=<on|off>]
+#                      Dynamically create SSL server certificates for the
+#                      destination hosts of bumped SSL requests.When
+#                      enabled, the cert and key options are used to sign
+#                      generated certificates. Otherwise generated
+#                      certificate will be selfsigned.
+#                      If there is CA certificate life time of generated
+#                      certificate equals lifetime of CA certificate. If
+#                      generated certificate is selfsigned lifetime is three
+#                      years.
+#                      This option is enabled by default when SslBump is used.
+#                      See the sslBump option above for more information.
+#
+#         dynamic_cert_mem_cache_size=SIZE
+#                      Approximate total RAM size spent on cached generated
+#                      certificates. If set to zero, caching is disabled. The
+#                      default value is 4MB.
+#
+#      See http_port for a list of available options.
+#Default:
+# none
+
+#  TAG: tcp_outgoing_tos
+#      Allows you to select a TOS/Diffserv value for packets outgoing
+#      on the server side, based on an ACL.
+#
+#      tcp_outgoing_tos ds-field [!]aclname ...
+#
+#      Example where normal_service_net uses the TOS value 0x00
+#      and good_service_net uses 0x20
+#
+#      acl normal_service_net src 10.0.0.0/24
+#      acl good_service_net src 10.0.1.0/24
+#      tcp_outgoing_tos 0x00 normal_service_net
+#      tcp_outgoing_tos 0x20 good_service_net
+#
+#      TOS/DSCP values really only have local significance - so you should
+#      know what you're specifying. For more information, see RFC2474,
+#      RFC2475, and RFC3260.
+#
+#      The TOS/DSCP byte must be exactly that - a octet value  0 - 255, or
+#      "default" to use whatever default your host has. Note that in
+#      practice often only multiples of 4 is usable as the two rightmost bits
+#      have been redefined for use by ECN (RFC 3168 section 23.1).
+#
+#      Processing proceeds in the order specified, and stops at first fully
+#      matching line.
+#Default:
+# none
+
+#  TAG: clientside_tos
+#      Allows you to select a TOS/Diffserv value for packets being transmitted
+#      on the client-side, based on an ACL.
+#
+#      clientside_tos ds-field [!]aclname ...
+#
+#      Example where normal_service_net uses the TOS value 0x00
+#      and good_service_net uses 0x20
+#
+#      acl normal_service_net src 10.0.0.0/24
+#      acl good_service_net src 10.0.1.0/24
+#      clientside_tos 0x00 normal_service_net
+#      clientside_tos 0x20 good_service_net
+#
+#      Note: This feature is incompatible with qos_flows. Any TOS values set here
+#      will be overwritten by TOS values in qos_flows.
+#Default:
+# none
+
+#  TAG: tcp_outgoing_mark
+# Note: This option is only available if Squid is rebuilt with the
+#       Packet MARK (Linux)
+#
+#      Allows you to apply a Netfilter mark value to outgoing packets
+#      on the server side, based on an ACL.
+#
+#      tcp_outgoing_mark mark-value [!]aclname ...
+#
+#      Example where normal_service_net uses the mark value 0x00
+#      and good_service_net uses 0x20
+#
+#      acl normal_service_net src 10.0.0.0/24
+#      acl good_service_net src 10.0.1.0/24
+#      tcp_outgoing_mark 0x00 normal_service_net
+#      tcp_outgoing_mark 0x20 good_service_net
+#Default:
+# none
+
+#  TAG: clientside_mark
+# Note: This option is only available if Squid is rebuilt with the
+#       Packet MARK (Linux)
+#
+#      Allows you to apply a Netfilter mark value to packets being transmitted
+#      on the client-side, based on an ACL.
+#
+#      clientside_mark mark-value [!]aclname ...
+#
+#      Example where normal_service_net uses the mark value 0x00
+#      and good_service_net uses 0x20
+#
+#      acl normal_service_net src 10.0.0.0/24
+#      acl good_service_net src 10.0.1.0/24
+#      clientside_mark 0x00 normal_service_net
+#      clientside_mark 0x20 good_service_net
+#
+#      Note: This feature is incompatible with qos_flows. Any mark values set here
+#      will be overwritten by mark values in qos_flows.
+#Default:
+# none
+
+#  TAG: qos_flows
+#      Allows you to select a TOS/DSCP value to mark outgoing
+#      connections with, based on where the reply was sourced. For
+#      platforms using netfilter, allows you to set a netfilter mark
+#      value instead of, or in addition to, a TOS value.
+#
+#      TOS values really only have local significance - so you should
+#      know what you're specifying. For more information, see RFC2474,
+#      RFC2475, and RFC3260.
+#
+#      The TOS/DSCP byte must be exactly that - a octet value  0 - 255. Note that
+#      in practice often only multiples of 4 is usable as the two rightmost bits
+#      have been redefined for use by ECN (RFC 3168 section 23.1).
+#
+#      Mark values can be any unsigned 32-bit integer value.
+#
+#      This setting is configured by setting the following values:
+#
+#      tos|mark                Whether to set TOS or netfilter mark values
+#
+#      local-hit=0xFF          Value to mark local cache hits.
+#
+#      sibling-hit=0xFF        Value to mark hits from sibling peers.
+#
+#      parent-hit=0xFF         Value to mark hits from parent peers.
+#
+#      miss=0xFF[/mask]        Value to mark cache misses. Takes precedence
+#                              over the preserve-miss feature (see below), unless
+#                              mask is specified, in which case only the bits
+#                              specified in the mask are written.
+#
+#      The TOS variant of the following features are only possible on Linux
+#      and require your kernel to be patched with the TOS preserving ZPH
+#      patch, available from http://zph.bratcheda.org
+#      No patch is needed to preserve the netfilter mark, which will work
+#      with all variants of netfilter.
+#
+#      disable-preserve-miss
+#              This option disables the preservation of the TOS or netfilter
+#              mark. By default, the existing TOS or netfilter mark value of
+#              the response coming from the remote server will be retained
+#              and masked with miss-mark.
+#              NOTE: in the case of a netfilter mark, the mark must be set on
+#              the connection (using the CONNMARK target) not on the packet
+#              (MARK target).
+#
+#      miss-mask=0xFF
+#              Allows you to mask certain bits in the TOS or mark value
+#              received from the remote server, before copying the value to
+#              the TOS sent towards clients.
+#              Default for tos: 0xFF (TOS from server is not changed).
+#              Default for mark: 0xFFFFFFFF (mark from server is not changed).
+#
+#      All of these features require the --enable-zph-qos compilation flag
+#      (enabled by default). Netfilter marking also requires the
+#      libnetfilter_conntrack libraries (--with-netfilter-conntrack) and
+#      libcap 2.09+ (--with-libcap).
+#
+#Default:
+# none
+
+#  TAG: tcp_outgoing_address
+#      Allows you to map requests to different outgoing IP addresses
+#      based on the username or source address of the user making
+#      the request.
+#
+#      tcp_outgoing_address ipaddr [[!]aclname] ...
+#
+#      For example;
+#              Forwarding clients with dedicated IPs for certain subnets.
+#
+#        acl normal_service_net src 10.0.0.0/24
+#        acl good_service_net src 10.0.2.0/24
+#
+#        tcp_outgoing_address 2001:db8::c001 good_service_net
+#        tcp_outgoing_address 10.1.0.2 good_service_net
+#
+#        tcp_outgoing_address 2001:db8::beef normal_service_net
+#        tcp_outgoing_address 10.1.0.1 normal_service_net
+#
+#        tcp_outgoing_address 2001:db8::1
+#        tcp_outgoing_address 10.1.0.3
+#
+#      Processing proceeds in the order specified, and stops at first fully
+#      matching line.
+#
+#      Squid will add an implicit IP version test to each line.
+#      Requests going to IPv4 websites will use the outgoing 10.1.0.* addresses.
+#      Requests going to IPv6 websites will use the outgoing 2001:db8:* addresses.
+#
+#
+#      NOTE: The use of this directive using client dependent ACLs is
+#      incompatible with the use of server side persistent connections. To
+#      ensure correct results it is best to set server_persistent_connections
+#      to off when using this directive in such configurations.
+#
+#      NOTE: The use of this directive to set a local IP on outgoing TCP links
+#      is incompatible with using TPROXY to set client IP out outbound TCP links.
+#      When needing to contact peers use the no-tproxy cache_peer option and the
+#      client_dst_passthru directive re-enable normal forwarding such as this.
+#
+#Default:
+# Address selection is performed by the operating system.
+
+#  TAG: host_verify_strict
+#      Regardless of this option setting, when dealing with intercepted
+#      traffic, Squid always verifies that the destination IP address matches
+#      the Host header domain or IP (called 'authority form URL').
+#      
+#      This enforcement is performed to satisfy a MUST-level requirement in
+#      RFC 2616 section 14.23: "The Host field value MUST represent the naming
+#      authority of the origin server or gateway given by the original URL".
+#      
+#      When set to ON:
+#              Squid always responds with an HTTP 409 (Conflict) error
+#              page and logs a security warning if there is no match.
+#      
+#              Squid verifies that the destination IP address matches
+#              the Host header for forward-proxy and reverse-proxy traffic
+#              as well. For those traffic types, Squid also enables the
+#              following checks, comparing the corresponding Host header
+#              and Request-URI components:
+#      
+#               * The host names (domain or IP) must be identical,
+#                 but valueless or missing Host header disables all checks.
+#                 For the two host names to match, both must be either IP
+#                 or FQDN.
+#      
+#               * Port numbers must be identical, but if a port is missing
+#                 the scheme-default port is assumed.
+#      
+#      
+#      When set to OFF (the default):
+#              Squid allows suspicious requests to continue but logs a
+#              security warning and blocks caching of the response.
+#      
+#               * Forward-proxy traffic is not checked at all.
+#      
+#               * Reverse-proxy traffic is not checked at all.
+#      
+#               * Intercepted traffic which passes verification is handled
+#                 according to client_dst_passthru.
+#      
+#               * Intercepted requests which fail verification are sent
+#                 to the client original destination instead of DIRECT.
+#                 This overrides 'client_dst_passthru off'.
+#      
+#              For now suspicious intercepted CONNECT requests are always
+#              responded to with an HTTP 409 (Conflict) error page.
+#      
+#      
+#      SECURITY NOTE:
+#      
+#      As described in CVE-2009-0801 when the Host: header alone is used
+#      to determine the destination of a request it becomes trivial for
+#      malicious scripts on remote websites to bypass browser same-origin
+#      security policy and sandboxing protections.
+#      
+#      The cause of this is that such applets are allowed to perform their
+#      own HTTP stack, in which case the same-origin policy of the browser
+#      sandbox only verifies that the applet tries to contact the same IP
+#      as from where it was loaded at the IP level. The Host: header may
+#      be different from the connected IP and approved origin.
+#      
+#Default:
+# host_verify_strict off
+
+#  TAG: client_dst_passthru
+#      With NAT or TPROXY intercepted traffic Squid may pass the request
+#      directly to the original client destination IP or seek a faster
+#      source using the HTTP Host header.
+#      
+#      Using Host to locate alternative servers can provide faster
+#      connectivity with a range of failure recovery options.
+#      But can also lead to connectivity trouble when the client and
+#      server are attempting stateful interactions unaware of the proxy.
+#      
+#      This option (on by default) prevents alternative DNS entries being
+#      located to send intercepted traffic DIRECT to an origin server.
+#      The clients original destination IP and port will be used instead.
+#      
+#      Regardless of this option setting, when dealing with intercepted
+#      traffic Squid will verify the Host: header and any traffic which
+#      fails Host verification will be treated as if this option were ON.
+#      
+#      see host_verify_strict for details on the verification process.
+#Default:
+# client_dst_passthru on
+
+# SSL OPTIONS
+# -----------------------------------------------------------------------------
+
+#  TAG: ssl_unclean_shutdown
+# Note: This option is only available if Squid is rebuilt with the
+#       --enable-ssl
+#
+#      Some browsers (especially MSIE) bugs out on SSL shutdown
+#      messages.
+#Default:
+# ssl_unclean_shutdown off
+
+#  TAG: ssl_engine
+# Note: This option is only available if Squid is rebuilt with the
+#       --enable-ssl
+#
+#      The OpenSSL engine to use. You will need to set this if you
+#      would like to use hardware SSL acceleration for example.
+#Default:
+# none
+
+#  TAG: sslproxy_client_certificate
+# Note: This option is only available if Squid is rebuilt with the
+#       --enable-ssl
+#
+#      Client SSL Certificate to use when proxying https:// URLs
+#Default:
+# none
+
+#  TAG: sslproxy_client_key
+# Note: This option is only available if Squid is rebuilt with the
+#       --enable-ssl
+#
+#      Client SSL Key to use when proxying https:// URLs
+#Default:
+# none
+
+#  TAG: sslproxy_version
+# Note: This option is only available if Squid is rebuilt with the
+#       --enable-ssl
+#
+#      SSL version level to use when proxying https:// URLs
+#
+#      The versions of SSL/TLS supported:
+#
+#          1   automatic (default)
+#          2   SSLv2 only
+#          3   SSLv3 only
+#          4   TLSv1.0 only
+#          5   TLSv1.1 only
+#          6   TLSv1.2 only
+#Default:
+# automatic SSL/TLS version negotiation
+
+#  TAG: sslproxy_options
+# Note: This option is only available if Squid is rebuilt with the
+#       --enable-ssl
+#
+#      SSL implementation options to use when proxying https:// URLs
+#      
+#      The most important being:
+#
+#          NO_SSLv2    Disallow the use of SSLv2
+#          NO_SSLv3    Disallow the use of SSLv3
+#          NO_TLSv1    Disallow the use of TLSv1.0
+#          NO_TLSv1_1  Disallow the use of TLSv1.1
+#          NO_TLSv1_2  Disallow the use of TLSv1.2
+#          SINGLE_DH_USE
+#                    Always create a new key when using temporary/ephemeral
+#                    DH key exchanges
+#          SSL_OP_NO_TICKET
+#                    Disable use of RFC5077 session tickets. Some servers
+#                    may have problems understanding the TLS extension due
+#                    to ambiguous specification in RFC4507.
+#          ALL       Enable various bug workarounds suggested as "harmless"
+#                    by OpenSSL. Be warned that this may reduce SSL/TLS
+#                    strength to some attacks.
+#      
+#      See the OpenSSL SSL_CTX_set_options documentation for a
+#      complete list of possible options.
+#Default:
+# none
+
+#  TAG: sslproxy_cipher
+# Note: This option is only available if Squid is rebuilt with the
+#       --enable-ssl
+#
+#      SSL cipher list to use when proxying https:// URLs
+#
+#      Colon separated list of supported ciphers.
+#Default:
+# none
+
+#  TAG: sslproxy_cafile
+# Note: This option is only available if Squid is rebuilt with the
+#       --enable-ssl
+#
+#      file containing CA certificates to use when verifying server
+#      certificates while proxying https:// URLs
+#Default:
+# none
+
+#  TAG: sslproxy_capath
+# Note: This option is only available if Squid is rebuilt with the
+#       --enable-ssl
+#
+#      directory containing CA certificates to use when verifying
+#      server certificates while proxying https:// URLs
+#Default:
+# none
+
+#  TAG: ssl_bump
+# Note: This option is only available if Squid is rebuilt with the
+#       --enable-ssl
+#
+#      This option is consulted when a CONNECT request is received on
+#      an http_port (or a new connection is intercepted at an
+#      https_port), provided that port was configured with an ssl-bump
+#      flag. The subsequent data on the connection is either treated as
+#      HTTPS and decrypted OR tunneled at TCP level without decryption,
+#      depending on the first bumping "mode" which ACLs match.
+#
+#      ssl_bump <mode> [!]acl ...
+#
+#      The following bumping modes are supported:
+#
+#          client-first
+#              Allow bumping of the connection. Establish a secure connection
+#              with the client first, then connect to the server. This old mode
+#              does not allow Squid to mimic server SSL certificate and does
+#              not work with intercepted SSL connections.
+#
+#          server-first
+#              Allow bumping of the connection. Establish a&nb