CVE-2007-10002 (PHP, published 2023-01-08T10:15Z)
Description: value: A vulnerability, which was classified as critical, has been found in web-cyradm. Affected by this issue is some unknown functionality of the file auth.inc.php. The manipulation of the argument login/login_password/LANG leads to sql injection. The attack may be launched remotely. The name of the patch is 2bcbead3bdb5f118bf2c38c541eaa73c29dcc90f. It is recommended to apply a patch to fix this issue. The identifier of this vulnerability is VDB-217640.
Severity: nan (CVSS v3 base score: 9.8)
Weakness: CWE-89 \u2014 Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')
The product constructs all or part of an SQL command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended SQL command when it is sent to a downstream component. Without sufficient removal or quoting of SQL syntax in user-controllable inputs, the generated SQL query can cause those inputs to be interpreted as SQL instead of ordinary user data.
Repository: https://github.com/web-cyradm/web-cyradm
Files changed:
.cvsignore
COPYRIGHT
ChangeLog
INSTALL
README
README.translations
TO-BE-DONE
ace.php
adminuser.php
aliases.php
auth.inc.php
browse.php
browseaccounts.php
catchall.php
changeadminpasswd.php
config/.cvsignore
config/conf.php.dist
css/default.css
css/green.css
delete_catchall.php
deleteaccount.php
deleteadminuser.php
deletealias.php
deletedomain.php
deleteemail.php
display.php
doc/Postfix-Cyrus-Web-cyradm-HOWTO.sgml
doc/Postfix-Cyrus-Web-cyradm-HOWTO.txt
doc/html/HTML.manifest
doc/html/cyrus-config.html
doc/html/docbook.css
doc/html/faq.html
doc/html/index.html
doc/html/install.html
doc/html/installing-anti-spam.html
doc/html/intro.html
doc/html/moreinfo.html
doc/html/mysql-config.html
doc/html/pam-config.html
doc/html/postfix-config.html
doc/html/spam-and-virus-intro.html
doc/html/t1.html
doc/html/tech.html
doc/html/test.html
doc/html/web-cyradm-config.html
doc/web-cyradm-redhat.txt
editaccount.php
editadminuser.php
editalias.php
editdomain.php
editemail.php
failed.php
footer.inc.php
forwardaccount.php
forwardalias.php
header.inc.php
index.php
init.php
lib/crypto.php
lib/cyradm.php
lib/log.php
lib/nls.php
lib/poppassd.php
lib/sieve-php.lib.php
lib/sieve_strs.php
locale/cs/LC_MESSAGES/web-cyradm.po
locale/da/LC_MESSAGES/web-cyradm.po
locale/de/LC_MESSAGES/web-cyradm.po
locale/en/LC_MESSAGES/web-cyradm.po
locale/es/LC_MESSAGES/web-cyradm.po
locale/fr/LC_MESSAGES/web-cyradm.po
locale/hu/LC_MESSAGES/web-cyradm.po
locale/it/LC_MESSAGES/web-cyradm.po
locale/nb_NO/LC_MESSAGES/web-cyradm.po
locale/nl/LC_MESSAGES/web-cyradm.po
locale/pl/LC_MESSAGES/web-cyradm.po
locale/pt/LC_MESSAGES/web-cyradm.po
locale/ro/LC_MESSAGES/web-cyradm.po
locale/ru/LC_MESSAGES/web-cyradm.po
locale/sl/LC_MESSAGES/web-cyradm.po
locale/sv/LC_MESSAGES/web-cyradm.po
locale/teamnames
locale/templates/web-cyradm.pot
locale/tr/LC_MESSAGES/web-cyradm.po
locale/uk/LC_MESSAGES/web-cyradm.po
locale/zh_CN/LC_MESSAGES/web-cyradm.po
login.php
logout.php
manageaccount.php
menu.inc.php
migrate.php-dist
newaccount.php
newadminuser.php
newalias.php
newdomain.php
newemail.php
scripts/create_mysql.sql
scripts/create_pgsql.sql
scripts/imap2imap-copy.php
scripts/insertuser_mysql.sql
scripts/insertuser_pgsql.sql
scripts/php2pot
scripts/pot2po
scripts/upgrade-0.5.2-to-0.5.3_mysql.sql
scripts/upgrade-0.5.3-to-0.5.4_mysql.sql
scripts/upgrade-0.5.3-to-0.5.4_pgsql.sql
scripts/upgrade-0.5.4-to-0.5.5_mysql.sql
scripts/upgrade-0.5.4-to-0.5.5_pgsql.sql
search.php
session.php
settings.php
setup/index.php
setup/populate.php
timeout.php
vacation.php
validate.inc.php
welcome.php
Commit message: Prevention of SQL injection



Vulnerable code:

Fixed code:
*~
.*~
*bak
.*swp
*swp
*diff
*patch
Web-adm is copyright (C) 2002 by Luc de Louw <luc at delouw.ch>

Web-cyradm is released under the terms of the GNU General Public License,
see the text below.

Feel free to use the software at your own risk


------------------------------------------------------------------------------


		    GNU GENERAL PUBLIC LICENSE
		       Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

			    Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.)  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

  The precise terms and conditions for copying, distribution and
modification follow.

		    GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded.  In such case, this License incorporates
the limitation as if written in the body of this License.

  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number.  If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation.  If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.  Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.

			    NO WARRANTY

  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

		     END OF TERMS AND CONDITIONS

	    How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA


Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:

    Gnomovision version 69, Copyright (C) year name of author
    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  `Gnomovision' (which makes passes at compilers) written by James Hacker.

  <signature of Ty Coon>, 1 April 1989
  Ty Coon, President of Vice

This General Public License does not permit incorporating your program into
proprietary programs.  If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library.  If this is what you want to do, use the GNU Library General
Public License instead of this License.
2004-04-04 17:59  luc

	* doc/web-cyradm-redhat.txt:

	  Updated documentation

2004-04-04 17:57  luc

	* doc/html/: HTML.manifest, docbook.css:

	  Adding new files to documentation

2004-04-04 17:56  luc

	* doc/html/: installing-anti-spam.html, spam-and-virus-intro.html,
	  t1.html, stylesheet-images/caution.gif,
	  stylesheet-images/home.gif, stylesheet-images/important.gif,
	  stylesheet-images/next.gif, stylesheet-images/note.gif,
	  stylesheet-images/prev.gif, stylesheet-images/tip.gif,
	  stylesheet-images/toc-blank.gif, stylesheet-images/toc-minus.gif,
	  stylesheet-images/toc-plus.gif, stylesheet-images/up.gif,
	  stylesheet-images/warning.gif:

	  Adding new documentation files

2004-04-04 17:54  luc

	* doc/html/: cyrus-config.html, faq.html, index.html, install.html,
	  moreinfo.html, mysql-config.html, pam-config.html,
	  postfix-config.html, tech.html, test.html,
	  web-cyradm-config.html:

	  Updated documentation

2004-04-04 17:50  luc

	* doc/Postfix-Cyrus-Web-cyradm-HOWTO.txt:

	  Updated documentation

2004-04-01 01:14  luc

	* locale/it/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Corrected italian translation (Roberto Capancioni)

2004-03-30 20:11  luc

	* scripts/upgrade-0.5.3-to-0.5.4_mysql.sql:

	  corrected some index and key problems

2004-03-22 00:21  luc

	* editadminuser.php:

	  Fixing bug #8156 Missing line in .po files

2004-03-22 00:06  luc

	* validate.inc.php:

	  Makeing web-cyradm compatible with PEAR::DB 1.6.1

2004-03-21 22:07  luc

	* session.php, timeout.php:

	  Fixed i18n bug in timeout

2004-03-21 21:28  luc

	* footer.inc.php:

	  Updated copyright notice

2004-03-21 20:17  luc

	* adminuser.php:

	  Fixed bug #6894: error in paging link for administrator

2004-03-21 20:02  luc

	* change_password.php:

	  Report successful change of the password

2004-03-21 19:40  luc

	* auth.inc.php, validate.inc.php:

	  cosmetical changes

2004-03-16 00:24  luc

	* lib/nls.php:

	  Added credits for Anders Norrbring

2004-03-16 00:20  luc

	* config/conf.php.dist:

	  Add list of reserved Emailadreses

2004-03-16 00:18  luc

	* validate.inc.php:

	  Make reserved Emails available for all needed cases

2004-03-15 23:54  luc

	* validate.inc.php:

	  Wuergaround: Deny reserved email adresses

2004-03-15 23:53  luc

	* index.php:

	  If DEFAULTLANG not found in config, try to get a alias for it

2004-03-15 22:41  luc

	* locale/sv/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Updated swedish translation (Anders Norrbring)

2004-03-15 22:22  luc

	* login.php:

	  Added entry »select language« to select box if no know language can
	  be set

2004-03-11 20:11  luc

	* lib/nls.php:

	  Corrected error in nb_NO

2004-03-11 19:56  luc

	* lib/nls.php, locale/en/LC_MESSAGES/web-cyradm.mo,
	  locale/en/LC_MESSAGES/web-cyradm.po:

	  Merge from HEAD

2004-03-11 19:45  luc

	* lib/nls.php, locale/en/LC_MESSAGES/web-cyradm.mo,
	  locale/en/LC_MESSAGES/web-cyradm.po:

	  Added english translation (Michael Muenz)

2004-01-14 23:16  luc

	* deleteadminuser.php:

	  Consmetical changes

2004-01-14 23:11  luc

	* change_password.php:

	  Changed comment

2004-01-14 23:01  luc

	* deletealias.php, deleteemail.php, editemail.php, newemail.php:

	  Cosmetical changes

2004-01-14 22:07  luc

	* deleteaccount.php:

	  Log entries for the acount will now also be deleted

2004-01-14 21:40  luc

	* logout.php:

	  correct the huge fonts to standart size

2004-01-14 21:39  luc

	* test.php:

	  Does not work, will be implemented again later

2004-01-14 21:22  luc

	* auth.inc.php, failed.php:

	  Error message on failed login appears again

2004-01-14 21:04  luc

	* login.php:

	  Corrected JavaScript Bug which prevented Language selection when
	  fields are filled in

2003-11-30 21:33  luc

	* config/conf.php.dist:

	  Changed Version to rc3

2003-11-30 21:32  luc

	* config/conf.php.dist:

	  Changed version to rc3

2003-11-30 16:30  luc

	* locale/teamnames:

	  Merge from 0.5.4

2003-11-30 16:29  luc

	* locale/teamnames:

	  Currected alias for norwegian

2003-11-30 15:48  luc

	* locale/teamnames:

	  Merge from 0.5.4 branch

2003-11-30 15:47  luc

	* locale/teamnames:

	  Added Norwegian

2003-11-30 15:43  luc

	* lib/nls.php:

	  Merge from HEAD

2003-11-30 14:23  luc

	* locale/no/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  merge from HEAD

2003-11-30 14:22  luc

	* locale/teamnames:

	  Added teamnames for KDE-like translation stats

2003-11-30 13:13  luc

	* search.php:

	  Merge from 0.5.4 branch

2003-11-30 12:59  luc

	* locale/teamnames:

	  Added for processing KDE-like translation stats

2003-11-30 12:58  luc

	* locale/no/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Added Norwegian Translation (Dan Sveen Olsen)

2003-11-30 12:57  luc

	* lib/nls.php:

	  Added Norwegian translation

2003-11-17 08:50  karesz

	* forwardaccount.php: Fix for not being able to remove forwards
	  from a mailbox.

2003-10-24 13:55  luc

	* search.php:

	  Added missing action fields from browseaccounts.php

2003-10-20 23:42  luc

	* locale/fr/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Minor bugs in french translation (Raphaël Jeudi)

2003-10-19 19:58  luc

	* scripts/upgrade-0.5.3-to-0.5.4_pgsql.sql:

	  Merge from HEAD

2003-10-19 19:57  luc

	* scripts/upgrade-0.5.3-to-0.5.4_pgsql.sql:

	  Added PostgreSQL upgrade script (Philippe Amelant)

2003-10-19 19:17  luc

	* locale/fr/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Updated french translation (Raphaël Jeudi)

2003-10-19 19:08  luc

	* locale/sl/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Adding slowenian translation

2003-10-19 19:06  luc

	* aliases.php, lib/nls.php: [no log message]

2003-10-19 19:05  luc

	* locale/es/LC_MESSAGES/web-cyradm.mo,
	  locale/es/LC_MESSAGES/web-cyradm.po, aliases.php, lib/nls.php:

	  Merge from 0.5.4 branch

2003-10-19 19:04  luc

	* locale/es/LC_MESSAGES/: web-cyradm.po, web-cyradm.mo:

	  Updated spanish translation

2003-10-19 19:02  luc

	* locale/sl/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Added slowenian translation (Gregor Odlazek)

2003-10-19 19:00  luc

	* locale/ru/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  merge from 0.5.4 branch

2003-10-19 19:00  luc

	* locale/ru/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Updated russian translation (Andrey Kolbasenko)

2003-10-04 16:41  luc

	* locale/es/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Merge from 0.5.4 branch

2003-10-04 16:40  luc

	* locale/es/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Updated spanish translation (Rafael Santamaria)

2003-09-14 16:22  luc

	* newdomain.php, scripts/create_mysql.sql:

	  Merge from 0.5.4 branch

2003-09-14 16:11  luc

	* scripts/create_mysql.sql:

	  Alias not UNIQUE anymore

2003-09-14 15:42  luc

	* newdomain.php:

	  Deleted debug print

2003-09-14 15:40  luc

	* scripts/create_mysql.sql:

	  Should work better now

2003-09-14 15:35  luc

	* scripts/create_mysql.sql:

	  hmmm....

2003-09-14 15:32  luc

	* scripts/create_mysql.sql:

	  Added freenames

2003-09-14 15:30  luc

	* scripts/create_mysql.sql:

	  corrected typo

2003-09-14 15:29  luc

	* scripts/create_mysql.sql:

	  Added freenames to create

2003-09-05 01:27  luc

	* lib/nls.php:

	  Merge from 0.5.4 branch

2003-09-05 01:25  luc

	* lib/nls.php:

	  Changes translator credits

2003-09-04 19:37  luc

	* locale/de/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Merge from 0.5.4 branch

2003-09-04 19:36  luc

	* locale/de/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Updated german translation

2003-09-04 19:16  luc

	* locale/cs/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Merge from 0.5.4 branch

2003-09-04 19:16  luc

	* locale/cs/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Updated czech translation

2003-09-04 19:15  luc

	* locale/pt/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  merge from 0.5.4 branch

2003-09-04 19:14  luc

	* locale/pt/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Updated portuguese translation

2003-09-04 19:12  luc

	* locale/pl/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Updated polish translation

2003-09-04 19:11  luc

	* locale/: tr/LC_MESSAGES/web-cyradm.mo,
	  tr/LC_MESSAGES/web-cyradm.po, pl/LC_MESSAGES/web-cyradm.mo,
	  pl/LC_MESSAGES/web-cyradm.po:

	  Merge from 0.5.4 branch

2003-09-04 19:10  luc

	* locale/tr/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Updated turkish translation

2003-08-22 20:48  luc

	* locale/hu/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Merge from 0.5.4

2003-08-22 20:45  luc

	* locale/: zh_CN/LC_MESSAGES/web-cyradm.mo,
	  zh_CN/LC_MESSAGES/web-cyradm.po, nl/LC_MESSAGES/web-cyradm.mo,
	  nl/LC_MESSAGES/web-cyradm.po:

	  Merge from 0.5.4

2003-08-22 20:43  luc

	* locale/: hu/LC_MESSAGES/web-cyradm.mo,
	  hu/LC_MESSAGES/web-cyradm.po, nl/LC_MESSAGES/web-cyradm.mo,
	  nl/LC_MESSAGES/web-cyradm.po, zh_CN/LC_MESSAGES/web-cyradm.mo,
	  zh_CN/LC_MESSAGES/web-cyradm.po:

	  Updated locales

2003-08-14 20:57  luc

	* validate.inc.php, newaccount.php:

	  Merge from 0.5.4 branch

2003-08-14 20:56  luc

	* newaccount.php, validate.inc.php:

	  New quotahandling, Superusers can override MaxQuota. Domainadmins
	  are properly restricted now

2003-08-14 04:23  luc

	* locale/sv/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Merge from 0.5.4

2003-08-14 04:22  luc

	* locale/sv/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Updated swedish translation (Fredrik Rambris)

2003-08-11 01:17  luc

	* index.php:

	  Merge from 0.5.4

2003-08-11 01:16  luc

	* index.php:

	  Added search to functions allowed without valid domain selection

2003-08-10 18:59  luc

	* scripts/create_mysql.sql:

	  Merges from 0.5.4

2003-08-10 18:58  luc

	* scripts/create_mysql.sql:

	  Changed username to 255 Chars

2003-08-10 17:53  luc

	* footer.inc.php, menu.inc.php, config/conf.php.dist:

	  Merges from 0.5.4

2003-08-10 17:50  luc

	* locale/templates/web-cyradm.pot:

	  Merge from 0.5.4

2003-08-10 17:47  luc

	* locale/: ro/LC_MESSAGES/web-cyradm.mo,
	  ro/LC_MESSAGES/web-cyradm.po, ru/LC_MESSAGES/web-cyradm.mo,
	  ru/LC_MESSAGES/web-cyradm.po, sv/LC_MESSAGES/web-cyradm.mo,
	  sv/LC_MESSAGES/web-cyradm.po, tr/LC_MESSAGES/web-cyradm.mo,
	  tr/LC_MESSAGES/web-cyradm.po, zh_CN/LC_MESSAGES/web-cyradm.mo,
	  zh_CN/LC_MESSAGES/web-cyradm.po:

	  Merge from 0.5.4

2003-08-10 17:43  luc

	* locale/: es/LC_MESSAGES/web-cyradm.mo,
	  es/LC_MESSAGES/web-cyradm.po, fr/LC_MESSAGES/web-cyradm.mo,
	  fr/LC_MESSAGES/web-cyradm.po, hu/LC_MESSAGES/web-cyradm.mo,
	  hu/LC_MESSAGES/web-cyradm.po, it/LC_MESSAGES/web-cyradm.mo,
	  it/LC_MESSAGES/web-cyradm.po, nl/LC_MESSAGES/web-cyradm.mo,
	  nl/LC_MESSAGES/web-cyradm.po, pl/LC_MESSAGES/web-cyradm.mo,
	  pl/LC_MESSAGES/web-cyradm.po:

	  Merge from 0.5.4

2003-08-10 17:41  luc

	* locale/cs/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Merge from 0.5.4 branch

2003-08-10 17:40  luc

	* locale/: pt/LC_MESSAGES/web-cyradm.mo,
	  pt/LC_MESSAGES/web-cyradm.po, da/LC_MESSAGES/web-cyradm.mo,
	  da/LC_MESSAGES/web-cyradm.po, de/LC_MESSAGES/web-cyradm.mo,
	  de/LC_MESSAGES/web-cyradm.po:

	  Merge from 0.5.4

2003-08-10 17:37  luc

	* menu.inc.php, locale/cs/LC_MESSAGES/web-cyradm.mo,
	  locale/cs/LC_MESSAGES/web-cyradm.po,
	  locale/da/LC_MESSAGES/web-cyradm.mo,
	  locale/da/LC_MESSAGES/web-cyradm.po,
	  locale/de/LC_MESSAGES/web-cyradm.mo,
	  locale/de/LC_MESSAGES/web-cyradm.po,
	  locale/es/LC_MESSAGES/web-cyradm.mo,
	  locale/es/LC_MESSAGES/web-cyradm.po,
	  locale/fr/LC_MESSAGES/web-cyradm.mo,
	  locale/fr/LC_MESSAGES/web-cyradm.po,
	  locale/hu/LC_MESSAGES/web-cyradm.mo,
	  locale/hu/LC_MESSAGES/web-cyradm.po,
	  locale/it/LC_MESSAGES/web-cyradm.mo,
	  locale/it/LC_MESSAGES/web-cyradm.po,
	  locale/nl/LC_MESSAGES/web-cyradm.mo,
	  locale/nl/LC_MESSAGES/web-cyradm.po,
	  locale/pl/LC_MESSAGES/web-cyradm.mo,
	  locale/pl/LC_MESSAGES/web-cyradm.po,
	  locale/pt/LC_MESSAGES/web-cyradm.mo,
	  locale/pt/LC_MESSAGES/web-cyradm.po,
	  locale/ro/LC_MESSAGES/web-cyradm.mo,
	  locale/ro/LC_MESSAGES/web-cyradm.po,
	  locale/ru/LC_MESSAGES/web-cyradm.mo,
	  locale/ru/LC_MESSAGES/web-cyradm.po,
	  locale/sv/LC_MESSAGES/web-cyradm.mo,
	  locale/sv/LC_MESSAGES/web-cyradm.po,
	  locale/templates/web-cyradm.pot,
	  locale/tr/LC_MESSAGES/web-cyradm.mo,
	  locale/tr/LC_MESSAGES/web-cyradm.po,
	  locale/zh_CN/LC_MESSAGES/web-cyradm.mo,
	  locale/zh_CN/LC_MESSAGES/web-cyradm.po:

	  Merged all translation with the new POT

2003-08-10 17:36  luc

	* scripts/pot2po:

	  Merge from 0.5.4 branch

2003-08-10 17:36  luc

	* scripts/pot2po:

	  Adding script to existing translations with a new POT and creates
	  the corrensponding MO

2003-08-10 15:16  luc

	* footer.inc.php, config/conf.php.dist:

	  Displaying version of web-cyradm in the footer

2003-08-09 19:00  luc

	* lib/sieve-php.lib:

	  Merges from 0.5.4 branch

2003-08-09 18:58  luc

	* lib/crypto.php:

	  Merge from 0.5.4 branch

2003-08-09 18:56  luc

	* config/conf.php.dist:

	  Removed Id Tag

2003-08-09 18:52  luc

	* lib/crypto.php:

	  removed Id Tag

2003-08-09 18:51  luc

	* config/conf.php.dist:

	  Removed Id Tag

2003-08-09 18:50  luc

	* index.php:

	  Merge from 0.5.4 branch

2003-08-09 18:49  luc

	* lib/sieve-php.lib:

	  Remove Id tag

2003-08-09 18:44  luc

	* adminuser.php, deleteadminuser.php, editadminuser.php, index.php,
	  newadminuser.php, validate.inc.php:

	  Merges from 0.5.4 branch

2003-08-09 18:41  luc

	* adminuser.php, deleteadminuser.php, editadminuser.php, index.php,
	  newadminuser.php, validate.inc.php:

	  changed sensitive pages to POST instead if GET, various small
	  bugfixes

2003-08-09 18:15  luc

	* lib/crypto.php:

	  Merge from 0.5.4 branch

2003-08-09 18:14  luc

	* lib/crypto.php:

	  Better random salt in crypt() makes the job better

2003-08-08 18:57  luc

	* validate.inc.php:

	  Merge from 0.5.4 branch

2003-08-08 18:56  luc

	* validate.inc.php:

	  Added resp_domain to allowed _getvars

2003-08-08 06:56  luc

	* validate.inc.php:

	  Merge from 0.5.4 branch

2003-08-08 06:55  luc

	* validate.inc.php:

	  Added newdomain to _getvars

2003-08-07 22:55  luc

	* adminuser.php, aliases.php, auth.inc.php, browse.php,
	  browseaccounts.php, catchall.php, change_password.php,
	  delete_catchall.php, deleteaccount.php, deleteadminuser.php,
	  deletealias.php, deletedomain.php, deleteemail.php,
	  editaccount.php, editadminuser.php, editalias.php,
	  editdomain.php, editemail.php, failed.php, footer.inc.php,
	  forwardaccount.php, forwardalias.php, header.inc.php, index.php,
	  login.php, logout.php, menu.inc.php, newaccount.php,
	  newadminuser.php, newalias.php, newdomain.php, newemail.php,
	  search.php, session.php, setquota.php, timeout.php, vacation.php,
	  validate.inc.php, welcome.php, config/conf.php.dist,
	  lib/crypto.php, lib/sieve-php.lib, scripts/create_pgsql.sql:

	  Merges from 0.5.4 branch

2003-08-07 22:51  luc

	* editadminuser.php:

	  Enhanced adminuser administration

2003-08-05 21:50  luc

	* newalias.php:

	  re-added security feature

2003-08-05 21:46  luc

	* newalias.php:

	  Minor changes (Martynas Bieliauskas)

2003-08-05 21:24  luc

	* lib/sieve-php.lib:

	  Now works with short_open_tag = off (Lorenzo Luconi Trombacchi)

2003-08-05 21:19  luc

	* scripts/create_pgsql.sql:

	  Solved the PostgreSQL-only problem on transport

2003-08-05 21:03  luc

	* adminuser.php, aliases.php, auth.inc.php, browse.php,
	  browseaccounts.php, catchall.php, change_password.php,
	  delete_catchall.php, deleteaccount.php, deleteadminuser.php,
	  deletealias.php, deletedomain.php, deleteemail.php,
	  editaccount.php, editadminuser.php, editalias.php,
	  editdomain.php, editemail.php, failed.php, footer.inc.php,
	  forwardaccount.php, forwardalias.php, header.inc.php, index.php,
	  login.php, logout.php, menu.inc.php, newaccount.php,
	  newadminuser.php, newalias.php, newdomain.php, newemail.php,
	  search.php, session.php, setquota.php, timeout.php, vacation.php,
	  validate.inc.php, welcome.php:

	  Added new security feature, only referer WC_BASE/index.php is
	  allowed to call subsequent pages

2003-07-17 01:34  luc

	* scripts/create_pgsql.sql:

	  Merge from 0.5.4 branch

2003-07-17 01:00  luc

	* scripts/create_pgsql.sql:

	  Updated PostgreSQL Script (Andrew Koros)

2003-07-16 01:45  luc

	* README, catchall.php, index.php, validate.inc.php,
	  lib/crypto.php:

	  Merges from 0.5.4 branch

2003-07-16 01:42  luc

	* catchall.php, delete_catchall.php, index.php, validate.inc.php:

	  Added functionality to delete the catchall functionality from a
	  account

2003-07-16 01:41  luc

	* delete_catchall.php:

	  Adding delete_catchall

2003-07-15 17:48  luc

	* config/conf.php.dist, lib/crypto.php: [no log message]

2003-07-15 17:48  luc

	* change_password.php, index.php, newaccount.php, newdomain.php:

	  Merges from 0.5.4 branch

2003-07-15 17:45  luc

	* change_password.php, newaccount.php:

	  Check if password and confirmed password matches works again

2003-07-15 17:09  luc

	* newdomain.php:

	  Fixed bug: freeaddress was alsways empty

2003-07-15 14:49  luc

	* index.php:

	  Index.php now takes care about choosen domain again

2003-07-15 14:24  luc

	* locale/cs/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Merge czech language from HEAD

2003-07-15 14:23  luc

	* locale/cs/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Added czech language

2003-07-15 14:21  luc

	* locale/cs/LC_MESSAGES/web-cyradm.po:

	  remove

2003-07-15 14:20  luc

	* locale/cs/LC_MESSAGES/web-cyradm.po:

	  Added cs language

2003-07-15 14:19  luc

	* locale/cs/LC_MESSAGES/web-cyradm.mo:

	  remove temporary

2003-07-15 14:19  luc

	* locale/cs/LC_MESSAGES/web-cyradm.po:

	  Remove temporary

2003-07-15 14:16  luc

	* browseaccounts.php, change_password.php, editaccount.php,
	  forwardaccount.php, index.php, newaccount.php, validate.inc.php,
	  lib/crypto.php, lib/nls.php:

	  Merges from 0.5.4 branch

2003-07-15 14:06  luc

	* index.php, validate.inc.php:

	  Fixed typo which caused not register POSTVARS  correctly

2003-07-15 14:03  luc

	* lib/nls.php, locale/cs/LC_MESSAGES/web-cyradm.mo,
	  locale/cs/LC_MESSAGES/web-cyradm.po:

	  Added czech language (Robert Kania)

2003-07-15 01:06  luc

	* change_password.php, editaccount.php, index.php, newaccount.php,
	  validate.inc.php:

	  Switched password related forms from GET to POST to improve security

2003-07-15 01:05  luc

	* browseaccounts.php:

	  restricting query to not return forwards as email adresses

2003-07-14 22:32  luc

	* forwardaccount.php:

	  Fixed forwardaccount (Martynas Bieliauskas)

2003-07-10 20:37  luc

	* validate.inc.php:

	  Merge from 0.5.4 branch

2003-07-10 20:34  luc

	* validate.inc.php:

	  Security related: Improved input validation

2003-07-08 19:58  luc

	* validate.inc.php, config/conf.php.dist:

	  Merges from 0.5.4 branch

2003-07-08 19:56  luc

	* validate.inc.php:

	  Fixed bug for vacation_text not in allowed get_vars

2003-07-05 15:36  luc

	* config/conf.php.dist:

	  fixed typo

2003-07-05 15:23  luc

	* change_password.php, editadminuser.php, newaccount.php,
	  newadminuser.php, config/conf.php.dist, lib/crypto.php:

	  Merges from 0.5.4 branch

2003-07-05 15:22  luc

	* change_password.php, editadminuser.php, newaccount.php,
	  newadminuser.php, config/conf.php.dist:

	  Crypto enhancements (Martin Matuska)

2003-07-05 15:18  luc

	* lib/crypto.php:

	  MySQL enhancements (Martin Matuska)

2003-06-16 21:28  luc

	* locale/pt/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Re-added portugueste translation

2003-06-16 21:26  luc

	* locale/pt/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  remove pt translation due to merging conflicts

2003-06-16 21:23  luc

	* locale/pt/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Another update for the portuguese translation (Michelle Ribeiro)

2003-06-16 20:37  luc

	* validate.inc.php, locale/pt/LC_MESSAGES/web-cyradm.mo,
	  locale/pt/LC_MESSAGES/web-cyradm.po:

	  Updated portuguese translation

2003-06-16 20:35  luc

	* locale/pt/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  updated portuguese translation

2003-06-02 08:56  karesz

	* validate.inc.php: removed erronous debug code.

2003-05-30 21:36  luc

	* menu.inc.php, validate.inc.php, lib/nls.php,
	  locale/sv/LC_MESSAGES/web-cyradm.mo,
	  locale/sv/LC_MESSAGES/web-cyradm.po:

	  Merges from 0.5.4 branch

2003-05-30 20:38  luc

	* lib/nls.php:

	  Updated translator information

2003-05-30 20:35  luc

	* locale/sv/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Updated swedish translation (Fredrik Rambris)

2003-05-29 21:12  luc

	* lib/nls.php:

	  Added pseudo-english-translation for the dropdownlist on login

2003-05-29 21:00  luc

	* menu.inc.php:

	  Fixed display error in M$ Explorer

2003-05-29 20:15  luc

	* validate.inc.php:

	  Fixed important security fix (never released version) added die() in
	  validate.inc.php

2003-05-29 19:49  luc

	* locale/de/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  updated de translation (merge from 0.5.4)

2003-05-29 19:47  luc

	* locale/de/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Updated de translation

2003-05-29 17:39  luc

	* README:

	  Updated version

2003-05-29 17:38  luc

	* README:

	  Added version

2003-05-29 17:35  luc

	* ChangeLog:

	  updated changelog

2003-05-29 17:10  luc

	* locale/: de/LC_MESSAGES/web-cyradm.mo,
	  de/LC_MESSAGES/web-cyradm.po, es/LC_MESSAGES/web-cyradm.mo,
	  es/LC_MESSAGES/web-cyradm.po, fr/LC_MESSAGES/web-cyradm.mo,
	  fr/LC_MESSAGES/web-cyradm.po, hu/LC_MESSAGES/web-cyradm.mo,
	  hu/LC_MESSAGES/web-cyradm.po, it/LC_MESSAGES/web-cyradm.mo,
	  it/LC_MESSAGES/web-cyradm.po, nl/LC_MESSAGES/web-cyradm.mo,
	  nl/LC_MESSAGES/web-cyradm.po, pl/LC_MESSAGES/web-cyradm.mo,
	  pl/LC_MESSAGES/web-cyradm.po, pt/LC_MESSAGES/web-cyradm.mo,
	  pt/LC_MESSAGES/web-cyradm.po, ro/LC_MESSAGES/web-cyradm.mo,
	  ro/LC_MESSAGES/web-cyradm.po, ru/LC_MESSAGES/web-cyradm.mo,
	  ru/LC_MESSAGES/web-cyradm.po, sv/LC_MESSAGES/web-cyradm.mo,
	  sv/LC_MESSAGES/web-cyradm.po, templates/web-cyradm.pot,
	  tr/LC_MESSAGES/web-cyradm.mo, tr/LC_MESSAGES/web-cyradm.po,
	  zh_CN/LC_MESSAGES/web-cyradm.mo, zh_CN/LC_MESSAGES/web-cyradm.po:

	  Updated template and merged all languages

2003-05-29 17:10  luc

	* deletealias.php, deleteemail.php, editalias.php, menu.inc.php,
	  setquota.php:

	  Minor i18n bugs fixed

2003-05-29 15:55  luc

	* login.php, lib/nls.php:

	  Added language description to login (updated nls.php from horde)

2003-05-29 15:41  luc

	* login.php:

	  Improvement on language selection

2003-05-29 15:17  luc

	* index.php, login.php:

	  Added language selection on login page

2003-05-29 14:07  luc

	* locale/pt/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Fixed pt translation

2003-05-29 14:06  luc

	* auth.inc.php, editalias.php, failed.php, index.php, session.php,
	  setquota.php, timeout.php, validate.inc.php:

	  Corrected i18n strings, fixed session timeout

2003-05-26 20:01  luc

	* locale/de/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Some typos

2003-05-26 20:00  luc

	* locale/templates/web-cyradm.pot:

	  Added some button  text manually

2003-05-26 19:56  luc

	* locale/de/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Update de translation

2003-05-26 19:05  luc

	* locale/pt/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Updated the merged translation for pt

2003-05-26 11:35  karesz

	* editalias.php: Postgres fix.

2003-05-26 11:12  karesz

	* browseaccounts.php, search.php: Postgres fix.

2003-05-26 11:09  karesz

	* change_password.php, newaccount.php: Modified crypted password
	  generation so that it now uses crypto.php's password class instea d
	  of mysql encrypt function.  From now on it is possible to use
	  crypted passwords with postgres too.

2003-05-25 23:25  luc

	* locale/pt/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Next try to get pt translation online

2003-05-25 23:18  luc

	* lib/nls.php:

	  Updated translator credit

2003-05-25 22:52  luc

	* locale/de/LC_MESSAGES/web-cyradm.mo:

	  Updated forgotten MO

2003-05-25 22:47  luc

	* menu.inc.php, locale/de/LC_MESSAGES/web-cyradm.po,
	  locale/pt/LC_MESSAGES/web-cyradm.mo,
	  locale/pt/LC_MESSAGES/web-cyradm.po,
	  locale/templates/web-cyradm.pot:

	  Fixed typo in i18n string and updated POT, pt and de POs

2003-05-25 22:39  luc

	* locale/pt/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Updated portuguese translation (Michelle Ribeiro)

2003-05-25 01:23  luc

	* locale/pt/LC_MESSAGES/web-cyradm.po:

	  Merged portuguese translation with new template

2003-05-25 01:22  luc

	* locale/de/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Updated german translation

2003-05-25 01:21  luc

	* locale/templates/web-cyradm.pot:

	  Updated template

2003-05-25 00:53  luc

	* scripts/php2pot:

	  Modified keyword

2003-05-25 00:43  luc

	* scripts/php2pot:

	  Fixed typo

2003-05-25 00:39  luc

	* adminuser.php, browseaccounts.php, catchall.php,
	  deleteaccount.php, deleteadminuser.php, deletedomain.php,
	  deleteemail.php, editaccount.php, editadminuser.php,
	  editdomain.php, editemail.php, failed.php, forwardaccount.php,
	  forwardalias.php, logout.php, menu.inc.php, newaccount.php,
	  newadminuser.php, newalias.php, newdomain.php, newemail.php,
	  search.php, setquota.php, timeout.php, vacation.php:

	  Deleted not needed cr to get less errors with xgettext

2003-05-25 00:38  luc

	* scripts/php2pot:

	  Initail commit of the script that fetches the i18n strings from the
	  source

2003-05-24 23:04  luc

	* locale/pt/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Corrected typos in portuguese translation (Michelle Ribeiro)

2003-05-24 21:38  luc

	* locale/pt/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Corrected portuguese translation (Michelle Ribeiro)

2003-05-23 11:32  luc

	* config/conf.php.dist:

	  corrected typo in comments

2003-05-22 08:49  karesz

	* newdomain.php: fixed php complaining freeaddress not defined

2003-05-21 08:51  karesz

	* newaccount.php: added check to see if there's a duplicate
	  username

2003-05-20 11:24  karesz

	* validate.inc.php: commented out debug print message

2003-05-20 11:23  karesz

	* adminuser.php: Now lists domains for domain admins on separate
	  lines.  Fixed loop for retrieving domain names.

2003-05-20 09:44  karesz

	* search.php: Modified alias search so that it works now as domain
	  master too.  And now alias list does'nt include forwards.

2003-05-19 20:41  luc

	* lib/nls.php, locale/es/LC_MESSAGES/web-cyradm.mo,
	  locale/es/LC_MESSAGES/web-cyradm.po:

	  Added spanish translation (Rafael Santamaria)

2003-05-18 15:23  luc

	* index.php, session.php, timeout.php, validate.inc.php:

	  Overring $LANG works again

2003-05-18 14:11  luc

	* aliases.php, editalias.php, header.inc.php, search.php: [no log
	  message]

2003-05-17 11:53  luc

	* browseaccounts.php, editaccount.php:

	  Minor cosmetical changes

2003-05-17 11:52  luc

	* browseaccounts.php:

	  Minor costmetical changes

2003-05-17 11:40  luc

	* search.php:

	  Minor i18n corrections

2003-05-16 19:31  luc

	* index.php:

	  Allow to search without selecting a domain first

2003-05-16 19:27  luc

	* browseaccounts.php, index.php, menu.inc.php, search.php,
	  validate.inc.php:

	  Reworked search function, Display of forwards in browseaccounts
	  (Karajz Károly)

2003-05-15 20:16  luc

	* lib/nls.php, locale/nl/LC_MESSAGES/web-cyradm.mo,
	  locale/nl/LC_MESSAGES/web-cyradm.po:

	  Added dutch translation (Carlo Landmeter)

2003-05-14 22:40  luc

	* footer.inc.php, header.inc.php, lib/nls.php:

	  Added automatic credits for translators

2003-05-14 20:56  luc

	* config/conf.php.dist:

	  Added explenation of error settings and changed default to E_ERROR

2003-05-14 19:53  luc

	* editaccount.php, editdomain.php, editemail.php, forwardalias.php,
	  newaccount.php, newdomain.php, newemail.php, vacation.php,
	  validate.inc.php, scripts/upgrade-0.5.3-to-0.5.4_mysql.sql:

	  Enhanced freenames support (Karajz Károly)

2003-05-14 11:51  mmuenz

	* doc/web-cyradm-redhat.txt: Little changes to software versions in
	  the RedHat Guide

2003-05-07 21:38  luc

	* footer.inc.php:

	  Changed copyright notice

2003-05-07 21:31  luc

	* failed.php:

	  Bugfix for inclusion of the config file (Abdul Sharif)

2003-05-07 20:29  luc

	* browseaccounts.php:

	  Fixed typo (cosmetic)

2003-05-07 20:29  luc

	* browseaccounts.php:

	  Added displaying of forwards (Karajz Károly)

2003-05-07 20:07  luc

	* forwardaccount.php:

	  Fix for keep local copy (Karajz Károly)

2003-05-04 16:24  luc

	* config/.cvsignore:

	  Added .cvsignore to protect config

2003-05-04 16:24  luc

	* config.inc.php-dist:

	  deleted old config.inc.php-dist

2003-05-04 16:23  luc

	* config/conf.php.dist:

	  Moved config file to config directory

2003-05-04 16:22  luc

	* .cvsignore, README, adminuser.php, aliases.php, auth.inc.php,
	  browse.php, browseaccounts.php, catchall.php,
	  change_password.php, deleteaccount.php, deleteadminuser.php,
	  deletealias.php, deletedomain.php, deleteemail.php,
	  editaccount.php, editadminuser.php, editalias.php,
	  editdomain.php, editemail.php, failed.php, footer.inc.php,
	  forwardaccount.php, forwardalias.php, header.inc.php, index.php,
	  login.php, logout.php, menu.inc.php, migrate.php-dist,
	  newaccount.php, newadminuser.php, newalias.php, newdomain.php,
	  newemail.php, search.php, setquota.php, timeout.php,
	  vacation.php, validate.inc.php, welcome.php,
	  doc/Postfix-Cyrus-Web-cyradm-HOWTO.txt, lib/crypto.php,
	  lib/cyradm.php, lib/sieve-php.lib:

	  Major code cleanup by Alexander Skwar: indention the code,
	  customizable error-reporting, added WC_BASE con stant,

2003-05-02 01:11  luc

	* aliases.php, deletealias.php, editalias.php, newalias.php:

	  Added i18n support to David Ritchey's code

2003-05-01 23:55  luc

	* browse.php, index.php, menu.inc.php, css/web-cyradm.css,
	  aliases.php, deletealias.php, editalias.php, newalias.php:

	  Added support for accountless emailadresses (David Ritchey)

2003-04-22 23:22  luc

	* header.inc.php, index.php, lib/nls.php:

	  Enhancements to charset detection by browsers

2003-04-19 00:48  luc

	* header.inc.php:

	  Corrected charset types for autodetection by browsers

2003-04-19 00:48  luc

	* locale/pl/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Updated Polish translation (Przemyslaw "Primo" Witek)

2003-04-16 22:04  luc

	* adminuser.php:

	  Deleted debug code

2003-04-12 20:57  luc

	* adminuser.php, browse.php, editadminuser.php, index.php,
	  newadminuser.php, validate.inc.php:

	  Now admins can own more than one domain

2003-04-12 16:41  luc

	* auth.inc.php, index.php, login.php, logout.php, session.php,
	  test.php:

	  Enhancements of session handling (Alexander Skwar)

2003-04-12 16:40  luc

	* forwardaccount.php:

	  Allow more that one adress as destination (Alexander Skwar)

2003-04-11 11:47  luc

	* validate.inc.php:

	  Corrected regex for email validation (Alexander Skwar)

2003-04-10 22:13  luc

	* locale/pl/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Updated polish translation (Przemyslaw \"Primo\" Witek)

2003-04-10 21:56  luc

	* forwardalias.php:

	  Added support for forwardlists (Alexander Skwar)

2003-04-10 21:56  luc

	* browseaccounts.php:

	  Better errorhandling when using postgresql

2003-04-03 11:58  luc

	* lib/cyradm.php:

	  Added renamemailbox

2003-04-03 06:39  luc

	* change_password.php, lib/crypto.php:

	  removed debugging code

2003-04-03 06:38  luc

	* scripts/create_mysql.sql:

	  Added last login display feature

2003-04-03 06:25  luc

	* change_password.php, newaccount.php:

	  re-enables mysql crypto for accountusers

2003-04-03 06:21  luc

	* editadminuser.php, newadminuser.php, lib/crypto.php:

	  Re-enabled mysql crypto for admins

2003-04-03 05:19  luc

	* footer.inc.php:

	  cosmetics

2003-04-03 05:02  luc

	* browseaccounts.php, scripts/upgrade-0.5.3-to-0.5.4_mysql.sql:

	  Added lastlogin feature

2003-04-03 04:43  luc

	* validate.inc.php:

	  Fixed typo

2003-04-02 18:06  mmuenz

	* index.php, menu.inc.php, newdomain.php: i18n Support improvements

2003-03-30 23:15  luc

	* locale/: ro/LC_MESSAGES/web-cyradm.mo,
	  ru/LC_MESSAGES/web-cyradm.mo:

	  Updated romanian ans russian translations

2003-03-30 23:12  luc

	* locale/: ro/LC_MESSAGES/web-cyradm.mo,
	  ro/LC_MESSAGES/web-cyradm.po, ru/LC_MESSAGES/web-cyradm.mo,
	  ru/LC_MESSAGES/web-cyradm.po:

	  Merges from 0.5.3-branch (updated for RO and RU locales)

2003-03-30 23:04  luc

	* locale/ro/LC_MESSAGES/web-cyradm.po:

	  Updated romanian translation (Catalin Boiangiu)

2003-03-30 23:02  luc

	* locale/ru/LC_MESSAGES/web-cyradm.po:

	  Updated russian translation (Denis Medvedev)

2003-03-27 13:12  luc

	* scripts/upgrade-0.5.3-to-0.5.4_mysql.sql:

	  Added update script for freenames in table domain

2003-03-27 00:31  luc

	* lib/crypto.php: [no log message]

2003-03-27 00:31  luc

	* lib/crypto.php:

	  Added ID

2003-03-26 23:58  luc

	* editdomain.php, newaccount.php, newdomain.php, validate.inc.php:

	  Added support for freeform usernames (Andreas Kreisl)

2003-03-26 23:36  luc

	* config.inc.php-dist:

	  Updated ID

2003-03-26 23:34  luc

	* config.inc.php-dist:

	  Added ID

2003-03-24 23:18  luc

	* ChangeLog:

	  Updated Changelog

2003-03-24 23:14  luc

	* doc/html/: install.html, tech.html:

	  Merges from 0.5.3-branch

2003-03-24 23:13  luc

	* INSTALL, deletedomain.php, editdomain.php, newadminuser.php,
	  doc/Postfix-Cyrus-Web-cyradm-HOWTO.txt,
	  doc/html/cyrus-config.html, doc/html/faq.html,
	  doc/html/index.html, doc/html/intro.html, doc/html/moreinfo.html,
	  doc/html/mysql-config.html, doc/html/pam-config.html,
	  doc/html/postfix-config.html, doc/html/test.html,
	  doc/html/web-cyradm-config.html:

	  Merges from release-0.5.3-branch

2003-03-24 23:01  luc

	* doc/html/cyrus-config.html, doc/html/faq.html,
	  doc/html/index.html, doc/html/install.html, doc/html/intro.html,
	  doc/html/moreinfo.html, doc/html/mysql-config.html,
	  doc/html/pam-config.html, doc/html/postfix-config.html,
	  doc/html/tech.html, doc/html/test.html,
	  doc/html/web-cyradm-config.html, INSTALL:

	  Updated documentation

2003-03-24 22:59  luc

	* doc/Postfix-Cyrus-Web-cyradm-HOWTO.txt:

	  Updated Documentation

2003-03-24 21:15  luc

	* newadminuser.php:

	  Correted wrong i18n string

2003-03-24 21:14  luc

	* editdomain.php:

	  Disabled change of prefix, will be implemented for cyrus 2.2 in rel
	  0.5.4

2003-03-24 21:13  luc

	* deletedomain.php:

	  Fixed the bug not displaying number of accounts to be deleted

2003-03-24 20:46  luc

	* deletedomain.php:

	  Fixed bug deleting adminuser, inserted javascript to clear current
	  domain

2003-03-24 19:40  luc

	* lib/crypto.php:

	  Deleted debug code

2003-03-24 19:36  luc

	* deletedomain.php:

	  Correting deletation of adminusers

2003-03-22 20:54  luc

	* locale/da/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Manual merge from 0.5.3-branch

2003-03-22 20:51  luc

	* locale/da/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Corrected typo in danish translation

2003-03-22 19:40  luc

	* lib/crypto.php:

	  Manual merge from 0.5.3-branch

2003-03-22 19:38  luc

	* adminuser.php, browse.php, browseaccounts.php, catchall.php,
	  change_password.php, deleteaccount.php, deleteadminuser.php,
	  deleteemail.php, editaccount.php, editadminuser.php,
	  editdomain.php, editemail.php, forwardaccount.php,
	  forwardalias.php, newaccount.php, newadminuser.php,
	  newdomain.php, newemail.php, search.php, vacation.php,
	  validate.inc.php, scripts/create_mysql.sql:

	  Merges from 0.5.3-branch

2003-03-22 19:34  luc

	* adminuser.php, browse.php, browseaccounts.php, catchall.php,
	  change_password.php, deleteaccount.php, deleteadminuser.php,
	  deleteemail.php, editaccount.php, editdomain.php, editemail.php,
	  forwardaccount.php, forwardalias.php, newaccount.php,
	  newadminuser.php, newdomain.php, newemail.php, search.php,
	  vacation.php, validate.inc.php, lib/crypto.php:

	  Improved Database error handling

2003-03-22 18:53  luc

	* scripts/create_mysql.sql:

	  Fixed Bug #16, added binary for case-casting

2003-03-22 18:42  luc

	* validate.inc.php:

	  Fixed Bug #12

2003-03-22 17:43  luc

	* editadminuser.php, validate.inc.php, lib/crypto.php:

	  Fixed bugs in adminuser update and passwd functions

2003-03-13 18:45  luc

	* locale/da/LC_MESSAGES/web-cyradm.mo:

	  Added again as binary

2003-03-13 18:43  luc

	* locale/da/LC_MESSAGES/web-cyradm.mo:

	  temorary remove

2003-03-13 18:34  luc

	* locale/da/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Merge from release-0_5_3-branch

2003-03-13 18:33  luc

	* locale/da/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Updated danish translation (Kenneth Wrang)

2003-03-12 23:30  luc

	* locale/fr/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Merge from release_0_5_3-branch

2003-03-12 23:29  luc

	* locale/fr/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Updated french translation (Raphael Jeudi)

2003-03-12 14:44  luc

	* locale/hu/LC_MESSAGES/web-cyradm.mo:

	  Last commit contained a corrupted file

2003-03-12 14:43  luc

	* locale/hu/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Merged from 0_5_3-branch

2003-03-12 14:27  luc

	* locale/hu/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Updated fuzzy entries

2003-03-12 13:40  luc

	* locale/hu/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Merged updated hugarian translation from 0_5_3-branch

2003-03-12 13:33  luc

	* locale/hu/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  removed fuzzy

2003-03-12 13:20  luc

	* locale/hu/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Updated hugarian translation (Zoltan Levardy)

2003-03-09 00:04  luc

	* editadminuser.php, newaccount.php, newadminuser.php:

	  Merge from 0_5_3-branch

2003-03-09 00:03  luc

	* editadminuser.php, newaccount.php, newadminuser.php:

	  Corrected some typos in the html code

2003-03-06 21:41  luc

	* COPYRIGHT, config.inc.php-dist, newadminuser.php,
	  validate.inc.php:

	  Merges from 0_5_3-branch

2003-03-06 21:40  luc

	* validate.inc.php:

	  Added newusername to _GET

2003-03-06 21:40  luc

	* newadminuser.php:

	  Fixed syntax error

2003-03-06 21:35  luc

	* lib/crypto.php:

	  Merge from 0_5_3-branch

2003-03-06 21:13  luc

	* lib/crypto.php:

	  Corrected typo in encryption

2003-03-03 23:46  luc

	* config.inc.php-dist, newadminuser.php:

	  Minor changes to cryto stuff

2003-03-03 23:40  luc

	* COPYRIGHT:

	  Typo

2003-02-12 21:37  luc

	* scripts/: create_mysql.sql, insertuser_mysql.sql:

	  Corrected the mysql scripts to avoid db-errors

2003-02-04 14:44  luc

	* locale/sv/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Added correction to swedish translation (Anders Litzell)

2003-02-03 14:45  luc

	* lib/nls.php, locale/sv/LC_MESSAGES/web-cyradm.mo,
	  locale/sv/LC_MESSAGES/web-cyradm.po:

	  Added swedish NLS

2003-01-29 20:43  luc

	* scripts/: create_mysql.sql, upgrade-0.5.2-to-0.5.3_mysql.sql:

	  Changed the size of the fields to be more flexible

2003-01-26 18:51  luc

	* editaccount.php, test.php:

	  Minor changes needed by xgettext

2003-01-10 19:37  luc

	* browseaccounts.php:

	  Deleted some old uncommented code

2003-01-10 10:45  ggell

	* lib/crypto.php: removes bug in lib/crypto.php problem: old values
	  for $crypt (0,1,2) were not recognized any more

2002-12-24 21:48  luc

	* scripts/imap2imap-copy.php:

	  Removed testing stuff

2002-12-24 21:47  luc

	* scripts/imap2imap-copy.php:

	  Added script to migrate from wu-imap to cyrus

2002-12-15 00:47  luc

	* index.php, migrate.php-dist:

	  Added migration file

2002-12-14 23:46  luc

	* auth.inc.php, change_password.php, config.inc.php-dist,
	  index.php, newaccount.php, newadminuser.php, lib/crypto.php:

	  Switching to crypted passwords for adminusers

2002-12-14 20:19  luc

	* lib/crypto.php:

	  Switched to OO, introduced class password

2002-12-14 12:43  luc

	* locale/ru/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Corrected russian translation (codepage)

2002-12-14 12:18  luc

	* locale/: da/LC_MESSAGES/web-cyradm.mo,
	  da/LC_MESSAGES/web-cyradm.po, de/LC_MESSAGES/web-cyradm.mo,
	  de/LC_MESSAGES/web-cyradm.po, fr/LC_MESSAGES/web-cyradm.mo,
	  fr/LC_MESSAGES/web-cyradm.po, hu/LC_MESSAGES/web-cyradm.mo,
	  hu/LC_MESSAGES/web-cyradm.po, it/LC_MESSAGES/web-cyradm.mo,
	  it/LC_MESSAGES/web-cyradm.po, pl/LC_MESSAGES/web-cyradm.mo,
	  pl/LC_MESSAGES/web-cyradm.po, pt/LC_MESSAGES/web-cyradm.mo,
	  pt/LC_MESSAGES/web-cyradm.po, ro/LC_MESSAGES/web-cyradm.mo,
	  ro/LC_MESSAGES/web-cyradm.po, ru/LC_MESSAGES/web-cyradm.mo,
	  ru/LC_MESSAGES/web-cyradm.po, tr/LC_MESSAGES/web-cyradm.po,
	  zh_CN/LC_MESSAGES/web-cyradm.po:

	  Merged all languages with the templates

2002-12-14 11:50  luc

	* locale/templates/web-cyradm.pot:

	  Bugfix in msgid/msgstr pair

2002-12-13 16:13  luc

	* locale/pl/LC_MESSAGES/web-cyradm.mo,
	  locale/pl/LC_MESSAGES/web-cyradm.po, header.inc.php, lib/nls.php:

	  Added polish translation (Przemyslaw Witek)

2002-12-12 12:22  luc

	* browseaccounts.php, deleteaccount.php, newaccount.php,
	  search.php:

	  Fixed Bug #7 DOS in case of cyrus not running

2002-12-12 10:59  luc

	* doc/web-cyradm-redhat.txt:

	  New Version (Michael Muenz)

2002-12-10 14:22  luc

	* change_password.php, editadminuser.php, editemail.php:

	  CSS-Related cosmetical changes (Roland Reimann)

2002-12-09 02:41  luc

	* lib/crypto.php:

	  First version of the password crypto lib

2002-12-09 00:32  luc

	* catchall.php, deleteaccount.php, deletedomain.php,
	  deleteemail.php, editdomain.php, editemail.php,
	  forwardaccount.php, forwardalias.php, newaccount.php,
	  newdomain.php, setquota.php, vacation.php, css/web-cyradm.css:

	  CSS related cosmetial changes (Roland Reimann)

2002-12-08 12:37  luc

	* deleteadminuser.php, locale/de/LC_MESSAGES/web-cyradm.mo,
	  locale/de/LC_MESSAGES/web-cyradm.po:

	  Added missing i18n strings, corrected german translation (Roland
	  Reimann)

2002-11-29 12:22  luc

	* menu.inc.php:

	  Changed Layout to have more space on screen

2002-11-29 12:01  luc

	* forwardalias.php:

	  Found another missing i18n string (allready in POT)

2002-11-29 11:49  luc

	* locale/zh_CN/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Applied changes to chinese translation

2002-11-29 11:34  luc

	* locale/: de/LC_MESSAGES/web-cyradm.mo,
	  de/LC_MESSAGES/web-cyradm.po, templates/web-cyradm.pot:

	  Added i18n strings and german translation of it

2002-11-29 11:33  luc

	* menu.inc.php:

	  Added domaindisplay (Michael Muenz)

2002-11-24 23:26  luc

	* forwardalias.php, validate.inc.php:

	  Fixed wrong username variable

2002-11-24 23:14  luc

	* vacation.php, validate.inc.php:

	  wrong username variable fixed

2002-11-18 20:43  luc

	* header.inc.php, lib/nls.php, locale/tr/LC_MESSAGES/web-cyradm.mo,
	  locale/tr/LC_MESSAGES/web-cyradm.po:

	  Added turkish translation (Süleyman Kuran)

2002-11-18 00:03  luc

	* change_password.php:

	  Empty passwords are now rejected

2002-11-17 23:49  luc

	* change_password.php, config.inc.php-dist, validate.inc.php:

	  Enables change of passwd in mysql based on code from Erhard Schwenk

2002-11-17 03:19  luc

	* locale/de/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Corrected Typo in german translation (Erhard Schwenk)

2002-11-17 03:13  luc

	* editaccount.php:

	  Deleted unneeded suff from table

2002-11-14 00:54  luc

	* editemail.php, forwardalias.php, newdomain.php:

	  Added missing i18n strings (Micheal Muenz)

2002-11-14 00:54  luc

	* locale/de/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Updated german translations

2002-11-14 00:54  luc

	* locale/templates/web-cyradm.pot:

	  Added missing i18n Strings (Micheal Muenz)

2002-11-13 02:25  luc

	* change_password.php, editaccount.php, forwardaccount.php,
	  forwardalias.php, vacation.php:

	  Added the rest of the missing i18n strings

2002-11-13 02:24  luc

	* validate.inc.php:

	  Changed case statements reflecting new filenames

2002-11-13 02:23  luc

	* locale/de/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Updated german translation from msgmerge with pot file

2002-11-13 02:22  luc

	* locale/templates/web-cyradm.pot:

	  Inserted new i18n strings

2002-11-12 15:59  luc

	* locale/templates/web-cyradm.pot:

	  Added more i18n strings (Michael Muenz)

2002-11-12 15:49  luc

	* browseaccounts.php, editaccount.php, forwardaccount.php,
	  forwardalias.php, index.php, newadminuser.php, set_forwards.php,
	  set_vacation.php, vacation.php, validate.inc.php:

	  Added accountforwarding (Thomas Steifert), moved alias-only action
	  to the right place

2002-11-08 14:10  luc

	* auth.inc.php, change_password.php, deleteadminuser.php,
	  editadminuser.php, editdomain.php, newaccount.php,
	  newadminuser.php, newdomain.php, set_vacation.php:

	  Added more i18n strings (Michael Muenz)

2002-11-07 19:13  luc

	* set_forwards.php, set_vacation.php:

	  Changed singlequotes to doulequotes on every print where needed

2002-11-07 18:36  luc

	* browseaccounts.php:

	  Re-enabled "Change account"

2002-11-07 18:27  luc

	* set_forwards.php, set_vacation.php:

	  Added i18n support (Micheal Muenz)

2002-11-07 18:26  luc

	* locale/templates/web-cyradm.pot:

	  More i18n strings added (Michael Muenz)

2002-11-05 12:56  luc

	* change_password.php, set_forwards.php, validate.inc.php,
	  lib/poppassd.php:

	  Support for passwdchange, forward and vacation (Leow Hock Seng)

2002-11-05 12:36  luc

	* validate.inc.php:

	  Support for passwdchange, forward and vacation (Leow Hock Seng)

2002-11-05 12:22  luc

	* set_vacation.php:

	  Changed includes

2002-11-05 12:21  luc

	* lib/: sieve-php.lib, sieve_strs.php:

	  Support for passwdchange, forward and vacation (Leow Hock Seng)

2002-11-05 12:14  luc

	* browseaccounts.php:

	  Support for passwdchange, forward and vacation (Leow Hock Seng)

2002-11-05 11:15  luc

	* index.php, set_forwards.php, set_vacation.php:

	  Support for passwdchange, forward and vacation (Leow Hock Seng)

2002-11-04 02:29  luc

	* newaccount.php, newdomain.php:

	  Added support for transport_maps (experimental)

2002-11-04 02:18  luc

	* validate.inc.php:

	  Added transport and tparam variables

2002-11-04 01:50  luc

	* config.inc.php-dist:

	  Added comments

2002-11-04 01:47  luc

	* scripts/create_mysql.sql:

	  Added field "transport" to table "domain"

2002-11-04 01:46  luc

	* scripts/upgrade-0.5.2-to-0.5.3_mysql.sql:

	  Added migration path for 0.5.3 (adding new field transport to table
	  domain)

2002-11-04 01:45  luc

	* scripts/insertuser_mysql.sql:

	  Added creation of users incl. encrypted password

2002-11-03 13:57  luc

	* header.inc.php:

	  Added correct charset for romanian and hugarian languages

2002-11-03 13:03  luc

	* lib/nls.php:

	  Added correct charset for romanian

2002-11-02 15:59  luc

	* locale/ro/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Added romanian translation (Catalin Boiangiu)

2002-11-02 15:57  luc

	* validate.inc.php:

	  Added searchstring

2002-11-02 15:56  luc

	* lib/nls.php:

	  Added alias for romanian

2002-10-30 20:54  luc

	* editdomain.php, locale/de/LC_MESSAGES/web-cyradm.mo,
	  locale/de/LC_MESSAGES/web-cyradm.po:

	  Some minor changed to NLS and i18n

2002-10-30 20:38  luc

	* locale/de/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Added missing i18n strings for german NLS (Michael Muenz)

2002-10-30 20:34  luc

	* locale/templates/web-cyradm.pot:

	  Added missing i18n strings (Micheal Muenz)

2002-10-30 20:21  luc

	* auth.inc.php, index.php, test.php, validate.inc.php:

	  Switched to _GET instead of HTTP_GET_VARS (Ian Newlands)

2002-10-29 13:20  luc

	* locale/de/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Added missing translations (Michael Muenz)

2002-10-23 13:27  luc

	* newaccount.php:

	  Fixed strange behaviour if domainprefix has number at the end ->
	  regex was changed

2002-10-22 22:19  luc

	* footer.inc.php, timeout.php:

	  Changed URL in footers to www.web-cyradm.org

2002-10-22 22:13  luc

	* auth.inc.php, failed.php:

	  Improved handling for failed logins (Michael Muenz)

2002-10-22 22:12  luc

	* locale/templates/web-cyradm.pot:

	  Added i18n string for failed.php

2002-10-22 21:01  luc

	* deleteaccount.php, deletedomain.php:

	  Added missing i18n strings

2002-10-22 21:00  luc

	* locale/templates/web-cyradm.pot:

	  Added a i18n string

2002-10-21 20:35  luc

	* doc/web-cyradm-redhat.txt:

	  Added Red Hat Installation (Michael Muenz)

2002-10-18 19:27  luc

	* index.php, menu.inc.php, validate.inc.php:

	  Enabled search function

2002-10-18 19:26  luc

	* search.php:

	  Added rudimentary search facility

2002-10-18 17:49  luc

	* editadminuser.php:

	  corrected i18n string

2002-10-18 17:45  luc

	* newadminuser.php:

	  Added i18n strings

2002-10-18 17:45  luc

	* locale/templates/web-cyradm.pot:

	  Added more forgotten i18n strings

2002-10-18 17:44  luc

	* locale/de/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Added new i18n strings

2002-10-18 12:47  luc

	* locale/de/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Corrected typos and added string

2002-10-18 12:44  luc

	* editadminuser.php:

	  Forgotten i18n string was insertes on line 5

2002-10-18 12:43  luc

	* locale/templates/web-cyradm.pot:

	  Inserted forgotten i18n string from editadmin.php line 5

2002-10-18 12:27  luc

	* adminuser.php:

	  corrected i18n string for action

2002-10-17 22:37  luc

	* ChangeLog:

	  Updated changelog

2002-10-17 22:24  luc

	* newaccount.php:

	  Fixed query for ENCRYPT/PASSWD function

2002-10-17 21:48  luc

	* doc/Postfix-Cyrus-Web-cyradm-HOWTO.txt:

	  added text doc

2002-10-17 21:48  luc

	* test.php:

	  Added test.php to give users a change to check its systems. This
	  page is derived from the Horde testpage

2002-10-16 01:13  luc

	* doc/html/: big-picture.png, cyrus-config.html, faq.html,
	  home.png, imap-account.png, imap-tls.png, index.html,
	  install.html, intro.html, moreinfo.html, mysql-config.html,
	  pam-config.html, postfix-config.html, tech.html, test.html,
	  web-cyradm-config.html:

	  Added documentaion from the Postfix-Cyrus-Web-cyradm-HOWTO

2002-10-08 23:20  luc

	* lib/nls.php:

	  Uncommented fr_FR

2002-10-08 23:09  luc

	* auth.inc.php:

	  Fixed problem with PEAR (additional include statement in function)

2002-10-08 21:44  luc

	* ChangeLog:

	  Added Changes

2002-10-08 21:36  luc

	* auth.inc.php, config.inc.php-dist, newaccount.php:

	  Applied patch from Joseph Tate <jtate@dragonstrider.com> to enable
	  crypted passwds

2002-09-30 01:50  luc

	* locale/fr/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Corrected french translation (Raphaël Jeudy)

2002-09-30 01:47  luc

	* catchall.php:

	  Fixed ignoring cancel-button bug (Andrey Kolbasenko)

2002-09-30 01:45  luc

	* locale/ru/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Fixed bugs in russion NLS (Andrey Kolbasenko)

2002-09-06 17:42  luc

	* locale/it/LC_MESSAGES/web-cyradm.po:

	  Added credits to the po file

2002-09-06 17:36  luc

	* ChangeLog:

	  Updated ChangeLog

2002-09-06 16:45  luc

	* lib/nls.php, locale/it/LC_MESSAGES/web-cyradm.mo,
	  locale/it/LC_MESSAGES/web-cyradm.po:

	  Added italian NLS

2002-09-06 13:24  luc

	* ChangeLog:

	  Updated changelog

2002-09-06 13:23  luc

	* ChangeLog:

	  Added Changelog

2002-09-06 02:50  luc

	* adminuser.php:

	  Corrected typo $domain -> $domainname which was leading in wrong
	  domain repsonsible (display only)

2002-09-06 01:08  luc

	* locale/de/LC_MESSAGES/web-cyradm.mo:

	  Correction of typos german NLS

2002-09-06 01:05  luc

	* locale/de/LC_MESSAGES/web-cyradm.po:

	  Correction of german NLS

2002-09-06 00:54  luc

	* lib/nls.php, locale/da/LC_MESSAGES/web-cyradm.mo,
	  locale/da/LC_MESSAGES/web-cyradm.po:

	  Added danish NLS

2002-09-04 09:50  luc

	* INSTALL:

	  Some minor changes

2002-09-02 20:57  luc

	* header.inc.php:

	  Made code charset determination more flexible

2002-09-02 20:30  luc

	* lib/nls.php:

	  Enabled russian

2002-09-02 13:54  luc

	* locale/ru/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Added russian NLS

2002-09-01 23:46  luc

	* index.php:

	  Minor NLS fixes

2002-09-01 23:28  luc

	* lib/nls.php:

	  Fixed dumb typo

2002-09-01 23:18  luc

	* index.php:

	  httpvariable LANG can now override othe NLS settings

2002-09-01 23:07  luc

	* logout.php:

	  Added missing space

2002-09-01 23:07  luc

	* logout.php:

	  Corrected stuff

2002-09-01 23:03  luc

	* lib/nls.php:

	  Added NLS file for getting valid languages

2002-09-01 23:00  luc

	* config.inc.php-dist, index.php: [no log message]

2002-09-01 22:43  luc

	* session.php:

	  separated seesion handling

2002-09-01 21:19  luc

	* config.inc.php-dist:

	  Corrected i18n stuff removed old mysql stuff

2002-09-01 21:17  luc

	* header.inc.php, login.php:

	  Corrected nested tables

2002-08-29 21:03  luc

	* locale/fr/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Moved the fr locales to the right place

2002-08-29 21:00  luc

	* locale/de/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Moved de locales to the right place

2002-08-29 20:56  luc

	* auth.inc.php, header.inc.php, index.php, login.php,
	  validate.inc.php, locale/zh_CN/LC_MESSAGES/web-cyradm.mo,
	  locale/zh_CN/LC_MESSAGES/web-cyradm.po:

	  i18n and coding changes

2002-08-24 17:45  luc

	* locale/pt/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po: Added
	  portugeese translation

2002-08-20 07:58  luc

	* locale/hu/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Added hungarian translation

2002-08-20 07:57  luc

	* header.inc.php:

	  Other small bugfix for coding, now using ISO 8859-1 at default

2002-08-20 07:44  luc

	* header.inc.php:

	  Fixed coding for chinese, put charset=GB2312 in meta-tag in case of
	  LANG=zh_CN

2002-08-20 06:59  luc

	* locale/zh_CN/LC_MESSAGES/: web-cyradm.mo, web-cyradm.po:

	  Added Simplified Chinese support

2002-08-18 16:53  luc

	* config.inc.php-dist, validate.inc.php:

	  Merged i18n bugfixes from bugfix branch

2002-08-18 16:51  luc

	* config.inc.php-dist, validate.inc.php:

	  Fixed some minor bugs related to i18n

2002-08-18 16:29  luc

	* locale/templates/web-cyradm.pot:

	  Added new template

2002-08-18 16:08  luc

	* adminuser.php, browse.php, browseaccounts.php, catchall.php,
	  deleteaccount.php, deletedomain.php, deleteemail.php,
	  editaccount.php, editadminuser.php, editdomain.php,
	  editemail.php, header.inc.php, login.php, logout.php,
	  menu.inc.php, newaccount.php, newdomain.php, newemail.php,
	  setquota.php, timeout.php:

	  i18n changes

2002-08-10 23:29  luc

	* timeout.php:

	  Corrected i18n bug

2002-08-10 23:27  luc

	* login.php:

	  Added i18n stuff

2002-08-10 23:18  luc

	* timeout.php:

	  Added i18n stuff

2002-08-10 23:11  luc

	* adminuser.php:

	  Added i18n stuff

2002-08-10 22:48  luc

	* deletedomain.php:

	  Added i18n stuff

2002-08-10 22:13  luc

	* catchall.php:

	  Added i18n stuff

2002-08-10 22:03  luc

	* setquota.php:

	  Adding i18n stuff

2002-08-10 20:38  luc

	* deleteemail.php:

	  Added i18n stuff

2002-08-10 20:28  luc

	* editemail.php:

	  Added i18n stuff

2002-08-10 20:18  luc

	* editaccount.php:

	  Corrected gettext call

2002-08-10 20:13  luc

	* newemail.php:

	  Added i18n stuff

2002-08-10 19:35  luc

	* editaccount.php:

	  Added i18n stuff

2002-08-10 19:23  luc

	* deleteaccount.php:

	  Added i18n stuff

2002-08-10 19:02  luc

	* README.translations:

	  Added a basic HOWTO for translators

2002-08-10 18:55  luc

	* browseaccounts.php, newaccount.php:

	  Added i18n stuff

2002-08-10 18:09  luc

	* browseaccounts.php, newdomain.php:

	  Added i18n stuff

2002-08-10 17:20  luc

	* menu.inc.php:

	  i18n strings corrected

2002-08-10 16:38  luc

	* browse.php, menu.inc.php:

	  Added i18n strings

2002-08-10 16:37  luc

	* config.inc.php-dist:

	  Added language setting, please edit if you dont want to see the
	  german stuff

2002-08-06 22:11  luc

	* config.inc.php-dist:

	  Disabled all mysql related stuff to be sure all DB related stuff is
	  now working with PEAR::DB

2002-08-06 22:09  luc

	* editaccount.php: Fixed buglet which made dest disapear new [dest]
	  instead of [1]

2002-08-06 21:49  luc

	* adminuser.php, browseaccounts.php, deletedomain.php,
	  editaccount.php, validate.inc.php:

	  Merging another chunks of patches from Marcus I. Ryan, Improving
	  PEAR::DB support

2002-08-06 00:41  luc

	* validate.inc.php:

	  Merging "cancel-button-bug" from release-2002-05-25-bugfix-branch

2002-08-06 00:36  luc

	* validate.inc.php:

	  Eliminated bug which makes the "cancel" button ignored, $cancel
	  added tp HTTP_GET_VARS

2002-08-05 22:54  luc

	* scripts/: create.sql, create_mysql.sql, create_pgsql.sql,
	  insertuser.sql, insertuser_mysql.sql, insertuser_pgsql.sql:

	  Inserting pgsql-scripts and renaming the mysql stuff accordingly

2002-08-05 22:34  luc

	* adminuser.php, auth.inc.php, browseaccounts.php, catchall.php,
	  config.inc.php-dist, deleteaccount.php, deleteadminuser.php,
	  deletedomain.php, deleteemail.php, editaccount.php,
	  editadminuser.php, editdomain.php, editemail.php,
	  newadminuser.php, newdomain.php, newemail.php, validate.inc.php:

	  Merged Marcus I Ryan's patches for PEAR::DB

2002-06-24 00:55  luc

	* newaccount.php: Switched DB-Code to use PEAR

2002-06-24 00:28  luc

	* browseaccounts.php: Switched DB-Code to use PEAR

2002-06-19 06:45  jeffbert

	* editadminuser.php: can now edit name and pass

2002-06-19 06:44  jeffbert

	* adminuser.php: fixed linking to domains

2002-06-10 21:38  luc

	* newadminuser.php, setquota.php, validate.inc.php:

	  Merge from bugfux branch, adminuserstuff works now (and also with
	  php 4.2.1) See branch for changes

2002-06-10 21:34  luc

	* newadminuser.php, validate.inc.php:

	  Changed VAR newadmin to newadminusers and added that VAR to the
	  HTTP_GET_VARS list in validate.php, means it also works with php
	  4.2.1 now

2002-06-10 21:06  luc

	* setquota.php: renaming VAR quotaset to quota

2002-06-10 20:39  luc

	* index.php: Added PEAR support for DB Access

2002-06-06 08:17  luc

	* browse.php: Changed DB-code to use PEAR

2002-06-06 07:35  luc

	* config.inc.php-dist: Implemention of PEAR Database access

2002-05-29 21:52  luc

	* auth.inc.php: merge from 2002-05-25-bugfix-branch, fixed serious
	  security issue

2002-05-29 21:50  luc

	* auth.inc.php: Fixed serious security pbrlm if isset did not
	  worked

2002-05-28 21:34  luc

	* config.inc.php-dist: merge from release-2002-05-25-bugfix-branch
	  to avoid php compaints about allready sent header

2002-05-28 21:26  luc

	* config.inc.php-dist:

	  Removed white space at the end of the file to prevent php complaints
	  about allready sent headers

2002-05-25 21:49  luc

	* deletedomain.php: Added some comments

2002-05-25 21:43  luc

	* catchall.php: Added some comments

2002-05-25 20:29  luc

	* browseaccounts.php: re-enabled catchall after tagging
	  release-2002-05-25

2002-05-25 20:26  luc

	* browseaccounts.php: Disabled catchall facility for release

2002-05-22 23:14  luc

	* menu.inc.php: deleted menuentry for catchall bcause integration
	  in browseaccounts.php

2002-05-22 23:09  luc

	* catchall.php, browseaccounts.php: Added catchall to browseaccount

2002-05-22 22:01  luc

	* catchall.php:

	  Added catchall facillity, not sure if final solution

2002-05-22 21:59  luc

	* menu.inc.php: Added catchall facillity

2002-05-22 21:32  luc

	* index.php: Added catch all facillity

2002-05-22 21:30  jeffbert

	* browse.php: added code to now show prefix if using
	  DOMAIN_AS_PREFIX

2002-05-22 21:29  jeffbert

	* deletedomain.php: added delete domainadmin code

2002-05-22 21:14  luc

	* config.inc.php-dist: Changed default timout to 600s, added const
	  CRYPT for using crypted passwd or not

2002-05-22 10:00  jeffbert

	* newadminuser.php: fixed domain/admin selection

2002-05-22 10:00  jeffbert

	* deleteadminuser.php: fixed delete adminuser

2002-05-22 09:59  jeffbert

	* adminuser.php: fixed links to edit/delete adminusers

2002-05-22 09:58  jeffbert

	* config.inc.php-dist: removed altnamespace note

2002-05-17 10:50  jeffbert

	* setquota.php: added  coding and fixed form variable to get quota
	  set to work... it was being overwritten by the same variable name
	  earlier in the program so I renamed it in that part from quota to
	  quotaset

2002-05-17 10:49  jeffbert

	* newdomain.php: added  coding and  code

2002-05-17 10:48  jeffbert

	* newaccount.php: added  coding and fixed the setting of quotas and
	  admin rights upon account creation

2002-05-17 10:47  jeffbert

	* editemail.php: fixed form value for dest, was newdest, now
	  editemail works

2002-05-17 10:46  jeffbert

	* editaccount.php: reordered username/email, added pass/quota to
	  columns, changed output to group user/pass/quota into single cell
	  for multiple email addesses for the same user

2002-05-17 10:45  jeffbert

	* deleteaccount.php: added  code

2002-05-17 10:44  jeffbert

	* browseaccounts.php: changed order of username/email and added
	  code

2002-05-17 10:43  jeffbert

	* config.inc.php-dist: added  and

2002-05-17 07:46  luc

	* .cvsignore, COPYRIGHT, INSTALL, README, TO-BE-DONE,
	  adminuser.php, auth.inc.php, browse.php, browseaccounts.php,
	  config.inc.php-dist, deleteaccount.php, deleteadminuser.php,
	  deletedomain.php, deleteemail.php, editaccount.php,
	  editadminuser.php, editdomain.php, editemail.php, failed.php,
	  footer.inc.php, header.inc.php, index.php, login.php, logout.php,
	  menu.inc.php, newaccount.php, newadminuser.php, newdomain.php,
	  newemail.php, setquota.php, timeout.php, validate.inc.php,
	  welcome.php, css/web-cyradm.css, images/banner.gif,
	  lib/cyradm.php, scripts/create.sql, scripts/insertuser.sql:

	  Initial import from web-cyradm Main tree

2002-05-17 07:46  luc

	* .cvsignore, COPYRIGHT, INSTALL, README, TO-BE-DONE,
	  adminuser.php, auth.inc.php, browse.php, browseaccounts.php,
	  config.inc.php-dist, deleteaccount.php, deleteadminuser.php,
	  deletedomain.php, deleteemail.php, editaccount.php,
	  editadminuser.php, editdomain.php, editemail.php, failed.php,
	  footer.inc.php, header.inc.php, index.php, login.php, logout.php,
	  menu.inc.php, newaccount.php, newadminuser.php, newdomain.php,
	  newemail.php, setquota.php, timeout.php, validate.inc.php,
	  welcome.php, css/web-cyradm.css, images/banner.gif,
	  lib/cyradm.php, scripts/create.sql, scripts/insertuser.sql:
	  Initial revision

Please have a look at the doc directory or the online documentation:

http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/html/index.html

This is version 0.5.4-rc1

This software is intended to be used by system adminitrators to provide them
with a friendly Web-interface instead of the commandline cyradm.

A goal for the future is to incorporate authentication with makes it possible,
that normal mail-users can change what they are authorized to change. This can 
lead in lower workload for the System Administrator and higher flexibiliy for the
mailuser.

This is a pre-Version 1.0 and only for users that are knowing what they are doing.

Especially there is no input validation yet, 
i.e. its possible to add a email-adress like f*o*o+b*a*r@domain.org, very bad.

Feedback to luc at delouw.ch is appreciated.
  
Web-cyradm is fully i18n compiant thanks to GNU gettext.

If you like to translate web-cyradm to your native language, you will find 
the pot-file in the directory locale/templates

Here is an example how to work on that files:

exchange the follwing from

msgid "domainname"
msgstr ""

to:

msgid "domainname"
msgstr "Whatever domainame means in your language"

if you what to create the mo-files for testing your translations
use the following command:

msgfmt -o blah.mo blah.po

When you submit your new translation, please let me know what the correct Characterset is (e.g. ISO-8859-1 for Western Europe)

If you need some help, subscribe to the mailinglist http://www.web-cyradm.org/mailman/listinfo/web-cyradm

Thanks

For Version 0.5.6

o Storage of user and admin data such as Name, Adress etc.
o Massmailing function for domains, superusers, all
o Code cleanup
o Switching as much as possible to a drivermodel like used in horde as suggested.
o Introduction of LDAP Support with the help of the above mentions drivermodel.
o Integration of AntiSPAM and AntiVIRUS configuration on user and domain base.
<?php
session_name('web-cyradm-session');
session_start();
if ($_SESSION['session_ok'] === TRUE){
?>
<html>
	<body>
<?php
	@include 'Net/IDNA.php';

	$field = 'domain';
	if (!empty($_GET['newdomain'])) {
		$_GET['domain'] = $_GET['newdomain'];
		$field = 'newdomain';
	}

	if (!empty($_GET['domain']) && substr($_GET['domain'],0,4) != 'xn--') {
		if (class_exists("Net_IDNA")) {
			$idn = Net_IDNA::getInstance();
			$_GET['domain'] = iconv($_GET['charset'],'UTF-8',$_GET['domain']);
			$ACE = $idn->encode($_GET['domain']);
?>
			<script>
			<!--
			self.opener.document.mainform.<?php echo $field; ?>.value = '<?php echo $ACE; ?>';
			self.close();
			//-->
			</script>
<?php
		} else {
?>
		<center>
			<?php print _("To use Internationalized Domain Names (IDNs) you should install Net_IDNA class from");?> <a href="http://pear.php.net/package/Net_IDNA" target="_blank">pear.php.net</a><br>
			<a href="javascript:self.close();"><?php print _("Close"); ?></a>
		</center>
<?php
		}
	} else {
?>
		<center>
			<?php print _("Invalid domain name"); ?><br>
			<a href="javascript:self.close();"><?php print _("Close"); ?></a>
		</center>
<?php
	}
?>
	</body>
</html>
<?php
}
?>
<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
?>
<!-- ############################## Start adminuser.php ###################################### -->
<tr>
	<td width="10">&nbsp;</td>

	<td valign="top">
		<h3>
			<?php print _("Browse admins");?>
		</h3>

		<?php
		if ($authorized) {
			$query = "SELECT * FROM adminuser";
			$row_pos = (empty($_GET['row_pos']))?(0):($_GET['row_pos']);

			# Fist query is for displaying 
			$result = $handle->limitQuery($query,$row_pos,10);

			# second query is needed to get the total of administrators
			$result2 = $handle->Query($query);
			$cnt = $result->numRows();

			$total = $result2->numRows();
			?>
			<p>
				<?php print _("Total administrators") . ": " . $total;
				print "<br>"._("Displaying from position:")." ".($row_pos+1);
				?>
			</p>

			<table cellspacing="2" cellpadding="0">
				<tr>
					<td class="navi">
						<a class="navilink" href="index.php?action=newadminuser&amp;domain=<?php echo $_GET['domain']; ?>"><?php print _("Add administator"); ?></a>
					</td>

					<?php
					$prev = $row_pos - 10;
					$next = $row_pos + 10;

					if ($row_pos < 10){
						$_linkP = '#';
					} else {
						$_linkP = 'index.php?action=adminuser&amp;domain=' . $_GET['domain'] . '&amp;row_pos=' . $prev;
					}
					if ($next >= $total){
						$_linkN = '#';
					} else {
						$_linkN = 'index.php?action=adminuser&amp;domain=' . $_GET['domain'] . '&amp;row_pos=' . $next;
					}
					?>
					<td class="navi">
						<a class="navilink" href="<?php echo $_linkP; ?>"><?php print _("Previous 10 entries");?></a>
					</td>

					<td class="navi">
						<a class="navilink" href="<?php echo $_linkN; ?>"><?php print _("Next 10 entries");?></a>
					</td>
				</tr>
			</table>

			<table border="0">
				<tbody>
					<tr>
						<th colspan="2">
							<?php print _("action");?>
						</th>

						<th>
							<?php print _("Adminname");?>
						</th>

						<th>
							<?php print _("domain");?>
						</th>

						<th>
							<?php print _("admin type");?>
						</th>
					</tr>

					<?php
					for ($c = 0; $c < $cnt; $c++){
						if ($c%2==0){
							$cssrow = "row1";
						} else {
							$cssrow = "row2";
						}

						$row = $result->fetchRow(DB_FETCHMODE_ASSOC, $c);
						$username = $row['username'];
						$query2 = "SELECT * FROM domainadmin WHERE adminuser='$username'";
						$result2 = $handle->query($query2);
						$cnt2 = $result2->numRows();

						$row2 = $result2->fetchRow(DB_FETCHMODE_ASSOC, 0);
						$domainname = $row2['domain_name'];
						$type = $row['type'];

						?>

						<tr class="<?php echo $cssrow;?>">
							<td valign="middle">
								<a href="index.php?action=editadminuser&username=<?php echo $username; ?>&domain=<?php echo $_GET['domain']; ?>&row_pos=<?php print $row_pos;?>"><?php
								print _("Edit adminuser");
								?></a>
							</td>

							<td valign="middle">
								<a href="index.php?action=deleteadminuser&amp;username=<?php echo $username; ?>&amp;domain=<?php echo $_GET['domain']; ?>"><?php
								print _("Delete adminuser");
								?></a>
							</td>

							<td valign="middle">
								<?php echo $username;?>
							</td>

							<td valign="middle">
								<?php
								for ($i = 0; $i < $cnt2; $i++){
									$row2 = $result2->fetchRow(DB_FETCHMODE_ASSOC, $i);
									$domainname = $row2['domain_name'];
									if ($type){
										print "$domainname<br>";
									}
								}

								if ($type==0){
									print _("All domains");
								}
								if (empty($domainname) && $type!=0){
									print "<font color=\"red\">";
									print _("None");
									print "</font>";
								}

								?>
							</td>

							<td valign="middle">
								<?php
								if ($type == 0){
									print _("Superuser");
								} elseif ($type == 1){
									print _("Domain Master");
								}
								?>
							</td>
						</tr>
						<?php
					}
					?>
				</tbody>
			</table>
		<?php
		}
		?>
	</td>
</tr>
<!-- ############################### End adminuser.php ############################################# -->

<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
?>
<!-- #################################### Start aliases.php ################################# -->
<tr>
	<td width="10">&nbsp; </td>
	<td valign="top">
	<h3><?php print _("Browse aliases for domain")?> <font color=red><?php print( $_GET['domain'] ); ?></font></h3>

	<?php
	if ($authorized) {
		$query = "SELECT COUNT(DISTINCT(alias)) FROM virtual WHERE username = '".$_GET['domain']."'";
		$alias_count = $handle->getOne($query);
		$row_pos = (empty($_GET['row_pos']))?(0):($_GET['row_pos']);
		
		$prev = $row_pos -10;
		$next = $row_pos +10;
		
		if ($row_pos<10) {
			$prev_url = "#";
		} else {
			$prev_url = "index.php?action=aliases&domain=".$_GET['domain']."&row_pos=".$prev;
		}

		if ($next >= $alias_count) {
			$next_url = "#";
		} else {
			$next_url = "index.php?action=aliases&domain=".$_GET['domain']."&row_pos=".$next;
		}

		print _("Total aliases").":".$alias_count;
	?><P>
	<table cellspacing="2" cellpadding="0">
	<tr>
		<td class="navi"><a class="navilink" href="index.php?action=newalias&domain=<?php print $_GET['domain']; ?>">
		<?php print _("Add new alias");?></a></td>
		<td class="navi"><a class="navilink" href="<?php print($prev_url); ?>"><?php print _("Previous 10 entries");?></a></td>
		<td class="navi"><a class="navilink" href="<?php print($next_url); ?>"><?php print _("Next 10 entries");?></a></td>
	</tr>
	</table>
	<p>
	<table border="0">
		<tbody>
		<tr>
			<th colspan="2"><?php print _("action");?></th>
			<th><?php print _("Email address"); ?></th>
			<th><?php print _("Destination"); ?></th>
		</tr>
	<?php

		$query = "SELECT DISTINCT(alias) FROM virtual WHERE username = '".$_GET['domain']."'";
		$result = $handle->limitQuery($query,$row_pos,10);
		$num_alias = $result->numRows();
		$b = 0;
		for($c = 0;$c < $num_alias;$c++) {
			if ($c%2==0){
				$cssrow = "row1";
			} else {
				$cssrow = "row2";
			}
			$row = $result->fetchRow(DB_FETCHMODE_ASSOC,$c);
			$alias = $row['alias'];	
		?>
		<tr class="<?php print($cssrow); ?>">
			<td><a href="index.php?action=editalias&alias=<?php print($alias); ?>&domain=<?php print($_GET['domain']); ?>"><?php print _("Edit Alias"); ?></a></td>
			<td><a href="index.php?action=deletealias&alias=<?php print($alias); ?>&domain=<?php print($_GET['domain']); ?>"><?php print _("Delete Alias"); ?></a></td>
			<td><?php print($alias); ?></td>
			<td>	
		<?php
	
			$query1 = "SELECT dest FROM virtual WHERE alias = '".$alias."'";
			#$result1 = $handle->query($query1);
			$result1 = $handle->Query($query1);
			$cnt = $result1->numRows();
			$num_dest = ($cnt<3)?($cnt):(3);
			for($d = 0;$d < $num_dest;$d++) {
				$row2 = $result1->fetchRow(DB_FETCHMODE_ASSOC,$d);
				if($d != 0) {
					print ", ";
				}
				print($row2['dest']);
			}
			if ($cnt > 3) {
				print ", ... ";
			}
		?>
			</td>
		</tr>
	<?php
		}
	?>
		</table>
<?php
	}
?>
	</td>
</tr>
<!-- ##################################### End aliases.php #################################### -->
<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));

include WC_BASE . "/config/conf.php";
include WC_BASE . "/lib/crypto.php";
include WC_BASE . "/lib/log.php";

session_name('web-cyradm-session');
session_start();

$session_ok = $_SESSION['session_ok'];

$login = addslashes($_POST['login']);
$password = addslashes($_POST['login_password']);
$LANG = addslashes($_POST['LANG']);

if ($login && $password){
     // Log access
     logger(sprintf("LOGIN : %s %s %s %s %s%s", $_SERVER['REMOTE_ADDR'], $login, $_SERVER['HTTP_USER_AGENT'], $_SERVER['HTTP_REFERER'], $_SERVER['REQUEST_METHOD'], "\n"));

     $pwd=new password;
     $result=$pwd->check("adminuser",$login,$password,$CRYPT);

     if ($result){
    	     
          // Log successfull login
	  logger(sprintf("PASS : %s %s %s %s %s%s", $_SERVER['REMOTE_ADDR'], $login, $_SERVER['HTTP_USER_AGENT'], $_SERVER['HTTP_REFERER'], $_SERVER['REQUEST_METHOD'], "\n"));

          $_SESSION['session_ok'] = TRUE;
	  $_SESSION['timestamp'] = time();
	  $_SESSION['user'] = $login;
	  $_SESSION['LANG'] = $LANG;
	  $_SESSION['init'] = 'init';

          header ("Location: index.php");

     } else {
          // Log login failure
	  logger(sprintf("FAIL : %s %s %s %s %s%s", $_SERVER['REMOTE_ADDR'], $login, $_SERVER['HTTP_USER_AGENT'], $_SERVER['HTTP_REFERER'], $_SERVER['REQUEST_METHOD'], "\n"),"WARN");
	  
	   $_SESSION = array();
	   
	   #include ("failed.php");
	   header ("Location: failed.php?LANG=".$LANG);
	
     }
} else {
     print "<center><h4><font face=Verdana,Geneva,Arial,Helvetica,sans-serif>"
	   ._("Web-cyradm is for authorized users only."). 
           "<br>"._("Make sure you entered the right password.").
           "<br>"._("Push the back button in your browser to try again.").
           "<br>"._(" Your attempt to login has been stored.")."</font></h4></center>";
}

?>

<!-- ###################################### End auth.inc.php ################################################ --!>
<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
?>
<!-- ############################## Start browse.php ###################################### -->
<tr>
	<td width="10">&nbsp;</td>

	<td valign="top">
		<h3>
			<?php print _("Browse domains");?>
		</h3>
		<?php
		if (isset($_GET['row_pos'])) $_SESSION['domain_row_pos'] = $_GET['row_pos'];
//		$_SESSION['domain_row_pos'] = $row_pos;
		if (isset($_GET['orderby'])) {
			if ($_SESSION['domain_orderby'] == $_GET['orderby']) {
				if ($_SESSION['domain_orderby_desc']=="asc") {
					$_SESSION['domain_orderby_desc'] = "desc";
				} else {
					$_SESSION['domain_orderby_desc'] = "asc";
				}
			} else {
				$_SESSION['domain_orderby_desc'] = "asc";
			}
			$_SESSION['domain_orderby'] = $_GET['orderby'];
		}
//		$_SESSION['domain_orderby'] = $orderby;
?>
<!-- 		<table border="1" width="98%"> -->
				<?php

				if (! isset($_SESSION['allowed_domains'])) {
					#$query = "SELECT * FROM domain ORDER BY domain_name";
					$query = "SELECT * FROM domain ORDER BY ".$_SESSION['domain_orderby']." ".$_SESSION['domain_orderby_desc'];
				} else {
					$domains = '';
					foreach ($_SESSION['allowed_domains'] as $allowed_domain) {
						$domains .= $allowed_domain."' OR domain_name='";
					}
					$query = "SELECT * FROM domain WHERE domain_name='$domains' ORDER BY ".$_SESSION['domain_orderby']." ".$_SESSION['domain_orderby_desc'];
				}

				$result = $handle->query($query);
				if (DB::isError($result)) {
					die (_("Database error"));
				}
//				$result = $handle->limitQuery($query,$row_pos,$_SESSION['maxdisplay']);
				$cnt    = $result->numRows($result);

				print _("Total Domains:")." ".$cnt;
				print "<br>"._("Displaying from position:")." ".($_SESSION['domain_row_pos']+1);
				
				?>
<!-- 		</table> -->
                <table cellspacing="2" cellpadding="0">
                        <tr>
				<?php 
				if ($_SESSION['admintype']==0){
					?>
	                                <td class="navi">
        	                                <a class="navilink" href="index.php?action=newdomain&domain=new"><?php print _("Add new domain");?></a>
                	                </td>
					<td width="20">&nbsp;</td>
                                <?php
				}
				
				$prev = $_SESSION['domain_row_pos'] - $_SESSION['maxdisplay'];
				if ($prev < 0 ) $prev = 0;
				$next = $_SESSION['domain_row_pos'] + $_SESSION['maxdisplay'];
				$last = $cnt - $_SESSION['maxdisplay'];

                                if ($_SESSION['domain_row_pos'] <= 0){
					print "<td class=\"navi\"><a class=\"navilink\">"._("First entry") ."</a></td>";		
					print "<td class=\"navi\"><a class=\"navilink\">"._("Previous entries")."</a></td>";
                                } else {
					print "<td class=\"navi\"><a class=\"navilink\" href=\"index.php?action=browse&row_pos=0\">"._("First entry") ."</a></td>";		
					print "<td class=\"navi\"><a class=\"navilink\" href=\"index.php?action=browse&row_pos=$prev\">"._("Previous entries") ."</a></td>";		
                                }

				if ($next>=$cnt){
					print "<td class=\"navi\"><a>"._("Next entries")."</a></td>";
					print "<td class=\"navi\"><a class=\"navilink\">"._("Last entry") ."</a></td>";
				} else {
					print "<td class=\"navi\"><a class=\"navilink\" href=\"index.php?action=browse&row_pos=$next\">". _("Next entries")."</a></td>";
					print "<td class=\"navi\"><a class=\"navilink\" href=\"index.php?action=browse&row_pos=$last\">"._("Last entry") ."</a></td>";
				}
                                ?>

                        </tr>
                 </table> 
		<table width="99%">


                       <tbody>
                                <tr>
					<?php
						print ($_SESSION['admintype']==0)?"<th colspan=\"4\">":"<th colspan=\"2\">";
						print _("action");
					?>
                                        </th>

                                        <th>
                                                <!-- <?php print _("domainname");?> -->
						<?php
						print "<a class=\"th_a\" href=\"index.php?action=browse&orderby=domain_name\">"._("domainname")."</a>";
						if ($_SESSION['domain_orderby'] == 'domain_name') print "<img src=\"images/arrow_sort_".$_SESSION['domain_orderby_desc'].".png\" border=\"0\">";
						?>
                                        </th>

                                        <?php
                                        if (! $DOMAIN_AS_PREFIX){
                                                ?>
                                                <th>
						<?php print "<a class=\"th_a\" href=\"index.php?action=browse&orderby=prefix\">"._("prefix")."</a>";
						if ($_SESSION['domain_orderby'] == 'prefix') print "<img src=\"images/arrow_sort_".$_SESSION['domain_orderby_desc'].".png\" border=\"0\">";
?>
                                                </th>
                                                <?php
                                        }
                                        ?>

                                        <th>
						<?php print "<a class=\"th_a\" href=\"index.php?action=browse&orderby=maxaccounts\">"._("max Accounts")."</a>";
						if ($_SESSION['domain_orderby'] == 'maxaccounts') print "<img src=\"images/arrow_sort_".$_SESSION['domain_orderby_desc'].".png\" border=\"0\">";
?>
                                        </th>

                                        <th>
                                                <!-- <?php print _("Domain quota");?> -->
						<?php print "<a class=\"th_a\" href=\"index.php?action=browse&orderby=domainquota\">"._("Domain quota")."</a>";
						if ($_SESSION['domain_orderby'] == 'domainquota') print "<img src=\"images/arrow_sort_".$_SESSION['domain_orderby_desc'].".png\" border=\"0\">";
?>
                                        </th>

                                        <th>
                                                <!-- <?php print _("default quota per user");?> -->
						<?php print "<a class=\"th_a\" href=\"index.php?action=browse&orderby=quota\">"._("default quota per user")."</a>";
						if ($_SESSION['domain_orderby'] == 'quota') print "<img src=\"images/arrow_sort_".$_SESSION['domain_orderby_desc'].".png\" border=\"0\">";
?>
                                        </th>
                                </tr>


<?php
				

				for ($c=$_SESSION['domain_row_pos']; $c < (($next>$cnt)?($cnt):($next)); $c++){
					if ($c%2==0){
						$cssrow="row1";
					} else {
						$cssrow="row2";
					}

					$row = $result->fetchRow(DB_FETCHMODE_ASSOC,$c);

					?>
					<tr class="<?php echo $cssrow;?>">
						<?php
						if ($_SESSION['admintype']==0) {
							$_cols = array(
								'editdomain'	=> _("Edit Domain"),
								'deletedomain'	=> _("Delete Domain"),
							);
							foreach ($_cols as $_action => $_txt){
							?>
								<td>
								<?php
								printf ('<a href="index.php?action=%s&amp;domain=%s">%s</a>',
									$_action, $row['domain_name'], $_txt);
								?>
								</td>
							<?php
							}
						}
						?>
						<td>
							<?php
							if ($row['transport'] == 'cyrus') {
								echo "<a href=\"index.php?action=accounts&domain=".$row['domain_name']."\">";
								print _("accounts");
								echo "</a>";
							} else {
								print _("accounts");
							}
							?>
						</td>
						
						<td>
							<?php
							if ($row['transport'] == 'cyrus') {
								echo "<a href=\"index.php?action=aliases&domain=".$row['domain_name']."\">";
								print _("Aliases");
								echo "</a>";
							} else {
								print _("Aliases");
							}
							?>
						</td>

						<td>
							<?php echo $row['domain_name'];?>
						</td>

							<?php
							if (! $DOMAIN_AS_PREFIX){
								# Print the prefix
								echo "<td>";
								echo $row['prefix'];
								echo "</td>";
							}
							?>
						<td align="right">
							<!-- Max Account -->
							<?php
							echo $row['maxaccounts'];
							?>
						</td>
						
						<td align="right">
							<!--  Max Domain Quota -->
							<?php
							if (! $row['domainquota'] == 0) {
								echo $row['domainquota'];
							} else {
								print _("Quota not set");
							}
							?>
						</td>
						
						<td align="right">
							<!-- Default Account Quota -->
							<?php
							echo $row['quota'];
							?>
						</td>
					</tr>
					<?php
				} // End of for
				?>
			</tbody>
		</table>
			<p>&nbsp;

<!-- ############################### End browse.php ############################################# -->

<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
?>
<!-- #################################### Start browseaccounts ################################# -->
<tr>
	<td width="10">&nbsp;</td>

	<td valign="top">

	<?php
	if ($authorized) {
	$cyr_conn = new cyradm;
	$error = $cyr_conn->imap_login();

	if ($error!=0){
		die ("IMAP Error: ".$cyr_conn->geterror());
	}
	?>
	<h3>
		<?php print _("Browse accounts for domain");?>
		<span style="color: red;">
			<?php echo $_GET['domain'];?>
		</span>
	</h3>
	<?php
	if (isset($_GET['row_pos'])) $_SESSION['account_row_pos'] = $_GET['row_pos'];

	$query = "SELECT * FROM accountuser where domain_name='".$_GET['domain']."' ORDER BY username";
	$result = $handle->query($query);
	if (DB::isError($result)) {
		die (_("Database error"));
	}
	$cnt = $result->numRows($result);

	if ($cnt != 0){
		printf ("%s: %d", _("Total accounts"), $cnt);
		print "<br>"._("Displaying from position:")." ".($_SESSION['account_row_pos']+1);
		?>
		<table cellspacing="2" cellpadding="0">
			<tr>
				<td class="navi">
					<a class="navilink" href="index.php?action=newaccount&amp;domain=<?php echo $_GET['domain']; ?>"
					><?php print _("Add new account");?></a>
				</td>

				<td width="20">&nbsp;</td>

				<?php
				$prev = $_SESSION['account_row_pos'] - $_SESSION['account_maxdisplay'];
				if ($prev < 0) $prev = 0;
				$next = $_SESSION['account_row_pos'] + $_SESSION['account_maxdisplay'];
				$last = $cnt - $_SESSION['account_maxdisplay'];
				
				if ($_SESSION['account_row_pos'] <= 0){
					print "<td class=\"navi\"><a class=\"navilink\">"._("First entry") ."</a></td>";
					print "<td class=\"navi\"><a class=\"navilink\">"._("Previous entries")."</a></td>";
				} else {
					print "<td class=\"navi\"><a class=\"navilink\" href=\"index.php?action=accounts&domain=$domain&row_pos=0\">"._("First entry") ."</a></td>";
					print "<td class=\"navi\"><a class=\"navilink\" href=\"index.php?action=accounts&domain=".$_GET['domain']."&row_pos=".$prev."\">"._("Previous entries") ."</a></td>";
				}

				if ($next >= $cnt){
					print "<td class=\"navi\"><a class=\"navilink\">"._("Next entries")."</a></td>";
					print "<td class=\"navi\"><a class=\"navilink\">"._("Last entry") ."</a></td>";
				} else {
					print "<td class=\"navi\"><a class=\"navilink\" href=\"index.php?action=accounts&domain=".$_GET['domain']."&row_pos=".$next."\">"._("Next entries") ."</a></td>";
					print "<td class=\"navi\"><a class=\"navilink\" href=\"index.php?action=accounts&domain=$domain&row_pos=$last\">"._("Last entry") ."</a></td>";
				}
				?>
			</tr>
		</table>

		<table border="0" width="98%">
			<tbody>
				<tr>
					<th colspan="5">
						<?php print _("action");?>
					</th>

					<th>
						<?php print _("Email address");?>
					</th>

					<th>
						<?php print _("Username");?>
					</th>
					<?php
					$_heads = array( 
						_("Last login"), _("Quota used")
					);
					foreach ($_heads as $_head){
						printf ('<th>%s</th>', $_head);
					}
					?>
					<th>
						<?php print _("services");?>
					</th>
				</tr>

				<?php
				for ($c=$_SESSION['account_row_pos']; $c < (($next>$cnt)?($cnt):($next)); $c++){

					if ($c%2==0){
						$cssrow = "row1";
					} else {
						$cssrow = "row2";
					}

					$row = $result->fetchRow(DB_FETCHMODE_ASSOC, $c);
					$domain = $row['domain_name'];
					$username = $row['username'];

					$query2 = "SELECT * FROM virtual WHERE dest='".$username."' AND username='".$username."'"; # AND alias  !='$username'"; 
					$result2 = $handle->query($query2);
					if (DB::isError($result2)) {
						die (_("Database error"));
					}
					$cnt2 = $result2->numRows($result2);

					$query3 = "SELECT * FROM log WHERE user='".$username."' ORDER BY time DESC";
					$result3 = $handle->query($query3); 
					if (! DB::isError($result3)){
						$row3 = $result3->fetchRow(DB_FETCHMODE_ASSOC, 0);
						$lastlogin = $row3['time'];
					} else {
						$lastlogin = '';
					}
					if ($lastlogin==""){
						//$lastlogin=_("Never logged in");
						$lastlogin=_("n/a");
					}
					$_dom_user = sprintf('&amp;domain=%s&amp;username=%s',
						$_GET['domain'], $username);
					?>

					<tr class="<?php echo $cssrow;?>">
						<td align="center" valign="middle">
							<a href="index.php?action=editaccount<?php echo $_dom_user; ?>"
							><?php print _("Edit email addresses");?></a>
						</td>

						<td align="center" valign="middle">
							<a href="index.php?action=manageaccount<?php echo $_dom_user; ?>"
							><?php print _("Edit account");?></a>
						</td>

						<td align="center" valign="middle">
							<a href="index.php?action=forwardaccount<?php echo $_dom_user; ?>"> <?php print _("Forward");?></a>
						</td>

						<td align="center" valign="middle">
							<a href="index.php?action=deleteaccount<?php echo $_dom_user; ?>"> <?php print _("Delete account");?></a>
						</td>

						<td align="center" valign="middle">
							<a href="index.php?action=catch<?php echo $_dom_user; ?>"><?php print _("Set catch all");?></a>
						</td>

						<td valign="middle">
							<?php
							// Print All Emailadresses found for the account
							for ($c2 = 0; $c2 < $cnt2; $c2++){
								$row2 = $result2->fetchRow(DB_FETCHMODE_ASSOC, $c2);
								print $row2['alias'] . "<br>";
							}
				                        $query4 = "SELECT * FROM virtual WHERE alias='".$username."' AND username=''";
							$result4 = $handle->query($query4);
							if (DB::isError($result4)) {
								die (_("Database error"));
							}
							$row4 = $result4->fetchRow(DB_FETCHMODE_ASSOC, 0);
							if (is_array($row4)){
							    #print "<hr color=\"ffffff\"><b>" . _("Forwards") . ":</b><br>";
							    print "<hr class=table><b>" . _("Forwards") . ":</b><br>";
							    $forwards_tmp = preg_split('|,\s*|', stripslashes($row4['dest']));   
							    $forwards = array();                                                
							    while (list(, $forward) = each($forwards_tmp)){
								if (strtolower($forward) != strtolower($username)){
								    $forwards[] = htmlspecialchars(trim($forward));
								} else {
								    $forwards[] = "<b>" . htmlspecialchars(trim($forward)) . "</b>";
								}
							    }
							    echo implode("<br>", $forwards);
							}
							?>
						</td>

						<td valign="middle">
							<?php echo $username;?>
						</td>

						<td align="center" valign="middle">
							<?php echo $lastlogin;?>
						</td>

						<td valign="middle" align="center">
							<?php
							if ($DOMAIN_AS_PREFIX){
								$quota = $cyr_conn->getquota("user/" . $username);
							} else {
								$quota = $cyr_conn->getquota("user." . $username);
							}

							if ($quota['used'] != "NOT-SET"){
								$q_used  = $quota['used'];
								$q_total = $quota['qmax'];
								if (! $q_total == 0){
									$q_percent = 100*$q_used/$q_total;
									$b_img = 'green.gif';
									if ($q_percent >= $_SESSION['warnlevel']){
										$b_img = 'red.gif';
									}
									echo '<table class="quota_table">';
									echo '<tr>';
									echo '<td class="quota_td" style="background: url(\'images/'.$b_img.'\') repeat-y; background-position: '.((-100)+min(100,round($q_percent))).';">';
									echo round($q_percent,2).'%</td>';
									echo '</tr>';
									echo '</table>';

									printf ("%d MB %s %d MB",
										$quota['used']/1024, _("out of"),
										$quota['qmax']/1024);
								} else {
									print _("Unable to retrieve quota");
								}
							} else {
								print _("Quota not set");
							}
							?>
						</td>
						<td valign="middle">
						<table border=0 align="center">
						<?php
						#print_r ($row);
						if($row['imap']==1){
							print "<tr><td>imap</td><td><img src=\"images/checked.png\" alt=\"yes\" border=0></td></tr>";
						} 
						else{
							print "<tr><td>imap</td><td><img src=\"images/false.png\" alt=\"no\" border=0></td></tr>";
						}
						if($row['pop']==1){
                                                        print "<tr><td>pop</td><td><img src=\"images/checked.png\" alt=\"yes\" border=0></td></tr>";
                                                }
						else{
							print "<tr><td>pop</td><td><img src=\"images/false.png\" alt=\"no\" border=0></td></tr>";
						}
						if($row['sieve']==1){
                                                        print "<tr><td>sieve</td><td><img src=\"images/checked.png\" alt=\"yes\" border=0></td></tr>";
                                                }
						else{
							print "<tr><td>sieve</td><td><img src=\"images/false.png\" alt=\"no\" border=0></td></tr>";
						}

						if($row['smtpauth']==1){
                                                        print "<tr><td>smtpauth</td><td><img src=\"images/checked.png\" alt=\"yes\" border=0></td></tr>";
                                                }
                                                else{
                                                        print "<tr><td>smtpauth</td><td><img src=\"images/false.png\" alt=\"no\" border=0></td></tr>";
                                                }

                                                if($row2['status']==1){
                                                        print "<tr><td>smtp</td><td><img src=\"images/checked.png\" alt=\"yes\" border=0></td></tr>";
                                                }
                                                else{
                                                        print "<tr><td>smtp</td><td><img src=\"images/false.png\" alt=\"no\" border=0></td></tr>";
                                                }



						?>
						</table>
						</td>
					</tr>
					<?php
				}
				?>
			</tbody>
		</table>
		<?php
	} else {
		print _("No accounts found");
		?>
		<table>
			<tr>
				<td class="navi">
					<a class="navilink" href="index.php?action=newaccount&amp;domain=<?php echo $_GET['domain'];?>">
					<?php print _("Add new account");
					?></a>
				</td>
			</tr>
		</table>
		<?php
	}
	} else {
	?>
                        <h3>
                                <?php print $err_msg;?>
                        </h3>
                        <a href="index.php?action=browse"><?php print _("Back");?></a>
                        <?php
	}
	?>
	</td>
</tr>
<!-- ##################################### End browseaccounts.php #################################### -->

<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
?>
<!-- #################### catchall.php start #################### -->
<tr>
	<td width="10">&nbsp;</td>
	<td valign="top">

		<h3>
			<?php print _("Define a Account for receiving undefined adresses for domain");?>
			<span style="color: red;">
				<?php echo $_GET['domain'];?>
			</span>
		</h3>
	<?php
	if ($authorized) {
		if (empty($_GET['confirmed'])){
			$query = "SELECT * FROM virtual WHERE alias='@".$_GET['domain']."'";
			$result = $handle->query($query);
			$cnt = $result->numRows();
			$row = $result->fetchRow(DB_FETCHMODE_ASSOC, 0);
			$current_username=$row['username'];

			if (empty($cnt) OR $current_username != $username){
				?>
				<h3>
					<?php print _("Do you really want to define the user");?>
					<span style="color: red;">
					<?php echo $username;?>
					</span>
					<?php print _("to receive all undefined emailadresses");
					print "?";
					print "</h3>";
					if ($cnt==1){
						print _("The currently defined user")."&nbsp;".$current_username."&nbsp;"._("will not receiving any undefined emailadresses anymore");
					}
				?>

				<form action="index.php" method="get">
					<input type="hidden" name="action"
					value="catch">

					<input type="hidden" name="confirmed"
					value="true">

					<input type="hidden" name="domain"
					value="<?php print $_GET['domain']; ?>">

					<input type="hidden" name="username"
					value="<?php print $username; ?>">

					<input class="button" type="submit"
					name="confirmed"
					value="<?php print _("Yes"); ?>">

					<input class="button" type="submit"
					name="cancel"
					value="<?php print _("Cancel"); ?>">
				</form>
				<?php
			}
			else if ($cnt==1 AND $current_username==$username){
				print _("The user")." ".$current_username." "._("is allready defined to receive all undefined Emails.");
				print "<h3>";
				print _("Do you want to remove the function \"catch all\" for the account");
				print " &nbsp;".$current_username;
				print "?";
				print "</h3>";

				?>
				<form action="index.php" method="get">
					<input type="hidden" name="action"
					value="delete_catchall">

					<input type="hidden" name="confirmed"
					value="true">

					<input type="hidden" name="domain"
					value="<?php print $_GET['domain']; ?>">

					<input type="hidden" name="username"
					value="<?php print $username; ?>">

					<input class="button" type="submit"
					name="confirmed"
					value="<?php print _("Yes"); ?>">

					<input class="button" type="submit"
					name="cancel"
					value="<?php print _("Cancel"); ?>">
				</form>
			<?php
			}
		} elseif (!empty($_GET['confirmed']) && empty($_GET['cancel'])){

			# First Delete the entry from the database
			$query = "DELETE FROM virtual WHERE alias='@".$_GET['domain']."'";
			$result = $handle->query($query);
			# And then add the new one
			$query = "INSERT INTO virtual (alias, dest, username, status) values ('@".$_GET['domain']."' , '$username' , '$username' , '1')";
			$result = $handle->query($query);
			if (DB::isError($result)) {
				die (_("Database error"));
			} else {
			?>
				<h3>
					<?php print _("successfully added to Database");?>
				</h3>
			<?php
				include WC_BASE . "/browseaccounts.php";
			}
		} elseif (!empty($_GET['cancel'])){
			?>
			<h3>
				<?php print _("Cancelled");?>
			</h3>
			<?php
			include WC_BASE . "/browseaccounts.php";
		}
	} else {
	?>
		<h3>
			<?php print $err_msg;?>
		</h3>
		<a href="index.php?action=accounts&domain=<?php echo $_GET['domain'];?>"><?php print _("Back");?></a>
	<?php
	}
	?>
	</td>
</tr>
<!-- #################### catchall.php end #################### -->

<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
?>
<!-- #################### Start main #################### -->
<tr>
	<td width="10">&nbsp;</td>
	<td valign="top">
	<?php
	if (!isset($_POST['confirmed'])){
		?>
		<h3>
			<?php print _("Change password for account");?>
			<span style="color: red;">
				<?php print $_SESSION['user'];?>
			</span>
		</h3>
		<form action="index.php" method="post">
			<input type="hidden" name="action" value="changeadminpasswd">
			<input type="hidden" name="confirmed" value="true">
			<table>
				<tr>
					<td>
						<?php print _("Old Password");?>
					</td>

					<td>
						<input
						class="inputfield"
						type="password"
						name="old_password"
						onfocus="this.style.backgroundColor='#aaaaaa'"
						>
					</td>
				</tr>
				
				<tr>
					<td>
						<?php print _("New Password");?>
					</td>

					<td>
						<input
						class="inputfield"
						type="password"
						name="new_password"
						onfocus="this.style.backgroundColor='#aaaaaa'"
						>
					</td>
				</tr>

				<tr>
					<td>
						<?php
						print _("Confirm Password");
						?>
					</td>

					<td>
						<input
						class="inputfield"
						type="password"
						name="confirm_password"
						onfocus="this.style.backgroundColor='#aaaaaa'"
						>
					</td>
				</tr>

				<tr>
					<td colspan="2" align="center">
						<input
						class="inputfield"
						type="submit"
						value="<?php print _("Submit"); ?>"
						>
					</td>
				</tr>
			</table>
		</form>
	</td>
</tr>
		<?php
	}
	else { // if (!isset($_POST['confirmed']))
		if ($authorized){
			$pwd = new password;
			$old_password = $pwd->encrypt($_POST['old_password'], $CRYPT);
			$new_password = $pwd->encrypt($_POST['new_password'], $CRYPT);
			# If the new_password field is not empty and the password matches, update the password
			$query = "UPDATE adminuser SET password='".$new_password."' WHERE username='".$_SESSION['user']."' AND password='".$old_password."'";
			$result =& $handle->query($query);
			if (DB::isError($result) || $handle->affectedRows()==0) {
				print _("Database error");
				echo ".&nbsp;";
				print _("Password not changed");
			} else {
				print _("Password successfully changed");
			}
		}
		else {
			print "<h3>".$err_msg."</h3>";
		}
		echo "</td></tr>\n";
		include WC_BASE . "/settings.php";
	}
	?>
<!-- #################### End main #################### -->

conf.php
*~
.*~
*bak
.*swp
*swp
<?php

########################################################################################
#                                                                                       
#             This is web-cyradm Version 0.5.4 CVS                                      
#                                                                                       
#                                                                                       
#########################################################################################

// Set Default language

$DEFAULTLANG = "en_EN";

# The Cyrus login stuff
$CYRUS = array(
	'HOST'	=> 'localhost',
	'PORT'	=> 143,
	'ADMIN'	=> 'cyrus',
	'PASS'	=> 'secret'
);

/* DB_TYPE

 Possible Values are:
 o mysql
 o pgsql

 To operate a mailsystem with postgreSQL you will need a patch for
 Postfix.
 
 Other Databases need to be supported by PAM and postfix
*/

$DB = array(
	'TYPE'	=> 'mysql',
	'USER'	=> 'mail',
	'PASS'	=> 'secret',
	'PROTO'	=> 'unix',	// set to "tcp" for TCP/IP
	'HOST'	=> 'localhost',
	'NAME'	=> 'mail'
);

$DB['DSN'] = sprintf('%s://%s:%s@%s+%s/%s', 	$DB['TYPE'], $DB['USER'],
						$DB['PASS'], $DB['PROTO'],
						$DB['HOST'], $DB['NAME']);

# Where should web-cyradm write its log to?
$LOG_DIR = "/var/log/web-cyradm/";

/* Log level
Possible values are (from quiet to verbose):
 ERR	- only internal errors
 WARN	- failed login, security violation
 INFO	- all login and logout
 DEBUG	- all possible information
*/
$LOG_LEVEL = "INFO";

# The default timeout in seconds for a session, after that you have to login again
$SESS_TIMEOUT = 1000;

# The default quota sets the default quota for new accounts
$DEFAULT_QUOTA = 20000;

# The default domain quota sets the quota for new domains
# 0 = No quota
$DEFAULT_DOMAIN_QUOTA = 0;

# On what quota level mark accounts on accounts list (in %)
$QUOTA_WARN_LEVEL = 90;

# Defines if passwords are encrypted or not.
# Valid Values:
#  - plain 0 No encription is used
#  - crypt 1 (shadow compatible encription)
#  - mysql 2 (MySQL PASSWORD function)
#  - md5 3 (MD5 digest)
$CRYPT = "crypt";

# web-cyradm is compatible with cyrus-imapd-2.0.16 (and earlier?)
# however, if you are using 2.1.x and wish to use email addresses 
# with .'s in them such as 'john.doe@mydomain.com' you can set this
# option DOMAIN_AS_PREFIX to '1'.  NOTE: you also have to add this
# line to your imapd.conf file:
#### imapd.conf: ####
# unixhierarchysep: yes

####
$DOMAIN_AS_PREFIX = 0;

# EXPERIMENTAL
# If you are using cyrus imap 2.2.x and wish to use usernames like
# email addresses you can set option DOMAIN_AS_PREFIX to '1' and
# FQUN to '1'. NOTE: you also have to add this lines to your
# imapd.conf file:
#### imapd.conf: ####
# unixhierarchysep: yes
# virtdomains: yes
####
$FQUN = 0;

# At the moment, web-cyradm supports two methods of password change:
# - through sql
# - poppassd
# sql is the default
$PASSWORD_CHANGE_METHOD = "sql"; 

# Turn up error reporting level. This overrides settings in your php.ini
#
# E_ALL             - All errors and warnings
# E_ERROR           - fatal run-time errors
# E_WARNING         - run-time warnings (non-fatal errors)
# E_PARSE           - compile-time parse errors
# E_NOTICE          - run-time notices (these are warnings which often result
#                     from a bug in your code, but it's possible that it was
#                     intentional (e.g., using an uninitialized variable and
#                     relying on the fact it's automatically initialized to an
#                     empty string)
# E_CORE_ERROR      - fatal errors that occur during PHP's initial startup
# E_CORE_WARNING    - warnings (non-fatal errors) that occur during PHP's
#                     initial startup
# E_COMPILE_ERROR   - fatal compile-time errors
# E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
# E_USER_ERROR      - user-generated error message
# E_USER_WARNING    - user-generated warning message
# E_USER_NOTICE     - user-generated notice message

error_reporting(E_ERROR);

$VERSION="0.5.5-Beta1";

# Define reserved Emailadresses (Separated by comma):
$RESERVED="postmaster,root";

$TEMPLATE[0]="default";
$TEMPLATE[1]="green";

body {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 11px;
	background-color: #f4f7f7;
}

A:ACTIVE,A:LINK, A:VISITED{
	color : White;
}
a:hover {
	color: Black;
	text-decoration : none;
}
.navi {
	font-weight: bold;
	font-size: 12px;
	letter-spacing: 2px;
	border : 1px solid Black;
	background-color : #B0C4DE;
	padding-left : 5px;
	padding-right : 5px;
	padding-bottom : 2px;
	padding-top : 2px;
	color: white;
}

a.navilink:link,a.navilink:visited,a.navilink:active {
	color : white;
}

a.navilink:hover {
	color : black;
	textdecoration : none;
}


.rootnavi {
        font-weight: bold;
        font-size: 12px;
        letter-spacing: 2px;
        border : 1px solid red;
        background-color : #B0C4DE;
        padding-left : 5px;
        padding-right : 5px;
        padding-bottom : 2px;
        padding-top : 2px;
}

a.rootnavilink:link,a.rootnavilink:visited,a.rootnavilink:active {
	color : white;
}

a.rootnavilink:hover {
	color : black;
	textdecoration : none;
}


.banner {
	border-bottom : 1px solid Black;
}
.header {
	font-size: 10px;
}
.footer {  
	font-size: 10px; 
	text-transform: lowercase
}
.row1 {
	background : #b4c6de;
	vertical-align : top;
}
.row2 {
	background : #CBCBCB;
	vertical-align : top;
}

H3 {
	font-size : 15px;
	font-weight : bold;
	text-decoration : underline;
	text-transform : uppercase;
}

TH {
	font-size : 13px;	
	font-weight : bold;
	color : #ffffff;
	background : #000462;
	letter-spacing : 2px;
	word-spacing : 3px;
	padding-left : 5px;
	padding-right : 5px;
}

.th_a:active, .th_a:link, .th_a:visited {
	color : #ffffff;
}

.th_a:hover {
	color: #ffffff;
}

TD {
	font-size : 12px;
}


.inputfield {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 11px;
	text-align:right;
	width
	cursor: ne-resize;
//	border-left:1px #eeeeee solid;
//	border-right:1px #eeeeee solid;
//	border-top:1px #eeeeee solid;
//	border-bottom:1px #000000 solid;
	background : #c5cec5;
	color : #ffffff;
	font-weight: bold;
}

.selectfield {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 11px;
	text-align:right;
	width
	cursor: ne-resize;
//	border-left:1px #eeeeee solid;
//	border-right:1px #eeeeee solid;
//	border-top:1px #eeeeee solid;
//	border-bottom:1px #000000 solid;
	background : #c5cec5;
	color : #ffffff;
	font-weight: bold;
}

.button {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 11px;
	text-align:right;
	width
	cursor: ne-resize;
//	border-left:1px #eeeeee solid;
//	border-right:1px #eeeeee solid;
//	border-top:1px #eeeeee solid;
//	border-bottom:1px #000000 solid;
	background : #c5cec5;
	color : #ffffff;
	font-weight: bold;
}

.quota_table {
	border: solid 1px black;
	background-color: white;
	padding: 3 0 3 0;
	margin-bottom: 2;
	border-spacing: 0;
}

.quota_td {
	width: 100px;
	height: 15px;
	text-align: center;
	padding: 0;
	margin: 0;
}

body {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 11px;
	background-color: #ffff7d;
}

A:ACTIVE,A:LINK, A:VISITED{
	color : #006400;
}
a:hover {
	color: Black;
	text-decoration : none;
}
.navi {
	font-weight: bold;
	font-size: 12px;
	letter-spacing: 2px;
	border : 1px solid Black;
	background-color : #03d215;
	padding-left : 5px;
	padding-right : 5px;
	padding-bottom : 2px;
	padding-top : 2px;
	color: #006400;
}

.rootnavi {
        font-weight: bold;
        font-size: 12px;
        letter-spacing: 2px;
        border : 1px solid red;
        background-color : #03d215;
        padding-left : 5px;
        padding-right : 5px;
        padding-bottom : 2px;
        padding-top : 2px;
}

.banner {
	border-bottom : 1px solid Black;
}
.header {
	font-size: 10px;
}
.footer {  
	font-size: 10px; 
	text-transform: lowercase
}
.row1 {
	background : #03d215;
	vertical-align : top;
}
.row2 {
	background : #95f87b;
	vertical-align : top;
}

H3 {
	font-size : 15px;
	font-weight : bold;
	text-decoration : underline;
	text-transform : uppercase;
}

TH {
	font-size : 13px;	
	font-weight : bold;
	color : #ffffff;
	background : #006400;
	letter-spacing : 2px;
	word-spacing : 3px;
	padding-left : 5px;
	padding-right : 5px;
}

.th_a:active, .th_a:link, .th_a:visited {
	color : #ffffff;
}

.th_a:hover {
	color: #ffffff;
}

TD {
	font-size : 12px;
}


.inputfield {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 11px;
	text-align:right;
	width
	cursor: ne-resize;
//	border-left:1px #eeeeee solid;
//	border-right:1px #eeeeee solid;
//	border-top:1px #eeeeee solid;
//	border-bottom:1px #000000 solid;
	background : #c5cec5;
	color : #ffffff;
	font-weight: bold;
}

.selectfield {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 11px;
	text-align:right;
	width
	cursor: ne-resize;
//	border-left:1px #eeeeee solid;
//	border-right:1px #eeeeee solid;
//	border-top:1px #eeeeee solid;
//	border-bottom:1px #000000 solid;
	background : #c5cec5;
	color : #ffffff;
	font-weight: bold;
}

.button {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 11px;
	text-align:right;
	width
	cursor: ne-resize;
//	border-left:1px #eeeeee solid;
//	border-right:1px #eeeeee solid;
//	border-top:1px #eeeeee solid;
//	border-bottom:1px #000000 solid;
	background : #c5cec5;
	color : #ffffff;
	font-weight: bold;
}

.quota_table {
	border: solid 1px black;
	background-color: white;
	padding: 3 0 3 0;
	margin-bottom: 2;
	border-spacing: 0;
}

.quota_td {
	width: 100px;
	height: 15px;
	text-align: center;
	padding: 0;
	margin: 0;
}
<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
?>
<!-- #################### delete_catchall.php start #################### -->
<tr>
	<td width="10">&nbsp;</td>
	<td valign="top">

<?php
	if ($authorized) {
		if (!empty($_GET['confirmed']) AND empty($_GET['cancel'])){
			$query = "DELETE from virtual WHERE alias='@".$_GET['domain']."'";
			$result = $handle->query($query);
			if (DB::isError($result)) {
				die (_("Database error"));
			} else {
				?>
				<h3>
					<?php print _("successfully deleted from the Database");?>
				</h3>
				<?php
				include WC_BASE . "/browseaccounts.php";
			}
		} elseif (!empty($_GET['cancel'])){
			?>
			<h3>
				<?php print _("Cancelled");?>
			</h3>
			<?php
			include WC_BASE . "/browseaccounts.php";
		}
	} else {
		?>
		 <h3>
			 <?php print $err_msg;?>
 		 </h3>
		 <a href="index.php?action=accounts&domain=<?php echo $_GET['domain'];?>"><?php print _("Back");?></a>
		<?php
	}
?>
	</td>
</tr>
<!-- #################### delete_catchall.php end #################### -->

<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
?>
<!-- #################### deleteaccount.php start #################### -->
<tr>
	<td width="10">&nbsp;</td>
	<td valign="top">

		<?php

		if ($authorized){
			if (empty($_GET['confirmed'])){
				?>
				<h3>
					<?php print _("Delete an Account from the System");?>
				</h3>

				<h3>
					<?php print _("Do you really want to delete the user ");?>
					<span style="color: red;">
						<?php echo $_GET['username'];?>
					</span>
					<?php print _("with all its defined Emailadresses");?>
				</h3>

				<form action="index.php">
					<input type="hidden"
					name="action"
					value="deleteaccount">
					
					<input type="hidden"
					name="confirmed"
					value="true">
					
					<input type="hidden"
					name="domain"
					value="<?php print $_GET['domain'];?>">
					
					<input
					type="hidden"
					name="username"
					value="<?php print $_GET['username'];?>">
					
					<input class="button"
					type="submit"
					name="confirmed"
					value="<?php print _("Yes, delete"); ?>">
					
					<input class="button"
					type="submit"
					name="cancel"
					value="<?php print _("Cancel"); ?>">
				</form>

				<?php
			} elseif (! empty($_GET['cancel'])){
				?>
				<h3>
					<?php
						print _("Action cancelled, nothing deleted");
						include WC_BASE . "/browseaccounts.php";
					?>
				</h3>
				<?php
			} else {

				$cyr_conn = new cyradm;
				$error = $cyr_conn->imap_login();

				if ($error != 0){
					die ("Error: " . $error);
				}

				$query ="DELETE FROM virtual WHERE username='".$_GET['username']."'";
				$result = $handle->query($query);
				if (DB::isError($result)) {
					die (_("Database error"));
				}

				// Removing forwards
				$query = "DELETE FROM virtual WHERE alias='".$_GET['username']."' AND username=''";
				$result = $handle->query($query);
				if (DB::isError($result)) {
					die (_("Database error"));
				}

				$query = "DELETE FROM accountuser WHERE username='".$_GET['username']."'";
				$result = $handle->query($query);
				if (DB::isError($result)) {
					die (_("Database error"));
				}

				$query = "DELETE FROM log WHERE user='".$_GET['username']."'";
				$result = $handle->query($query);
				if (DB::isError($result)) {
					die (_("Database error"));
				}

				if ($DOMAIN_AS_PREFIX) {
					print $cyr_conn->deletemb("user/".$_GET['username']);
				} else {
					print $cyr_conn->deletemb("user.".$_GET['username']);
				}
				?>
				<h3>
					<?php print _("User deleted");?>:
					<span style="color: red;">
						<?php echo $_GET['username'];?>
					</span>
				</h3>
				<?php
				include WC_BASE . "/browseaccounts.php";
			}
		} else {
			?>
			<h3>
				<?php print $err_msg;?>
			</h3>
			<a href="index.php?action=accounts&domain=<?php echo $_GET['domain'];?>"><?php print _("Back");?></a>
			<?php
		}
		?>
	</td>
</tr>
<!-- #################### deleteaccount.php end #################### -->

<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
?>
<!-- #################### deleteadminuser.php start #################### -->
<tr>
	<td width="10">&nbsp;</td>
	<td valign="top">

		<?php
		if ($authorized){
			if (empty($_GET['confirmed'])){
				?>
				<h3>
					<?php print _("Delete an Admin account from the System");?>
				</h3>

				<h3>
					<?php print _("Do you really want to delete the Domain supervisor");?>
					<span style="color: red;">
						<?php echo $_GET['username'];?>
					</span>
				</h3>

				<form action="index.php" method="get">
					<input
					type="hidden"
					name="action"
					value="deleteadminuser"
					>

					<input
					type="hidden"
					name="confirmed"
					value="true"
					>

					<input
					type="hidden"
					name="username"
					value="<?php echo $_GET['username']; ?>"
					>

					<input
					type="hidden"
					name="domain"
					value="<?php echo $_GET['domain']; ?>"
					>

					<input class="button" type="submit" name="confirmed" value="<?php print _("Yes, delete"); ?>">

					<input class="button" type="submit" name="cancel" value="<?php print _("Cancel"); ?>" >
				</form>
				<?php
			} elseif (!empty($_GET['cancel'])){
				?>
				<h3>
					<?php print _("Action cancelled, nothing deleted");?>
				</h3>
				<?php
				include WC_BASE . "/adminuser.php";
			} else {
				$query = "DELETE FROM adminuser WHERE username='".$_GET['username']."'";
				$result = $handle->query($query);
				if (DB::isError($result)) {
					die (_("Database error"));
				}

				# The admin also needs to be deleted from the assigment table
				$query = "DELETE FROM domainadmin WHERE adminuser='".$_GET['username']."'";
				$result = $handle->query($query);
				if (DB::isError($result)) {
					die (_("Database error"));
				}

				# The admin also needs to be deleted from the settings table
				$query = "DELETE FROM settings WHERE username='".$_GET['username']."'";
				$result = $handle->query($query);
				if (DB::isError($result)) {
					die (_("Database error"));
				}

				?>
				<h3>
					<?php print _("Admin user deleted");?>
					:
					<span style="color: red;">
						<?php echo $_GET['username'];?>
					</span>
				</h3>
				<?php
				include WC_BASE . "/adminuser.php";
			}
		} else {
			?>
			<h3>
				<?php print $err_msg;?>
			</h3>
			<a href="index.php?action=adminuser&domain=<?php echo $_GET['domain'];?>"><?php print _("Back");?></a>
			<?php
		}
		?>
	</td>
</tr>
<!-- #################### deleteadminuser.php end #################### -->

<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
?>
<!-- #################################### Start deletealias.php ################################# -->
<tr>
	<td width="10">&nbsp;</td>
	<td valign="top">

<?php
if ($authorized) {
	if(empty($_GET['confirmed'])) {
		if (!empty( $_GET['dest'])) {
			// Removing a destination from an alias
?>
			<form action="index.php" method="GET">
			<input type="hidden" name="action" value="deletealias">
			<input type="hidden" name="confirmed" value="true">
			<input type="hidden" name="dest" value="<?php echo $_GET['dest'] ?>">
			<input type="hidden" name="alias" value="<?php echo $_GET['alias'] ?>">
			<input type="hidden" name="domain" value="<?php echo $_GET['domain'] ?>">
			<?php print _("Please confirm you want to remove")?> <b><?php echo $_GET['dest'] ?></b> <?php print _("from the alias");?> <b><?php echo $_GET['alias'] ?></b><br>
			<input name="submit" class="button" value="<?php print _("Yes");?>" type="submit">&nbsp;
			<input name="cancel" class="button" value="<?php print _("Cancel");?>" type="submit">
			</form>
<?php

		} else {
			// Removing the entire alias
?>
			<form action="index.php" method="GET">
			<input type="hidden" name="action" value="deletealias">
			<input type="hidden" name="confirmed" value="true">
			<input type="hidden" name="alias" value="<?php echo $_GET['alias'] ?>">
			<input type="hidden" name="domain" value="<?php echo $_GET['domain'] ?>">
			<?php print _("Please confirm you want to remove the alias");?> <b><?php echo $_GET['alias'] ?></b><br>
			<input name="submit" class="button" value="<?php print _("Yes");?>" type="submit">&nbsp;
			<input name="cancel" class="button" value="<?php print _("Cancel");?>" type="submit">
			</form>
<?php
		}
	} elseif (!empty($_GET['confirmed']) && !empty($_GET['cancel'])) {
		if (!empty($_GET['dest'])) {
			include WC_BASE . "/editalias.php";
		} else {
			include WC_BASE . "/aliases.php";
		}
	} else {
		if (!empty($_GET['dest'])) {
			// Remove a destination
			$query = "DELETE FROM virtual WHERE alias='".$_GET['alias']."' AND dest='".$_GET['dest']."' AND username = '".$_GET['domain']."'";
			$result = $handle->query($query);
			if (DB::isError($result)) {
				die (_("Database error"));
			} else {
				print _("Removed")." <b>".$_GET['dest']."</b> "._("from")." <b>".$_GET['alias']."</b>.\n";
				include WC_BASE . "/editalias.php";
			}
		} else {
			// Removing an entire alias
			$query = "DELETE FROM virtual WHERE alias = '".$_GET['alias']."' AND username = '".$_GET['domain']."'";
			$result = $handle->query($query);
			if (DB::isError($result)) {
				die (_("Database error"));
			} else {
				print _("Removed the alias")." <b>".$_GET['alias']."</b>\n";
				include WC_BASE . "/aliases.php";
			}
		}
	}
} else {
?>
			<h3>
				<?php echo $err_msg;?>
			</h3>
<?php
	if (!empty($_GET['dest'])) {
		print '<a href="index.php?action=editalias&domain='.$_GET['domain'].'&alias='.$_GET['alias'].'&dest='.$_GET['dest'].'">'. _("Back").'</a>';
	} else {
		print '<a href="index.php?action=aliases&domain='.$_GET['domain'].'&alias='.$_GET['alias'].'">'. _("Back").'</a>';
	}
}
?>
	</td>
</tr>	


	
<!-- ##################################### End newalias.php ################################## -->
<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
?>
<!-- #################### deletedomain.php start #################### -->
<tr>
	<td width="10">&nbsp;</td>
	<td valign="top">
<?php
if ($authorized) {
	$query = "SELECT * FROM accountuser WHERE domain_name='".$_GET['domain']."' ORDER BY username";
	$result1 = $handle->query($query);
	$cnt1 = $result1->numRows();

			if (empty($_GET['confirmed'])) {
				?>
					<h3>
						<?php print _("Delete a Domain from the System");?>
					</h3>

					<h3>
						<?php print _("Do you really want to delete the Domain");?> 
						<span style="color: red;">
							<?php echo $_GET['domain'];?>
						</span>
						<?php
						print _("with all its defined accounts, admins, and emailadresses");
						?>
						?
					</h3>

					<p>
						<?php print _("This can take a while depending on how many account have to be deleted");?>
					</p>

					<p style="color: red;">
						<?php print _("Your action will delete");?>
						<span style="font-weight: bolder;">
							<?php echo $cnt1;?>
						</span>
						<?php print _("accounts");?>
					</p>


					<form action="index.php" method="get">
						<input type="hidden" name="action" value="deletedomain">
						<input type="hidden" name="confirmed" value="true">
						<input type="hidden" name="domain" value="<?php print $_GET['domain']; ?>">

						<input class="button"
						type="submit" name="confirmed" 
						value="<?php print _("Yes, delete");?>">
						
						<input class="button"
						type="submit" name="cancel"
						value="<?php print _("Cancel");?>">
					</form>
					<?php
			} elseif (!empty($_GET['confirmed']) && !empty($_GET['cancel'])) {
					?>
					<h3>
						<?php print _("Action cancelled, nothing deleted");?>
					</h3>
					<?php
					include WC_BASE . "/browse.php";
			} elseif (!empty($_GET['confirmed']) && empty($_GET['cancel'])) {
					$cyr_conn = new cyradm;
					$cyr_conn->imap_login();

					# First Delete all stuff related to the domain from the database
					$query = "DELETE FROM virtual WHERE alias LIKE '%@".$_GET['domain']."'";
					$result = $handle->query($query);

					$query = "DELETE FROM accountuser WHERE domain_name='".$_GET['domain']."'";
					$result = $handle->query($query);

					$query = "DELETE FROM domain WHERE domain_name='".$_GET['domain']."'";
					$result = $handle->query($query);

					for ($i=0; $i<$cnt1; $i++) {
						$row = $result1->fetchRow(DB_FETCHMODE_ASSOC, $i);
						$username = $row['username'];
						$query = "DELETE FROM virtual WHERE username='".$username."'";
						$result = $handle->query($query);
						# Removing forwards
						$query = "DELETE FROM virtual WHERE alias='".$username."'";
						$result = $handle->query($query);

						# And also delete the Usermailboxes from the cyrus system
						if ($DOMAIN_AS_PREFIX){
							print $cyr_conn->deletemb("user/".$username);
						} else {
							print $cyr_conn->deletemb("user.".$username);
						}

					}

					# Finally the domain must be removed from the domainadmin table
					$query = "SELECT * FROM domainadmin WHERE domain_name='".$_GET['domain']."'";
					$result = $handle->query($query);
					$cnt = $result->numRows();
					for ($i=0; $i < $cnt; $i++) {

						# After getting the resulttable we search for the adminuser 
						# in each row
						$row = $result->fetchRow(DB_FETCHMODE_ASSOC,$i);
						$username = $row['adminuser'];

						$query = "SELECT * FROM domainadmin where adminuser='".$username."'";
						$result2 = $handle->query($query);
						$cnt2 = $result1->numRows();

						# If the adminuser is only the admin for the domain to be
						# deleted, then this adminuser also needs to be deleted
						if ($cnt2 == 1){
							$query = "DELETE FROM adminuser where username='".$username."'";
							$result = $handle->query($query);
						}
					}

					# Finally delete every entry with the domain to be deleted
					$query = "DELETE FROM domainadmin where domain_name='".$_GET['domain']."'";
					$result = $handle->query($query);
					?>
					<h3>
						<?php print _("Domain");?>
						<span style="color: red;">
							<?php echo $_GET['domain']; ?>
						</span>
						<?php print _("successfully deleted");?>
					</h3>
					<?php
					unset($_GET['domain']);
					include WC_BASE . "/browse.php";
			} // End If (empty($_GET['confirmed']))
} else {
?>
		<h3>
			<?php print $err_msg;?>
		</h3>
		<a href="index.php?action=browse"><?php print _("Back");?></a>
<?php
}
?>
	</td>
</tr>
<!-- #################### deletedomain.php start #################### -->

<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
?>
<!-- #################### deleteemail.php start #################### -->
<tr>
	<td width="10">&nbsp;</td>
	<td valign="top">
<?php
if ($authorized) {
		if (empty($_GET['confirmed'])){
			?>
			<h3>
				<?php print _("Delete emailadress from the System");?>:
				<span style="color: red;">
					<?php echo $_GET['alias'];?>
				</span>
			</h3>

			<h3>
				<?php print _("Do you really want to delete the emailadress for user");?>
				<span style="color: red;">
					<?php echo $_GET['username'];?>
				</span>
				?
			</h3>

			<form action="index.php" method="get">
				<input type="hidden" name="action" value="deleteemail">
				<input type="hidden" name="confirmed" value="true">
				<input type="hidden" name="domain" value="<?php print $_GET['domain'];?>">
				<input type="hidden" name="username" value="<?php print $_GET['username'];?>">
				<input type="hidden" name="alias" value="<?php print $_GET['alias'];?>">
				<input class="button" type="submit" name="confirmed" value="<?php print _("Yes, delete");?>">
				
				<input class="button" type="submit" name="cancel" value=" <?php print _("Cancel");?>">
			</form>
		<?php
		} elseif (!empty($_GET['confirmed']) && !empty($_GET['cancel'])) {
		?>
			<h3>
				<?php print _("Action cancelled, nothing deleted");?>
			</h3>
		<?php
			include WC_BASE . "/editaccount.php";
		} else {
			$query = "DELETE FROM virtual WHERE alias='".$_GET['alias']."' AND username='".$_GET['username']."'";
			$result = $handle->query($query);
			if (DB::isError($result)) {
				die (_("Database error"));
			}

			#TODO: Removing forwards from sieve script
			?>
			<h3>
				<?php print _("Emailadress deleted.");?>:
				<span style="color: red;">
					<?php echo $_GET['alias'];?>
				</span>
			</h3>
		<?php
			include WC_BASE . "/editaccount.php";
		}
} else {
?>
		<h3>
			<?php echo $err_msg;?>
		</h3>
		<a href="index.php?action=editaccount&domain=<?php echo $_GET['domain'];?>&username=<?php echo $_GET['username'];?>"><?php print _("Back");?></a>
<?php
}
?>
	</td>
</tr>
<!-- #################### deleteemail.php end #################### -->

<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
?>
<!-- #################### Start display #################### -->
<tr>
	<td width="10">&nbsp;</td>
	<td valign="top">
	<?php
	if (!isset($_GET['confirmed'])){
		?>
		<h3>
			<?php print _("Display preferences for");?>
			<span style="color: red;">
				<?php
				print $_SESSION['user'];
				?>
			</span>
		</h3>
		<?php
			if (!$TEMPLATE){
				die(_("No template definitions found, please check your config file"));
			}
		?>

		<form action="index.php" method="get">
			<input type="hidden" name="action" value="display">
			<input type="hidden" name="confirmed" value="true">
			<table>
				<tr>
					<td>
						<?php print _("Color scheme");?>
					</td>

					<td>
						<select class="inputfield" size="1" name="style">
						<?php
							foreach ($TEMPLATE as $temp){
								print "<option";
								if ($_SESSION['style'] == $temp) {
									echo " selected";
								}
								print " value=\"$temp\">";
								print $temp;
								print "</option>\n";
							}
						?>
						</select>
					</td>
				</tr>
				
				<tr>
					<td>
						<?php print _("Number of domains displayed on page");?>
					</td>

					<td>
						<input
						class="inputfield"
						type="text"
						name="maxdisplay"
						size="4"
						value="<?php print $_SESSION['maxdisplay'];?>"
						>
					</td>
				</tr>

				<tr>
					<td>
						<?php print _("Number of accounts displayed on page");?>
					</td>
					
					<td>
						<input
						class="inputfield"
						type="text"
						name="account_maxdisplay"
						size="4"
						value="<?php print $_SESSION['account_maxdisplay'];?>"
						>
					</td>
				</tr>
				
				<tr>
					<td>
						<?php print _("Quota usage warn level");?>
					</td>

					<td>
						<input
						class="inputfield"
						type="text"
						name="warnlevel";
						size="4"
						value="<?php print $_SESSION['warnlevel'];?>"
						>
					</td>
				</tr>
				
				<tr>
					<td colspan="2" align="center">
						<input
						class="inputfield"
						type="submit"
						value="<?php print _("Submit"); ?>"
						>
					</td>
				</tr>
			</table>
		</form>
		<?php
	}
	else { // if (!isset($_GET['confirmed']))
		if ($authorized){
			if ($_SESSION['style'] != $_GET['style']) {
				print "<center><a class=\"navi\" href=\"index.php?action=settings\">";
				print _("Reload page");
				print "</a></center>";
			}
			$_SESSION['style'] = $_GET['style'];
			$_SESSION['maxdisplay'] = $_GET['maxdisplay'];
			$_SESSION['domain_row_pos'] = 0;
			$_SESSION['account_maxdisplay'] = $_GET['account_maxdisplay'];
			$_SESSION['account_row_pos'] = 0;
			$_SESSION['warnlevel'] = $_GET['warnlevel'];
			$query = "UPDATE settings SET style='".$_SESSION['style']."', maxdisplay='".$_SESSION['maxdisplay']."', warnlevel='".$_SESSION['warnlevel']."' WHERE username='".$_SESSION['user']."'";
			$handle->query($query);
		}
		else {
			print "<h3>".$err_msg."</h3>";
		}
		echo "</td></tr>\n";
		include WC_BASE . "/settings.php";
	}
	?>
<!-- #################### End display #################### -->

<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V3.1//EN"> 

<article>

<!-- Header -->

 <artheader>

  <!-- title of HOWTO, include the word HOWTO -->

  <title>Postfix-Cyrus-Web-cyradm-HOWTO</title>

  <author>
     <firstname>Luc</firstname>
     <surname>de Louw</surname>
     <affiliation>
        <address>
           <email>luc at delouw.ch</email>
        </address>
     </affiliation>
  </author>

<revhistory>

<revision>
	<revnumber>1.3.0</revnumber>
        <date>2005-07-30</date>
        <authorinitials>ldl, mmu</authorinitials>
        <revremark>
		Major rewrite for new version 0.5.5
        </revremark>
</revision>

<revision>
	<revnumber>1.2.6</revnumber>
        <date>2004-03-30</date>
        <authorinitials>ldl</authorinitials>
        <revremark>
		Added minor additions and corrected to amavisd-new, corrected cronjob-time for freshclam
        </revremark>
</revision>
 

<revision>
        <revnumber>1.2.5</revnumber>
        <date>2004-03-28</date>
        <authorinitials>ldl</authorinitials>
        <revremark>
                Added Anti-Virus and SPAM methods (amavisd-new, spamassassin, clamav), updated cyrus-imapd section with update instructions, added instruction to restrict imapd admin access.
        </revremark>
</revision>


<revision>
        <revnumber>1.2.4</revnumber>
        <date>2003-11-30</date>
        <authorinitials>ldl</authorinitials>
        <revremark>
                Input from English proofreading, minor correction and enhancements from user-input, updated software mentioned in the HOWTO
        </revremark>
</revision>


<revision>
        <revnumber>1.2.3</revnumber>
        <date>2003-03-24</date>
        <authorinitials>ldl</authorinitials>
        <revremark>
        	Some minor correction and enhancements from user-input, updated software mentioned in the HOWTO
        </revremark>
</revision>

<revision>
        <revnumber>1.2.2</revnumber>
        <date>2003-02-14</date>
        <authorinitials>ldl</authorinitials>
        <revremark>
        	Lots of grammar and typos fixed. Some corrections to the pam_mysql Makefile
        </revremark>
</revision>


<revision>
        <revnumber>1.2.1</revnumber>
        <date>2003-02-12</date>
        <authorinitials>ldl</authorinitials>
        <revremark>
        	Non-official test-release: Added lots of fixes and updates. Added OpenSSL and more pam related stuff.
        </revremark>
</revision>


<revision>
        <revnumber>1.2.0</revnumber>
        <date>2002-10-16</date>
        <authorinitials>ldl</authorinitials>
        <revremark>
        	Added lot of user requests, updated the software mentioned in the HOWTO
        </revremark>
</revision>


<revision>
        <revnumber>1.1.7</revnumber>
        <date>2002-10-15</date>
        <authorinitials>ldl</authorinitials>
        <revremark>
                Added Michael Muenz' hints for SMTP AUTH, corrected ca-cert related mistake, improved SGML code (more metadata), updated the software mentioned in the document.
        </revremark>
</revision>

<revision>
        <revnumber>1.1.6</revnumber>
        <date>2002-06-14</date>
        <authorinitials>ldl</authorinitials>
        <revremark>
                Added sasl_mech_list: PLAIN to imapd.conf, added web-cyradm mailinglist, added more
		to web-cyradm
        </revremark>
</revision>


<revision>
        <revnumber>1.1.5</revnumber>
        <date>2002-06-11</date>
        <authorinitials>ldl</authorinitials>
        <revremark>
                Added new SQL query to initialize web-cyradm
		to have full data integrity in the MySQL Database, mysql-mydestination.cf reported to be operational as
		expected.
        </revremark>
</revision>

<revision>
        <revnumber>1.1.4</revnumber>
        <date>2002-05-15</date>
        <authorinitials>ldl</authorinitials>
        <revremark>
                Added description what is needed in /etc/services
		Another fix for pam_mysql compile, updated software versions.
        </revremark>
</revision>


<revision>
        <revnumber>1.1.3</revnumber>
        <date>2002-05-08</date>
        <authorinitials>ldl</authorinitials>
        <revremark>
                Added more description for web-cyradm, fix for wrong path of the saslauthdb-socket, Fix for
		wrong place of com_err.h, protection of the TLS/SSL private key.
        </revremark>
</revision>

<revision>
        <revnumber>1.1.2</revnumber>
        <date>2002-04-29</date>
        <authorinitials>ldl</authorinitials>
        <revremark>
                Added description for Redhat users how to install the init scripts.
        </revremark>
</revision>

<revision>
        <revnumber>1.1.1</revnumber>
        <date>2002-04-29</date>
        <authorinitials>ldl</authorinitials>
        <revremark>
                Fixed bug in configuring cyrus-IMAP (disabled unused kerberos authentication)
        </revremark>
</revision>

<revision>
        <revnumber>1.1.0</revnumber>
        <date>2002-04-28</date>
        <authorinitials>ldl</authorinitials>
        <revremark>
                Initial support for building cyrus from source, dropped binary installation
		for Cyrus, because configuration has changed with Release 2.1.x
        </revremark>
</revision>


	<revision>
	<revnumber>1.0.2</revnumber>
	<date>2002-04-25</date>
	<authorinitials>ldl</authorinitials>
	<revremark>
		Added basic description for sieve and correct sender handling, minor fixes to db related 
		stuff, Added mysql-lookup for »mydestination« , fixed bug for building postfix 
		with mysql support.
	</revremark>
</revision>

<revision>
	<revnumber>1.0.1</revnumber>
	<date>2002-04-07</date>
	<authorinitials>ldl</authorinitials>
	<revremark>
		Added an important fix for compiling pam_mysql
	</revremark>
</revision>

<revision>
	<revnumber>1.0.0</revnumber>
	<date>2002-04-07</date>
	<authorinitials>ldl</authorinitials>
	<revremark>
		Initial Release
	</revremark>
</revision>

      <!-- Additional (*earlier*) revision histories go here -->
   </revhistory>

  <abstract>
    <indexterm>
      <primary>Postfix and Cyrus</primary>
    </indexterm>

    <para>
	This document guides you through the installation of all the software used by Web-cyradm. 
	The goal is a fully functional high-performance mailsystem with user-administration with Web-cyradm, 
	a webinterface. Data like virtualusers, aliases etc. are stored in a mysql database.
    </para>

  </abstract>

 </artheader>


<!-- Section1: intro -->

 <sect1 id="intro">
   <title>Introduction</title>

   <para>
   The cyrus part is only valid for Cyrus-IMAP 2.2.x (also 2.1.x) and Cyrus-SASL 2.1.x. If you plan to use Cyrus-IMAP 2.0.x
   then please consult the deprecated version 1.0.x of this HOWTO.</para>
 
  <para>
  I strongly recommend that you upgrade to Cyrus Version 2.2.x. If you do so, you will have a better ability to get
  valuable support from the user community</para>

   <indexterm>
    <primary>disk!introduction</primary>
   </indexterm>

   <sect2>
	<title>Contributors and Contacts</title>
	<para>First I would thank all those people who sent questions and suggestions that made the
	further development of this document possible. It shows me that sharing knowledge is the right way.
	I would encourage you to send me more suggestion, just write me an email <email>luc at delouw.ch</email>
	</para>
   </sect2>

   <sect2>
	<title>Why I wrote this document</title>

	<para>There are different approaches on how to set up different mailsystems. Most documents that are available are
	related to Sendmail, procmail, WU-IMAPd and friends. These packages are very good but are unfortunately very
	inflexible in their user administration.
	</para>

	<para>For a long time I was testing alternative MTA's like qmail, postfix and exim, in conjunction with IMAP/POP-servers like 
	Cyrus, vpopmail, Courier IMAP and others.</para>
	
	<para>At the end of the day, from my point of view the couple Postfix/Cyrus seems to be the
	most flexible and best performing solution.</para>
	
	<para>All these combinations of software had one thing in common: there was very little documentation available
	describing how these packages work together with each other.
	To install the software, lot of effort was spent to get all information needed to get all the 
	software running.</para>
	
    </sect2>


<!-- Section2: copyright -->

  <sect2 id="copyright">
   <title>Copyright Information</title>

   <para>
    This document is copyrighted (c) 2002, 2003, 2004, 2005 Luc de Louw and is
    distributed under the terms of the Linux Documentation Project
    (LDP) license, stated below. 
   </para>

   <para>
    Unless otherwise stated, Linux HOWTO documents are
    copyrighted by their respective authors. Linux HOWTO documents may
    be reproduced and distributed in whole or in part, in any medium
    physical or electronic, as long as this copyright notice is
    retained on all copies. Commercial redistribution is allowed and
    encouraged; however, the author would like to be notified of any
    such distributions.
   </para>

   <para>
    All translations, derivative works, or aggregate works
    incorporating any Linux HOWTO documents must be covered under this
    copyright notice. That is, you may not produce a derivative work
    from a HOWTO and impose additional restrictions on its
    distribution. Exceptions to these rules may be granted under
    certain conditions; please contact the Linux HOWTO coordinator at
    the address given below.
   </para>

   <para>
    In short, we wish to promote dissemination of this
    information through as many channels as possible. However, we do
    wish to retain copyright on the HOWTO documents, and would like to
    be notified of any plans to redistribute the HOWTOs.
   </para>

   <para>
    If you have any questions, please contact 
    <email>linux-howto at metalab.unc.edu</email>
   </para>
  </sect2>

<!-- Section2: disclaimer -->

  <sect2 id="disclaimer">
   <title>Disclaimer</title>

   <para>
    No liability for the contents of this documents can be accepted.
    Use the concepts, examples and other content at your own risk.
    As this is a new edition of this document, there may be errors
    and inaccuracies, that may of course be damaging to your system.
    Proceed with caution, and although this is highly unlikely,
    the author(s) do not take any responsibility for that.
   </para>

   <para>
    All copyrights are held by their by their respective owners, unless
    specifically noted otherwise.  Use of a term in this document
    should not be regarded as affecting the validity of any trademark
    or service mark.
   </para>

   <para>
    Naming of particular products or brands should not be seen 
    as endorsements.
   </para>

   <para>
    You are strongly recommended to take a backup of your system 
    before major installation and backups at regular intervals.
   </para>
  </sect2>

<!-- Section2: newversions-->

  <sect2 id="newversions">
   <title>New Versions</title>

    <indexterm>
     <primary>(your index root)!news on</primary>
    </indexterm>

   <para>New version of this document are announced on freshmeat</para>

   <para>
    The latest version of this document can be obtained from
    <ulink url="http://www.delouw.ch/linux">http://www.delouw.ch/linux</ulink> 
   </para>

   <para>
   <itemizedlist>
    <listitem>
     <para>
      <ulink url="http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/html/index.html">HTML</ulink>.
     </para>
    </listitem>

    <listitem>
     <para>
      <ulink url="http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/Postfix-Cyrus-Web-cyradm-HOWTO.ps">
	Postscript (ISO A4 format)</ulink>.
     </para>
    </listitem>

    <listitem>
     <para>
       <ulink URL="http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/Postfix-Cyrus-Web-cyradm-HOWTO.pdf">Acrobat PDF</ulink>.
     </para>
    </listitem>

    <listitem>
     <para>
       <ulink URL="http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/Postfix-Cyrus-Web-cyradm-HOWTO.sgml">SGML Source</ulink>.
     </para>
    </listitem>

    <listitem>
     <para>
      <ulink url="http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/Postfix-Cyrus-Web-cyradm-HOWTO.tar.gz">HTML gzipped tarball</ulink>.
     </para>
    </listitem>
   </itemizedlist>
   </para>

  </sect2>

<!-- Section2: credits -->

  <sect2 id="credits">
   <title>Credits</title>
<itemizedlist>

<listitem>
        <para>
	Martynas Bieliauskas <email>martynas at inet.lt</email> submitted a good idea how to restrict the cyrus admin to localhost only.
	</para>
</listitem>

 <listitem>
	<para>
	Michael Muenz <email>m.muenz at maxonline.de</email> for his help with SMTP Authentication
	</para>
 </listitem>
 <listitem>
	<para>
	Ron Wheeler <email>rwheeler at artifact-software.com</email> for his help with editing for readability
	</para>
 </listitem>

 <listitem>
   <para>
    The nice people at <email> discuss at tldp.org</email> for
    supporting me in writing the HOWTOs.
   </para>
 </listitem>
</itemizedlist>

  </sect2>

<!-- Section2: feedback -->

  <sect2 id="feedback">
   <title>Feedback</title>

   <para>
    Feedback is most certainly welcome for this document. Without
    your submissions and input, this document wouldn't exist. Please
    send your additions, comments and criticisms to the following
    email address : <email>luc at delouw.ch</email>.
   </para>
  
   <para>
   Please understand, that I don't want to add Cyrus-IMAP 2.0.x related stuff in this document anymore.
   </para>

   </sect2>

<!-- Section2: translations -->

  <sect2 id="translations">
   <title>Translations</title>

   <para>
     	At the moment no translations are available. A German translation is planned and would be
     	written by me as soon as I get the time. 
   </para>

   <para>
	Translations to other languages are always welcome. If you translate this document, please translate the
	SGML source. Please let me know if you begin to translate, so I can set a link here.
   </para>

   </sect2>

 </sect1>

<!-- Section1: intro: END -->


<!-- Section1: Technologies  -->

 <sect1 id="tech">
  <title>Technologies</title>



  <sect2 id="postfix">
   <title>The Postfix MTA</title>
	<blockquote><attribution>www.postfix.org</attribution>
	<para>
        Postfix attempts to be fast, easy to administer, and secure, while at the same time
        being sendmail compatible enough to not upset existing users. Thus, the outside has a
        sendmail-ish flavor, but the inside is completely different.</para></blockquote>
	<para>
		<figure>
	        <title>Postfix - the big picture</title>
      			<graphic FileRef="big-picture.png"></graphic>
     		</figure>
   	</para>

	<para>Doesn't it look impressive? - It looks much more complicated than it is. Postfix is indeed nice
	      to configure and handle.</para>

	<para>Unlike sendmail, postfix is not one monolithic program, it is a compilation of small programs, each of
	      which has a specialized function. 
	      At this point I don't what to go into details about what each program does what.
	      If you are interested how Postfix works, please see the documentation at 
	      <ulink url="http://www.postfix.org/docs.html">http://www.postfix.org/docs.html</ulink>
	</para>	

	<para>In this document you will find the information needed to get the system running in conjunction with the other components of a full e-mail setup.</para>

  </sect2>

  <sect2 id="cyrus">
   <title>Cyrus IMAP</title>
	<para>Cyrus IMAP is developed and maintained by Carnegie Mellon University.</para>

	<para>Unlike the WU-IMAPd package, Cyrus uses its own method to store the user's mail. 
	Each message is stored in its own file. 
	The benefit of using separate files is improved reliability since only one message is lost if there is a filesystem error.
	Metadata such as the status of a message (seen, etc) is stored in a database.
	Additionally, the messages are indexed to improve Cyrus performance, specially with lots of users and/or lots of big emails.
	There is nothing else as fast as the Cyrus IMAP-server.</para>

	<para>
	Another very important feature is that you don't need a local Un*x user for each account. All users are 
	authenticated by the IMAP-Server. This makes it a great solution when you have a really huge number of users.</para>

	<para>
	User administration is done by special IMAP-commands. This allows you to either use the commandline interface
	or use one of the available Web interfaces. This method is much more secure than a Webinterface to
	<filename> /etc/passwd</filename>.</para>

	<para>Starting from Cyrus 2.1, SASL-lib version 2 is used for authentication. 
	For the setup described in this HOWTO, a tree-layer authentication is implemented.
	Cyrus authenticates with saslauthdaemon which forwards the request
	to pam_mysql which finally looks up the user information in the MySQL-table.</para>

	<para>
	Since CMU changed the license policy for Cyrus, this software is going to be used by many more users.</para>

  </sect2>

  <sect2 id="sasl">
   <title>Cyrus SASL</title>
	<para>SASL means »Simple Authentication and Security Layer«. It is standardized by the IETF (Internet 
	Engineering Taskforce). SASL is used by network servers (in this case Cyrus-IMAP) to
	handle authentication requests from clients.</para>

	<para>Cyrus SASL is a extensive software, and sometimes not	easy to understand.
	Even I have just the minimum knowledge needed to write this HOWTO.</para>

  </sect2>

  <sect2 id="openssl">
   <title>OpenSSL</title>
	<para>OpenSSL is a library needed by SASL for encryption of the data-stream. It is used by 
	almost all opensource software that need encryption.
	Most or all Un*x distributions come with a pre-installed OpenSSL.
	Be sure to also install the appropriate devel-package. If you like, you can 
	compile OpenSSL by yourself. This will be required if you need to fix a security hole.
	</para>
  </sect2>

  <sect2 id="mysql">
   <title>MySQL Database</title>
        <para>MySQL is a very fast, powerful and very easy to use database.</para>
	
	<para>Since Cyrus can authenticate its users with pam, you can use pam_mysql as a connector to the
	user database stored in MySQL. This allows you to create a nice Webinterface for your users for changing 
	passwords, defining and deleting aliases and more.</para>
	
  </sect2>

  <sect2 id="pam-mysql">
  <title>pam_mysql</title>
	
	<para>pam means "Pluggable Authentication module" and was originally proposed by some people at Sun.
	In meantime a lot of modules have been developed. One of them is an interface to MySQL</para>

	<para>With pam_mysql you store the users password in a MySQL database. Further, Postfix is able to
	lookup aliases from a MySQL-table. At the end of the day, you have a base for all administrative tasks
	to be done by the postmaster.</para>
	
	<para>You will be able to delegate some tasks to powerusers. For example, tasks such as creating accounts, changing passwords and creating new aliases can be delegated to an administrator for a particular domain. 
	At the end of the day, you, as a sysadmin, will have the time to do some more productive tasks or write a HOWTO for the Linux Documentation Project.</para>
  </sect2>	

  <sect2 id="web-cyradm">
   <title>Web-cyradm Webinterface</title>
	<para>
                <figure>
                <title>Web-cyradm Domain administration</title>
                        <graphic FileRef="home.png"></graphic>
                </figure>
        </para>

        <para>Web-cyradm is the webinterface that allows you to perform the administrative tasks required to maintain the mail system.
	This screenshot shows the domain administration part of Web-cyradm.</para>
	
       <para>Web-cyradm is written in PHP, the most sophisticated html-preprocessor language.
        If you don't have a webserver with php installed, I would like to refer you to my
        <ulink url="http://www.delouw.ch/linux/apache.phtml">Apache-Compile-HOWTO</ulink>.
        This document describes how to set up Apache with PHP and other modules.</para>


	<para>Web-cyradm is under active development from people around the globe. The list of features grows
	with each release. If you would like to contribute to web-cyradm, or you have a nice idea, feel free to contact
	the mailinglist on <ulink url="http://www.web-cyradm.org">http://www.web-cyradm.org</ulink>
	</para>
	
	<para>
	The following is a partial list of features:
	<itemizedlist>

	<listitem>
	<para>Administration of multiple virtual domains</para>
	</listitem>

	<listitem>
	<para>Setting of quotas</para>
	</listitem>

	<listitem>
	<para>Automatically creating usernames, either with a defined prefix, or the domainname</para>
	</listitem>

	<listitem>
	<para>Delegation of tasks such as creating new users to »Domain Masters« </para>
	</listitem>

	<listitem>
	<para>Mapping of user-accounts to email addresses</para>
	</listitem>

	<listitem>
	<para>Forwarding of accounts to single aliases</para>
	</listitem>

	<listitem>
	<para>Vacation functions for a single aliases</para>
	</listitem>
	
	<listitem>
	<para>Support for SMTP Transport Tables</para>
	</listitem>

	<listitem>
	<para>Restrict access to serveral protocols only</para>
	</listitem>

	<listitem>
	<para>Support for MySQL and PostgreSQL</para>
	</listitem>

	<listitem> 
	<para>i18n (internationalization) support (including different charsets)</para>
	</listitem>

	<listitem> 
	<para>Translated into 18 Languages and growing</para>
	</listitem>

	</itemizedlist>
	</para>
	
	<para>Web-cyradm supports different roles of its users. 
	If you plan to use it as a frontend for your powerusers, please notice 
	that security may be a problem. The role based stuff needs a security review.
	</para>

  </sect2>


 </sect1>

<!-- Section1: Technologies: END -->


<!-- Section1: Install -->

 <sect1 id="install">
  <title>Getting and installing the software</title>

	<para>
	Most of the software is included in your Linux distribution. I. e. SuSE is shipping Cyrus as 
	far as I know since 7.1.
	Since SuSE 8.1, cyrus-imap 2.1 and sasl2 is included, and works. It is still recommended to compile
	Cyrus by yourself. SuSE does not ship a MySQL enabled Postfix.
	</para>

	<tip><title>Deprecated packages for Debian stable and testing</title>
	<para>Debian users probably want to install packages provided by Debian. Unfortunately Debian stable (Sarge)is using a deprecated version of the software used in this HOWTO. You can find actual packages at <ulink url="http://incase.de/cyrus22/">http://incase.de/cyrus22/</ulink> for i386 and amd64 machines.</para>
</tip>
	
<!-- Section2: Mysql -->

  <sect2 id="MySQL-install">
   <title>Getting and installing MySQL</title>

	<sect3><title>Download</title>
		<para>
		Origin-Site: <ulink url="http://dev.mysql.com/downloads/">http://dev.mysql.com/downloads/</ulink>
		</para>
   	</sect3>

	<sect3><title>Building and installing</title>
<screen>
cd /usr/local
tar -xvzf mysql-4.1.12.tar.gz
cd mysql-4.1.12

./configure \
--prefix=/usr/local/mysql \
--enable-assembler \
--with-innodb \
--without-debug

make
make install

/usr/local/mysql/bin/mysql_install_db
echo /usr/local/mysql/lib/mysql >> /etc/ld.so.conf
ldconfig

ln -s /usr/local/mysql/include/mysql /usr/include/mysql
ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql
</screen>

	<para>To improve security, add a mysql-user on your system i.e. »mysql«, then</para>
	
<screen>
chown -R mysql /usr/local/mysql/var
</screen>
	<para>
	If you want to start MySQL automatically at boottime, copy 
	<filename>/usr/local/mysql/share/mysql/mysql.server</filename> to <filename>/etc/init.d/</filename>
	 for SuSE, for Redhat it is <filename>/etc/rc.d/init.d</filename> instead of <filename>/etc/init.d/</filename>. 
	Further you need to add symbolic links to <filename>/etc/init.d/rc3.d</filename> 
	for SuSE and <filename>/etc/rc.d/rc3.d</filename> for Redhat.
	</para>

	<para>
	The following example is for SuSE Linux and should be easily changed for Redhat and other Linux 
	distributions and commercial Unix systems.
	</para>
	
<screen>
cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/
ln -s /etc/init.d/mysql.server /etc/init.d/rc3.d/S20mysql
ln -s /etc/init.d/mysql.server /etc/init.d/rc3.d/k08mysql
</screen>

	</sect3>
   </sect2>



  <sect2 id="berkeley-db">
  <title>Getting and installing Berkeley DB</title>

	<para>
	The Berkeley DB is a requirement for building Cyrus-SASL and Cyrus-IMAP. Some Systems comes with 
	recent versions but without the header files installed. Please see your distributors CD/DVD 
	to see if you can install the header files from a package. Usually this package is called bdb-devel.
	</para>

	<para>
	It's not recommended to install Berkeley DB from source because of many incompatibilities within
	the different software used with Web-Cyradm. 
	</para>

	<para>It is also very important, that Cyrus-SASL and Cyrus-IMAP is compiled with the same version of 
	Berkeley DB or else you can run into problems.</para>

</sect2>

	

<sect2><title>Getting and installing OpenSSL</title>

<sect3><title>Download OpenSSL</title>
<para>Origin-Site
<ulink url="http://www.openssl.org">http://www.openssl.org</ulink>
</para>

</sect3>

<sect3><title>Building and installing</title>

<screen>
cd /usr/local
tar -xvzf openssl-0.9.7g.tar.gz

cd openssl-0.9.7g

./config shared

make
make test
make install

echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
ldconfig
</screen>

<tip><title>Select your CPU to improve speed</title>
<para>
By default the Makefile generates code for the i486 CPU. You can change this by editing the
<filename>Makefile</filename> after running <command>config </command><option>shared</option>.
Search for <option>-m486</option> and replace it i.e with <option>-march=athlon</option>
</para></tip>

</sect2>


<!-- Section2: cyrus -->

  <sect2 id="cyrus-install">
  <title>Getting and installing Cyrus SASL and IMAP</title>

	<para>
	Building Cyrus SASL and IMAP from source is not a easy task. There are some prerequisites to be 
	fulfilled, and lots of difficult authentication related stuff to be considered.
	</para>

	
  <sect3><title>Download Cyrus SASL and Cyrus IMAP</title>
	<para>
	Origin-Site: <ulink url="ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-2.1.21.tar.gz">
	ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-2.1.21.tar.gz</ulink>
	</para>
	<para>Origin-Site: <ulink url="ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-imapd-2.2.12.tar.gz">
	ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-imapd-2.2.12.tar.gz</ulink>

	</para>

	</sect3>

	<sect3><title>Create the cyrus user</title>
<para>
On most systems there is no cyrus user and mailgroup by default. Check for a free UID, usually daemons are running with UIDs less that 100.
As example I am using UID 96 which is what SuSE has in the default <filename>/etc/passwd</filename>.
</para>

<screen>
groupadd mail
useradd -u 96 -d /usr/cyrus -g mail cyrus
passwd cyrus
</screen>

	<sect3><title>Building and installing Cyrus SASL</title>

<screen>
tar -xvzf cyrus-sasl-2.1.21.tar.gz
cd cyrus-sasl-2.1.21

./configure \
--enable-anon \
--enable-plain \
--enable-login \
--disable-krb4 \
--disable-otp \
--disable-cram \
--disable-digest \
--with-saslauthd=/var/run/saslauthd \
--with-pam=/lib/security \
--with-openssl=/usr/local/ssl \
--with-plugindir=/usr/local/lib/sasl2


make
make install

mkdir -p /var/run/saslauthd

cd saslauthd
make testsaslauthd
cp testsaslauthd /usr/local/bin

echo /usr/local/lib/sasl2 >> /etc/ld.so.conf
ldconfig
</screen>

<para>
The SASL library is installed in <filename>/usr/local/lib/sasl2</filename> but some programs are expecting SASL in 
<filename>/usr/lib/sasl2</filename>. So it is a good idea to create a symbolic link:
 <command>ln -s /usr/local/lib/sasl2 /usr/lib/sasl2</command>.
</para> 
<para>
When cyrus-sasl is already installed by the distribution and can't be removed you can also "overcompile"
the vendor stuff:
</para>

<screen>
./configure --prefix=/usr \
--exec-prefix=/usr \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--sysconfdir=/etc \
--libdir=/usr/lib \
--includedir=/usr/include \
--localstatedir=/var \
--with-pam=/lib \
--with-saslauthd=/var/run/saslauthd \
--with-openssl=/usr/local/ssl \
--enable-login \
--disable-krb4 \
--with-plugindir=/usr/lib/sasl2 
</screen>

<para>
This is a working configure command for Debian Woody.
</para> 
</sect3>

<sect3><title>Building Cyrus-IMAP</title>

<screen>
tar -xvzf cyrus-imapd-2.2.12.tar.gz
cd cyrus-imapd-2.2.12

export CPPFLAGS="-I/usr/include/et" 

./configure --prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--with-sasl=/usr/lib \
--with-perl=/usr/bin/perl \
--with-auth=unix \
--with-openssl=/usr/local/ssl \
--enable-annotatemore \
--enable-listext

make depend
make
make install
</screen>

<para>
The newest version of Cyrus-IMAP ships an own version of com_err.h, so the exporting CPPFLAGS is deprecated.
</para>
<para>
Please set explicitly the correct path of perl-binary. On some systems cyradm will otherwise be installed
into /usr/local/local/...
</para>


</sect3>	

<sect3 id="startupscript"><title>Automatic startup script</title>

<para>
If you wish to start the Cyrus IMAP daemon automatically after booting, you need a startup script. 
Place the following script in <filename>/etc/init.d/</filename>. For Redhat, it is 
<filename>/etc/rc.d/init.d</filename> instead of <filename>/etc/init.d/</filename>.</para>

<screen>
#!/bin/bash
#
# Cyrus startup script

case "$1" in
    start)
        # Starting SASL saslauthdaemon
        /usr/local/sbin/saslauthd -c -a pam&

        # Starting Cyrus IMAP Server
        /usr/cyrus/bin/master &
        ;;

    stop)

        # Stopping SASL saslauthdaemon
        killall saslauthd

        # Stopping Cyrus IMAP Server
        killall /usr/cyrus/bin/master

        ;;

    *)
        echo "Usage: $0 {start|stop}"
        exit 1
        ;;

esac
</screen>

<para>If I get the time, I will provide a more sophisticated script, but this script works.</para>
<para>Don't forget to adjust the path to saslauthd if you compiled it with --prefix=/usr</para>

<para>Now create the Symlinks in the runlevel directory (SuSE):</para>

<screen>
ln -s /etc/init.d/cyrus /etc/init.d/rc3.d/S20
ln -s /etc/init.d/cyrus /etc/init.d/rc3.d/K10
</screen>

<para>For Redhat:</para>

<screen>
ln -s /etc/rc.d/init.d/cyrus /etc/rc.d/rc3.d/S20cyrus
ln -s /etc/rc.d/init.d/cyrus /etc/rc.d/rc3.d/K10cyrus
</screen>

</sect3>

<sect3 id="update-cyrus"><title>Update Cyrus IMAPd</title>
<para>This section describes HOWTO update the IMAPd from version 2.1.x to 2.2.x</para>

<caution><title>Update is critical and can mean complete data loss</title>
        <para>Please test this procedure on a test/pre-production server first. Also have close look to <filename>install-upgrade.html</filename> that comes with the cyrus-imapd distribution. Please note, that you shoud plan a downtime for the production server to have the time to solve problems. Also note, that nobody I cannot take responsibility for the update procedure provided here</para>
</caution>


<para>Cyrus changed the format of the dbd databases used for internal storage of mailboxlist flags etc.</para>
<para>A convert script comes with the distribution. The most important database is <filename>/var/imap/mailboxes.db</filename>. Without that database cyrus-imapd will NOT run. This requires a backup. Lets do a dump and a backup of the database.</para>

<screen>

/etc/init.d/cyrus stop # be sure no cyrus process is running

lsof /var/imap/mailboxes.db # be sure NO process is accessing the mailbox file

su - cyrus
/usr/cyrus/bin/ctl_mboxlist -d > /tmp/mailbox.db.dump
cp /var/imap/mailboxes.db /var/imap/mailboxes.db.old
</screen>

<para>Convert the <filename>/var/imap/mailboxes.db</filename>

<screen>
/usr/cyrus/bin/cvt_cyrusdb /var/imap/mailboxes.db berkeley /var/imap/mailboxes.db.new skiplist
mv /var/imap/mailboxes.db.new /var/imap/mailboxes.db
</screen>

<para>Convert all the »seen« databases:</para>

<screen>
find /var/imap/user -name \*.seen -exec /usr/cyrus/bin/cvt_cyrusdb \{\} flat \{\}.new skiplist \; -exec mv \{\}.new \{\} \;
</screen>

<para>Converting the sieve scripts</para>

<screen>
/usr/local/cyrus-imapd-2.2.12/tools/masssievec /usr/cyrus/bin/sievec
</screen>

</sect3>
	
</sect2>

<!-- Section2: postfix -->

<sect2 id="postfix-install">
   <title>Getting and installing Postfix</title>


        <sect3><title>Download</title>
                <para>
                Origin-Site: <ulink url="http://www.postfix.org/ftp-sites.html">http://www.postfix.org/ftp-sites.html</ulink>
                </para>

        </sect3>

        <sect3> <title>Creating a User-ID (UID) and Group-ID (GID) for postfix</title>
        <para>
        Before you build and install postfix, be sure to create a »postfix« and a »postdrop« user and group if they do not exist on the system. 
		First check for the groups. You can check this by <command>grep postfix /etc/group</command> and
		<command>grep maildrop /etc/group</command>
        </para>

        <para>
        If there are no such groups and users, you just create them. Search for a free numeric UID and GID. In the
        following example I will use UID and GID 33333 for Postfix and 33335 for the maildrop UID and GID. These ID's
        correspond to other documents.
        </para>

<screen>
groupadd -g 33333 postfix
groupadd -g 33335 postdrop

useradd -u 33333 -g 33333 -d /dev/null -s /bin/false postfix
</screen>

        </sect3>



        <sect3><title>Building and installing</title>

        <para>
        The following section shows what you have to do if you installed MySQL from source as described above.
        If you installed MySQL from a binary package such as rpm or deb, then you have to change the
        include and library-flags to -I/usr/include/mysql and -L/usr/lib/mysql.
        </para>

	<caution><title>Old MTA needs to be uninstalled</title>
	<para>It is important that you uninstall any sendmail version from RPM based systems.
	I suggest that you remove sendmail, and install Postfix instead. At least SuSE RPMs need a MTA.
	After installing the Postfix-RPM, just install Postfix over the RPM installation by following the HOWTO.</para>
	</caution>



<screen>
tar -xvzf postfix-2.2.4.tar.gz

cd postfix-2.2.4

make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include/mysql -DUSE_SASL_AUTH \
-I/usr/include/sasl' 'AUXLIBS=-L/usr/local/mysql/lib/mysql \
-lmysqlclient -lz -lm -L/usr/lib -lsasl2'
make
make install
</screen>

        <para>During <command>make install</command> a few question are asked. Just pressing 
	<keycap>Enter</keycap> should match your needs. For Redhat users it could be useful to 
	enter <filename>/usr/local/share/man</filename></para>

	<para>When you're only updating Postfix type <command>make upgrade</command>.</para>

	<para>Now you need to create some symbolic links to start Postfix automatically on system startup. The sample is 
	for SuSE Linux, please consult your vendors manual for other distributions.</para>

<screen>
ln -s /usr/sbin/postfix /etc/init.d/rc3.d/S14postfix
ln -s /usr/sbin/postfix /etc/init.d/rc3.d/K07postfix
</screen>



        </sect3>
  </sect2>

<sect2 id="pam-install">
<title>Getting and installing PAM</title>
        <para>PAM is installed by default on almost all Linux distributions. I am not describing how to compile PAM
        by yourself, because it could break your system. Instead, I will describe how to install the package. 
        <para>

	<para>Users of a RPM based distribution can issue the following command:<para>

<screen>
rpm -i pam-devel.rpm
</screen>

<para>Debian users can install the devel package with the following command:</para>

<screen>
apt-get install libpam0g-dev
</screen>


</sect2>



  <sect2 id="pam-mysql-install">
  <title>Getting and installing pam_mysql</title>

	<sect3><title>Download</title>
		<para>Origin-Site: <ulink url="http://sourceforge.net/projects/pam-mysql/">
			http://sourceforge.net/projects/pam-mysql/</ulink>
		</para>

	</sect3>

	<sect3><title>Installing</title>

<screen>
tar -xvzf pam_mysql-0.5.tar.gz

cd pam_mysql
</screen>


	<para>If you have compiled mysql by yourself, 
	check the <filename>Makefile</filename> and enter the correct path to your mysql libs and add the 
	compiler flag <varname>CFLAGS</varname> <option>-I/path/to/mysql/include</option>.
	</para>

<screen>
ifndef FULL_LINUX_PAM_SOURCE_TREE
export DYNAMIC=-DPAM_DYNAMIC
export CC=gcc
export CFLAGS=-O2 -Dlinux -DLINUX_PAM \
       -ansi -D_POSIX_SOURCE -Wall -Wwrite-strings \
       -Wpointer-arith -Wcast-qual -Wcast-align -Wtraditional \
       -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline \
       -Wshadow -pedantic -fPIC -I/usr/local/mysql/include
export MKDIR=mkdir -p
export LD_D=gcc -shared -Xlinker -x -L/usr/local/mysql/lib/mysql -lz
endif
</screen>

<para>After customizing that file you an go ahead with the pam_mysql compile.</para>

<screen>
make

cp pam_mysql.so /lib/security

[[ ! -d /var/lib/mysql ]] && mkdir /var/lib/mysql
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
</screen>		

	</sect3>
</sect2>


  <sect2 id="web-cyradm-install">
   <title>Getting and installing Web-cyradm</title>

	<sect3><title>Download</title>
                <para>
                Origin-Site: <ulink url="http://www.web-cyradm.org">http://www.web-cyradm.org</ulink>
                </para>
        </sect3>

        <sect3><title>Installing</title>

<screen>
cd /usr/local/apache/htdocs

tar -xvzf web-cyradm-0.5.5.tar.gz

touch /var/log/web-cyradm.log
chown nobody /var/log/web-cyradm.log
</screen>

        <para>After unpacking web-cyradm, move it to a place in your webserver's documentroot.</para>
        <para>Thats all. Now you need to configure the whole bunch of software.</para>

	<para>Web-cyradm 0.5.5 is considered stable.</para>

	<para>Since web-cyradm uses PEAR for its database abstraction layer, you also need a recent 
	copy of PEAR. This is included in recent PHP Versions. I strongly suggest to update PHP 
	to 4.3.11, because a lot of important bugs have been fixed.
	</para>

	<para>A frequent mistake is to forget to touch the logfile and change the owner to the 
	Apache UID. This is usually »nobody« or »wwwrun«.</para>
        </sect3>

        <sect3 id="mysql-create-db">
                <title>Create the databases and tables</title>
                <para>Now we need to create the database and tables for Postfix and Web-cyradm and add a user to the
                database.</para>

                <para>
                Web-cyradm comes with several MySQL scripts: <filename>insertuser_mysql.sql</filename> and
                <filename>create_mysql.sql</filename>.
                The first inserts the Database user to the database »mysql« and creates the database »mail«. The
                second creates the required tables and populates the database with an initial admin-user and the
                cyrus user.</para>

                <para>The other scripts are used for incremental upgrading from older releases.</para>

                <para>The password for the database user »mail« in this example is »secret«. Please insert whatever
                user and password you like.</para>

                <para>The username for the initial superuser is »admin« with the password »test«.</para>

                <caution><title>Change the default password!</title>
                <para>If a malicious user wants to gain unauthorized access to a system, the first attempt is always
                the default username and password supplied by the vendor. It is IMPORTANT that you change them
                in the scripts before applying them.</para></caution>


                <para>After customizing the username and password, apply the scripts:</para>
<screen>
/usr/local/mysql/bin/mysql -u root -p &lt; \
/usr/local/apache/htdocs/web-cyradm/scripts/insertuser_mysql.sql

/usr/local/mysql/bin/mysql mail -u mail -p &lt; \
/usr/local/apache/htdocs/web-cyradm/scripts/create_mysql.sql
</screen>

	</sect3>

	<sect3 id="web-cyradm-update"><title>Upgrading from 0.5.4 to 0.5.5</title>
	<para>In version 0.5.5 there are some database changes. You can upgrade your database by
	issuing the MySQL script that comes with the distribution.</para>

<screen>
mysql mail -u mail -p &lt; \ 
scripts/upgrade-0.5.4-to-0.5.5_mysql.sql
</screen>

<para>
Since Version 0.5.3 web-cyradm has full support for DES crypted passwords. You can use the php-script 
<filename>migrate.php</filename> to convert the users passwords from plain text to unix compatible crypt (DES).
</para> 

<caution><title>Migration from plain to crypt cannot be undone</title>
<para>Be sure to have a recent backup of your database before doing anything with the migration script.
</para></caution>

</sect3>
</sect2>


 </sect1>

<!-- Section1: Install: END -->


<!-- Section1: configuration -->

<!--  <sect1 id="configuration">
  <title>Configuration</title> -->

 <sect1 id="mysql-config">
   <title>Configuring MySQL</title>

	<sect2 id="mysql-config-securing">
	<title>Securing MySQL</title>

	<para>Because you are using MySQL to authenticate users, you need to restrict network access 
	to port 3306.</para>
	<para>The easiest way is to only bind MySQL to the loopback interface 127.0.0.1. 
	This makes sure nobody can connect to your MySQL daemon via the network.</para>

	<para>
	Edit <filename>/etc/init.d/mysql.server</filename> and change line 154 as following:</para>

	<para>Original line:</para>

 
<screen>
$bindir/mysqld_safe --datadir=$datadir --pid-file=$pid_file&
</screen>

	<para>Changed line:</para>
	
<screen>
$bindir/mysqld_safe --datadir=$datadir --pid-file=$pid_file \
--bind-address=127.0.0.1&
</screen> 

	<para>Restart your MySQL daemon by issuing the command<command>/etc/init.d/mysql.server start</command></para>

	<para>To ensure the configuration change was successful, <command>netstat -an|grep LISTEN</command>. The 
	Output should be looking similar to this:</para>

<screen>
bond:~ # netstat -an|grep LISTEN
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN
</screen>
	</sect2>


	<sect2 id="mysql-rinetd">
	<title>Setting up rinetd</title>

	<para>This step is only necessary if you run the MySQL sever on host other than the mail server. This allows
	you to securely connect from another host since access is allowed only from pre-defined IP addresses.</para>

	<para>The example used is from the view of the host serving the MySQL database. Lets assume your 
	mail server has the IP 192.168.0.100 and the MySQL host has 192.168.0.200</para>

	<para>
	Edit <filename>/etc/rinetd.conf</filename> and add:</para>


<screen>
192.168.0.200 3306 127.0.0.1 3306
allow 192.168.0.100
</screen>

	<para>This means: The MySQL host is listening on 192.168.0.200 port 3306. If 192.168.0.100 
	attempts a connection, it is forwarded to 127.0.0.1:3306. All other hosts are rejected. </para>

	</sect2>
  </sect1>

  <sect1 id="pam-config">
  <title>Configuring PAM</title>

  <para>Now we need to get sure that PAM knows how to authenticate the Cyrus users</para>

  <para>You have to create the file <filename>/etc/pam.d/imap</filename> with the following entries:</para>

<screen>
auth sufficient pam_mysql.so user=mail passwd=secret host=localhost db=mail table=accountuser usercolumn=username passwdcolumn=password crypt=1 logtable=log logmsgcolumn=msg logusercolumn=user loghostcolumn=host logpidcolumn=pid logtimecolumn=time

auth sufficient pam_unix_auth.so

account required pam_mysql.so user=mail passwd=secret host=localhost db=mail table=accountuser usercolumn=username passwdcolumn=password crypt=1 logtable=log logmsgcolumn=msg logusercolumn=user loghostcolumn=host logpidcolumn=pid logtimecolumn=time

account  sufficient       pam_unix_acct.so
</screen>

	<para>The lines containing <option>pam_unix_auth.so</option> and <option>pam_unix_acct.so</option>
	 are only needed if you are migrating from WU-IMAP to Cyrus. 
	This allows you to authenticate with its old unix-password AND its new mysql-based password.</para>

	<para>To use the other services provided by cyrus and smtp-authtication you need to copy the file
	so that they match the service-ID</para>

<screen>
cp /etc/pam.d/imap /etc/pam.d/pop
cp /etc/pam.d/imap /etc/pam.d/sieve
cp /etc/pam.d/imap /etc/pam.d/smtp
</screen>


</sect1>

<!-- Section2: postfix -->

  <sect1 id="postfix-config">
   <title>Configuring Postfix</title>

   <para>Postfix needs two major config files: <filename>main.cf</filename> and <filename>master.cf</filename>. 
	Both need your attention.</para>

	<sect2 id="postfix-master"><title>master.cf</title>

	<para>You need to change just one line:</para>
	<para>old: </para>
<screen>
flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
</screen>
   	<para>new: </para>
<screen>
flags= user=cyrus argv=/usr/cyrus/bin/deliver -r ${sender} -m ${extension} ${user}
</screen>

	<para>
	What does that change affect?
	</para>

	<para>
	A look to the cyrus man-pages <command>man deliver </command>clears up that issue:
	</para>
	
	<para>
	The Postfix default setup uses a wrong path to cyrus deliver, this is the first change.
	The parameter »-r« inserts a proper return path. Without that, mail rejected/retured by sieve will 
	be sent to the cyrus user at yourdomain.
	</para>

</sect2>

<sect2 id="postfix-main"><title>main.cf</title>
	<para>Here you need to change some more things like hostname, relaying, alias-lookups etc.</para>

	<para>First change the hostname:</para>
<screen>myhostname = foo.bar.org</screen>

<para>mydestination</para>
<para>Here you have to put all domainnames that are local (corresponding to sendmail's 
<filename>/etc/mail/sendmail.cw)</filename>. If you have multiple domains, separate them with comma.</para>

<screen>
mydestination = foo.bar.org, example.com, furchbar-grausam.ch, 
 whatever.domain.tld, mysql:/etc/postfix/mysql-mydestination.cf
</screen>

<para>Relayhost</para>

<para>Here you define where to deliver outgoing mails. If you do not provide any host, mail is delivered directly 
to the destination smtp host. Usually your relayhosts are your internet service provider's smtp server.</para>

<screen>relayhost = relay01.foobar.net relay02.foobar.net relay03.foobar.net</screen>

<para>Mailtransport</para>

<para>Here you define how the mails accepted for local delivery should be handled. In your situation, mail should be 
delivered by the cyrus delivery program.</para>

<screen>mailbox_transport = cyrus</screen>

<para>At the end of file you need to add:</para>
<screen>virtual_alias_maps = hash:/etc/postfix/virtual, mysql:/etc/postfix/mysql-virtual.cf</screen>

<para>If you don't want to have a overriding /etc/postfix/virtual, skip the hash entry</para>

<para>Outgoing addresses should be rewritten from test0002 at domain 
to user.name at virtualhost.com. This is important if you want to use a webmail interface.
</para>

<screen>
sender_canonical_maps = mysql:/etc/postfix/mysql-canonical.cf 
</screen>

<para>Now you need to create the file <filename>/etc/postfix/mysql-virtual.cf</filename>: </para>
 
<screen>
#
# mysql config file for alias lookups on postfix
# comments are ok.
#

# the user name and password to log into the mysql server
hosts = localhost
user = mail
password = secret

# the database name on the servers
dbname = mail

# the table name
table = virtual

#
select_field = dest
where_field = alias
additional_conditions = and status = '1'
</screen>

<para>The file <filename>/etc/postfix/mysql-canonical.cf</filename>:</para>

<screen>
# mysql config file for canonical lookups on postfix
# comments are ok.
#

# the user name and password to log into the mysql server
hosts = localhost
user = mail
password = secret

# the database name on the servers
dbname = mail

# the table name
table = virtual
#
select_field = alias
where_field = username
# Return the first match only
additional_conditions = and status = '1' limit 1
</screen>

<para>
Finally the file <filename>/etc/postfix/mysql-mydestination.cf</filename>:
</para>

<screen>
# mysql config file for local domain (like sendmail's sendmail.cw) lookups on postfix
# comments are ok.
#

# the user name and password to log into the mysql server
hosts = localhost
user = mail
password = secret

# the database name on the servers
dbname = mail

# the table name
table = domain
#
select_field = domain_name
where_field = domain_name
</screen>

<para>SMTP Authentication with SASL and PAM</para>
<para>Put the following in your <filename>/etc/postfix/main.cf</filename></para>
<screen>
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = 
broken_sasl_auth_clients = yes
</screen>

<para>You also need to create the file <filename>/usr/local/lib/sasl2/smtpd.conf</filename> with
the following contents:</para>

<screen>
pwcheck_method: saslauthd
</screen>

<para>The next step is to tell postfix how to find the saslauthd socket:</para>

<screen>
mv /var/run/sasl2 /var/run/sasl2-old
ln -s /var/run/saslauthd /var/run/sasl2
</screen>
<para></para>
</sect2> 

<sect2 id="antispam">
<title>Fighting against SPAM</title>
<para>
This section describes how to implement a basic SPAM protection setup with postfix. It does not use any external software like spamassassin, etc.</para>

<para>
Postfix has some built-in filters that allow you to stop obvious SPAM attempts. In particular these are:</para>

<itemizedlist>
	<listitem>
	<para>
	smtpd_helo_required = yes
	</para>
	<para>
	This switch in <filename>main.cf</filename> means that SMTP clients connecting to your mail server must give 
	a »helo« when connecting.
	</para>
	</listitem>

	<listitem>
	<para>
	smtpd_recipient_restrictions
	</para>

	<para>This option in <filename>main.cf</filename> lets you define different rules on the handling the acceptance 
	of mail. The following example simply rejects all invalid sender and recipient data. 
	Additionally it defines how to lookup known spammers from online blacklists.
	</para>
	
	<screen>
smtpd_recipient_restrictions =
            reject_invalid_hostname,
            reject_non_fqdn_hostname,
            reject_non_fqdn_sender,
            reject_non_fqdn_recipient,
            reject_unknown_sender_domain,
            reject_unknown_recipient_domain,
            reject_unauth_pipelining,
            permit_mynetworks,
            reject_unauth_destination,
            reject_rbl_client zombie.dnsbl.sorbs.net,
            reject_rbl_client relays.ordb.org,
            reject_rbl_client opm.blitzed.org,
            reject_rbl_client list.dsbl.org,
            reject_rbl_client sbl.spamhaus.org,
            permit
</screen>
<para></para>
	</listitem>
	
	<listitem>
	<para>mime_header_checks=pcre:/etc/postfix/body_checks</para>
	
	<para>MIME header checks let you reject mail which contains malicious MIME content, i.e dangerous 
	attachments such as Windows executables. Create the file <filename>/etc/postfix/body_checks</filename>. 
	The following example rejects all mail that contains potentially dangerous attachments. 
	In my experience, using this example would filter out most of viruses delivered by e-mail. 
	In any event, a virus scanner should always be installed.
	</para>

	<screen>
	/^((Content-(Disposition: attachment;|Type:).*|\ +)| *)(file)?name\ *=\ *"?.*\.(lnk|asd|hlp|ocx|reg|bat|c[ho]m|cmd|exe|dll|vxd|pif|scr|hta|jse?|sh[mbs]|vb[esx]|ws[fh]|wmf)"?\ *$/      REJECT  attachment type not allowed
	</screen>

	</listitem>

	
</itemizedlist>

</sect2>


 </sect1>

<!-- RMW end of revision-->

<!-- Section2: cyrus -->

  <sect1 id="cyrus-config">
   <title>Configuring Cyrus IMAP</title>

  <sect2 id="cyrus-configfiles"><title>Creating the config files</title>

   <para>You have to create <filename>/etc/imapd.conf</filename> and <filename>/etc/cyrus.conf</filename>
   </para>


<sect3 id="etc-services"><title><filename>/etc/services</filename></title>

<para>
If you like to use sieve (a mail filtering language), you must change an entry
in <filename>/etc/services</filename>. With SuSE 8.0 take especially care about the port for sieve, 
they defined the wrong port. Add or change the following lines:
</para>

<screen>
pop3		110/tcp
imap		143/tcp
imaps           993/tcp
pop3s           995/tcp 
sieve           2000/tcp
</screen>
</sect3>


<sect3 id="etc-imapd"><title><filename>/etc/imapd.conf</filename></title> 

<para>Be sure »servername« contains your FQHN (Fully Qualified Hostname)</para>
<para>The parameter »unixhierarchysep: yes« is only used if you like to have usernames 
like »hans.mueller.somedomain.tld« see <xref linkend="web-cyradm-config"> for more info.</para>

<screen>
postmaster: postmaster
configdirectory: /var/imap
partition-default: /var/spool/imap
# admins: cyrus # no admins!
allowanonymouslogin: no
allowplaintext: yes
sasl_mech_list: PLAIN
servername: servername
autocreatequota: 10000
reject8bit: no
quotawarn: 90
timeout: 30
poptimeout: 10
dracinterval: 0
drachost: localhost
sasl_pwcheck_method: saslauthd
sievedir: /usr/sieve
sendmail: /usr/sbin/sendmail
sieve_maxscriptsize: 32
sieve_maxscripts: 5
#unixhierarchysep: yes
</screen>

</sect3>

<sect3 id="etc-imapd-local"><title><filename>/etc/imapd-local.conf</filename></title>
<para>Be sure »servername« contains your FQHN (Fully Qualified Hostname)</para>
<para>The parameter »unixhierarchysep: yes« is only used if you like to have usernames 
like »hans.mueller.somedomain.tld« see <xref linkend="web-cyradm-config"> for more info.</para>

<para>This second file ensures, that admin users only can connect via localhost. Decide by yourself if this additional security feature is needed for your site.</para>



<screen>
postmaster: postmaster
configdirectory: /var/imap
partition-default: /var/spool/imap
admins: cyrus 
allowanonymouslogin: no
allowplaintext: yes
sasl_mech_list: PLAIN
servername: servername
autocreatequota: 10000
reject8bit: no
quotawarn: 90
timeout: 30
poptimeout: 10
dracinterval: 0
drachost: localhost
sasl_pwcheck_method: saslauthd
sievedir: /usr/sieve
sendmail: /usr/sbin/sendmail
sieve_maxscriptsize: 32
sieve_maxscripts: 5
#unixhierarchysep: yes
</screen>


</sect3>

<sect3 id="tls"><title>Creating the TLS/SSL Certificate</title>

<para>If you want to enable Cyrus' TLS/SSL facilities, you have to create a certificate first. This requires an 
OpenSSL installation</para>

<screen>
openssl req -new -nodes -out req.pem -keyout key.pem  
openssl rsa -in key.pem -out new.key.pem
openssl x509 -in req.pem -out ca-cert -req \
-signkey new.key.pem -days 999 

mkdir /var/imap

cp new.key.pem /var/imap/server.pem
rm new.key.pem
cat ca-cert >> /var/imap/server.pem

chown cyrus:mail /var/imap/server.pem
chmod 600 /var/imap/server.pem # Your key should be protected

echo tls_ca_file: /var/imap/server.pem &gt;&gt; /etc/imapd.conf
echo tls_cert_file: /var/imap/server.pem &gt;&gt; /etc/imapd.conf
echo tls_key_file: /var/imap/server.pem &gt;&gt; /etc/imapd.conf

</screen>

</sect3>

<sect3 id="etc-cyrus-conf"><title><filename>/etc/cyrus.conf</filename></title>

<para>
The other file you need to create is <filename>/etc/cyrus.conf</filename>
It is the configuration file for the Cyrus master process.  It defines the startup procedures, services
and events to be spawned by  process »master«.</para>

<screen>
# standard standalone server implementation

START {
  # do not delete this entry!
  recover       cmd="ctl_cyrusdb -r"

  # this is only necessary if using idled for IMAP IDLE
#  idled                cmd="idled"
}

# UNIX sockets start with a slash and are put into /var/imap/socket
SERVICES {
  # add or remove based on preferences
  imap          cmd="imapd" listen="192.168.0.1:imap" prefork=0
  imaplocal     cmd="imapd -C /etc/imapd-local.conf" listen="127.0.0.1:imap" prefork=0
  imaps         cmd="imapd -s" listen="192.168.0.1:imaps" prefork=0
  imapslocal    cmd="imapd -C /etc/imapd-local.conf" listen="127.0.0.1:imaps" prefork=0
  pop3          cmd="pop3d" listen="pop3" prefork=0
  pop3s         cmd="pop3d -s" listen="pop3s" prefork=0
  sieve         cmd="timsieved" listen="192.168.0.1:sieve" prefork=0
  sievelocal    cmd="timsieved -C /etc/imapd-local.conf listen="127.0.0.1:sieve" prefork=0

  # at least one LMTP is required for delivery
#  lmtp         cmd="lmtpd" listen="lmtp" prefork=0
  lmtpunix      cmd="lmtpd" listen="/var/imap/socket/lmtp" prefork=0

  # this is only necessary if using notifications
#  notify       cmd="notifyd" listen="/var/imap/socket/notify" proto="udp" prefork=1
}

EVENTS {
  # this is required
  checkpoint    cmd="ctl_cyrusdb -c" period=30

  # this is only necessary if using duplicate delivery suppression
  delprune      cmd="ctl_deliver -E 3" period=1440

  # this is only necessary if caching TLS sessions
  tlsprune      cmd="tls_prune" period=1440

  # squat it, important for huge servers
  squatter      cmd="squatter -r *" period=30

}
</screen>

<tip><title>Please check your Systems IP address</title>
<para>In the example above the IP 192.168.0.1 is to be replaced with your systems external IP address.</para>
</tip>

</sect3>
</sect2>

<sect2 id="cyrus-directories"><title>Creating the directories</title>

<para>There must be created different directories. Additionally you should 
change some attributes of the filesystem</para>


<sect3 id="var-imap"><title><filename>/var/imap</filename></title>

<screen>
cd /var
mkdir imap
chown cyrus:mail imap
chmod 750 imap
</screen>

</sect3>

<sect3 id="var-spool-imap"><title><filename>/var/spool/imap</filename></title>

<screen>
cd /var/spool
mkdir imap
chown cyrus:mail imap
chmod 750 imap
</screen>

</sect3>

<sect3 id="usr-sieve"><title><filename>/usr/sieve</filename></title>

<screen>
cd /usr
mkdir sieve
chown cyrus:mail sieve
chmod 750 sieve
</screen>

</sect3>

<sect3 id="other-dirs"><title>The rest of the directories</title>
<para>
The rest of the directories can be created by the tool <command>mkimap</command>
</para>

<screen>
su - cyrus
/usr/local/cyrus-imapd-2.1.12/tools/mkimap
</screen>

</sect3>

</sect2>

<sect2 id="ch-attrib"><title>Changing the filesystem attributes</title>

<para>When using the ext2 filesystem, you must set an attribute, that defines, that all changes 
are immediately committed to the disk. With todays journaling filesystems there is no need. 
If you are still running ext2 filesystems, I strongly suggest to switch to ext3 filesystems. 
Ext2 and ext3 are fully compatible to each other.</para>

<para>To check what type of filesystem is used for <filename>/var</filename> issue the
command <command>mount</command> or see your <filename>/etc/fstab</filename>. Please note
that the <filename>/var</filename> could also be a part of the root or other filesystem.
</para>

<screen>
cd /var/imap

chattr +S user quota user/* quota/*
chattr +S /var/spool/imap /var/spool/imap/*
</screen>

</sect2>

  </sect1>


  <sect1 id="web-cyradm-config">
   <title>Configuring Web-cyradm</title>

   <para>First copy the distribution's config file, and create the logfile. The logfile must be owned by the user
that runs the webserver. This is usually the user »nobody« or »wwwrun«.</para>
<screen>
cd /usr/local/apache/htdocs/web-cyradm/config

cp conf.php.dist conf.php

touch /var/log/web-cyradm-login.log
chown nobody /var/log/web-cyradm-login.log
</screen>

   <sect2><title>Cyrus setup</title>

<screen>
#The Cyrus login stuff
$CYRUS = array(
        'HOST'  => 'localhost',
        'PORT'  => 143,
        'ADMIN' => 'cyrus',
        'PASS'  => 'secret'
);
</screen>
<para>
This should be self-explanatory. Please note there is no support for SSL connections at the moment, 
this is especially important for users that would like to have web-cyradm on a different server
from the server running cyrus-imapd ..</para>

</sect2>




   <sect2><title>Database setup</title>


	<para>
	Since version 0.5.2 web-cyradm uses PEAR as a database abstraction layer. This adds more flexibility. 
	MySQL and PostgreSQL are currently supported. Please note that a patch is required for PostgreSQL 
	because Postfix does not support PostgreSQL natively. I strongly suggest that you use MySQL.
        I know MySQL has some restrictions on transactions and stuff, but it is supported in the distributed Postfix code.
	</para>

	<para>The entries should be self explanatory</para>

<screen>
$DB = array(
        'TYPE'  => 'mysql',
        'USER'  => 'mail',
        'PASS'  => 'secret',
        'PROTO' => 'unix',      // set to "tcp" for TCP/IP
        'HOST'  => 'localhost',
        'NAME'  => 'mail'
);
</screen>

  </sect2>

  <sect2><title>Default Quota</title>
   <para>
	The default quota to be used is set in the variable <varname>DEFAULT_QUOTA=20000</varname> and is used when 
	creating a new domain</para>

  </sect2>

  <sect2><title>Crypted passwords</title>
	<para>Web-cyradm supports the storage of encrypted passwords. I strongly suggest the use of encryption.
	There are three methods supported at the moment: Unix-compatible (crypt), md5 and MySQL.
	The Unix-compatible encryption allows you to import encrypted passwords from an 
	existing <filename>/etc/shadow</filename>. This is the preferred option.
	</para>

	<para>
	Unfortunately, MySQL uses a proprietary encryption method which is only available
	when using MySQL. I'm currently thinking about dropping support for MySQL crypt, because it only
	works with MySQL and makes a migration to another database impossible. As soon as there is a method available
	to re-engineer the MySQL crypt on PHP there will be a solution (Help needed in programming, legal constraints?)
	</para>

	<para>Check the variable <varname>$CRYPT</varname> in the file <filename>config.inc.php</filename>. 
	Value »plain« means no encryption, »crypt« means Shadow compatible encryption, 
	mysql means MySQL encryption.</para>

	<caution><title>Choose encryption method carefully</title>
	<para>
	Since the supported encryption methods are all one-way encryptions, there will be NO WAY to migrate from
	one to another. Note also, that this is a global variable, it is used for all passwords,
	including the password of the admin users. I STRONGLY suggest the use of Unix Shadow compatible encryption,
	because it makes you independent of any software vendor.
	</para>
	</caution>

  </sect2>

  <sect2><title>Usernames</title>
	<para>
	There are two username schemes supported which are defined in the variable »DOMAIN_AS_PREFIX«.
	The default is to have a defined prefix ($DOMAIN_AS_PREFIX=0), i.e. »test« for the domain »expample.com«.
	With this scheme, the first user gets the username test0001, the second test0002 and incrementing.
	</para>

	<para>The other one is to have usernames like »hans.mueller.example.com«. 
	If that case set $DOMAIN_AS_PREFIX=1</para>

	<para>At the moment you can not mix both schemas, evaluate carefully with scheme matches your needs best</para>

	<para>If you choose to have $DOMAIN_AS_PREFIX=1, be sure you uncomment the 
	option <option>unixhierarchysep: yes</option> like described in <xref linkend="etc-imapd"></para>

	</sect2>

  </sect1>

<!--  </sect1> -->

<!-- Section1: config: END -->


<!-- Section1: test -->

 <sect1 id="test">
  <title>Testing the setup</title>

   <indexterm>
    <primary>(your index root)!implementation</primary>
   </indexterm>

<sect2 id="test-running">
<title>(Re-)Starting the daemons</title>

  <para>Now all the software has been installed and configured. Lets do some testings now. 
First you have to (re-)start all the daemons affected </para>

<itemizedlist>
    <listitem>
     <para>
	<command>postfix start</command>
     </para>
    </listitem>

    <listitem>
     <para>
        <command>/etc/init.d/cyrus start</command>
     </para>
    </listitem>

    <listitem>
     <para>
        <command>/etc/init.d/mysql.server start</command>
     </para>
    </listitem>

    <listitem>
     <para>
        <command>/usr/local/apache/bin/apachectl startssl</command>
     </para>
    </listitem>
</itemizedlist>

<para>Hopefully all daemons started without any complaints. Note that this is assuming saslauthd is started 
in the cyrus startup script.</para>

<para>Now you can verify if the daemons are running properly by issuing 
<command>netstat -an|grep LISTEN</command></para>
<para>The output should look similar like that:</para>

<screen>
bond:~ # netstat -an|grep LISTEN
tcp        0      0 0.0.0.0:993             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:995             0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:110             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:143             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:2000            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN
</screen>

<para>The port are assigned like this:</para>

<itemizedlist>
    <listitem>
     <para>
	993	imap-ssl
     </para>
    </listitem>


    <listitem>
     <para>
        995     pop3-ssl
     </para>
    </listitem>


    <listitem>
     <para>
        3306     mysql
     </para>
    </listitem>

    <listitem>
     <para>
        110     pop3
     </para>
    </listitem>

    <listitem>
     <para>
        143     imap
     </para>
    </listitem>

    <listitem>
     <para>
        2000     sieve
     </para>
    </listitem>


    <listitem>
     <para>
        80     http
     </para>
    </listitem>

    <listitem>
     <para>
        25     smtp
     </para>
    </listitem>

    <listitem>	
     <para>
        443     https
     </para>
    </listitem>

</itemizedlist>

</sect2>

<sect2 id="testing-web-cyradm">
<title>Testing Web-cyradm</title>

<para>Now you should be able to connect to <ulink url="http://localhost/web-cyradm/">http://localhost/web-cyradm/</ulink>
Login with the credentials defined before.</para>

<para>Define a domainname and some accounts. Be sure the domainname belongs to your server. 
If not you have to fake it by enter the domain in <filename>/etc/hosts</filename>. 
The domain must also be defined as local in 
<filename>/etc/postfix/main.cf</filename> (mydestination = domain)</para>

<para>Please be sure that you are providing a unique domain prefix when adding a new domain. I.e. test for the domain
test.org. If you don't provide such a prefix you will get a error message.</para>

</sect2>


<sect2 id="testing-postfix">
<title>Testing postfix</title>

<para>Now we are going to write a mail:</para>

<screen>
telnet localhost 25
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail ESMTP Postfix

helo localhost
250 mail
mail from: testing at example.com
250 Ok
rcpt to: tester at localhost
250 Ok

data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
some text
.
250 Ok: queued as B58E141D33

quit
</screen>

<para>If you see such a message, then all seems to work fine. Be sure to specify a recipients 
address you previously defined in the web-cyradm database</para>

<para>If you get an error like this:</para>

<screen>
rcpt to: tester at localhost
451 &lt;tester  at localhost&gt;: Temporary lookup failure
</screen>

<para>Then either MySQL is not running, DB permission are not set properly or you 
miss-configured <filename>/etc/postfix/main.cf</filename></para>

<para>On any errors, I suggest to examine <filename>/var/log/mail</filename>. Often you will find 
some hints whats went wrong.</para>

</sect2>

<sect2 id="testing-cyrus">
<title>Testing the IMAP functionality</title>

<para>To use the »cyradm« CLI please take care that the tool does not recognize standard CLI-options 
like -u and similar. Please follow the syntax like described in the man page »cyradm 1« like the 
following example:</para>

<screen>
bond:~ # cyradm --user cyrus --server localhost --auth plain
Password: # This is the SASL2 password
IMAP Password: # This is the IMAP password that you need to enter in the mysql-table »accountusers«
localhost>
</screen>

<para>With the Cyrus command <command>help</command> you will see all possible commands and its abbreviations.
</para>



<para>To make that kind of tests. you just need a mailclient like kmail or netscape
(Yes of course, M$-Products are working as well) but in this example I'm using kmail.</para>

<figure>
      <title>Creating a new account</title>
      <graphic FileRef="imap-account.png"></graphic>
</figure>

<para>If you enabled TLS/SSL, you may wish to test also the following:</para>

<figure>
      <title>Testing TLS/SSL functionality</title>
      <graphic FileRef="imap-tls.png"></graphic>
</figure>

<para>If login fails, and you are sure, you typed the right password, take care that MySQL is running.</para>

</sect2>
</sect1>

<!-- Section1: test: END -->

<sect1 id="spam-and-virus-intro">
	<title>Fighting against Viruses and SPAM</title>

<para>This chapter is optional and describes HOWTO fight against Viruses and SPAM.</para>

<sect2 id="brief-virus">
<title>Brief introdcution to viruses</title>

<para>I think I do not need to explain how dangerous Viruses are. Unfortunately in the most recent attacks from SCO.A (aka MyDoom) also more or less experienced users get tricked by viruses. Most of todays viruses and worms comes via the internet, most of them via E-Mail. Needless to say, that viruses should be catched by the SMTP system if possible.</para>

<caution><title>Not a substitute</title>
<para>A mailsystem that filters viruses is NEVER a substitute for a local installed anti-virus software. E-Mails are only one way how viruses can penetrate computers.</para>
</caution>

</sect2>

<sect2 id="brief-spam">
<title>Brief introduction to SPAM</title>

<para>
The other harmless but unwanted and disturbing E-Mails are SPAM e-mails. SPAM is originally a disgusting canned meat. It is a synonym for UCE (Unsolicited Commercial Email) and UBE (Unsolicited Bulk Email).

<para>
Studies claim, that up to 60 percent of the worldwide e-mail traffic is SPAM. Before I installed the anti-SPAM filters on my SMTP servers, I received about 150 SPAMS's a day. One reason is this document. In ancient time, I noticed my real e-mail address unprotected. E-mail harvesters are scanning websites allover the world for addresses, and try to deliver its commercial, often illegal offers.
</para>

</sect2>

<sect2 id="strategy-viruses">
<title>Strategy against viruses</title>

<para>The strategy against viruses is pretty forward: Filtering viruses delivered via e-mail and having a localally installed anti-virus software.</para>

<para>Almost all vendors of anti-virus software have a up-to-date version for Linux and Unix Systems, because most SMTP servers are running on Unix. In this document I'll explain HOWTO implement <ulink url="http://www.clamav.net">clamav</ulink>, a very active open source anti virus project.</para>

</sect2>

<sect2 id="strategy-spam">
<title>Strategy against SPAM</title>

<para>
Fighting against SPAM is much more difficult than viruses. Why? It is because every virus has a unique signature. SPAM can contain arbitrary content. Some of the SPAM is in english, other is korean, other is in "you-name-it-language".</para>

<para>The best method how to prevent SPAM is to handle your e-mail address as your best treasured secret. NEVER put your address in a web-form or put it on your website. I know, that is against the idea of the internet. Information must be free. You can keep publishing your e-mail address if you implement the configuration further below.

<para>In the beginning of SPAM, filtering for keywords like »viagra« was enough. Todays SPAM techniques are much more sophisticated. It is a war between users and spammers. The solution against sophisticated SPAM is even more sophisticated anti-spam software.Todays anti-spam software checks e-mail for more than just keywords. They are checking for specific mail-header data etc. Also a technique called <ulink url="http://en.wikipedia.org/wiki/Epistemic_probability">bayesian</ulink> filters which can learn from particular input, distributed checksum networks etc.</para>

</sect2>

</sect1>

<sect1 id="installing-anti-spam">
<title>The software needed against viruses and SPAM</title>
<para>This chapter describes how to install and handle the software against viruses and SPAM</para>

<sect2 id="get-clamav">
<title>Getting and installing ClamAV</title>
<sect3><title>Download</title>
<para>
	Origin-Site: <ulink url="http://prdownloads.sourceforge.net/clamav/clamav-0.86.1.tar.gz">http://prdownloads.sourceforge.net/clamav/clamav-0.86.1.tar.gz</ulink>

<sect3><title>Building and installing</title>
<screen>
# Adding a group for the clamav user
groupadd clamav

# Adding the clamav user to your system
useradd -g clamav -c "clamav user" clamav

cd /usr/local

tar -xvzf clamav-0.86.1.tar.gz
cd clamav-0.86.1

./configure

make && make install
</screen>

</sect3>
<sect3><title>Testing and configuring</title>

<para>To test the funtionality of clamav, you can run <command>clamscan</command> to get some results from the testpatterns that are included in the clamav distribution run <command>clamscan -r -i /usr/local/clamav-0.86.1</command></para>

<para>The output should look like this:</para>

<screen>
/usr/local/clamav-0.86.1/test/test1: ClamAV-Test-Signature FOUND
/usr/local/clamav-0.86.1/test/test1.bz2: ClamAV-Test-Signature FOUND
/usr/local/clamav-0.86.1/test/test2.zip: ClamAV-Test-Signature FOUND
/usr/local/clamav-0.86.1/test/test2.badext: ClamAV-Test-Signature FOUND
/usr/local/clamav-0.86.1/contrib/clamdwatch/clamdwatch.tar.gz: Eicar-Test-Signature FOUND

----------- SCAN SUMMARY -----------
Known viruses: 20482
Scanned directories: 47
Scanned files: 406
Infected files: 5
Data scanned: 5.48 MB
I/O buffer size: 131072 bytes
Time: 2.706 sec (0 m 2 s)
</screen>

<para>Next step is to setup the automated update of the virus database. This is a important step, because the speed of virus spreading is fast and would pick up even further.</para>

<para>Create the needed logfiles</para>

<screen>
touch /var/log/clam-update.log
chmod 600 /var/log/clam-update.log
chown clamav /var/log/clam-update.log
</screen>

<para>I suggest to update the signatures with a hourly cronjob. To edit the crontab issue <command>crontab -e</command> and add the following line, and replace the »x« with a random value between 1 and 59. This is some kind of time based loadbalancing to ensure more people can fetch the updated.</para>

<screen>
#x * * * *       /usr/local/bin/freshclam --quiet -l /var/log/clam-update.log
</screen>

<para>To test if the update process is working, please issue the command <command>/usr/local/bin/freshclam -l /var/log/clam-update.log</command> and have a look at the output.</para>

<para>The output should look similar to this:</para>

<screen>
ClamAV update process started at Tue Mar 23 19:58:11 2004
Reading CVD header (main.cvd): OK
Downloading main.cvd [*]
main.cvd updated (version: 21, sigs: 20094, f-level: 1, builder: tkojm)
Reading CVD header (daily.cvd): OK
Downloading daily.cvd [*]
daily.cvd updated (version: 210, sigs: 596, f-level: 1, builder: acab)
Database updated (20690 signatures) from database.clamav.net (64.74.124.90).
</screen>
 


</sect2>

<sect2 id="razor">
<title>Razor</title>
<para>Razor is one of the prerequisites of spamassassin.</para>

<sect3><title>Download</title>
<para>
Origin-Site: <ulink url="http://prdownloads.sourceforge.net/razor/razor-agents-sdk-2.03.tar.gz?download">http://prdownloads.sourceforge.net/razor/razor-agents-sdk-2.03.tar.gz?download</ulink></para>

<para>
Origin-Site: <ulink url="http://prdownloads.sourceforge.net/razor/razor-agents-2.40.tar.gz?download">http://prdownloads.sourceforge.net/razor/razor-agents-2.40.tar.gz?download</ulink>

<screen>
cd /usr/local

tar -xvzf razor-agents-sdk-2.03.tar.gz
cd razor-agents-sdk-2.03

perl Makefile.PL
make && make install

cd /usr/local
tar -xvzf razor-agents-2.40.tar.gz
cd razor-agents-2.40/

perl Makefile.PL
make && make install
</screen>

</sect3>

<sect3><title>Registering and setting up</title>
<para>In order to use razor2 you need to register yourself as a user</para>

<para>Choose a unique username and password and issue <command>razor-admin -register -user=some_user -pass=somepass</command></para>
<!-- <para>To register yourself as a new user issue <command>razor-admin -d -create</command> -->

</sect3>


</sect2>

<sect2 id="get-spamassassin">
<title>Getting and installing spamassassin</title>
<para>Spamassassin is the todays leading opensource project to fight against SPAM. To describe how spamassassin works would be too much for this document. For further information please consult <ulink url="http://eu.spamassassin.org/doc.html">http://eu.spamassassin.org/doc.html</ulink></para>

<sect3><title>Download</title>
<para>
Origin-Site: <ulink url="http://eu.spamassassin.org/released/Mail-SpamAssassin-3.0.4.tar.gz">http://eu.spamassassin.org/released/Mail-SpamAssassin-3.0.4.tar.gz</ulink>

<sect3><title>Prerequisites</title>
<para>Spamassassin depends on a lot of prerequisites. The easiest way is using the CPAN repository. Issue the command <command>perl -MCPAN -e shell</command> and answer all questions as needed.</para>


<sect3><title>Building and installing</title>
<screen>
cd /usr/local

tar -xvzf Mail-SpamAssassin-3.0.4.tar.gz

cd Mail-SpamAssassin-3.0.4

perl Makefile.PL

# You get prompted to run Razor tests which you should answer with "y"
Run Razor v2 tests (these may fail due to network problems)? (y/n) [n] y 

make && make install
</screen>
</sect2>

<!--
<sect2 id="DCC">
<title>Distributed checksum clearinghouse</title>
<para>DCC...</para>
</sect2>


<sect2 id="pyzor">
<title>pyzor</title>
<para>Pyzor...</para>
</sect2>

-->

<sect2 id="amavis-install">
<title>Getting and installing amavisd-new</title>
<para>Amavisd-new is the software that glues all the software described above together to postfix</para>


<sect3><title>Download</title>
<para>
Origin-Site: <ulink url="http://www.ijs.si/software/amavisd/amavisd-new-2.3.2.tar.gz">http://www.ijs.si/software/amavisd/amavisd-new-2.3.2.tar.gz</ulink>

</sect3>

<sect3><title>Prerequisites</title>
<para>Amavisd-new needs a lot of prerequisites.</para>


<para>Run <command>perl -MCPAN -e shell</command> and issue:</para>

<screen>
install ExtUtils::MakeMaker
install HTML::Parser
install DB_File
install Digest::SHA1
install Archive::Tar
install Archive::Zip
install Compress::Zlib
install Convert::TNEF
install Convert::UUlib
install MIME::Base64
install MIME::Parser
install Mail::Internet
install Mail::SPF::Query
install Net::Server
install Net::SMTP
install Net::DNS
install Digest::MD5
install IO::Stringy
install Time::HiRes
install Unix::Syslog
</screen>

<para>At the end run <command>./amavisd</command> and have a look at overseen prerequisites.</para>

<para>Edit <filename>/etc/amavisd.conf</filename> and change the variables <varname>$daemon_user</varname> to »amavis« and <varname>$daemon_group</varname> to »amavis«. Another variable to change is <varname>$mydomain to match your domain.</varname>
</para> 

<para>Please also consider to change the default settings for virus and spam mails to avoid being notified about every intercepted mail</para>

<screen>
$final_virus_destiny      = D_DISCARD;  # (defaults to D_BOUNCE)
$final_spam_destiny       = D_DISCARD;  # (defaults to D_REJECT)
</screen>

<para>In the beginning of SPAM filtering I recommend to set the kill-value to something higher until you tweaked the filters. Change the variable <varname>$sa_kill_level_deflt</varname> to 8 or even higher.</para>


</sect3>

<sect3><title>Building and installing</title>
<screen>
cd /usr/local

tar -xvzf amavisd-new-2.3.2.tar.gz

cd amavisd-new-2.3.2
cp amavisd /usr/local/sbin
cp amavisd.conf /etc
chown root /etc/amavisd.conf
chmod 644  /etc/amavisd.conf
</screen>

<para>Now it is the the time to define a group and a user for amavisd-new</para>

<screen>
groupadd amavis
useradd -g amavis -c "Amavisd-new user" amavis
</screen>


<para>Next you have to define a directory for the quarantined mail:</para>

<screen>
mkdir /var/virusmails
chown amavis:amavis /var/virusmails
chmod 750 /var/virusmails
mkdir /var/amavis
chown amavis:amavis /var/amavis
chmod 750 /var/amavis
</screen>

<para>The original init script in the amavisd-new distribution does only work work with Redhat. Other distributions need to install my quick and dirty init-script:</para>

<screen>
#!/bin/bash
#
# Amavisd-new startup script

case "$1" in
    start)
        # Starting amavisd
        /usr/local/sbin/amavisd
        ;;

    stop)

	# follows later

        ;;

    *)
        echo "Usage: $0 {start|stop}"
        exit 1
        ;;

esac
</screen>


</sect3>

</sect2>

<sect2 id="postfix-setup">
<title>Setting up postfix</title>
<para>Postfix needs to be configured to send each mail to amavis-new in order to get sanitized.</para>

<para>You need to add the following line to <filename>/etc/postfix/main.cf</filename></para>

<screen>
content_filter = smtp-amavis:127.0.0.1:10024
</screen>

<para>The <filename>/etc/postfix/master.cf</filename> needs also some adjustments to return the results from amavisd-new to the mailingsystem.</para>

<para>Please add the following lines to your configuration:</para>

<screen>
smtp-amavis unix - - y - 2 smtp -o smtp_data_done_timeout=1200

127.0.0.1:10025 inet n  -       n       -       -  smtpd
    -o content_filter=
    -o local_recipient_maps=
    -o relay_recipient_maps=
    -o smtpd_restriction_classes=
    -o smtpd_client_restrictions=
    -o smtpd_helo_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o mynetworks=127.0.0.0/8
    -o strict_rfc821_envelopes=yes
    -o smtpd_error_sleep_time=0
    -o smtpd_soft_error_limit=1001
    -o smtpd_hard_error_limit=1000
</screen>
	

</sect2>

</sect1>


<!-- Section1: moreinfo -->

 <sect1 id="moreinfo">
  <title>Further Information</title>

   <indexterm>
    <primary>(your index root)!information resources</primary>
   </indexterm>

  <para>
	Here you will find some other resources available in the internet.
  </para>

<!-- Section2: newsgroups -->

  <sect2 id="newsgroups">
   <title>News groups</title>

    <indexterm>
     <primary>disk!information resources!news groups</primary>
    </indexterm>

   <para>Some of the most interesting news groups are:

    <itemizedlist>

     <listitem>
      <para>
       <ulink url="news:alt.comp.mail.postfix">alt.comp.mail.postfix</ulink>
      </para>
	<para>This is low traffic group.</para>
     </listitem>


     <listitem>
      <para>
       <ulink url="news:comp.mail.imap">comp.mail.imap</ulink>
      </para>
     </listitem>

    </itemizedlist>
   </para>

   <para>Maybe you also check out your country newsgroups e.g ch.comp.os.linux</para>

   <para>
    Most newsgroups have their own FAQ that are designed to answer most
    of your questions, as the name Frequently Asked Questions indicate.
    Fresh versions should be posted regularly to the relevant newsgroups.
    If you cannot find it in your news spool you could go directly to the
    <ulink url="ftp://rtfm.mit.edu/">FAQ main archive FTP site</ulink>.
    The WWW versions can be browsed at the 
    <ulink url="http://www.cis.ohio-state.edu/hypertext/faq/usenet/FAQ-List.html">FAQ
    main archive WWW site</ulink>.
   </para>
  </sect2>

<!-- Section2: maillists -->

  <sect2 id="maillists">
   <title>Mailing Lists</title>

    <indexterm>
     <primary>disk!information resources!mailing lists</primary>
    </indexterm>

   <sect3>
   <title><email>postfix-users at postfix.org</email></title>
   <para>
   Send an mail to <email>majordomo at postfix.org</email> with the content (not subject):
<screen>
subscribe postfix-users</screen> </para>
   <para>Before writing to the list, check out the archive: <ulink url="http://www.deja.com/group/mailing.postfix.users">
   http://www.deja.com/group/mailing.postfix.users</ulink></para>

  </sect3>

  <sect3>

   <title><email>info-cyrus at lists.andrew.cmu.edu</email></title>
   <para>Send an mail to <email>majordomo at lists.andrew.cmu.edu</email> with the content (not subject):
<screen>
subscribe info-cyrus</screen> </para>
   <para>Before writing to the list, check out the archive: 
   <ulink url="http://asg.web.cmu.edu/archive/index.php?mailbox=archive.info-cyrus">
   http://asg.web.cmu.edu/archive/index.php?mailbox=archive.info-cyrus </ulink></para> 

  </sect3>


   <sect3>
   <title><email>web-cyradm at web-cyradm.org</email></title>
   <para>
   Subscription can be done trough the webinterface <ulink url="http://www.web-cyradm.org/mailman/listinfo/web-cyradm">
	http://www.web-cyradm.org/mailman/listinfo/web-cyradm</ulink>

   <para>Before writing to the list, check out the archive for similar incidents:
   <ulink url="http://www.web-cyradm.org/pipermail/web-cyradm/">http://www.web-cyradm.org/pipermail/web-cyradm/
	</ulink>

  </sect3>



  </sect2>

<!-- Section2: howto -->

  <sect2 id="howto">
   <title>HOWTO</title>

    <indexterm>
     <primary>disk!information resources!HOWTOs</primary>
    </indexterm>

   <para>
    This are intended as the primary starting points to get the
    background information as well as show you how to solve a
    specific problem. Some relevant HOWTOs are
    <Literal remap="tt"><ulink url="http://www.tldp.org/HOWTO/Cyrus-IMAP.html">Cyrus-IMAP</ulink></Literal> and 
    <Literal remap="tt"><ulink url="http://www.tldp.org/HOWTO/Apache-Compile-HOWTO/index.html">
	Apache-Compile-HOWTO</ulink></Literal>.  The main site for these is the
    <ulink url="http://www.tldp.org/">LDP archive</ulink>.</para>

  </sect2>

  <sect2 id="ebooks">
 	<title>Ebooks</title>
	<para>There a few other HOWTOs and freely available documentations outside of the TLDP.org</para>
	<para>IBM recently released a new Redbook:
	<Literal remap="tt"><ulink url="http://www.redbooks.ibm.com/redbooks/pdfs/sg247034.pdf">BladeCenter, Linux, and Open Source: Blueprint for e-business on demand</ulink>.</Literal>Especially chapter 6 is interesting when looking for email solutions.
</para>

</sect2>

<!-- Section2: local-res -->

  <sect2 id="local-res">
   <title>Local Resources</title>

    <indexterm>
     <primary>disk!information resources!local</primary>
    </indexterm>

   <para>
	Usually distributions installs some documentation to your system. As a standard they are
	located in <filename>/usr/share/doc/packages</filename></para>
	<para>The SuSE rpms of Cyrus contains a lot a such documentation.</para>
	<para>Postfix has some html-files in the source directory <filename>/usr/local/postfix-2.0.16/html</filename></para>
	<para>PAM comes also with lots of documentation in <filename>/usr/share/doc/packages/pam</filename></para>
	<para>The pam_mysql module has a README with the incredible size of 1670 bytes.</para>
	
  </sect2>

<!-- Section2: web -->

  <sect2 id="web">
   <title>Web Sites</title>

    <indexterm>
     <primary>disk!information resources!WWW</primary>
    </indexterm>
    <indexterm>
     <primary>disk!information resources!web pages</primary>
    </indexterm>

   <para>
    There are a huge number of informative web sites available. By
    their very nature they change quickly so do not be surprised
    if these links become quickly outdated.
   </para>

   <para>
    A good starting point is of course the 
    <ulink url="http://www.tldp.org/">Linux Documentation
    Project</ulink> home page, an information central for
    documentation, project pages and much more.
   </para>

   <para>
	To get more deepened information about Postfix, then <ulink url="http://www.postfix.org">www.postfix.org</ulink>
	would be the starting point.
   </para>

   <para>
    Please let me know if you have any other leads that can be 
    of interest.
   </para>
  </sect2>

 </sect1>

<!-- Section1: moreinfo: END -->

<!-- Section1: faq -->

 <sect1 id="faq">
  <title>Questions and Answers</title>

<para>
	Here I answer the questions which I got from users. If you don't find an answer feel free to contact me
</para>


<qandaset>
<qandadiv><title>FAQ</title>
<qandaentry>
<question>
  <para>
Does web-cyradm only support users like »test0001« ? I'd like to have a more descriptive username
</para>
</question>

<answer>
	<para>
	web-cyradm does also support usernames like »user.name.example.com« if you configure it.
	Your need to change config.inc.php and change the value of DOMAIN_AS_PREFIX to 1. then you need to add
	»unixhierarchysep: yes« to your <filename>/etc/imapd.conf</filename>
	</para>
</answer>
</qandaentry>

<qandaentry><question>
	<para>
	Messages are bouncing. Postfix/pipe complains that "Mailbox does not exist". Whats wrong?
	</para>
</question>

<answer>
	<para>
	Check that the cyrus login on web-cyradm (config.inc.php) is correct.
	The username and password must exist in MySQL on table accountuser. 
	Web-cyradm will not complain if the cyrus login info is incorrect.
	</para>
</answer></qandaentry>

<qandaentry><question>

     <para>
	web-cyradm complains about »Fatal error: Call to undefined function: bindtextdomain()
 	in /www/web-cyradm-0.5.3/index.php on line 46«, whats wrong?
     </para>
</question>

<answer>
	<para>
	Web-cyradm needs gettext enabled PHP. Please compile PHP with the configure-option --with-gettext.
	</para>
	<para>	
	gettext is needed for NLS (Native Language Support) which means
	contributors can easily translate web-cyradm to there language. Fill in your Language in the file
	<filename>/usr/local/apache/htdocs/web-cyradm/locale/templates/web-cyradm.pot</filename> and send me
	the file, then your language will be supported in the next CVS snapshot</para>

</answer>
</qandaentry>

<qandaentry><question>

	<para>
	I got a error from Web-cyradm like this »Fatal error: Call to undefined function: query() in
	/usr/local/httpd/htdocs/web-cyradm/auth.inc.php on line 17«
	</para>
</question>

<answer>
	<para>
	Web-cyradm depends on PEAR for database abstraction. PEAR is included in recent PHP versions. Often
	PEAR is a separate package, check out the package base of your distribution. I strongly suggest to update
	to the most recent version of PHP anyway, because a lot of bugs have been fixed.</para>

	<para>Another reason could be an authentication error with MySQL. Be sure the user »mail« has enough
	rights to access the database and tables.</para>

</answer>	
</qandaentry>

<qandaentry><question>

     <para>
      Why MySQL and not LDAP?
     </para>

</question>

<answer>
     <para>
      Good question. LDAP is role-based and it would be indeed a better solution for such applications. 
      Unfortunately LDAP is very hard to set up. You have to make proper schemes etc. MySQL is the 
      way strait ahead, it is very easy to handle and versatile. There is a PAM module available 
      for LDAP, feel free to use it.
     </para>

</answer>
</qandaentry>

<qandaentry><question>
     <para>
      Why Postfix and not Qmail?
     </para>
</question>

<answer>
     <para>
      Lots of people like to see such a setup with Qmail. The reason why is, Mysql-support is a hack and not in the
      included in the main source-tree. This could end up in a bad situation. Think if a security-hole is found in qmail
      and the patch does not work with the corrected version. Postfix is supporting MySQL natively. 
      Another (personal) reason is that I find Postfix more sympatic (I don't know why)
     </para>

</answer>
</qandaentry>

<qandaentry><question>

     <para>
      I got a Error: "Temporary lookup failure"
     </para>

</question>
<answer>

     <para>
      Postfix cannot look up the alias table. Must common failure is that MySQL is not running, 
      or there is a authentication Error. Check <filename>/var/log/mail</filename> and 
      <filename>/usr/local/mysql/var/&lt;hostname&gt;.err</filename> to track the error.
     </para>

</answer>
</qandaentry>

<qandaentry><question>

     <para>
      For what platforms does this HOWTO work?
     </para>

</question>
<answer>

     <para>
      It is primarily for Linux. Until now I only tested it on Linux/IA32. Most probably it will also work on other 
      architectures.
      FreeBSD is reported working fine. AIX has problems with at least PHP. Please report if you got it running 
      on other platform, so I can update this section.
     </para>

</answer>
</qandaentry>

</qandadiv>
</qandaset>

 </sect1>


</article>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-namecase-general:t
sgml-general-insert-case:lower
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:nil
sgml-parent-document:nil
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->

Postfix-Cyrus-Web-cyradm-HOWTO

Luc de Louw

              <[1]luc at delouw.ch>

   Revision History
   Revision 1.2.6 2004-03-30 Revised by: ldl
   Added minor additions and corrected to amavisd-new, corrected
   cronjob-time for freshclam
   Revision 1.2.5 2004-03-28 Revised by: ldl
   Added Anti-Virus and SPAM methods (amavisd-new, spamassassin, clamav),
   updated cyrus-imapd section with update instructions, added
   instruction to restrict imapd admin access.
   Revision 1.2.4 2003-11-30 Revised by: ldl
   Input from English proofreading, minor correction and enhancements
   from user-input, updated software mentioned in the HOWTO
   Revision 1.2.3 2003-03-24 Revised by: ldl
   Some minor correction and enhancements from user-input, updated
   software mentioned in the HOWTO
   Revision 1.2.2 2003-02-14 Revised by: ldl
   Lots of grammar and typos fixed. Some corrections to the pam_mysql
   Makefile
   Revision 1.2.1 2003-02-12 Revised by: ldl
   Non-official test-release: Added lots of fixes and updates. Added
   OpenSSL and more pam related stuff.
   Revision 1.2.0 2002-10-16 Revised by: ldl
   Added lot of user requests, updated the software mentioned in the
   HOWTO
   Revision 1.1.7 2002-10-15 Revised by: ldl
   Added Michael Muenz' hints for SMTP AUTH, corrected ca-cert related
   mistake, improved SGML code (more metadata), updated the software
   mentioned in the document.
   Revision 1.1.6 2002-06-14 Revised by: ldl
   Added sasl_mech_list: PLAIN to imapd.conf, added web-cyradm
   mailinglist, added more to web-cyradm
   Revision 1.1.5 2002-06-11 Revised by: ldl
   Added new SQL query to initialize web-cyradm to have full data
   integrity in the MySQL Database, mysql-mydestination.cf reported to be
   operational as expected.
   Revision 1.1.4 2002-05-15 Revised by: ldl
   Added description what is needed in /etc/services Another fix for
   pam_mysql compile, updated software versions.
   Revision 1.1.3 2002-05-08 Revised by: ldl
   Added more description for web-cyradm, fix for wrong path of the
   saslauthdb-socket, Fix for wrong place of com_err.h, protection of the
   TLS/SSL private key.
   Revision 1.1.2 2002-04-29 Revised by: ldl
   Added description for Redhat users how to install the init scripts.
   Revision 1.1.1 2002-04-29 Revised by: ldl
   Fixed bug in configuring cyrus-IMAP (disabled unused kerberos
   authentication)
   Revision 1.1.0 2002-04-28 Revised by: ldl
   Initial support for building cyrus from source, dropped binary
   installation for Cyrus, because configuration has changed with Release
   2.1.x
   Revision 1.0.2 2002-04-25 Revised by: ldl
   Added basic description for sieve and correct sender handling, minor
   fixes to db related stuff, Added mysql-lookup for »mydestination« ,
   fixed bug for building postfix with mysql support.
   Revision 1.0.1 2002-04-07 Revised by: ldl
   Added an important fix for compiling pam_mysql
   Revision 1.0.0 2002-04-07 Revised by: ldl
   Initial Release

   This document guides you through the installation of the Postfix mail
   transportation agent (MTA), the Cyrus IMAP server. The goal is a fully
   functional high-performance mailsystem with user-administration with
   Web-cyradm, a webinterface. Data like virtualusers, aliases etc. are
   stored in a mysql database.
     _________________________________________________________________

   Table of Contents
   [2]Introduction
   [3]Technologies
   [4]Getting and installing the software
   [5]Configuring MySQL
   [6]Configuring PAM
   [7]Configuring Postfix
   [8]Configuring Cyrus IMAP
   [9]Configuring Web-cyradm
   [10]Testing the setup
   [11]Fighting against Viruses and SPAM
   [12]The software needed against viruses and SPAM
   [13]Further Information
   [14]Questions and Answers

Introduction

   The cyrus part is only valid for Cyrus-IMAP 2.1.x and Cyrus-SASL
   2.1.x. If you plan to use Cyrus-IMAP 2.0.x then please consult the
   deprecated version 1.0.x of this HOWTO.

   I strongly recommend that you upgrade to Cyrus Version 2.1.x. If you
   do so, you will have a better ability to get valuable support from the
   user community
     _________________________________________________________________

Contributors and Contacts

   First I would thank all those people who sent questions and
   suggestions that made the further development of this document
   possible. It shows me that sharing knowledge is the right way. I would
   encourage you to send me more suggestion, just write me an email
   <[15]luc at delouw.ch>
     _________________________________________________________________

Why I wrote this document

   There are different approaches on how to set up different mailsystems.
   Most documents that are available are related to Sendmail, procmail,
   WU-IMAPd and friends. These packages are very good but are
   unfortunately very inflexible in their user administration.

   For a long time I was testing alternative MTA's like qmail, postfix
   and exim, in conjunction with IMAP/POP-servers like Cyrus, vpopmail,
   Courier IMAP and others.

   At the end of the day, from my point of view the couple Postfix/Cyrus
   seems to be the most flexible and best performing solution.

   All these combinations of software had one thing in common: their was
   very little documentation available describing how these packages work
   together with each other. To install the software, lot of effort has
   be spent to get all information needed to get all the software
   running.
     _________________________________________________________________

Copyright Information

   This document is copyrighted (c) 2002, 2003, 2004 Luc de Louw and is
   distributed under the terms of the Linux Documentation Project (LDP)
   license, stated below.

   Unless otherwise stated, Linux HOWTO documents are copyrighted by
   their respective authors. Linux HOWTO documents may be reproduced and
   distributed in whole or in part, in any medium physical or electronic,
   as long as this copyright notice is retained on all copies. Commercial
   redistribution is allowed and encouraged; however, the author would
   like to be notified of any such distributions.

   All translations, derivative works, or aggregate works incorporating
   any Linux HOWTO documents must be covered under this copyright notice.
   That is, you may not produce a derivative work from a HOWTO and impose
   additional restrictions on its distribution. Exceptions to these rules
   may be granted under certain conditions; please contact the Linux
   HOWTO coordinator at the address given below.

   In short, we wish to promote dissemination of this information through
   as many channels as possible. However, we do wish to retain copyright
   on the HOWTO documents, and would like to be notified of any plans to
   redistribute the HOWTOs.

   If you have any questions, please contact <[16]linux-howto at
   metalab.unc.edu>
     _________________________________________________________________

Disclaimer

   No liability for the contents of this documents can be accepted. Use
   the concepts, examples and other content at your own risk. As this is
   a new edition of this document, there may be errors and inaccuracies,
   that may of course be damaging to your system. Proceed with caution,
   and although this is highly unlikely, the author(s) do not take any
   responsibility for that.

   All copyrights are held by their by their respective owners, unless
   specifically noted otherwise. Use of a term in this document should
   not be regarded as affecting the validity of any trademark or service
   mark.

   Naming of particular products or brands should not be seen as
   endorsements.

   You are strongly recommended to take a backup of your system before
   major installation and backups at regular intervals.
     _________________________________________________________________

New Versions

   New version of this document are announced on freshmeat

   The latest version of this document can be obtained from
   [17]http://www.delouw.ch/linux

     * [18]HTML.
     * [19]Postscript (ISO A4 format).
     * [20]Acrobat PDF.
     * [21]SGML Source.
     * [22]HTML gzipped tarball.
     _________________________________________________________________

Credits

     * Martynas Bieliauskas <[23]martynas at inet.lt> submitted a good
       idea how to restrict the cyrus admin to localhost only.
     * Michael Muenz <[24]m.muenz at maxonline.de> for his help with SMTP
       Authentication
     * Ron Wheeler <[25]rwheeler at artifact-software.com> for his help
       with editing for readability
     * The nice people at <[26] discuss at tldp.org> for supporting me in
       writing the HOWTOs.
     _________________________________________________________________

Feedback

   Feedback is most certainly welcome for this document. Without your
   submissions and input, this document wouldn't exist. Please send your
   additions, comments and criticisms to the following email address :
   <[27]luc at delouw.ch>.

   Please understand, that I don't want to add Cyrus-IMAP 2.0.x related
   stuff in this document anymore.
     _________________________________________________________________

Translations

   At the moment no translations are available. A German translation is
   planned and would be written by me as soon as I get the time.

   Translations to other languages are always welcome. If you translate
   this document, please translate the SGML source. Please let me know if
   you begin to translate, so I can set a link here.
     _________________________________________________________________

Technologies

The Postfix MTA



   Postfix attempts to be fast, easy to administer, and secure, while at
   the same time being sendmail compatible enough to not upset existing
   users. Thus, the outside has a sendmail-ish flavor, but the inside is
   completely different.

   --www.postfix.org

   Figure 1. Postfix - the big picture

   [big-picture.png]

   Doesn't it look impressive? - It looks much more complicated than it
   is. Postfix is indeed nice to configure and handle.

   Unlike sendmail, postfix is not one monolithic program, it is a
   compilation of small programs, each of which has a specialized
   function. At this point I don't what to go into details about what
   each program does what. If you are interested how Postfix works,
   please see the documentation at [28]http://www.postfix.org/docs.html

   In this document you will find the information needed to get the
   system running in conjunction with the other components of a full
   e-mail setup.
     _________________________________________________________________

Cyrus IMAP

   Cyrus IMAP is developed and maintained by Carnegie Mellon University.

   Unlike the WU-IMAPd package, Cyrus uses its own method to store the
   user's mail. Each message is stored in its own file. The benefit of
   using separate files is improved reliability since only one message is
   lost if there is a filesystem error. Metadata such as the status of a
   message (seen, etc) is stored in a database. Additionally, the
   messages are indexed to improve Cyrus performance, specially with lots
   of users and/or lots of big emails. There is nothing else as fast as
   the Cyrus IMAP-server.

   Another very important feature is that you don't need a local Un*x
   user for each account. All users are authenticated by the IMAP-Server.
   This makes it a great solution when you have a really huge number of
   users.

   User administration is done by special IMAP-commands. This allows you
   to either use the commandline interface or use one of the available
   Web interfaces. This method is much more secure than a Webinterface to
   /etc/passwd.

   Starting from Cyrus 2.1, SASL-lib version 2 is used for
   authentication. For the setup described in this HOWTO, a tree-layer
   authentication is implemented. Cyrus authenticates with saslauthdaemon
   which forwards the request to pam_mysql which finally looks up the
   user information in the MySQL-table.

   Since CMU changed the license policy for Cyrus, this software is going
   to be used by many more users.
     _________________________________________________________________

Cyrus SASL

   SASL means »Simple Authentication and Security Layer«. It is
   standardized by the IETF (Internet Engineering Taskforce). SASL is
   used by network servers (in this case Cyrus-IMAP) to handle
   authentication requests from clients.

   Cyrus SASL is a extensive software, and sometimes not easy to
   understand. Even I have just the minimum knowledge needed to write
   this HOWTO.
     _________________________________________________________________

OpenSSL

   OpenSSL is a library needed by SASL for encryption of the data-stream.
   It is used by almost all opensource software that need encryption.
   Most or all Un*x distributions come with a pre-installed OpenSSL. Be
   sure to also install the appropriate devel-package. If you like, you
   can compile OpenSSL by yourself. This will be required if you need to
   fix a security hole.
     _________________________________________________________________

MySQL Database

   MySQL is a very fast, powerful and very easy to use database.

   Since Cyrus can authenticate its users with pam, you can use pam_mysql
   as a connector to the user database stored in MySQL. This allows you
   to create a nice Webinterface for your users for changing passwords,
   defining and deleting aliases and more.
     _________________________________________________________________

pam_mysql

   pam means "Pluggable Authentication module" and was originally
   proposed by some people at Sun. In meantime a lot of modules have been
   developed. One of them is an interface to MySQL

   With pam_mysql you store the users password in a MySQL database.
   Further, Postfix is able to lookup aliases from a MySQL-table. At the
   end of the day, you have a base for all administrative tasks to be
   done by the postmaster.

   You will be able to delegate some tasks to powerusers. For example,
   tasks such as creating accounts, changing passwords and creating new
   aliases can be delegated to an administrator for a particular domain.
   At the end of the day, you, as a sysadmin, will have the time to do
   some more productive tasks or write a HOWTO for the Linux
   Documentation Project.
     _________________________________________________________________

Web-cyradm Webinterface

   Figure 2. Web-cyradm Domain administration

   [home.png]

   Web-cyradm is the webinterface that allows you to perform the
   administrative tasks required to maintain the mail system. This
   screenshot shows the domain administration part of Web-cyradm.

   Web-cyradm is written in PHP, the most sophisticated html-preprocessor
   language. If you don't have a webserver with php installed, I would
   like to refer you to my [29]Apache-Compile-HOWTO. This document
   describes how to set up Apache with PHP and other modules.

   Web-cyradm is under active development from people around the globe.
   The list of features grows with each release. If you would like to
   contribute to web-cyradm, or you have a nice idea, feel free to
   contact the mailinglist on [30]http://www.web-cyradm.org

   The following is a partial list of features:

     * Administration of multiple virtual domains
     * Setting of quotas
     * Automatically creating usernames, either with a defined prefix, or
       the domainname
     * Delegation of tasks such as creating new users to »Domain Masters«
     * Mapping of user-accounts to email addresses
     * Forwarding of accounts to single aliases
     * Vacation functions for a single aliases
     * Support for SMTP Transport Tables
     * Support for MySQL and PostgreSQL
     * i18n (internationalization) support (including different charsets)
     * Translated into 18 Languages and growing

   Web-cyradm supports different roles of its users. If you plan to use
   it as a frontend for your powerusers, please notice that security may
   be a problem. The role based stuff needs a security review.
     _________________________________________________________________

Getting and installing the software

   Most of the software is included in your Linux distribution. I. e.
   SuSE is shipping Cyrus as far as I know since 7.1. Since SuSE 8.1,
   cyrus-imap 2.1 and sasl2 is included, and works. It is still
   recommended to compile Cyrus by yourself. SuSE does not ship a MySQL
   enabled Postfix.

     Deprecated packages for Debian stable and testing: Debian users
     probably want to install packages provided by Debian. Unfortunately
     Debian stable (Woody) and testing (sarge) are using the deprecated
     version of the software used in this HOWTO. I tested the respective
     packages from Debian unstable (sid) and the are working. Please
     note, that the maintainers at Debian are very conservative. The
     software packages »postfix-mysql«, »libsasl2« and »cyrus21-imapd«
     are stable, even if they are only available in the »unstable« tree.
     _________________________________________________________________

Getting and installing MySQL

Download

   Origin-Site: [31]http://www.mysql.com/downloads/
     _________________________________________________________________

Building and installing

cd /usr/local
tar -xvzf mysql-4.0.18.tar.gz
cd mysql-4.0.18

./configure \
--prefix=/usr/local/mysql \
--enable-assembler \
--with-innodb \
--without-debug

make
make install

/usr/local/mysql/bin/mysql_install_db
echo /usr/local/mysql/lib/mysql >> /etc/ld.so.conf
ldconfig

ln -s /usr/local/mysql/include/mysql /usr/include/mysql
ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql

   To improve security, add a mysql-user on your system i.e. »mysql«,
   then
   chown -R mysql /usr/local/mysql/var

   If you want to start MySQL automatically at boottime, copy
   /usr/local/mysql/share/mysql/mysql.server to /etc/init.d/ for SuSE,
   for Redhat it is /etc/rc.d/init.d instead of /etc/init.d/. Further you
   need to add symbolic links to /etc/init.d/rc3.d for SuSE and
   /etc/rc.d/rc3.d for Redhat.

   The following example is for SuSE Linux and should be easily changed
   for Redhat and other Linux distributions and commercial Unix systems.
cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/
ln -s /etc/init.d/mysql.server /etc/init.d/rc3.d/S20mysql
ln -s /etc/init.d/mysql.server /etc/init.d/rc3.d/k08mysql
     _________________________________________________________________

Getting and installing Berkeley DB

   The Berkeley DB is a requirement for building Cyrus-SASL and
   Cyrus-IMAP. Some Systems comes with recent versions but without the
   header files installed. Please see your distributors CD/DVD to see if
   you can install the header files from a package. Usually this package
   is called bdb-devel.

   The version that comes with GNU/Debian Linux is out of date, you will
   need to compile the most recent version instead. If you already
   installed Berkeley DB on your Debian Box, please uninstall it to
   prevent conflicts.

   It is also very important, that Cyrus-SASL and Cyrus-IMAP is compiled
   with the same version of Berkeley DB or else you can run into
   problems.

     Berkeley DB versions: I only tested version 4.0.x versions of bdb.
     Please let me know if you are successful with newer versions.
     _________________________________________________________________

Download Berkeley DB

   Origin-Site:
   [32]http://www.sleepycat.com/update/snapshot/db-4.0.14.tar.gz
     _________________________________________________________________

Building and installing Berkeley DB

cd dist

./configure --prefix=/usr/local/bdb

make
make install

echo /usr/local/bdb/lib >> /etc/ld.so.conf
ldconfig
     _________________________________________________________________

Getting and installing OpenSSL

Download OpenSSL

   Origin-Site [33]http://www.openssl.org
     _________________________________________________________________

Building and installing

cd /usr/local
tar -xvzf openssl-0.9.7d.tar.gz

cd openssl-0.9.7d

./config shared

make
make test
make install

echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
ldconfig

     Select your CPU to improve speed: By default the Makefile generates
     code for the i486 CPU. You can change this by editing the Makefile
     after running config shared. Search for -m486 and replace it i.e
     with -march=athlon
     _________________________________________________________________

Getting and installing Cyrus SASL and IMAP

   Building Cyrus SASL and IMAP from source is not a easy task. There are
   some prerequisites to be fulfilled, and lots of difficult
   authentication related stuff to be considered.
     _________________________________________________________________

Download Cyrus SASL and Cyrus IMAP

   Origin-Site:
   [34]ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-2.1.18.tar.gz

   Origin-Site:
   [35]ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-imapd-2.2.3.tar.gz
     _________________________________________________________________

Create the cyrus user

   On most systems there is no cyrus user and mailgroup by default. Check
   for a free UID, usually daemons are running with UIDs less that 100.
   As example I am using UID 96 which is what SuSE has in the default
   /etc/passwd.
groupadd mail
useradd -u 96 -d /usr/cyrus -g mail cyrus
passwd cyrus
     _________________________________________________________________

Building and installing Cyrus SASL

tar -xvzf cyrus-sasl-2.1.18.tar.gz
cd cyrus-sasl-2.1.18

./configure \
--enable-anon \
--enable-plain \
--enable-login \
--disable-krb4 \
--disable-otp \
--disable-cram \
--disable-digest \
--with-saslauthd=/var/run/saslauthd \
--with-pam=/lib/security \
--with-dblib=berkeley \
--with-bdb-libdir=/usr/local/bdb/lib \
--with-bdb-incdir=/usr/local/bdb/include \
--with-openssl=/usr/local/ssl \
--with-plugindir=/usr/local/lib/sasl2


make
make install

mkdir -p /var/run/saslauthd

cd saslauthd
make testsaslauthd
cp testsaslauthd /usr/local/bin

echo /usr/local/lib/sasl2 >> /etc/ld.so.conf
ldconfig

   The SASL library is installed in /usr/local/lib/sasl2 but some
   programs are expecting SASL in /usr/lib/sasl2. So it is a good idea to
   create a symbolic link: ln -s /usr/local/lib/sasl2 /usr/lib/sasl2.
     _________________________________________________________________

Building Cyrus-IMAP

tar -xvzf cyrus-imapd-2.2.3.tar.gz
cd cyrus-imapd-2.2.3

export CPPFLAGS="-I/usr/include/et"

./configure \
--with-sasl=/usr/local/lib \
--with-perl \
--with-auth=unix \
--with-dbdir=/usr/local/bdb \
--with-bdb-libdir=/usr/local/bdb/lib \
--with-bdb-incdir=/usr/local/bdb/include \
--with-openssl=/usr/local/ssl \
--without-ucdsnmp \

make depend
make
make install
     _________________________________________________________________

Automatic startup script

   If you wish to start the Cyrus IMAP daemon automatically after
   booting, you need a startup script. Place the following script in
   /etc/init.d/. For Redhat, it is /etc/rc.d/init.d instead of
   /etc/init.d/.
#!/bin/bash
#
# Cyrus startup script

case "$1" in
    start)
        # Starting SASL saslauthdaemon
        /usr/local/sbin/saslauthd -c -a pam&

        # Starting Cyrus IMAP Server
        /usr/cyrus/bin/master &
        ;;

    stop)

        # Stopping SASL saslauthdaemon
        killall saslauthd

        # Stopping Cyrus IMAP Server
        killall /usr/cyrus/bin/master

        ;;

    *)
        echo "Usage: $0 {start|stop}"
        exit 1
        ;;

esac

   If I get the time, I will provide a more sophisticated script, but
   this script works.

   Now create the Symlinks in the runlevel directory (SuSE):
ln -s /etc/init.d/cyrus /etc/init.d/rc3.d/S20
ln -s /etc/init.d/cyrus /etc/init.d/rc3.d/K10

   For Redhat:
ln -s /etc/rc.d/init.d/cyrus /etc/rc.d/rc3.d/S20cyrus
ln -s /etc/rc.d/init.d/cyrus /etc/rc.d/rc3.d/K10cyrus
     _________________________________________________________________

Update Cyrus IMAPd

   This section describes HOWTO update the IMAPd from version 2.1.x to
   2.2.x

   Update is critical and can mean complete data loss

   Please test this procedure on a test/pre-production server first. Also
   have close look to install-upgrade.html that comes with the
   cyrus-imapd distribution. Please note, that you shoud plan a downtime
   for the production server to have the time to solve problems. Also
   note, that nobody I cannot take responsibility for the update
   procedure provided here

   Cyrus changed the format of the dbd databases used for internal
   storage of mailboxlist flags etc.

   A convert script comes with the distribution. The most important
   database is /var/imap/mailboxes.db. Without that database cyrus-imapd
   will NOT run. This requires a backup. Lets do a dump and a backup of
   the database.
/etc/init.d/cyrus stop # be sure no cyrus process is running

lsof /var/imap/mailboxes.db # be sure NO process is accessing the mailbox file

su - cyrus
/usr/cyrus/bin/ctl_mboxlist -d > /tmp/mailbox.db.dump
cp /var/imap/mailboxes.db /var/imap/mailboxes.db.old

   Convert the /var/imap/mailboxes.db
/usr/cyrus/bin/cvt_cyrusdb /var/imap/mailboxes.db berkeley /var/imap/mailboxes.
db.new skiplist
mv /var/imap/mailboxes.db.new /var/imap/mailboxes.db

   Convert all the »seen« databases:
find /var/imap/user -name \*.seen -exec /usr/cyrus/bin/cvt_cyrusdb \{\} flat \{
\}.new skiplist \; -exec mv \{\}.new \{\} \;

   Converting the sieve scripts
   /usr/local/cyrus-imapd-2.2.3/tools/masssievec /usr/cyrus/bin/sievec
     _________________________________________________________________

Getting and installing Postfix

Download

   Origin-Site: [36]http://www.postfix.org/ftp-sites.html
     _________________________________________________________________

Creating a User-ID (UID) and Group-ID (GID) for postfix

   Before you build and install postfix, be sure to create a »postfix«
   and a »postdrop« user and group if they do not exist on the system.
   First check for the groups. You can check this by grep postfix
   /etc/group and grep maildrop /etc/group

   If there are no such groups and users, you just create them. Search
   for a free numeric UID and GID. In the following example I will use
   UID and GID 33333 for Postfix and 33335 for the maildrop UID and GID.
   These ID's correspond to other documents.
groupadd -g 33333 postfix
groupadd -g 33335 postdrop

useradd -u 33333 -g 33333 -d /dev/null -s /bin/false postfix
     _________________________________________________________________

Building and installing

   The following section shows what you have to do if you installed MySQL
   from source as described above. If you installed MySQL from a binary
   package such as rpm or deb, then you have to change the include and
   library-flags to -I/usr/include/mysql and -L/usr/lib/mysql.

   Old MTA needs to be uninstalled

   It is important that you uninstall any sendmail version from RPM based
   systems. I suggest that you remove sendmail, and install Postfix
   instead. At least SuSE RPMs need a MTA. After installing the
   Postfix-RPM, just install Postfix over the RPM installation by
   following the HOWTO.
tar -xvzf postfix-2.0.19.tar.gz

cd postfix-2.0.19

make makefiles 'CCARGS=-DHAS_MYSQL \
-I/usr/local/mysql/include/mysql -DUSE_SASL_AUTH \
-I/usr/local/include/sasl -I/usr/local/bdb/include' \
'AUXLIBS=-L/usr/local/mysql/lib/mysql \
-lmysqlclient -lz -lm -L/usr/local/lib -lsasl2 -L/usr/local/bdb/lib'
make
make install

   During make install a few question are asked. Just pressing Enter
   should match your needs. For Redhat users it could be useful to enter
   /usr/local/share/man

   Now you need to create some symbolic links to start Postfix
   automatically on system startup. The sample is for SuSE Linux, please
   consult your vendors manual for other distributions.
ln -s /usr/sbin/postfix /etc/init.d/rc3.d/S14postfix
ln -s /usr/sbin/postfix /etc/init.d/rc3.d/K07postfix
     _________________________________________________________________

Getting and installing PAM

   PAM is installed by default on almost all Linux distributions. I am
   not describing how to compile PAM by yourself, because it could break
   your system. Instead, I will describe how to install the package.

   Users of a RPM based distribution can issue the following command:

   rpm -i pam-devel.rpm

   Debian users can install the devel package with the following command:
   apt-get install libpam0g-dev
     _________________________________________________________________

Getting and installing pam_mysql

Download

   Origin-Site: [37]http://sourceforge.net/projects/pam-mysql/
     _________________________________________________________________

Installing

tar -xvzf pam_mysql-0.5.tar.gz

cd pam_mysql

   If you have compiled mysql by yourself, check the Makefile and enter
   the correct path to your mysql libs and add the compiler flag CFLAGS
   -I/path/to/mysql/include.
ifndef FULL_LINUX_PAM_SOURCE_TREE
export DYNAMIC=-DPAM_DYNAMIC
export CC=gcc
export CFLAGS=-O2 -Dlinux -DLINUX_PAM \
       -ansi -D_POSIX_SOURCE -Wall -Wwrite-strings \
       -Wpointer-arith -Wcast-qual -Wcast-align -Wtraditional \
       -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline \
       -Wshadow -pedantic -fPIC -I/usr/local/mysql/include
export MKDIR=mkdir -p
export LD_D=gcc -shared -Xlinker -x -L/usr/local/mysql/lib/mysql -lz
endif

   After customizing that file you an go ahead with the pam_mysql
   compile.
make

cp pam_mysql.so /lib/security

[[ ! -d /var/lib/mysql ]] && mkdir /var/lib/mysql
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
     _________________________________________________________________

Getting and installing Web-cyradm

Download

   Origin-Site: [38]http://www.web-cyradm.org
     _________________________________________________________________

Installing

cd /usr/local/apache/htdocs

tar -xvzf web-cyradm-0.5.4.tar.gz

touch /var/log/web-cyradm.log
chown nobody /var/log/web-cyradm.log

   After unpacking web-cyradm, move it to a place in your webserver's
   documentroot.

   Thats all. Now you need to configure the whole bunch of software.

   Web-cyradm 0.5.4 is considered stable, and was released on 2003-12-05

   Since web-cyradm uses PEAR for its database abstraction layer, you
   also need a recent copy of PEAR. This is included in recent PHP
   Versions. I strongly suggest to update PHP to 4.3.4, because a lot of
   important bugs have been fixed.

   A frequent mistake is to forget to touch the logfile and change the
   owner to the Apache UID. This is usually »nobody« or »wwwrun«.
     _________________________________________________________________

Create the databases and tables

   Now we need to create the database and tables for Postfix and
   Web-cyradm and add a user to the database.

   Web-cyradm comes with several MySQL scripts: insertuser_mysql.sql and
   create_mysql.sql. The first inserts the Database user to the database
   »mysql« and creates the database »mail«. The second creates the
   required tables and populates the database with an initial admin-user
   and the cyrus user.

   The other scripts are used for incremental upgrading from older
   releases.

   The password for the database user »mail« in this example is »secret«.
   Please insert whatever user and password you like.

   The username for the initial superuser is »admin« with the password
   »test«.

   Change the default password!

   If a malicious user wants to gain unauthorized access to a system, the
   first attempt is always the default username and password supplied by
   the vendor. It is IMPORTANT that you change them in the scripts before
   applying them.

   After customizing the username and password, apply the scripts:
/usr/local/mysql/bin/mysql -u root -p < \
/usr/local/apache/htdocs/web-cyradm/scripts/insertuser_mysql.sql

/usr/local/mysql/bin/mysql mail -u mail -p < \
/usr/local/apache/htdocs/web-cyradm/scripts/create_mysql.sql
     _________________________________________________________________

Upgrading from 0.5.3 to 0.5.4

   In version 0.5.4 there is a small database enhancement. You can
   upgrade your database by issuing the MySQL script that comes with the
   distribution.
mysql mail -u mail -p < \
scripts/upgrade-0.5.3-to-0.5.4_mysql.sql

   Since Version 0.5.3 web-cyradm has full support for DES crypted
   passwords. You can use the php-script migrate.php to convert the users
   passwords from plain text to unix compatible crypt (DES).

   Migration from plain to crypt cannot be undone

   Be sure to have a recent backup of your database before doing anything
   with the migration script.
     _________________________________________________________________

Configuring MySQL

Securing MySQL

   Because you are using MySQL to authenticate users, you need to
   restrict network access to port 3306.

   The easiest way is to only bind MySQL to the loopback interface
   127.0.0.1. This makes sure nobody can connect to your MySQL daemon via
   the network.

   Edit /etc/init.d/mysql.server and change line 107 as following:

   Original line:
   $bindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file&

   Changed line:
$bindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file \
--bind-address=127.0.0.1&

   Restart your MySQL daemon by issuing the
   command/etc/init.d/mysql.server start

   To ensure the configuration change was successful, netstat -an|grep
   LISTEN. The Output should be looking similar to this:
bond:~ # netstat -an|grep LISTEN
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN
     _________________________________________________________________

Setting up rinetd

   This step is only necessary if you run the MySQL sever on host other
   than the mail server. This allows you to securely connect from another
   host since access is allowed only from pre-defined IP addresses.

   The example used is from the view of the host serving the MySQL
   database. Lets assume your mail server has the IP 192.168.0.100 and
   the MySQL host has 192.168.0.200

   Edit /etc/rinetd.conf and add:
192.168.0.200 3306 127.0.0.1 3306
allow 192.168.0.100

   This means: The MySQL host is listening on 192.168.0.200 port 3306. If
   192.168.0.100 attempts a connection, it is forwarded to
   127.0.0.1:3306. All other hosts are rejected.
     _________________________________________________________________

Configuring PAM

   Now we need to get sure that PAM knows how to authenticate the Cyrus
   users

   You have to create the file /etc/pam.d/imap with the following
   entries:
auth sufficient pam_mysql.so user=mail passwd=secret host=localhost db=mail tab
le=accountuser usercolumn=username passwdcolumn=password crypt=1 logtable=log l
ogmsgcolumn=msg logusercolumn=user loghostcolumn=host logpidcolumn=pid logtimec
olumn=time

auth sufficient pam_unix_auth.so

account required pam_mysql.so user=mail passwd=secret host=localhost db=mail ta
ble=accountuser usercolumn=username passwdcolumn=password crypt=1 logtable=log
logmsgcolumn=msg logusercolumn=user loghostcolumn=host logpidcolumn=pid logtime
column=time

account  sufficient       pam_unix_acct.so

   The lines containing pam_unix_auth.so and pam_unix_acct.so are only
   needed if you are migrating from WU-IMAP to Cyrus. This allows you to
   authenticate with its old unix-password AND its new mysql-based
   password.

   To use the other services provided by cyrus and smtp-authtication you
   need to copy the file so that they match the service-ID
cp /etc/pam.d/imap /etc/pam.d/pop
cp /etc/pam.d/imap /etc/pam.d/sieve
cp /etc/pam.d/imap /etc/pam.d/smtp
     _________________________________________________________________

Configuring Postfix

   Postfix needs two major config files: main.cf and master.cf. Both need
   your attention.
     _________________________________________________________________

master.cf

   You need to change just one line:

   old:
   flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}

   new:
flags= user=cyrus argv=/usr/cyrus/bin/deliver -r ${sender} -m ${extension} ${us
er}

   What does that change affect?

   A look to the cyrus man-pages man deliver clears up that issue:

   The Postfix default setup uses a wrong path to cyrus deliver, this is
   the first change. The parameter »-r« inserts a proper return path.
   Without that, mail rejected/retured by sieve will be sent to the cyrus
   user at yourdomain.
     _________________________________________________________________

main.cf

   Here you need to change some more things like hostname, relaying,
   alias-lookups etc.

   First change the hostname:
   myhostname = foo.bar.org

   mydestination

   Here you have to put all domainnames that are local (corresponding to
   sendmail's /etc/mail/sendmail.cw). If you have multiple domains,
   separate them with comma.
mydestination = foo.bar.org, example.com, furchbar-grausam.ch,
 whatever.domain.tld, mysql:/etc/postfix/mysql-mydestination.cf

   Relayhost

   Here you define where to deliver outgoing mails. If you do not provide
   any host, mail is delivered directly to the destination smtp host.
   Usually your relayhosts are your internet service provider's smtp
   server.
   relayhost = relay01.foobar.net relay02.foobar.net relay03.foobar.net

   Mailtransport

   Here you define how the mails accepted for local delivery should be
   handled. In your situation, mail should be delivered by the cyrus
   delivery program.
   mailbox_transport = cyrus

   At the end of file you need to add:
virtual_alias_maps = hash:/etc/postfix/virtual, mysql:/etc/postfix/mysql-virtua
l.cf

   If you don't want to have a overriding /etc/postfix/virtual, skip the
   hash entry

   Outgoing addresses should be rewritten from test0002 at domain to
   user.name at virtualhost.com. This is important if you want to use a
   webmail interface.
   sender_canonical_maps = mysql:/etc/postfix/mysql-canonical.cf

   Now you need to create the file /etc/postfix/mysql-virtual.cf:
#
# mysql config file for alias lookups on postfix
# comments are ok.
#

# the user name and password to log into the mysql server
hosts = localhost
user = mail
password = secret

# the database name on the servers
dbname = mail

# the table name
table = virtual

#
select_field = dest
where_field = alias
additional_conditions = and status = '1'

   The file /etc/postfix/mysql-canonical.cf:
# mysql config file for canonical lookups on postfix
# comments are ok.
#

# the user name and password to log into the mysql server
hosts = localhost
user = mail
password = secret

# the database name on the servers
dbname = mail

# the table name
table = virtual
#
select_field = alias
where_field = username
# Return the first match only
additional_conditions = and status = '1' limit 1

   Finally the file /etc/postfix/mysql-mydestination.cf:
# mysql config file for local domain (like sendmail's sendmail.cw) lookups on p
ostfix
# comments are ok.
#

# the user name and password to log into the mysql server
hosts = localhost
user = mail
password = secret

# the database name on the servers
dbname = mail

# the table name
table = domain
#
select_field = domain_name
where_field = domain_name

   SMTP Authentication with SASL and PAM

   Put the following in your /etc/postfix/main.cf
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, re
ject_unauth_destination
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain =
broken_sasl_auth_clients = yes

   You also need to create the file /usr/local/lib/sasl2/smtpd.conf with
   the following contents:
   pwcheck_method: saslauthd

   The next step is to tell postfix how to find the saslauthd socket:
mv /var/run/sasl2 /var/run/sasl2-old
ln -s /var/run/saslauthd /var/run/sasl2
     _________________________________________________________________

Fighting against SPAM

   This section describes how to implement a basic SPAM protection setup
   with postfix. It does not use any external software like spamassassin,
   etc.

   Postfix has some built-in filters that allow you to stop obvious SPAM
   attempts. In particular these are:

     * smtpd_helo_required = yes
       This switch in main.cf means that SMTP clients connecting to your
       mail server must give a »helo« when connecting.
     * smtpd_recipient_restrictions
       This option in main.cf lets you define different rules on the
       handling the acceptance of mail. The following example simply
       rejects all invalid sender and recipient data. Additionally it
       defines how to lookup known spammers from online blacklists.

smtpd_recipient_restrictions =
            reject_invalid_hostname,
            reject_non_fqdn_hostname,
            reject_non_fqdn_sender,
            reject_non_fqdn_recipient,
            reject_unknown_sender_domain,
            reject_unknown_recipient_domain,
            reject_unauth_pipelining,
            permit_mynetworks,
            reject_unauth_destination,
            reject_rbl_client zombie.dnsbl.sorbs.net,
            reject_rbl_client relays.ordb.org,
            reject_rbl_client opm.blitzed.org,
            reject_rbl_client list.dsbl.org,
            reject_rbl_client sbl.spamhaus.org,
            permit

     * mime_header_checks=pcre:/etc/postfix/body_checks
       MIME header checks let you reject mail which contains malicious
       MIME content, i.e dangerous attachments such as Windows
       executables. Create the file /etc/postfix/body_checks. The
       following example rejects all mail that contains potentially
       dangerous attachments. In my experience, using this example would
       filter out most of viruses delivered by e-mail. In any event, a
       virus scanner should always be installed.

        /^((Content-(Disposition: attachment;|Type:).*|\ +)| *)(file)?name\ *=\
 *"?.*\.(lnk|asd|hlp|ocx|reg|bat|c[ho]m|cmd|exe|dll|vxd|pif|scr|hta|jse?|sh[mbs
]|vb[esx]|ws[fh]|wmf)"?\ *$/      REJECT  attachment type not allowed
     _________________________________________________________________

Configuring Cyrus IMAP

Creating the config files

   You have to create /etc/imapd.conf and /etc/cyrus.conf
     _________________________________________________________________

/etc/services

   If you like to use sieve (a mail filtering language), you must change
   an entry in /etc/services. With SuSE 8.0 take especially care about
   the port for sieve, they defined the wrong port. Add or change the
   following lines:
pop3            110/tcp
imap            143/tcp
imaps           993/tcp
pop3s           995/tcp
sieve           2000/tcp
     _________________________________________________________________

/etc/imapd.conf

   Be sure »servername« contains your FQHN (Fully Qualified Hostname)

   The parameter »unixhierarchysep: yes« is only used if you like to have
   usernames like »hans.mueller.somedomain.tld« see [39]the Section
   called Configuring Web-cyradm for more info.
postmaster: postmaster
configdirectory: /var/imap
partition-default: /var/spool/imap
# admins: cyrus # no admins!
allowanonymouslogin: no
allowplaintext: yes
sasl_mech_list: PLAIN
servername: servername
autocreatequota: 10000
reject8bit: no
quotawarn: 90
timeout: 30
poptimeout: 10
dracinterval: 0
drachost: localhost
sasl_pwcheck_method: saslauthd
sievedir: /usr/sieve
sendmail: /usr/sbin/sendmail
sieve_maxscriptsize: 32
sieve_maxscripts: 5
#unixhierarchysep: yes
     _________________________________________________________________

/etc/imapd-local.conf

   Be sure »servername« contains your FQHN (Fully Qualified Hostname)

   The parameter »unixhierarchysep: yes« is only used if you like to have
   usernames like »hans.mueller.somedomain.tld« see [40]the Section
   called Configuring Web-cyradm for more info.

   This second file ensures, that admin users only can connect via
   localhost. Decide by yourself if this additional security feature is
   needed for your site.
postmaster: postmaster
configdirectory: /var/imap
partition-default: /var/spool/imap
admins: cyrus
allowanonymouslogin: no
allowplaintext: yes
sasl_mech_list: PLAIN
servername: servername
autocreatequota: 10000
reject8bit: no
quotawarn: 90
timeout: 30
poptimeout: 10
dracinterval: 0
drachost: localhost
sasl_pwcheck_method: saslauthd
sievedir: /usr/sieve
sendmail: /usr/sbin/sendmail
sieve_maxscriptsize: 32
sieve_maxscripts: 5
#unixhierarchysep: yes
     _________________________________________________________________

Creating the TLS/SSL Certificate

   If you want to enable Cyrus' TLS/SSL facilities, you have to create a
   certificate first. This requires an OpenSSL installation
openssl req -new -nodes -out req.pem -keyout key.pem
openssl rsa -in key.pem -out new.key.pem
openssl x509 -in req.pem -out ca-cert -req \
-signkey new.key.pem -days 999

mkdir /var/imap

cp new.key.pem /var/imap/server.pem
rm new.key.pem
cat ca-cert >> /var/imap/server.pem

chown cyrus:mail /var/imap/server.pem
chmod 600 /var/imap/server.pem # Your key should be protected

echo tls_ca_file: /var/imap/server.pem >> /etc/imapd.conf
echo tls_cert_file: /var/imap/server.pem >> /etc/imapd.conf
echo tls_key_file: /var/imap/server.pem >> /etc/imapd.conf
     _________________________________________________________________

/etc/cyrus.conf

   The other file you need to create is /etc/cyrus.conf It is the
   configuration file for the Cyrus master process. It defines the
   startup procedures, services and events to be spawned by process
   »master«.
# standard standalone server implementation

START {
  # do not delete this entry!
  recover       cmd="ctl_cyrusdb -r"

  # this is only necessary if using idled for IMAP IDLE
#  idled                cmd="idled"
}

# UNIX sockets start with a slash and are put into /var/imap/socket
SERVICES {
  # add or remove based on preferences
  imap          cmd="imapd" listen="192.168.0.1:imap" prefork=0
  imaplocal     cmd="imapd -C /etc/imapd-local.conf" listen="127.0.0.1:imap" pr
efork=0
  imaps         cmd="imapd -s" listen="192.168.0.1:imaps" prefork=0
  imapslocal    cmd="imapd -C /etc/imapd-local.conf" listen="127.0.0.1:imaps" p
refork=0
  pop3          cmd="pop3d" listen="pop3" prefork=0
  pop3s         cmd="pop3d -s" listen="pop3s" prefork=0
  sieve         cmd="timsieved" listen="192.168.0.1:sieve" prefork=0
  sievelocal    cmd="timsieved -C /etc/imapd-local.conf listen="127.0.0.1:sieve
" prefork=0

  # at least one LMTP is required for delivery
#  lmtp         cmd="lmtpd" listen="lmtp" prefork=0
  lmtpunix      cmd="lmtpd" listen="/var/imap/socket/lmtp" prefork=0

  # this is only necessary if using notifications
#  notify       cmd="notifyd" listen="/var/imap/socket/notify" proto="udp" pref
ork=1
}

EVENTS {
  # this is required
  checkpoint    cmd="ctl_cyrusdb -c" period=30

  # this is only necessary if using duplicate delivery suppression
  delprune      cmd="ctl_deliver -E 3" period=1440

  # this is only necessary if caching TLS sessions
  tlsprune      cmd="tls_prune" period=1440
}

     Please check your Systems IP address: In the example above the IP
     192.168.0.1 is to be replaced with your systems external IP
     address.
     _________________________________________________________________

Creating the directories

   There must be created different directories. Additionally you should
   change some attributes of the filesystem
     _________________________________________________________________

/var/imap

cd /var
mkdir imap
chown cyrus:mail imap
chmod 750 imap
     _________________________________________________________________

/var/spool/imap

cd /var/spool
mkdir imap
chown cyrus:mail imap
chmod 750 imap
     _________________________________________________________________

/usr/sieve

cd /usr
mkdir sieve
chown cyrus:mail sieve
chmod 750 sieve
     _________________________________________________________________

The rest of the directories

   The rest of the directories can be created by the tool mkimap
su - cyrus
/usr/local/cyrus-imapd-2.1.12/tools/mkimap
     _________________________________________________________________

Changing the filesystem attributes

   When using the ext2 filesystem, you must set an attribute, that
   defines, that all changes are immediately committed to the disk. With
   todays journaling filesystems there is no need. If you are still
   running ext2 filesystems, I strongly suggest to switch to ext3
   filesystems. Ext2 and ext3 are fully compatible to each other.

   To check what type of filesystem is used for /var issue the command
   mount or see your /etc/fstab. Please note that the /var could also be
   a part of the root or other filesystem.
cd /var/imap

chattr +S user quota user/* quota/*
chattr +S /var/spool/imap /var/spool/imap/*
     _________________________________________________________________

Configuring Web-cyradm

   First copy the distribution's config file, and create the logfile. The
   logfile must be owned by the user that runs the webserver. This is
   usually the user »nobody« or »wwwrun«.
cd /usr/local/apache/htdocs/web-cyradm/config

cp conf.php.dist conf.php

touch /var/log/web-cyradm-login.log
chown nobody /var/log/web-cyradm-login.log
     _________________________________________________________________

Cyrus setup

#The Cyrus login stuff
$CYRUS = array(
        'HOST'  => 'localhost',
        'PORT'  => 143,
        'ADMIN' => 'cyrus',
        'PASS'  => 'secret'
);

   This should be self-explanatory. Please note there is no support for
   SSL connections at the moment, this is especially important for users
   that would like to have web-cyradm on a different server from the
   server running cyrus-imapd ..
     _________________________________________________________________

Database setup

   Since version 0.5.2 web-cyradm uses PEAR as a database abstraction
   layer. This adds more flexibility. MySQL and PostgreSQL are currently
   supported. Please note that a patch is required for PostgreSQL because
   Postfix does not support PostgreSQL natively. I strongly suggest that
   you use MySQL. I know MySQL has some restrictions on transactions and
   stuff, but it is supported in the distributed Postfix code.

   The entries should be self explanatory
$DB = array(
        'TYPE'  => 'mysql',
        'USER'  => 'mail',
        'PASS'  => 'secret',
        'PROTO' => 'unix',      // set to "tcp" for TCP/IP
        'HOST'  => 'localhost',
        'NAME'  => 'mail'
);
     _________________________________________________________________

Default Quota

   The default quota to be used is set in the variable
   DEFAULT_QUOTA=20000 and is used when creating a new domain
     _________________________________________________________________

Crypted passwords

   Web-cyradm supports the storage of encrypted passwords. I strongly
   suggest the use of encryption. There are three methods supported at
   the moment: Unix-compatible (crypt), md5 and MySQL. The
   Unix-compatible encryption allows you to import encrypted passwords
   from an existing /etc/shadow. This is the preferred option.

   Unfortunately, MySQL uses a proprietary encryption method which is
   only available when using MySQL. I'm currently thinking about dropping
   support for MySQL crypt, because it only works with MySQL and makes a
   migration to another database impossible. As soon as there is a method
   available to re-engineer the MySQL crypt on PHP there will be a
   solution (Help needed in programming, legal constraints?)

   Check the variable $CRYPT in the file config.inc.php. Value »plain«
   means no encryption, »crypt« means Shadow compatible encryption, mysql
   means MySQL encryption.

   Choose encryption method carefully

   Since the supported encryption methods are all one-way encryptions,
   there will be NO WAY to migrate from one to another. Note also, that
   this is a global variable, it is used for all passwords, including the
   password of the admin users. I STRONGLY suggest the use of Unix Shadow
   compatible encryption, because it makes you independent of any
   software vendor.
     _________________________________________________________________

Usernames

   There are two username schemes supported which are defined in the
   variable »DOMAIN_AS_PREFIX«. The default is to have a defined prefix
   ($DOMAIN_AS_PREFIX=0), i.e. »test« for the domain »expample.com«. With
   this scheme, the first user gets the username test0001, the second
   test0002 and incrementing.

   The other one is to have usernames like »hans.mueller.example.com«. If
   that case set $DOMAIN_AS_PREFIX=1

   At the moment you can not mix both schemas, evaluate carefully with
   scheme matches your needs best

   If you choose to have $DOMAIN_AS_PREFIX=1, be sure you uncomment the
   option unixhierarchysep: yes like described in [41]the Section called
   /etc/imapd.conf
     _________________________________________________________________

Testing the setup
     _________________________________________________________________

(Re-)Starting the daemons

   Now all the software has been installed and configured. Lets do some
   testings now. First you have to (re-)start all the daemons affected

     * postfix start
     * /etc/init.d/cyrus start
     * /etc/init.d/mysql.server start
     * /usr/local/apache/bin/apachectl startssl

   Hopefully all daemons started without any complaints. Note that this
   is assuming saslauthd is started in the cyrus startup script.

   Now you can verify if the daemons are running properly by issuing
   netstat -an|grep LISTEN

   The output should look similar like that:
bond:~ # netstat -an|grep LISTEN
tcp        0      0 0.0.0.0:993             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:995             0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:110             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:143             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:2000            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN

   The port are assigned like this:

     * 993 imap-ssl
     * 995 pop3-ssl
     * 3306 mysql
     * 110 pop3
     * 143 imap
     * 2000 sieve
     * 80 http
     * 25 smtp
     * 443 https
     _________________________________________________________________

Testing Web-cyradm

   Now you should be able to connect to [42]http://localhost/web-cyradm/
   Login with the credentials defined before.

   Define a domainname and some accounts. Be sure the domainname belongs
   to your server. If not you have to fake it by enter the domain in
   /etc/hosts. The domain must also be defined as local in
   /etc/postfix/main.cf (mydestination = domain)

   Please be sure that you are providing a unique domain prefix when
   adding a new domain. I.e. test for the domain test.org. If you don't
   provide such a prefix you will get a error message.
     _________________________________________________________________

Testing postfix

   Now we are going to write a mail:
telnet localhost 25
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail ESMTP Postfix

helo localhost
250 mail
mail from: testing at example.com
250 Ok
rcpt to: tester at localhost
250 Ok

data
354 End data with <CR><LF>.<CR><LF>
some text
.
250 Ok: queued as B58E141D33

quit

   If you see such a message, then all seems to work fine. Be sure to
   specify a recipients address you previously defined in the web-cyradm
   database

   If you get an error like this:
rcpt to: tester at localhost
451 <tester  at localhost>: Temporary lookup failure

   Then either MySQL is not running, DB permission are not set properly
   or you miss-configured /etc/postfix/main.cf

   On any errors, I suggest to examine /var/log/mail. Often you will find
   some hints whats went wrong.
     _________________________________________________________________

Testing the IMAP functionality

   A lot of users like to test the cyrus-IMAPd with the Command Line
   Interface (CLI) »cyradm« and they are failing. To be successful with
   cyradm, you will need to add the cyrus user to /etc/sasldb2 because
   »cyradm« always authenticates against SASL AND IMAP.

   To add the Cyrus user to the sasldb use the command:
saslpasswd2 -c cyrus
Password: (enter your passwd)
Again (for verification): (enter your password)

   To use the »cyradm« CLI please take care that the tool does not
   recognize standard CLI-options like -u and similar. Please follow the
   syntax like described in the man page »cyradm 1« like the following
   example:
bond:~ # cyradm --user cyrus --server localhost --auth plain
Password: # This is the SASL2 password
IMAP Password: # This is the IMAP password that you need to enter in the mysql-
table »accountusers«
localhost>

   With the Cyrus command help you will see all possible commands and its
   abbreviations.

   To make that kind of tests. you just need a mailclient like kmail or
   netscape (Yes of course, M$-Products are working as well) but in this
   example I'm using kmail.

   Figure 3. Creating a new account

   [imap-account.png]

   If you enabled TLS/SSL, you may wish to test also the following:

   Figure 4. Testing TLS/SSL functionality

   [imap-tls.png]

   If login fails, and you are sure, you typed the right password, take
   care that MySQL is running.
     _________________________________________________________________

Fighting against Viruses and SPAM

   This chapter is optional and describes HOWTO fight against Viruses and
   SPAM.
     _________________________________________________________________

Brief introdcution to viruses

   I think I do not need to explain how dangerous Viruses are.
   Unfortunately in the most recent attacks from SCO.A (aka MyDoom) also
   more or less experienced users get tricked by viruses. Most of todays
   viruses and worms comes via the internet, most of them via E-Mail.
   Needless to say, that viruses should be catched by the SMTP system if
   possible.

   Not a substitute

   A mailsystem that filters viruses is NEVER a substitute for a local
   installed anti-virus software. E-Mails are only one way how viruses
   can penetrate computers.
     _________________________________________________________________

Brief introduction to SPAM

   The other harmless but unwanted and disturbing E-Mails are SPAM
   e-mails. SPAM is originally a disgusting canned meat. It is a synonym
   for UCE (Unsolicited Commercial Email) and UBE (Unsolicited Bulk
   Email).

   Studies claim, that up to 60 percent of the worldwide e-mail traffic
   is SPAM. Before I installed the anti-SPAM filters on my SMTP servers,
   I received about 150 SPAMS's a day. One reason is this document. In
   ancient time, I noticed my real e-mail address unprotected. E-mail
   harvesters are scanning websites allover the world for addresses, and
   try to deliver its commercial, often illegal offers.
     _________________________________________________________________

Strategy against viruses

   The strategy against viruses is pretty forward: Filtering viruses
   delivered via e-mail and having a localally installed anti-virus
   software.

   Almost all vendors of anti-virus software have a up-to-date version
   for Linux and Unix Systems, because most SMTP servers are running on
   Unix. In this document I'll explain HOWTO implement [43]clamav, a very
   active open source anti virus project.
     _________________________________________________________________

Strategy against SPAM

   Fighting against SPAM is much more difficult than viruses. Why? It is
   because every virus has a unique signature. SPAM can contain arbitrary
   content. Some of the SPAM is in english, other is korean, other is in
   "you-name-it-language".

   The best method how to prevent SPAM is to handle your e-mail address
   as your best treasured secret. NEVER put your address in a web-form or
   put it on your website. I know, that is against the idea of the
   internet. Information must be free. You can keep publishing your
   e-mail address if you implement the configuration further below.

   In the beginning of SPAM, filtering for keywords like »viagra« was
   enough. Todays SPAM techniques are much more sophisticated. It is a
   war between users and spammers. The solution against sophisticated
   SPAM is even more sophisticated anti-spam software.Todays anti-spam
   software checks e-mail for more than just keywords. They are checking
   for specific mail-header data etc. Also a technique called
   [44]bayesian filters which can learn from particular input,
   distributed checksum networks etc.
     _________________________________________________________________

The software needed against viruses and SPAM

   This chapter describes how to install and handle the software against
   viruses and SPAM
     _________________________________________________________________

Getting and installing ClamAV

Download

   Origin-Site:
   [45]http://prdownloads.sourceforge.net/clamav/clamav-0.68.tar.gz
     _________________________________________________________________

Building and installing

# Adding a group for the clamav user
groupadd clamav

# Adding the clamav user to your system
useradd -g clamav -c "clamav user" clamav

cd /usr/local

tar -xvzf clamav-0.68.tar.gz
cd clamav-0.68

./configure

make && make install
     _________________________________________________________________

Testing and configuring

   To test the funtionality of clamav, you can run clamscan to get some
   results from the testpatterns that are included in the clamav
   distribution run clamscan -r -i /usr/local/clamav-0.68

   The output should look like this:
/usr/local/clamav-0.68/test/test1: ClamAV-Test-Signature FOUND
/usr/local/clamav-0.68/test/test1.bz2: ClamAV-Test-Signature FOUND
/usr/local/clamav-0.68/test/test2.zip: ClamAV-Test-Signature FOUND
/usr/local/clamav-0.68/test/test2.badext: ClamAV-Test-Signature FOUND
/usr/local/clamav-0.68/contrib/clamdwatch/clamdwatch.tar.gz: Eicar-Test-Signatu
re FOUND

----------- SCAN SUMMARY -----------
Known viruses: 20482
Scanned directories: 47
Scanned files: 406
Infected files: 5
Data scanned: 5.48 MB
I/O buffer size: 131072 bytes
Time: 2.706 sec (0 m 2 s)

   Next step is to setup the automated update of the virus database. This
   is a important step, because the speed of virus spreading is fast and
   would pick up even further.

   Create the needed logfiles
touch /var/log/clam-update.log
chmod 600 /var/log/clam-update.log
chown clamav /var/log/clam-update.log

   I suggest to update the signatures with a hourly cronjob. To edit the
   crontab issue crontab -e and add the following line, and replace the
   »x« with a random value between 1 and 59. This is some kind of time
   based loadbalancing to ensure more people can fetch the updated.
  #x * * * *       /usr/local/bin/freshclam --quiet -l /var/log/clam-update.log

   To test if the update process is working, please issue the command
   /usr/local/bin/freshclam -l /var/log/clam-update.log and have a look
   at the output.

   The output should look similar to this:
ClamAV update process started at Tue Mar 23 19:58:11 2004
Reading CVD header (main.cvd): OK
Downloading main.cvd [*]
main.cvd updated (version: 21, sigs: 20094, f-level: 1, builder: tkojm)
Reading CVD header (daily.cvd): OK
Downloading daily.cvd [*]
daily.cvd updated (version: 210, sigs: 596, f-level: 1, builder: acab)
Database updated (20690 signatures) from database.clamav.net (64.74.124.90).
     _________________________________________________________________

Razor

   Razor is one of the prerequisites of spamassassin.
     _________________________________________________________________

Download

   Origin-Site:
   [46]http://prdownloads.sourceforge.net/razor/razor-agents-sdk-2.03.tar
   .gz?download

   Origin-Site:
   [47]http://prdownloads.sourceforge.net/razor/razor-agents-2.40.tar.gz?
   download
cd /usr/local

tar -xvzf razor-agents-sdk-2.03.tar.gz
cd razor-agents-sdk-2.03

perl Makefile.PL
make && make install

cd /usr/local
tar -xvzf razor-agents-2.40.tar.gz
cd razor-agents-2.40/

perl Makefile.PL
make && make install
     _________________________________________________________________

Registering and setting up

   In order to use razor2 you need to register yourself as a user

   Choose a unique username and password and issue razor-admin -register
   -user=some_user -pass=somepass
     _________________________________________________________________

Getting and installing spamassassin

   Spamassassin is the todays leading opensource project to fight against
   SPAM. To describe how spamassassin works would be too much for this
   document. For further information please consult
   [48]http://eu.spamassassin.org/doc.html
     _________________________________________________________________

Download

   Origin-Site:
   [49]http://eu.spamassassin.org/released/Mail-SpamAssassin-2.63.tar.gz
     _________________________________________________________________

Prerequisites

   Spamassassin depends on a lot of prerequisites. The easiest way is
   using the CPAN repository. Issue the command perl -MCPAN -e shell and
   answer all questions as needed.
     _________________________________________________________________

Building and installing

cd /usr/local

tar -xvzf Mail-SpamAssassin-2.63.tar.gz

cd Mail-SpamAssassin-2.63

perl Makefile.PL

# You get prompted to run Razor tests which you should answer with "y"
Run Razor v2 tests (these may fail due to network problems)? (y/n) [n] y

make && make install
     _________________________________________________________________

Getting and installing amavisd-new

   Amavisd-new is the software that glues all the software described
   above together to postfix
     _________________________________________________________________

Download

   Origin-Site:
   [50]http://www.ijs.si/software/amavisd/amavisd-new-20030616-p8.tar.gz
     _________________________________________________________________

Prerequisites

   Amavisd-new needs a lot of prerequisites.

   Run perl -MCPAN -e shell and issue:
install ExtUtils::MakeMaker
install HTML::Parser
install DB_File
install Digest::SHA1
install Archive::Tar
install Archive::Zip
install Compress::Zlib
install Convert::TNEF
install Convert::UUlib
install MIME::Base64
install MIME::Parser
install Mail::Internet
install Mail::SPF::Query
install Net::Server
install Net::SMTP
install Net::DNS
install Digest::MD5
install IO::Stringy
install Time::HiRes
install Unix::Syslog

   At the end run ./amavisd and have a look at overseen prerequisites.

   Edit /etc/amavisd.conf and change the variables $daemon_user to
   »amavis« and $daemon_group to »amavis«. Another variable to change is
   $mydomain to match your domain.

   Please also consider to change the default settings for virus and spam
   mails to avoid being notified about every intercepted mail
$final_virus_destiny      = D_DISCARD;  # (defaults to D_BOUNCE)
$final_spam_destiny       = D_DISCARD;  # (defaults to D_REJECT)

   In the beginning of SPAM filtering I recommend to set the kill-value
   to something higher until you tweaked the filters. Change the variable
   $sa_kill_level_deflt to 8 or even higher.
     _________________________________________________________________

Building and installing

cd /usr/local

tar -xvzf amavisd-new-20030616-p8.tar.gz

cd amavisd-new-20030616
cp amavisd /usr/local/sbin
cp amavisd.conf /etc
chown root /etc/amavisd.conf
chmod 644  /etc/amavisd.conf

   Now it is the the time to define a group and a user for amavisd-new
groupadd amavis
useradd -g amavis -c "Amavisd-new user" amavis

   Next you have to define a directory for the quarantined mail:
mkdir /var/virusmails
chown amavis:amavis /var/virusmails
chmod 750 /var/virusmails
mkdir /var/amavis
chown amavis:amavis /var/amavis
chmod 750 /var/amavis

   The original init script in the amavisd-new distribution does only
   work work with Redhat. Other distributions need to install my quick
   and dirty init-script:
#!/bin/bash
#
# Amavisd-new startup script

case "$1" in
    start)
        # Starting amavisd
        /usr/local/sbin/amavisd
        ;;

    stop)

        # follows later

        ;;

    *)
        echo "Usage: $0 {start|stop}"
        exit 1
        ;;

esac
     _________________________________________________________________

Setting up postfix

   Postfix needs to be configured to send each mail to amavis-new in
   order to get sanitized.

   You need to add the following line to /etc/postfix/main.cf
   content_filter = smtp-amavis:127.0.0.1:10024

   The /etc/postfix/master.cf needs also some adjustments to return the
   results from amavisd-new to the mailingsystem.

   Please add the following lines to your configuration:
smtp-amavis unix - - y - 2 smtp -o smtp_data_done_timeout=1200

127.0.0.1:10025 inet n  -       n       -       -  smtpd
    -o content_filter=
    -o local_recipient_maps=
    -o relay_recipient_maps=
    -o smtpd_restriction_classes=
    -o smtpd_client_restrictions=
    -o smtpd_helo_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o mynetworks=127.0.0.0/8
    -o strict_rfc821_envelopes=yes
    -o smtpd_error_sleep_time=0
    -o smtpd_soft_error_limit=1001
    -o smtpd_hard_error_limit=1000
     _________________________________________________________________

Further Information

   Here you will find some other resources available in the internet.
     _________________________________________________________________

News groups

   Some of the most interesting news groups are:

     * [51]alt.comp.mail.postfix
       This is low traffic group.
     * [52]comp.mail.imap

   Maybe you also check out your country newsgroups e.g ch.comp.os.linux

   Most newsgroups have their own FAQ that are designed to answer most of
   your questions, as the name Frequently Asked Questions indicate. Fresh
   versions should be posted regularly to the relevant newsgroups. If you
   cannot find it in your news spool you could go directly to the [53]FAQ
   main archive FTP site. The WWW versions can be browsed at the [54]FAQ
   main archive WWW site.
     _________________________________________________________________

Mailing Lists
     _________________________________________________________________

<[55]postfix-users at postfix.org>

   Send an mail to <[56]majordomo at postfix.org> with the content (not
   subject):
   subscribe postfix-users

   Before writing to the list, check out the archive:
   [57]http://www.deja.com/group/mailing.postfix.users
     _________________________________________________________________

<[58]info-cyrus at lists.andrew.cmu.edu>

   Send an mail to <[59]majordomo at lists.andrew.cmu.edu> with the
   content (not subject):
   subscribe info-cyrus

   Before writing to the list, check out the archive:
   [60]http://asg.web.cmu.edu/archive/index.php?mailbox=archive.info-cyru
   s 
     _________________________________________________________________

<[61]web-cyradm at web-cyradm.org>

   Subscription can be done trough the webinterface
   [62]http://www.web-cyradm.org/mailman/listinfo/web-cyradm

   Before writing to the list, check out the archive for similar
   incidents: [63]http://www.web-cyradm.org/pipermail/web-cyradm/ 
     _________________________________________________________________

HOWTO

   This are intended as the primary starting points to get the background
   information as well as show you how to solve a specific problem. Some
   relevant HOWTOs are [64]Cyrus-IMAP and [65]Apache-Compile-HOWTO. The
   main site for these is the [66]LDP archive.
     _________________________________________________________________

Ebooks

   There a few other HOWTOs and freely available documentations outside
   of the TLDP.org

   IBM recently released a new Redbook: [67]BladeCenter, Linux, and Open
   Source: Blueprint for e-business on demand.Especially chapter 6 is
   interesting when looking for email solutions.
     _________________________________________________________________

Local Resources

   Usually distributions installs some documentation to your system. As a
   standard they are located in /usr/share/doc/packages

   The SuSE rpms of Cyrus contains a lot a such documentation.

   Postfix has some html-files in the source directory
   /usr/local/postfix-2.0.16/html

   PAM comes also with lots of documentation in
   /usr/share/doc/packages/pam

   The pam_mysql module has a README with the incredible size of 1670
   bytes.
     _________________________________________________________________

Web Sites

   There are a huge number of informative web sites available. By their
   very nature they change quickly so do not be surprised if these links
   become quickly outdated.

   A good starting point is of course the [68]Linux Documentation Project
   home page, an information central for documentation, project pages and
   much more.

   To get more deepened information about Postfix, then
   [69]www.postfix.org would be the starting point.

   Please let me know if you have any other leads that can be of
   interest.
     _________________________________________________________________

Questions and Answers

   Here I answer the questions which I got from users. If you don't find
   an answer feel free to contact me

   1. [70]FAQ

        1.1. [71]Does web-cyradm only support users like »test0001« ? I'd
                like to have a more descriptive username

        1.2. [72]Messages are bouncing. Postfix/pipe complains that
                "Mailbox does not exist". Whats wrong? 

        1.3. [73]web-cyradm complains about »Fatal error: Call to
                undefined function: bindtextdomain() in
                /www/web-cyradm-0.5.3/index.php on line 46«, whats wrong?
                
        1.4. [74]I got a error from Web-cyradm like this »Fatal error:
                Call to undefined function: query() in
                /usr/local/httpd/htdocs/web-cyradm/auth.inc.php on line
                17« 

        1.5. [75]Why MySQL and not LDAP? 
        1.6. [76]Why Postfix and not Qmail? 
        1.7. [77]I got a Error: "Temporary lookup failure" 
        1.8. [78]For what platforms does this HOWTO work? 

1. FAQ

   1.1. Does web-cyradm only support users like »test0001« ? I'd like to
   have a more descriptive username

   web-cyradm does also support usernames like »user.name.example.com« if
   you configure it. Your need to change config.inc.php and change the
   value of DOMAIN_AS_PREFIX to 1. then you need to add
   »unixhierarchysep: yes« to your /etc/imapd.conf

   1.2. Messages are bouncing. Postfix/pipe complains that "Mailbox does
   not exist". Whats wrong?

   Check that the cyrus login on web-cyradm (config.inc.php) is correct.
   The username and password must exist in MySQL on table accountuser.
   Web-cyradm will not complain if the cyrus login info is incorrect.

   1.3. web-cyradm complains about »Fatal error: Call to undefined
   function: bindtextdomain() in /www/web-cyradm-0.5.3/index.php on line
   46«, whats wrong?

   Web-cyradm needs gettext enabled PHP. Please compile PHP with the
   configure-option --with-gettext.

   gettext is needed for NLS (Native Language Support) which means
   contributors can easily translate web-cyradm to there language. Fill
   in your Language in the file
   /usr/local/apache/htdocs/web-cyradm/locale/templates/web-cyradm.pot
   and send me the file, then your language will be supported in the next
   CVS snapshot

   1.4. I got a error from Web-cyradm like this »Fatal error: Call to
   undefined function: query() in
   /usr/local/httpd/htdocs/web-cyradm/auth.inc.php on line 17«

   Web-cyradm depends on PEAR for database abstraction. PEAR is included
   in recent PHP versions. Often PEAR is a separate package, check out
   the package base of your distribution. I strongly suggest to update to
   the most recent version of PHP anyway, because a lot of bugs have been
   fixed.

   Another reason could be an authentication error with MySQL. Be sure
   the user »mail« has enough rights to access the database and tables.

   1.5. Why MySQL and not LDAP?

   Good question. LDAP is role-based and it would be indeed a better
   solution for such applications. Unfortunately LDAP is very hard to set
   up. You have to make proper schemes etc. MySQL is the way strait
   ahead, it is very easy to handle and versatile. There is a PAM module
   available for LDAP, feel free to use it.

   1.6. Why Postfix and not Qmail?

   Lots of people like to see such a setup with Qmail. The reason why is,
   Mysql-support is a hack and not in the included in the main
   source-tree. This could end up in a bad situation. Think if a
   security-hole is found in qmail and the patch does not work with the
   corrected version. Postfix is supporting MySQL natively. Another
   (personal) reason is that I find Postfix more sympatic (I don't know
   why)

   1.7. I got a Error: "Temporary lookup failure"

   Postfix cannot look up the alias table. Must common failure is that
   MySQL is not running, or there is a authentication Error. Check
   /var/log/mail and /usr/local/mysql/var/<hostname>.err to track the
   error.

   1.8. For what platforms does this HOWTO work?

   It is primarily for Linux. Until now I only tested it on Linux/IA32.
   Most probably it will also work on other architectures. FreeBSD is
   reported working fine. AIX has problems with at least PHP. Please
   report if you got it running on other platform, so I can update this
   section.

References

   1. mailto:luc at delouw.ch
   2. file://localhost/home/luc/LDP-work/Postfix-Cyrus-Web-cyradm-HOWTO/singlehtml.html#INTRO
   3. file://localhost/home/luc/LDP-work/Postfix-Cyrus-Web-cyradm-HOWTO/singlehtml.html#TECH
   4. file://localhost/home/luc/LDP-work/Postfix-Cyrus-Web-cyradm-HOWTO/singlehtml.html#INSTALL
   5. file://localhost/home/luc/LDP-work/Postfix-Cyrus-Web-cyradm-HOWTO/singlehtml.html#MYSQL-CONFIG
   6. file://localhost/home/luc/LDP-work/Postfix-Cyrus-Web-cyradm-HOWTO/singlehtml.html#PAM-CONFIG
   7. file://localhost/home/luc/LDP-work/Postfix-Cyrus-Web-cyradm-HOWTO/singlehtml.html#POSTFIX-CONFIG
   8. file://localhost/home/luc/LDP-work/Postfix-Cyrus-Web-cyradm-HOWTO/singlehtml.html#CYRUS-CONFIG
   9. file://localhost/home/luc/LDP-work/Postfix-Cyrus-Web-cyradm-HOWTO/singlehtml.html#WEB-CYRADM-CONFIG
  10. file://localhost/home/luc/LDP-work/Postfix-Cyrus-Web-cyradm-HOWTO/singlehtml.html#TEST
  11. file://localhost/home/luc/LDP-work/Postfix-Cyrus-Web-cyradm-HOWTO/singlehtml.html#SPAM-AND-VIRUS-INTRO
  12. file://localhost/home/luc/LDP-work/Postfix-Cyrus-Web-cyradm-HOWTO/singlehtml.html#INSTALLING-ANTI-SPAM
  13. file://localhost/home/luc/LDP-work/Postfix-Cyrus-Web-cyradm-HOWTO/singlehtml.html#MOREINFO
  14. file://localhost/home/luc/LDP-work/Postfix-Cyrus-Web-cyradm-HOWTO/singlehtml.html#FAQ
  15. mailto:luc at delouw.ch
  16. mailto:linux-howto at metalab.unc.edu
  17. http://www.delouw.ch/linux
  18. http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/html/index.html
  19. http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/Postfix-Cyrus-Web-cyradm-HOWTO.ps
  20. http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/Postfix-Cyrus-Web-cyradm-HOWTO.pdf
  21. http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/Postfix-Cyrus-Web-cyradm-HOWTO.sgml
  22. http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/Postfix-Cyrus-Web-cyradm-HOWTO.tar.gz
  23. mailto:martynas at inet.lt
  24. mailto:m.muenz at maxonline.de
  25. mailto:rwheeler at artifact-software.com
  26. mailto: discuss at tldp.org
  27. mailto:luc at delouw.ch
  28. http://www.postfix.org/docs.html
  29. http://www.delouw.ch/linux/apache.phtml
  30. http://www.web-cyradm.org/
  31. http://www.mysql.com/downloads/
  32. http://www.sleepycat.com/update/snapshot/db-4.0.14.tar.gz
  33. http://www.openssl.org/
  34. ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-2.1.18.tar.gz
  35. ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-imapd-2.2.3.tar.gz
  36. http://www.postfix.org/ftp-sites.html
  37. http://sourceforge.net/projects/pam-mysql/
  38. http://www.web-cyradm.org/
  39. file://localhost/home/luc/LDP-work/Postfix-Cyrus-Web-cyradm-HOWTO/singlehtml.html#WEB-CYRADM-CONFIG
  40. file://localhost/home/luc/LDP-work/Postfix-Cyrus-Web-cyradm-HOWTO/singlehtml.html#WEB-CYRADM-CONFIG
  41. file://localhost/home/luc/LDP-work/Postfix-Cyrus-Web-cyradm-HOWTO/singlehtml.html#ETC-IMAPD
  42. http://localhost/web-cyradm/
  43. http://www.clamav.net/
  44. http://en.wikipedia.org/wiki/Epistemic_probability
  45. http://prdownloads.sourceforge.net/clamav/clamav-0.68.tar.gz
  46. http://prdownloads.sourceforge.net/razor/razor-agents-sdk-2.03.tar.gz?download
  47. http://prdownloads.sourceforge.net/razor/razor-agents-2.40.tar.gz?download
  48. http://eu.spamassassin.org/doc.html
  49. http://eu.spamassassin.org/released/Mail-SpamAssassin-2.63.tar.gz
  50. http://www.ijs.si/software/amavisd/amavisd-new-20030616-p8.tar.gz
  51. news:alt.comp.mail.postfix
  52. news:comp.mail.imap
  53. ftp://rtfm.mit.edu/
  54. http://www.cis.ohio-state.edu/hypertext/faq/usenet/FAQ-List.html
  55. mailto:postfix-users at postfix.org
  56. mailto:majordomo at postfix.org
  57. http://www.deja.com/group/mailing.postfix.users
  58. mailto:info-cyrus at lists.andrew.cmu.edu
  59. mailto:majordomo at lists.andrew.cmu.edu
  60. http://asg.web.cmu.edu/archive/index.php?mailbox=archive.info-cyrus
  61. mailto:web-cyradm at web-cyradm.org
  62. http://www.web-cyradm.org/mailman/listinfo/web-cyradm
  63. http://www.web-cyradm.org/pipermail/web-cyradm/
  64. http://www.tldp.org/HOWTO/Cyrus-IMAP.html
  65. http://www.tldp.org/HOWTO/Apache-Compile-HOWTO/index.html
  66. http://www.tldp.org/
  67. http://www.redbooks.ibm.com/redbooks/pdfs/sg247034.pdf
  68. http://www.tldp.org/
  69. http://www.postfix.org/
  70. file://localhost/home/luc/LDP-work/Postfix-Cyrus-Web-cyradm-HOWTO/singlehtml.html#AEN979
  71. file://localhost/home/luc/LDP-work/Postfix-Cyrus-Web-cyradm-HOWTO/singlehtml.html#AEN982
  72. file://localhost/home/luc/LDP-work/Postfix-Cyrus-Web-cyradm-HOWTO/singlehtml.html#AEN988
  73. file://localhost/home/luc/LDP-work/Postfix-Cyrus-Web-cyradm-HOWTO/singlehtml.html#AEN993
  74. file://localhost/home/luc/LDP-work/Postfix-Cyrus-Web-cyradm-HOWTO/singlehtml.html#AEN1000
  75. file://localhost/home/luc/LDP-work/Postfix-Cyrus-Web-cyradm-HOWTO/singlehtml.html#AEN1006
  76. file://localhost/home/luc/LDP-work/Postfix-Cyrus-Web-cyradm-HOWTO/singlehtml.html#AEN1011
  77. file://localhost/home/luc/LDP-work/Postfix-Cyrus-Web-cyradm-HOWTO/singlehtml.html#AEN1016
  78. file://localhost/home/luc/LDP-work/Postfix-Cyrus-Web-cyradm-HOWTO/singlehtml.html#AEN1023
t1.html
tech.html
install.html
mysql-config.html
pam-config.html
postfix-config.html
cyrus-config.html
web-cyradm-config.html
test.html
spam-and-virus-intro.html
installing-anti-spam.html
moreinfo.html
faq.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>Configuring Cyrus IMAP</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
REL="HOME"
TITLE="Postfix-Cyrus-Web-cyradm-HOWTO"
HREF="t1.html"><LINK
REL="PREVIOUS"
TITLE="Configuring Postfix"
HREF="postfix-config.html"><LINK
REL="NEXT"
TITLE="Configuring Web-cyradm"
HREF="web-cyradm-config.html"><META
http-equiv="Content-Type"
content="text/html; charset="></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Postfix-Cyrus-Web-cyradm-HOWTO</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="postfix-config.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="web-cyradm-config.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="CYRUS-CONFIG"
>Configuring Cyrus IMAP</A
></H1
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="CYRUS-CONFIGFILES"
>Creating the config files</A
></H2
><P
>You have to create <TT
CLASS="FILENAME"
>/etc/imapd.conf</TT
> and <TT
CLASS="FILENAME"
>/etc/cyrus.conf</TT
>
   </P
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="ETC-SERVICES"
><TT
CLASS="FILENAME"
>/etc/services</TT
></A
></H3
><P
>If you like to use sieve (a mail filtering language), you must change an entry
in <TT
CLASS="FILENAME"
>/etc/services</TT
>. With SuSE 8.0 take especially care about the port for sieve, 
they defined the wrong port. Add or change the following lines:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>pop3		110/tcp
imap		143/tcp
imaps           993/tcp
pop3s           995/tcp 
sieve           2000/tcp</PRE
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="ETC-IMAPD"
><TT
CLASS="FILENAME"
>/etc/imapd.conf</TT
></A
></H3
><P
>Be sure »servername« contains your FQHN (Fully Qualified Hostname)</P
><P
>The parameter »unixhierarchysep: yes« is only used if you like to have usernames 
like »hans.mueller.somedomain.tld« see <A
HREF="web-cyradm-config.html"
>the Section called <I
>Configuring Web-cyradm</I
></A
> for more info.</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>postmaster: postmaster
configdirectory: /var/imap
partition-default: /var/spool/imap
# admins: cyrus # no admins!
allowanonymouslogin: no
allowplaintext: yes
sasl_mech_list: PLAIN
servername: servername
autocreatequota: 10000
reject8bit: no
quotawarn: 90
timeout: 30
poptimeout: 10
dracinterval: 0
drachost: localhost
sasl_pwcheck_method: saslauthd
sievedir: /usr/sieve
sendmail: /usr/sbin/sendmail
sieve_maxscriptsize: 32
sieve_maxscripts: 5
#unixhierarchysep: yes</PRE
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="ETC-IMAPD-LOCAL"
><TT
CLASS="FILENAME"
>/etc/imapd-local.conf</TT
></A
></H3
><P
>Be sure »servername« contains your FQHN (Fully Qualified Hostname)</P
><P
>The parameter »unixhierarchysep: yes« is only used if you like to have usernames 
like »hans.mueller.somedomain.tld« see <A
HREF="web-cyradm-config.html"
>the Section called <I
>Configuring Web-cyradm</I
></A
> for more info.</P
><P
>This second file ensures, that admin users only can connect via localhost. Decide by yourself if this additional security feature is needed for your site.</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>postmaster: postmaster
configdirectory: /var/imap
partition-default: /var/spool/imap
admins: cyrus 
allowanonymouslogin: no
allowplaintext: yes
sasl_mech_list: PLAIN
servername: servername
autocreatequota: 10000
reject8bit: no
quotawarn: 90
timeout: 30
poptimeout: 10
dracinterval: 0
drachost: localhost
sasl_pwcheck_method: saslauthd
sievedir: /usr/sieve
sendmail: /usr/sbin/sendmail
sieve_maxscriptsize: 32
sieve_maxscripts: 5
#unixhierarchysep: yes</PRE
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="TLS"
>Creating the TLS/SSL Certificate</A
></H3
><P
>If you want to enable Cyrus' TLS/SSL facilities, you have to create a certificate first. This requires an 
OpenSSL installation</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>openssl req -new -nodes -out req.pem -keyout key.pem  
openssl rsa -in key.pem -out new.key.pem
openssl x509 -in req.pem -out ca-cert -req \
-signkey new.key.pem -days 999 

mkdir /var/imap

cp new.key.pem /var/imap/server.pem
rm new.key.pem
cat ca-cert &#62;&#62; /var/imap/server.pem

chown cyrus:mail /var/imap/server.pem
chmod 600 /var/imap/server.pem # Your key should be protected

echo tls_ca_file: /var/imap/server.pem &gt;&gt; /etc/imapd.conf
echo tls_cert_file: /var/imap/server.pem &gt;&gt; /etc/imapd.conf
echo tls_key_file: /var/imap/server.pem &gt;&gt; /etc/imapd.conf&#13;</PRE
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="ETC-CYRUS-CONF"
><TT
CLASS="FILENAME"
>/etc/cyrus.conf</TT
></A
></H3
><P
>The other file you need to create is <TT
CLASS="FILENAME"
>/etc/cyrus.conf</TT
>
It is the configuration file for the Cyrus master process.  It defines the startup procedures, services
and events to be spawned by  process »master«.</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
># standard standalone server implementation

START {
  # do not delete this entry!
  recover       cmd="ctl_cyrusdb -r"

  # this is only necessary if using idled for IMAP IDLE
#  idled                cmd="idled"
}

# UNIX sockets start with a slash and are put into /var/imap/socket
SERVICES {
  # add or remove based on preferences
  imap          cmd="imapd" listen="192.168.0.1:imap" prefork=0
  imaplocal     cmd="imapd -C /etc/imapd-local.conf" listen="127.0.0.1:imap" prefork=0
  imaps         cmd="imapd -s" listen="192.168.0.1:imaps" prefork=0
  imapslocal    cmd="imapd -C /etc/imapd-local.conf" listen="127.0.0.1:imaps" prefork=0
  pop3          cmd="pop3d" listen="pop3" prefork=0
  pop3s         cmd="pop3d -s" listen="pop3s" prefork=0
  sieve         cmd="timsieved" listen="192.168.0.1:sieve" prefork=0
  sievelocal    cmd="timsieved -C /etc/imapd-local.conf listen="127.0.0.1:sieve" prefork=0

  # at least one LMTP is required for delivery
#  lmtp         cmd="lmtpd" listen="lmtp" prefork=0
  lmtpunix      cmd="lmtpd" listen="/var/imap/socket/lmtp" prefork=0

  # this is only necessary if using notifications
#  notify       cmd="notifyd" listen="/var/imap/socket/notify" proto="udp" prefork=1
}

EVENTS {
  # this is required
  checkpoint    cmd="ctl_cyrusdb -c" period=30

  # this is only necessary if using duplicate delivery suppression
  delprune      cmd="ctl_deliver -E 3" period=1440

  # this is only necessary if caching TLS sessions
  tlsprune      cmd="tls_prune" period=1440
}</PRE
></TD
></TR
></TABLE
><DIV
CLASS="TIP"
><BLOCKQUOTE
CLASS="TIP"
><P
><B
>Please check your Systems IP address: </B
>In the example above the IP 192.168.0.1 is to be replaced with your systems external IP address.</P
></BLOCKQUOTE
></DIV
></DIV
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="CYRUS-DIRECTORIES"
>Creating the directories</A
></H2
><P
>There must be created different directories. Additionally you should 
change some attributes of the filesystem</P
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="VAR-IMAP"
><TT
CLASS="FILENAME"
>/var/imap</TT
></A
></H3
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>cd /var
mkdir imap
chown cyrus:mail imap
chmod 750 imap</PRE
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="VAR-SPOOL-IMAP"
><TT
CLASS="FILENAME"
>/var/spool/imap</TT
></A
></H3
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>cd /var/spool
mkdir imap
chown cyrus:mail imap
chmod 750 imap</PRE
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="USR-SIEVE"
><TT
CLASS="FILENAME"
>/usr/sieve</TT
></A
></H3
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>cd /usr
mkdir sieve
chown cyrus:mail sieve
chmod 750 sieve</PRE
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="OTHER-DIRS"
>The rest of the directories</A
></H3
><P
>The rest of the directories can be created by the tool <B
CLASS="COMMAND"
>mkimap</B
></P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>su - cyrus
/usr/local/cyrus-imapd-2.1.12/tools/mkimap</PRE
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="CH-ATTRIB"
>Changing the filesystem attributes</A
></H2
><P
>When using the ext2 filesystem, you must set an attribute, that defines, that all changes 
are immediately committed to the disk. With todays journaling filesystems there is no need. 
If you are still running ext2 filesystems, I strongly suggest to switch to ext3 filesystems. 
Ext2 and ext3 are fully compatible to each other.</P
><P
>To check what type of filesystem is used for <TT
CLASS="FILENAME"
>/var</TT
> issue the
command <B
CLASS="COMMAND"
>mount</B
> or see your <TT
CLASS="FILENAME"
>/etc/fstab</TT
>. Please note
that the <TT
CLASS="FILENAME"
>/var</TT
> could also be a part of the root or other filesystem.</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>cd /var/imap

chattr +S user quota user/* quota/*
chattr +S /var/spool/imap /var/spool/imap/*</PRE
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="postfix-config.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="t1.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="web-cyradm-config.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Configuring Postfix</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Configuring Web-cyradm</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>
.NAVHEADER { display: none }
.NAVFOOTER { display: none }
.TOC       { display: none }

.NAVTOC    { margin-left: 15;
             display: none }

.NAVBTN    { font-size: 10pt }

.TOCTITLE  { font-size: 10pt;
             color: blue;
 	     text-decoration: underline; }
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>Questions and Answers</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
REL="HOME"
TITLE="Postfix-Cyrus-Web-cyradm-HOWTO"
HREF="t1.html"><LINK
REL="PREVIOUS"
TITLE="Further Information"
HREF="moreinfo.html"><META
http-equiv="Content-Type"
content="text/html; charset="></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Postfix-Cyrus-Web-cyradm-HOWTO</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="moreinfo.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
>&nbsp;</TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="FAQ"
>Questions and Answers</A
></H1
><P
>	Here I answer the questions which I got from users. If you don't find an answer feel free to contact me</P
><DIV
CLASS="QANDASET"
><DL
><DT
>1. <A
HREF="faq.html#AEN979"
>FAQ</A
></DT
><DD
><DL
><DT
>1.1. <A
HREF="faq.html#AEN982"
>Does web-cyradm only support users like »test0001« ? I'd like to have a more descriptive username</A
></DT
><DT
>1.2. <A
HREF="faq.html#AEN988"
>	Messages are bouncing. Postfix/pipe complains that "Mailbox does not exist". Whats wrong?
	</A
></DT
><DT
>1.3. <A
HREF="faq.html#AEN993"
>	web-cyradm complains about »Fatal error: Call to undefined function: bindtextdomain()
 	in /www/web-cyradm-0.5.3/index.php on line 46«, whats wrong?
     </A
></DT
><DT
>1.4. <A
HREF="faq.html#AEN1000"
>	I got a error from Web-cyradm like this »Fatal error: Call to undefined function: query() in
	/usr/local/httpd/htdocs/web-cyradm/auth.inc.php on line 17«
	</A
></DT
><DT
>1.5. <A
HREF="faq.html#AEN1006"
>      Why MySQL and not LDAP?
     </A
></DT
><DT
>1.6. <A
HREF="faq.html#AEN1011"
>      Why Postfix and not Qmail?
     </A
></DT
><DT
>1.7. <A
HREF="faq.html#AEN1016"
>      I got a Error: "Temporary lookup failure"
     </A
></DT
><DT
>1.8. <A
HREF="faq.html#AEN1023"
>      For what platforms does this HOWTO work?
     </A
></DT
></DL
></DD
></DL
><DIV
CLASS="QANDADIV"
><H3
><A
NAME="AEN979"
></A
>1. FAQ</H3
><DIV
CLASS="QANDAENTRY"
><DIV
CLASS="QUESTION"
><P
><A
NAME="AEN982"
></A
><B
>1.1. </B
>Does web-cyradm only support users like »test0001« ? I'd like to have a more descriptive username</P
></DIV
><DIV
CLASS="ANSWER"
><P
><B
> </B
>	web-cyradm does also support usernames like »user.name.example.com« if you configure it.
	Your need to change config.inc.php and change the value of DOMAIN_AS_PREFIX to 1. then you need to add
	»unixhierarchysep: yes« to your <TT
CLASS="FILENAME"
>/etc/imapd.conf</TT
>
	</P
></DIV
></DIV
><DIV
CLASS="QANDAENTRY"
><DIV
CLASS="QUESTION"
><P
><A
NAME="AEN988"
></A
><B
>1.2. </B
>	Messages are bouncing. Postfix/pipe complains that "Mailbox does not exist". Whats wrong?
	</P
></DIV
><DIV
CLASS="ANSWER"
><P
><B
> </B
>	Check that the cyrus login on web-cyradm (config.inc.php) is correct.
	The username and password must exist in MySQL on table accountuser. 
	Web-cyradm will not complain if the cyrus login info is incorrect.
	</P
></DIV
></DIV
><DIV
CLASS="QANDAENTRY"
><DIV
CLASS="QUESTION"
><P
><A
NAME="AEN993"
></A
><B
>1.3. </B
>	web-cyradm complains about »Fatal error: Call to undefined function: bindtextdomain()
 	in /www/web-cyradm-0.5.3/index.php on line 46«, whats wrong?
     </P
></DIV
><DIV
CLASS="ANSWER"
><P
><B
> </B
>	Web-cyradm needs gettext enabled PHP. Please compile PHP with the configure-option --with-gettext.
	</P
><P
>	
	gettext is needed for NLS (Native Language Support) which means
	contributors can easily translate web-cyradm to there language. Fill in your Language in the file
	<TT
CLASS="FILENAME"
>/usr/local/apache/htdocs/web-cyradm/locale/templates/web-cyradm.pot</TT
> and send me
	the file, then your language will be supported in the next CVS snapshot</P
></DIV
></DIV
><DIV
CLASS="QANDAENTRY"
><DIV
CLASS="QUESTION"
><P
><A
NAME="AEN1000"
></A
><B
>1.4. </B
>	I got a error from Web-cyradm like this »Fatal error: Call to undefined function: query() in
	/usr/local/httpd/htdocs/web-cyradm/auth.inc.php on line 17«
	</P
></DIV
><DIV
CLASS="ANSWER"
><P
><B
> </B
>	Web-cyradm depends on PEAR for database abstraction. PEAR is included in recent PHP versions. Often
	PEAR is a separate package, check out the package base of your distribution. I strongly suggest to update
	to the most recent version of PHP anyway, because a lot of bugs have been fixed.</P
><P
>Another reason could be an authentication error with MySQL. Be sure the user »mail« has enough
	rights to access the database and tables.</P
></DIV
></DIV
><DIV
CLASS="QANDAENTRY"
><DIV
CLASS="QUESTION"
><P
><A
NAME="AEN1006"
></A
><B
>1.5. </B
>      Why MySQL and not LDAP?
     </P
></DIV
><DIV
CLASS="ANSWER"
><P
><B
> </B
>      Good question. LDAP is role-based and it would be indeed a better solution for such applications. 
      Unfortunately LDAP is very hard to set up. You have to make proper schemes etc. MySQL is the 
      way strait ahead, it is very easy to handle and versatile. There is a PAM module available 
      for LDAP, feel free to use it.
     </P
></DIV
></DIV
><DIV
CLASS="QANDAENTRY"
><DIV
CLASS="QUESTION"
><P
><A
NAME="AEN1011"
></A
><B
>1.6. </B
>      Why Postfix and not Qmail?
     </P
></DIV
><DIV
CLASS="ANSWER"
><P
><B
> </B
>      Lots of people like to see such a setup with Qmail. The reason why is, Mysql-support is a hack and not in the
      included in the main source-tree. This could end up in a bad situation. Think if a security-hole is found in qmail
      and the patch does not work with the corrected version. Postfix is supporting MySQL natively. 
      Another (personal) reason is that I find Postfix more sympatic (I don't know why)
     </P
></DIV
></DIV
><DIV
CLASS="QANDAENTRY"
><DIV
CLASS="QUESTION"
><P
><A
NAME="AEN1016"
></A
><B
>1.7. </B
>      I got a Error: "Temporary lookup failure"
     </P
></DIV
><DIV
CLASS="ANSWER"
><P
><B
> </B
>      Postfix cannot look up the alias table. Must common failure is that MySQL is not running, 
      or there is a authentication Error. Check <TT
CLASS="FILENAME"
>/var/log/mail</TT
> and 
      <TT
CLASS="FILENAME"
>/usr/local/mysql/var/&lt;hostname&gt;.err</TT
> to track the error.
     </P
></DIV
></DIV
><DIV
CLASS="QANDAENTRY"
><DIV
CLASS="QUESTION"
><P
><A
NAME="AEN1023"
></A
><B
>1.8. </B
>      For what platforms does this HOWTO work?
     </P
></DIV
><DIV
CLASS="ANSWER"
><P
><B
> </B
>      It is primarily for Linux. Until now I only tested it on Linux/IA32. Most probably it will also work on other 
      architectures.
      FreeBSD is reported working fine. AIX has problems with at least PHP. Please report if you got it running 
      on other platform, so I can update this section.
     </P
></DIV
></DIV
></DIV
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="moreinfo.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="t1.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>&nbsp;</TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Further Information</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>&nbsp;</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>Postfix-Cyrus-Web-cyradm-HOWTO</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
REL="NEXT"
TITLE="Technologies"
HREF="tech.html"><META
http-equiv="Content-Type"
content="text/html; charset="></HEAD
><BODY
CLASS="ARTICLE"
><DIV
CLASS="ARTICLE"
><DIV
CLASS="TITLEPAGE"
><H1
CLASS="TITLE"
><A
NAME="AEN2"
>Postfix-Cyrus-Web-cyradm-HOWTO</A
></H1
><H3
CLASS="AUTHOR"
><A
NAME="AEN4"
>Luc de Louw</A
></H3
><DIV
CLASS="AFFILIATION"
><DIV
CLASS="ADDRESS"
><P
CLASS="ADDRESS"
>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:luc at delouw.ch"
>luc at delouw.ch</A
>&#62;</CODE
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P
></DIV
></DIV
><DIV
CLASS="REVHISTORY"
><TABLE
WIDTH="100%"
BORDER="0"
><TR
><TH
ALIGN="LEFT"
VALIGN="TOP"
COLSPAN="3"
><B
>Revision History</B
></TH
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.2.6</TD
><TD
ALIGN="LEFT"
>2004-03-30</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Added minor additions and corrected to amavisd-new, corrected cronjob-time for freshclam</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.2.5</TD
><TD
ALIGN="LEFT"
>2004-03-28</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Added Anti-Virus and SPAM methods (amavisd-new, spamassassin, clamav), updated cyrus-imapd section with update instructions, added instruction to restrict imapd admin access.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.2.4</TD
><TD
ALIGN="LEFT"
>2003-11-30</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Input from English proofreading, minor correction and enhancements from user-input, updated software mentioned in the HOWTO</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.2.3</TD
><TD
ALIGN="LEFT"
>2003-03-24</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Some minor correction and enhancements from user-input, updated software mentioned in the HOWTO</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.2.2</TD
><TD
ALIGN="LEFT"
>2003-02-14</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Lots of grammar and typos fixed. Some corrections to the pam_mysql Makefile</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.2.1</TD
><TD
ALIGN="LEFT"
>2003-02-12</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Non-official test-release: Added lots of fixes and updates. Added OpenSSL and more pam related stuff.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.2.0</TD
><TD
ALIGN="LEFT"
>2002-10-16</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Added lot of user requests, updated the software mentioned in the HOWTO</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.1.7</TD
><TD
ALIGN="LEFT"
>2002-10-15</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Added Michael Muenz' hints for SMTP AUTH, corrected ca-cert related mistake, improved SGML code (more metadata), updated the software mentioned in the document.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.1.6</TD
><TD
ALIGN="LEFT"
>2002-06-14</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Added sasl_mech_list: PLAIN to imapd.conf, added web-cyradm mailinglist, added more
		to web-cyradm</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.1.5</TD
><TD
ALIGN="LEFT"
>2002-06-11</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Added new SQL query to initialize web-cyradm
		to have full data integrity in the MySQL Database, mysql-mydestination.cf reported to be operational as
		expected.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.1.4</TD
><TD
ALIGN="LEFT"
>2002-05-15</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Added description what is needed in /etc/services
		Another fix for pam_mysql compile, updated software versions.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.1.3</TD
><TD
ALIGN="LEFT"
>2002-05-08</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Added more description for web-cyradm, fix for wrong path of the saslauthdb-socket, Fix for
		wrong place of com_err.h, protection of the TLS/SSL private key.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.1.2</TD
><TD
ALIGN="LEFT"
>2002-04-29</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Added description for Redhat users how to install the init scripts.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.1.1</TD
><TD
ALIGN="LEFT"
>2002-04-29</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Fixed bug in configuring cyrus-IMAP (disabled unused kerberos authentication)</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.1.0</TD
><TD
ALIGN="LEFT"
>2002-04-28</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Initial support for building cyrus from source, dropped binary installation
		for Cyrus, because configuration has changed with Release 2.1.x</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.0.2</TD
><TD
ALIGN="LEFT"
>2002-04-25</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Added basic description for sieve and correct sender handling, minor fixes to db related 
		stuff, Added mysql-lookup for »mydestination« , fixed bug for building postfix 
		with mysql support.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.0.1</TD
><TD
ALIGN="LEFT"
>2002-04-07</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Added an important fix for compiling pam_mysql</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.0.0</TD
><TD
ALIGN="LEFT"
>2002-04-07</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Initial Release</TD
></TR
></TABLE
></DIV
><DIV
><DIV
CLASS="ABSTRACT"
><P
></P
><A
NAME="AEN101"
></A
><P
>	This document guides you through the installation of the Postfix mail transportation agent (MTA), 
	the Cyrus IMAP server. The goal is a fully functional high-performance 
	mailsystem with user-administration with Web-cyradm, a webinterface. Data like virtualusers, 
	aliases etc. are stored in a mysql database.
    </P
><P
></P
></DIV
></DIV
><HR></DIV
><DIV
CLASS="TOC"
><DL
><DT
><B
>Table of Contents</B
></DT
><DT
><A
HREF="t1.html#INTRO"
>Introduction</A
></DT
><DT
><A
HREF="tech.html"
>Technologies</A
></DT
><DT
><A
HREF="install.html"
>Getting and installing the software</A
></DT
><DT
><A
HREF="mysql-config.html"
>Configuring MySQL</A
></DT
><DT
><A
HREF="pam-config.html"
>Configuring PAM</A
></DT
><DT
><A
HREF="postfix-config.html"
>Configuring Postfix</A
></DT
><DT
><A
HREF="cyrus-config.html"
>Configuring Cyrus IMAP</A
></DT
><DT
><A
HREF="web-cyradm-config.html"
>Configuring Web-cyradm</A
></DT
><DT
><A
HREF="test.html"
>Testing the setup</A
></DT
><DT
><A
HREF="spam-and-virus-intro.html"
>Fighting against Viruses and SPAM</A
></DT
><DT
><A
HREF="installing-anti-spam.html"
>The software needed against viruses and SPAM</A
></DT
><DT
><A
HREF="moreinfo.html"
>Further Information</A
></DT
><DT
><A
HREF="faq.html"
>Questions and Answers</A
></DT
></DL
></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="INTRO"
>Introduction</A
></H1
><P
>   The cyrus part is only valid for Cyrus-IMAP 2.1.x and Cyrus-SASL 2.1.x. If you plan to use Cyrus-IMAP 2.0.x
   then please consult the deprecated version 1.0.x of this HOWTO.</P
><P
>  I strongly recommend that you upgrade to Cyrus Version 2.1.x. If you do so, you will have a better ability to get
  valuable support from the user community</P
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN111"
>Contributors and Contacts</A
></H2
><P
>First I would thank all those people who sent questions and suggestions that made the
	further development of this document possible. It shows me that sharing knowledge is the right way.
	I would encourage you to send me more suggestion, just write me an email <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:luc at delouw.ch"
>luc at delouw.ch</A
>&#62;</CODE
>
	</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN115"
>Why I wrote this document</A
></H2
><P
>There are different approaches on how to set up different mailsystems. Most documents that are available are
	related to Sendmail, procmail, WU-IMAPd and friends. These packages are very good but are unfortunately very
	inflexible in their user administration.
	</P
><P
>For a long time I was testing alternative MTA's like qmail, postfix and exim, in conjunction with IMAP/POP-servers like 
	Cyrus, vpopmail, Courier IMAP and others.</P
><P
>At the end of the day, from my point of view the couple Postfix/Cyrus seems to be the
	most flexible and best performing solution.</P
><P
>All these combinations of software had one thing in common: their was very little documentation available
	describing how these packages work  together with each other.
	To install the software, lot of effort has be spent to get all information needed to get all the 
	software running.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="COPYRIGHT"
>Copyright Information</A
></H2
><P
>    This document is copyrighted (c) 2002, 2003, 2004 Luc de Louw and is
    distributed under the terms of the Linux Documentation Project
    (LDP) license, stated below. 
   </P
><P
>    Unless otherwise stated, Linux HOWTO documents are
    copyrighted by their respective authors. Linux HOWTO documents may
    be reproduced and distributed in whole or in part, in any medium
    physical or electronic, as long as this copyright notice is
    retained on all copies. Commercial redistribution is allowed and
    encouraged; however, the author would like to be notified of any
    such distributions.
   </P
><P
>    All translations, derivative works, or aggregate works
    incorporating any Linux HOWTO documents must be covered under this
    copyright notice. That is, you may not produce a derivative work
    from a HOWTO and impose additional restrictions on its
    distribution. Exceptions to these rules may be granted under
    certain conditions; please contact the Linux HOWTO coordinator at
    the address given below.
   </P
><P
>    In short, we wish to promote dissemination of this
    information through as many channels as possible. However, we do
    wish to retain copyright on the HOWTO documents, and would like to
    be notified of any plans to redistribute the HOWTOs.
   </P
><P
>    If you have any questions, please contact 
    <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:linux-howto at metalab.unc.edu"
>linux-howto at metalab.unc.edu</A
>&#62;</CODE
>
   </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="DISCLAIMER"
>Disclaimer</A
></H2
><P
>    No liability for the contents of this documents can be accepted.
    Use the concepts, examples and other content at your own risk.
    As this is a new edition of this document, there may be errors
    and inaccuracies, that may of course be damaging to your system.
    Proceed with caution, and although this is highly unlikely,
    the author(s) do not take any responsibility for that.
   </P
><P
>    All copyrights are held by their by their respective owners, unless
    specifically noted otherwise.  Use of a term in this document
    should not be regarded as affecting the validity of any trademark
    or service mark.
   </P
><P
>    Naming of particular products or brands should not be seen 
    as endorsements.
   </P
><P
>    You are strongly recommended to take a backup of your system 
    before major installation and backups at regular intervals.
   </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="NEWVERSIONS"
>New Versions</A
></H2
><P
>New version of this document are announced on freshmeat</P
><P
>    The latest version of this document can be obtained from
    <A
HREF="http://www.delouw.ch/linux"
TARGET="_top"
>http://www.delouw.ch/linux</A
> 
   </P
><P
>   <P
></P
><UL
><LI
><P
>      <A
HREF="http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/html/index.html"
TARGET="_top"
>HTML</A
>.
     </P
></LI
><LI
><P
>      <A
HREF="http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/Postfix-Cyrus-Web-cyradm-HOWTO.ps"
TARGET="_top"
>	Postscript (ISO A4 format)</A
>.
     </P
></LI
><LI
><P
>       <A
HREF="http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/Postfix-Cyrus-Web-cyradm-HOWTO.pdf"
TARGET="_top"
>Acrobat PDF</A
>.
     </P
></LI
><LI
><P
>       <A
HREF="http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/Postfix-Cyrus-Web-cyradm-HOWTO.sgml"
TARGET="_top"
>SGML Source</A
>.
     </P
></LI
><LI
><P
>      <A
HREF="http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/Postfix-Cyrus-Web-cyradm-HOWTO.tar.gz"
TARGET="_top"
>HTML gzipped tarball</A
>.
     </P
></LI
></UL
>
   </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="CREDITS"
>Credits</A
></H2
><P
></P
><UL
><LI
><P
>	Martynas Bieliauskas <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:martynas at inet.lt"
>martynas at inet.lt</A
>&#62;</CODE
> submitted a good idea how to restrict the cyrus admin to localhost only.
	</P
></LI
><LI
><P
>	Michael Muenz <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:m.muenz at maxonline.de"
>m.muenz at maxonline.de</A
>&#62;</CODE
> for his help with SMTP Authentication
	</P
></LI
><LI
><P
>	Ron Wheeler <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:rwheeler at artifact-software.com"
>rwheeler at artifact-software.com</A
>&#62;</CODE
> for his help with editing for readability
	</P
></LI
><LI
><P
>    The nice people at <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto: discuss at tldp.org"
> discuss at tldp.org</A
>&#62;</CODE
> for
    supporting me in writing the HOWTOs.
   </P
></LI
></UL
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="FEEDBACK"
>Feedback</A
></H2
><P
>    Feedback is most certainly welcome for this document. Without
    your submissions and input, this document wouldn't exist. Please
    send your additions, comments and criticisms to the following
    email address : <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:luc at delouw.ch"
>luc at delouw.ch</A
>&#62;</CODE
>.
   </P
><P
>   Please understand, that I don't want to add Cyrus-IMAP 2.0.x related stuff in this document anymore.
   </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="TRANSLATIONS"
>Translations</A
></H2
><P
>     	At the moment no translations are available. A German translation is planned and would be
     	written by me as soon as I get the time. 
   </P
><P
>	Translations to other languages are always welcome. If you translate this document, please translate the
	SGML source. Please let me know if you begin to translate, so I can set a link here.
   </P
></DIV
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="tech.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Technologies</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>Getting and installing the software</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
REL="HOME"
TITLE="Postfix-Cyrus-Web-cyradm-HOWTO"
HREF="t1.html"><LINK
REL="PREVIOUS"
TITLE="Technologies"
HREF="tech.html"><LINK
REL="NEXT"
TITLE="Configuring MySQL"
HREF="mysql-config.html"><META
http-equiv="Content-Type"
content="text/html; charset="></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Postfix-Cyrus-Web-cyradm-HOWTO</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="tech.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="mysql-config.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="INSTALL"
>Getting and installing the software</A
></H1
><P
>	Most of the software is included in your Linux distribution. I. e. SuSE is shipping Cyrus as 
	far as I know since 7.1.
	Since SuSE 8.1, cyrus-imap 2.1 and sasl2 is included, and works. It is still recommended to compile
	Cyrus by yourself. SuSE does not ship a MySQL enabled Postfix.
	</P
><DIV
CLASS="TIP"
><BLOCKQUOTE
CLASS="TIP"
><P
><B
>Deprecated packages for Debian stable and testing: </B
>Debian users probably want to install packages provided by Debian. Unfortunately Debian stable (Woody) and testing (sarge) are using the deprecated version of the software used in this HOWTO. I tested the respective packages from Debian unstable (sid) and the are working. Please note, that the maintainers at Debian are very conservative. The software packages »postfix-mysql«, »libsasl2« and »cyrus21-imapd« are stable, even if they are only available in the »unstable« tree.</P
></BLOCKQUOTE
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="MYSQL-INSTALL"
>Getting and installing MySQL</A
></H2
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN267"
>Download</A
></H3
><P
>		Origin-Site: <A
HREF="http://www.mysql.com/downloads/"
TARGET="_top"
>http://www.mysql.com/downloads/</A
>
		</P
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN271"
>Building and installing</A
></H3
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>cd /usr/local
tar -xvzf mysql-4.0.18.tar.gz
cd mysql-4.0.18

./configure \
--prefix=/usr/local/mysql \
--enable-assembler \
--with-innodb \
--without-debug

make
make install

/usr/local/mysql/bin/mysql_install_db
echo /usr/local/mysql/lib/mysql &#62;&#62; /etc/ld.so.conf
ldconfig

ln -s /usr/local/mysql/include/mysql /usr/include/mysql
ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql</PRE
></TD
></TR
></TABLE
><P
>To improve security, add a mysql-user on your system i.e. »mysql«, then</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>chown -R mysql /usr/local/mysql/var</PRE
></TD
></TR
></TABLE
><P
>	If you want to start MySQL automatically at boottime, copy 
	<TT
CLASS="FILENAME"
>/usr/local/mysql/share/mysql/mysql.server</TT
> to <TT
CLASS="FILENAME"
>/etc/init.d/</TT
>
	 for SuSE, for Redhat it is <TT
CLASS="FILENAME"
>/etc/rc.d/init.d</TT
> instead of <TT
CLASS="FILENAME"
>/etc/init.d/</TT
>. 
	Further you need to add symbolic links to <TT
CLASS="FILENAME"
>/etc/init.d/rc3.d</TT
> 
	for SuSE and <TT
CLASS="FILENAME"
>/etc/rc.d/rc3.d</TT
> for Redhat.
	</P
><P
>	The following example is for SuSE Linux and should be easily changed for Redhat and other Linux 
	distributions and commercial Unix systems.
	</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/
ln -s /etc/init.d/mysql.server /etc/init.d/rc3.d/S20mysql
ln -s /etc/init.d/mysql.server /etc/init.d/rc3.d/k08mysql</PRE
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="BERKELEY-DB"
>Getting and installing Berkeley DB</A
></H2
><P
>	The Berkeley DB is a requirement for building Cyrus-SASL and Cyrus-IMAP. Some Systems comes with 
	recent versions but without the header files installed. Please see your distributors CD/DVD 
	to see if you can install the header files from a package. Usually this package is called bdb-devel.
	</P
><P
>The version that comes with GNU/Debian Linux is out of date, you will need to compile the most 
	recent version instead. If you already installed Berkeley DB on your Debian Box, please 
	uninstall it to prevent conflicts.
	</P
><P
>It is also very important, that Cyrus-SASL and Cyrus-IMAP is compiled with the same version of 
	Berkeley DB or else you can run into problems.</P
><DIV
CLASS="TIP"
><BLOCKQUOTE
CLASS="TIP"
><P
><B
>Berkeley DB versions: </B
>I only tested version 4.0.x versions of bdb. Please let me know if you are successful with newer versions.</P
></BLOCKQUOTE
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN293"
>Download Berkeley DB</A
></H3
><P
>	Origin-Site: <A
HREF="http://www.sleepycat.com/update/snapshot/db-4.0.14.tar.gz"
TARGET="_top"
>	http://www.sleepycat.com/update/snapshot/db-4.0.14.tar.gz</A
>
	</P
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN297"
>Building and installing Berkeley DB</A
></H3
><P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>cd dist

./configure --prefix=/usr/local/bdb

make
make install

echo /usr/local/bdb/lib &#62;&#62; /etc/ld.so.conf
ldconfig</PRE
></TD
></TR
></TABLE
>&#13;</P
></DIV
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN301"
>Getting and installing OpenSSL</A
></H2
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN303"
>Download OpenSSL</A
></H3
><P
>Origin-Site
<A
HREF="http://www.openssl.org"
TARGET="_top"
>http://www.openssl.org</A
></P
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN307"
>Building and installing</A
></H3
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>cd /usr/local
tar -xvzf openssl-0.9.7d.tar.gz

cd openssl-0.9.7d

./config shared

make
make test
make install

echo "/usr/local/ssl/lib" &#62;&#62; /etc/ld.so.conf
ldconfig</PRE
></TD
></TR
></TABLE
><DIV
CLASS="TIP"
><BLOCKQUOTE
CLASS="TIP"
><P
><B
>Select your CPU to improve speed: </B
>By default the Makefile generates code for the i486 CPU. You can change this by editing the
<TT
CLASS="FILENAME"
>Makefile</TT
> after running <B
CLASS="COMMAND"
>config </B
><VAR
CLASS="OPTION"
>shared</VAR
>.
Search for <VAR
CLASS="OPTION"
>-m486</VAR
> and replace it i.e with <VAR
CLASS="OPTION"
>-march=athlon</VAR
></P
></BLOCKQUOTE
></DIV
></DIV
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="CYRUS-INSTALL"
>Getting and installing Cyrus SASL and IMAP</A
></H2
><P
>	Building Cyrus SASL and IMAP from source is not a easy task. There are some prerequisites to be 
	fulfilled, and lots of difficult authentication related stuff to be considered.
	</P
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN321"
>Download Cyrus SASL and Cyrus IMAP</A
></H3
><P
>	Origin-Site: <A
HREF="ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-2.1.18.tar.gz"
TARGET="_top"
>	ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-2.1.18.tar.gz</A
>
	</P
><P
>Origin-Site: <A
HREF="ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-imapd-2.2.3.tar.gz"
TARGET="_top"
>	ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-imapd-2.2.3.tar.gz</A
>

	</P
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN327"
>Create the cyrus user</A
></H3
><P
>On most systems there is no cyrus user and mailgroup by default. Check for a free UID, usually daemons are running with UIDs less that 100.
As example I am using UID 96 which is what SuSE has in the default <TT
CLASS="FILENAME"
>/etc/passwd</TT
>.</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>groupadd mail
useradd -u 96 -d /usr/cyrus -g mail cyrus
passwd cyrus</PRE
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN332"
>Building and installing Cyrus SASL</A
></H3
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>tar -xvzf cyrus-sasl-2.1.18.tar.gz
cd cyrus-sasl-2.1.18

./configure \
--enable-anon \
--enable-plain \
--enable-login \
--disable-krb4 \
--disable-otp \
--disable-cram \
--disable-digest \
--with-saslauthd=/var/run/saslauthd \
--with-pam=/lib/security \
--with-dblib=berkeley \
--with-bdb-libdir=/usr/local/bdb/lib \
--with-bdb-incdir=/usr/local/bdb/include \
--with-openssl=/usr/local/ssl \
--with-plugindir=/usr/local/lib/sasl2


make
make install

mkdir -p /var/run/saslauthd

cd saslauthd
make testsaslauthd
cp testsaslauthd /usr/local/bin

echo /usr/local/lib/sasl2 &#62;&#62; /etc/ld.so.conf
ldconfig</PRE
></TD
></TR
></TABLE
><P
>The SASL library is installed in <TT
CLASS="FILENAME"
>/usr/local/lib/sasl2</TT
> but some programs are expecting SASL in 
<TT
CLASS="FILENAME"
>/usr/lib/sasl2</TT
>. So it is a good idea to create a symbolic link:
 <B
CLASS="COMMAND"
>ln -s /usr/local/lib/sasl2 /usr/lib/sasl2</B
>.</P
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN339"
>Building Cyrus-IMAP</A
></H3
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>tar -xvzf cyrus-imapd-2.2.3.tar.gz
cd cyrus-imapd-2.2.3

export CPPFLAGS="-I/usr/include/et" 

./configure \
--with-sasl=/usr/local/lib \
--with-perl \
--with-auth=unix \
--with-dbdir=/usr/local/bdb \
--with-bdb-libdir=/usr/local/bdb/lib \
--with-bdb-incdir=/usr/local/bdb/include \
--with-openssl=/usr/local/ssl \
--without-ucdsnmp \

make depend
make
make install</PRE
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="STARTUPSCRIPT"
>Automatic startup script</A
></H3
><P
>If you wish to start the Cyrus IMAP daemon automatically after booting, you need a startup script. 
Place the following script in <TT
CLASS="FILENAME"
>/etc/init.d/</TT
>. For Redhat, it is 
<TT
CLASS="FILENAME"
>/etc/rc.d/init.d</TT
> instead of <TT
CLASS="FILENAME"
>/etc/init.d/</TT
>.</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>#!/bin/bash
#
# Cyrus startup script

case "$1" in
    start)
        # Starting SASL saslauthdaemon
        /usr/local/sbin/saslauthd -c -a pam&#38;

        # Starting Cyrus IMAP Server
        /usr/cyrus/bin/master &#38;
        ;;

    stop)

        # Stopping SASL saslauthdaemon
        killall saslauthd

        # Stopping Cyrus IMAP Server
        killall /usr/cyrus/bin/master

        ;;

    *)
        echo "Usage: $0 {start|stop}"
        exit 1
        ;;

esac</PRE
></TD
></TR
></TABLE
><P
>If I get the time, I will provide a more sophisticated script, but this script works.</P
><P
>Now create the Symlinks in the runlevel directory (SuSE):</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>ln -s /etc/init.d/cyrus /etc/init.d/rc3.d/S20
ln -s /etc/init.d/cyrus /etc/init.d/rc3.d/K10</PRE
></TD
></TR
></TABLE
><P
>For Redhat:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>ln -s /etc/rc.d/init.d/cyrus /etc/rc.d/rc3.d/S20cyrus
ln -s /etc/rc.d/init.d/cyrus /etc/rc.d/rc3.d/K10cyrus</PRE
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="UPDATE-CYRUS"
>Update Cyrus IMAPd</A
></H3
><P
>This section describes HOWTO update the IMAPd from version 2.1.x to 2.2.x</P
><DIV
CLASS="CAUTION"
><P
></P
><TABLE
CLASS="CAUTION"
BORDER="1"
WIDTH="100%"
><TR
><TD
ALIGN="CENTER"
><B
>Update is critical and can mean complete data loss</B
></TD
></TR
><TR
><TD
ALIGN="LEFT"
><P
>Please test this procedure on a test/pre-production server first. Also have close look to <TT
CLASS="FILENAME"
>install-upgrade.html</TT
> that comes with the cyrus-imapd distribution. Please note, that you shoud plan a downtime for the production server to have the time to solve problems. Also note, that nobody I cannot take responsibility for the update procedure provided here</P
></TD
></TR
></TABLE
></DIV
><P
>Cyrus changed the format of the dbd databases used for internal storage of mailboxlist flags etc.</P
><P
>A convert script comes with the distribution. The most important database is <TT
CLASS="FILENAME"
>/var/imap/mailboxes.db</TT
>. Without that database cyrus-imapd will NOT run. This requires a backup. Lets do a dump and a backup of the database.</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>&#13;/etc/init.d/cyrus stop # be sure no cyrus process is running

lsof /var/imap/mailboxes.db # be sure NO process is accessing the mailbox file

su - cyrus
/usr/cyrus/bin/ctl_mboxlist -d &#62; /tmp/mailbox.db.dump
cp /var/imap/mailboxes.db /var/imap/mailboxes.db.old</PRE
></TD
></TR
></TABLE
><P
>Convert the <TT
CLASS="FILENAME"
>/var/imap/mailboxes.db</TT
>

<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>/usr/cyrus/bin/cvt_cyrusdb /var/imap/mailboxes.db berkeley /var/imap/mailboxes.db.new skiplist
mv /var/imap/mailboxes.db.new /var/imap/mailboxes.db</PRE
></TD
></TR
></TABLE
>&#13;</P
><P
>Convert all the »seen« databases:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>find /var/imap/user -name \*.seen -exec /usr/cyrus/bin/cvt_cyrusdb \{\} flat \{\}.new skiplist \; -exec mv \{\}.new \{\} \;</PRE
></TD
></TR
></TABLE
><P
>Converting the sieve scripts</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>/usr/local/cyrus-imapd-2.2.3/tools/masssievec /usr/cyrus/bin/sievec</PRE
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="POSTFIX-INSTALL"
>Getting and installing Postfix</A
></H2
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN374"
>Download</A
></H3
><P
>                Origin-Site: <A
HREF="http://www.postfix.org/ftp-sites.html"
TARGET="_top"
>http://www.postfix.org/ftp-sites.html</A
>
                </P
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN378"
>Creating a User-ID (UID) and Group-ID (GID) for postfix</A
></H3
><P
>        Before you build and install postfix, be sure to create a »postfix« and a »postdrop« user and group if they do not exist on the system. 
		First check for the groups. You can check this by <B
CLASS="COMMAND"
>grep postfix /etc/group</B
> and
		<B
CLASS="COMMAND"
>grep maildrop /etc/group</B
>
        </P
><P
>        If there are no such groups and users, you just create them. Search for a free numeric UID and GID. In the
        following example I will use UID and GID 33333 for Postfix and 33335 for the maildrop UID and GID. These ID's
        correspond to other documents.
        </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>groupadd -g 33333 postfix
groupadd -g 33335 postdrop

useradd -u 33333 -g 33333 -d /dev/null -s /bin/false postfix</PRE
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN385"
>Building and installing</A
></H3
><P
>        The following section shows what you have to do if you installed MySQL from source as described above.
        If you installed MySQL from a binary package such as rpm or deb, then you have to change the
        include and library-flags to -I/usr/include/mysql and -L/usr/lib/mysql.
        </P
><DIV
CLASS="CAUTION"
><P
></P
><TABLE
CLASS="CAUTION"
BORDER="1"
WIDTH="100%"
><TR
><TD
ALIGN="CENTER"
><B
>Old MTA needs to be uninstalled</B
></TD
></TR
><TR
><TD
ALIGN="LEFT"
><P
>It is important that you uninstall any sendmail version from RPM based systems.
	I suggest that you remove sendmail, and install Postfix instead. At least SuSE RPMs need a MTA.
	After installing the Postfix-RPM, just install Postfix over the RPM installation by following the HOWTO.</P
></TD
></TR
></TABLE
></DIV
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>tar -xvzf postfix-2.0.19.tar.gz

cd postfix-2.0.19

make makefiles 'CCARGS=-DHAS_MYSQL \
-I/usr/local/mysql/include/mysql -DUSE_SASL_AUTH \
-I/usr/local/include/sasl -I/usr/local/bdb/include' \
'AUXLIBS=-L/usr/local/mysql/lib/mysql \
-lmysqlclient -lz -lm -L/usr/local/lib -lsasl2 -L/usr/local/bdb/lib'
make
make install</PRE
></TD
></TR
></TABLE
><P
>During <B
CLASS="COMMAND"
>make install</B
> a few question are asked. Just pressing 
	<B
CLASS="KEYCAP"
>Enter</B
> should match your needs. For Redhat users it could be useful to 
	enter <TT
CLASS="FILENAME"
>/usr/local/share/man</TT
></P
><P
>Now you need to create some symbolic links to start Postfix automatically on system startup. The sample is 
	for SuSE Linux, please consult your vendors manual for other distributions.</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>ln -s /usr/sbin/postfix /etc/init.d/rc3.d/S14postfix
ln -s /usr/sbin/postfix /etc/init.d/rc3.d/K07postfix</PRE
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="PAM-INSTALL"
>Getting and installing PAM</A
></H2
><P
>PAM is installed by default on almost all Linux distributions. I am not describing how to compile PAM
        by yourself, because it could break your system. Instead, I will describe how to install the package. 
        </P
><P
>&#13;	</P
><P
>Users of a RPM based distribution can issue the following command:</P
><P
>&#13;<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>rpm -i pam-devel.rpm</PRE
></TD
></TR
></TABLE
>&#13;</P
><P
>Debian users can install the devel package with the following command:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>apt-get install libpam0g-dev</PRE
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="PAM-MYSQL-INSTALL"
>Getting and installing pam_mysql</A
></H2
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN409"
>Download</A
></H3
><P
>Origin-Site: <A
HREF="http://sourceforge.net/projects/pam-mysql/"
TARGET="_top"
>			http://sourceforge.net/projects/pam-mysql/</A
>
		</P
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN413"
>Installing</A
></H3
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>tar -xvzf pam_mysql-0.5.tar.gz

cd pam_mysql</PRE
></TD
></TR
></TABLE
><P
>If you have compiled mysql by yourself, 
	check the <TT
CLASS="FILENAME"
>Makefile</TT
> and enter the correct path to your mysql libs and add the 
	compiler flag <VAR
CLASS="VARNAME"
>CFLAGS</VAR
> <VAR
CLASS="OPTION"
>-I/path/to/mysql/include</VAR
>.
	</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>ifndef FULL_LINUX_PAM_SOURCE_TREE
export DYNAMIC=-DPAM_DYNAMIC
export CC=gcc
export CFLAGS=-O2 -Dlinux -DLINUX_PAM \
       -ansi -D_POSIX_SOURCE -Wall -Wwrite-strings \
       -Wpointer-arith -Wcast-qual -Wcast-align -Wtraditional \
       -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline \
       -Wshadow -pedantic -fPIC -I/usr/local/mysql/include
export MKDIR=mkdir -p
export LD_D=gcc -shared -Xlinker -x -L/usr/local/mysql/lib/mysql -lz
endif</PRE
></TD
></TR
></TABLE
><P
>After customizing that file you an go ahead with the pam_mysql compile.</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>make

cp pam_mysql.so /lib/security

[[ ! -d /var/lib/mysql ]] &#38;&#38; mkdir /var/lib/mysql
ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock</PRE
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="WEB-CYRADM-INSTALL"
>Getting and installing Web-cyradm</A
></H2
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN425"
>Download</A
></H3
><P
>                Origin-Site: <A
HREF="http://www.web-cyradm.org"
TARGET="_top"
>http://www.web-cyradm.org</A
>
                </P
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN429"
>Installing</A
></H3
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>cd /usr/local/apache/htdocs

tar -xvzf web-cyradm-0.5.4.tar.gz

touch /var/log/web-cyradm.log
chown nobody /var/log/web-cyradm.log</PRE
></TD
></TR
></TABLE
><P
>After unpacking web-cyradm, move it to a place in your webserver's documentroot.</P
><P
>Thats all. Now you need to configure the whole bunch of software.</P
><P
>Web-cyradm 0.5.4 is considered stable, and was released on 2003-12-05</P
><P
>Since web-cyradm uses PEAR for its database abstraction layer, you also need a recent 
	copy of PEAR. This is included in recent PHP Versions. I strongly suggest to update PHP 
	to 4.3.4, because a lot of important bugs have been fixed.
	</P
><P
>A frequent mistake is to forget to touch the logfile and change the owner to the 
	Apache UID. This is usually »nobody« or »wwwrun«.</P
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="MYSQL-CREATE-DB"
>Create the databases and tables</A
></H3
><P
>Now we need to create the database and tables for Postfix and Web-cyradm and add a user to the
                database.</P
><P
>                Web-cyradm comes with several MySQL scripts: <TT
CLASS="FILENAME"
>insertuser_mysql.sql</TT
> and
                <TT
CLASS="FILENAME"
>create_mysql.sql</TT
>.
                The first inserts the Database user to the database »mysql« and creates the database »mail«. The
                second creates the required tables and populates the database with an initial admin-user and the
                cyrus user.</P
><P
>The other scripts are used for incremental upgrading from older releases.</P
><P
>The password for the database user »mail« in this example is »secret«. Please insert whatever
                user and password you like.</P
><P
>The username for the initial superuser is »admin« with the password »test«.</P
><DIV
CLASS="CAUTION"
><P
></P
><TABLE
CLASS="CAUTION"
BORDER="1"
WIDTH="100%"
><TR
><TD
ALIGN="CENTER"
><B
>Change the default password!</B
></TD
></TR
><TR
><TD
ALIGN="LEFT"
><P
>If a malicious user wants to gain unauthorized access to a system, the first attempt is always
                the default username and password supplied by the vendor. It is IMPORTANT that you change them
                in the scripts before applying them.</P
></TD
></TR
></TABLE
></DIV
><P
>After customizing the username and password, apply the scripts:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>/usr/local/mysql/bin/mysql -u root -p &lt; \
/usr/local/apache/htdocs/web-cyradm/scripts/insertuser_mysql.sql

/usr/local/mysql/bin/mysql mail -u mail -p &lt; \
/usr/local/apache/htdocs/web-cyradm/scripts/create_mysql.sql</PRE
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="WEB-CYRADM-UPDATE"
>Upgrading from 0.5.3 to 0.5.4</A
></H3
><P
>In version 0.5.4 there is a small database enhancement. You can upgrade your database by
	issuing the MySQL script that comes with the distribution.</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>mysql mail -u mail -p &lt; \ 
scripts/upgrade-0.5.3-to-0.5.4_mysql.sql</PRE
></TD
></TR
></TABLE
><P
>Since Version 0.5.3 web-cyradm has full support for DES crypted passwords. You can use the php-script 
<TT
CLASS="FILENAME"
>migrate.php</TT
> to convert the users passwords from plain text to unix compatible crypt (DES).</P
><DIV
CLASS="CAUTION"
><P
></P
><TABLE
CLASS="CAUTION"
BORDER="1"
WIDTH="100%"
><TR
><TD
ALIGN="CENTER"
><B
>Migration from plain to crypt cannot be undone</B
></TD
></TR
><TR
><TD
ALIGN="LEFT"
><P
>Be sure to have a recent backup of your database before doing anything with the migration script.</P
></TD
></TR
></TABLE
></DIV
></DIV
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="tech.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="t1.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="mysql-config.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Technologies</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Configuring MySQL</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>The software needed against viruses and SPAM</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
REL="HOME"
TITLE="Postfix-Cyrus-Web-cyradm-HOWTO"
HREF="t1.html"><LINK
REL="PREVIOUS"
TITLE="Fighting against Viruses and SPAM"
HREF="spam-and-virus-intro.html"><LINK
REL="NEXT"
TITLE="Further Information"
HREF="moreinfo.html"><META
http-equiv="Content-Type"
content="text/html; charset="></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Postfix-Cyrus-Web-cyradm-HOWTO</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="spam-and-virus-intro.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="moreinfo.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="INSTALLING-ANTI-SPAM"
>The software needed against viruses and SPAM</A
></H1
><P
>This chapter describes how to install and handle the software against viruses and SPAM</P
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="GET-CLAMAV"
>Getting and installing ClamAV</A
></H2
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN789"
>Download</A
></H3
><P
>	Origin-Site: <A
HREF="http://prdownloads.sourceforge.net/clamav/clamav-0.68.tar.gz"
TARGET="_top"
>http://prdownloads.sourceforge.net/clamav/clamav-0.68.tar.gz</A
>&#13;</P
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN793"
>Building and installing</A
></H3
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
># Adding a group for the clamav user
groupadd clamav

# Adding the clamav user to your system
useradd -g clamav -c "clamav user" clamav

cd /usr/local

tar -xvzf clamav-0.68.tar.gz
cd clamav-0.68

./configure

make &#38;&#38; make install</PRE
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN796"
>Testing and configuring</A
></H3
><P
>To test the funtionality of clamav, you can run <B
CLASS="COMMAND"
>clamscan</B
> to get some results from the testpatterns that are included in the clamav distribution run <B
CLASS="COMMAND"
>clamscan -r -i /usr/local/clamav-0.68</B
></P
><P
>The output should look like this:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>/usr/local/clamav-0.68/test/test1: ClamAV-Test-Signature FOUND
/usr/local/clamav-0.68/test/test1.bz2: ClamAV-Test-Signature FOUND
/usr/local/clamav-0.68/test/test2.zip: ClamAV-Test-Signature FOUND
/usr/local/clamav-0.68/test/test2.badext: ClamAV-Test-Signature FOUND
/usr/local/clamav-0.68/contrib/clamdwatch/clamdwatch.tar.gz: Eicar-Test-Signature FOUND

----------- SCAN SUMMARY -----------
Known viruses: 20482
Scanned directories: 47
Scanned files: 406
Infected files: 5
Data scanned: 5.48 MB
I/O buffer size: 131072 bytes
Time: 2.706 sec (0 m 2 s)</PRE
></TD
></TR
></TABLE
><P
>Next step is to setup the automated update of the virus database. This is a important step, because the speed of virus spreading is fast and would pick up even further.</P
><P
>Create the needed logfiles</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>touch /var/log/clam-update.log
chmod 600 /var/log/clam-update.log
chown clamav /var/log/clam-update.log</PRE
></TD
></TR
></TABLE
><P
>I suggest to update the signatures with a hourly cronjob. To edit the crontab issue <B
CLASS="COMMAND"
>crontab -e</B
> and add the following line, and replace the »x« with a random value between 1 and 59. This is some kind of time based loadbalancing to ensure more people can fetch the updated.</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>#x * * * *       /usr/local/bin/freshclam --quiet -l /var/log/clam-update.log</PRE
></TD
></TR
></TABLE
><P
>To test if the update process is working, please issue the command <B
CLASS="COMMAND"
>/usr/local/bin/freshclam -l /var/log/clam-update.log</B
> and have a look at the output.</P
><P
>The output should look similar to this:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>ClamAV update process started at Tue Mar 23 19:58:11 2004
Reading CVD header (main.cvd): OK
Downloading main.cvd [*]
main.cvd updated (version: 21, sigs: 20094, f-level: 1, builder: tkojm)
Reading CVD header (daily.cvd): OK
Downloading daily.cvd [*]
daily.cvd updated (version: 210, sigs: 596, f-level: 1, builder: acab)
Database updated (20690 signatures) from database.clamav.net (64.74.124.90).</PRE
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="RAZOR"
>Razor</A
></H2
><P
>Razor is one of the prerequisites of spamassassin.</P
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN816"
>Download</A
></H3
><P
>Origin-Site: <A
HREF="http://prdownloads.sourceforge.net/razor/razor-agents-sdk-2.03.tar.gz?download"
TARGET="_top"
>http://prdownloads.sourceforge.net/razor/razor-agents-sdk-2.03.tar.gz?download</A
></P
><P
>Origin-Site: <A
HREF="http://prdownloads.sourceforge.net/razor/razor-agents-2.40.tar.gz?download"
TARGET="_top"
>http://prdownloads.sourceforge.net/razor/razor-agents-2.40.tar.gz?download</A
>

<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>cd /usr/local

tar -xvzf razor-agents-sdk-2.03.tar.gz
cd razor-agents-sdk-2.03

perl Makefile.PL
make &#38;&#38; make install

cd /usr/local
tar -xvzf razor-agents-2.40.tar.gz
cd razor-agents-2.40/

perl Makefile.PL
make &#38;&#38; make install</PRE
></TD
></TR
></TABLE
>&#13;</P
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN823"
>Registering and setting up</A
></H3
><P
>In order to use razor2 you need to register yourself as a user</P
><P
>Choose a unique username and password and issue <B
CLASS="COMMAND"
>razor-admin -register -user=some_user -pass=somepass</B
></P
></DIV
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="GET-SPAMASSASSIN"
>Getting and installing spamassassin</A
></H2
><P
>Spamassassin is the todays leading opensource project to fight against SPAM. To describe how spamassassin works would be too much for this document. For further information please consult <A
HREF="http://eu.spamassassin.org/doc.html"
TARGET="_top"
>http://eu.spamassassin.org/doc.html</A
></P
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN832"
>Download</A
></H3
><P
>Origin-Site: <A
HREF="http://eu.spamassassin.org/released/Mail-SpamAssassin-2.63.tar.gz"
TARGET="_top"
>http://eu.spamassassin.org/released/Mail-SpamAssassin-2.63.tar.gz</A
>&#13;</P
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN836"
>Prerequisites</A
></H3
><P
>Spamassassin depends on a lot of prerequisites. The easiest way is using the CPAN repository. Issue the command <B
CLASS="COMMAND"
>perl -MCPAN -e shell</B
> and answer all questions as needed.</P
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN840"
>Building and installing</A
></H3
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>cd /usr/local

tar -xvzf Mail-SpamAssassin-2.63.tar.gz

cd Mail-SpamAssassin-2.63

perl Makefile.PL

# You get prompted to run Razor tests which you should answer with "y"
Run Razor v2 tests (these may fail due to network problems)? (y/n) [n] y 

make &#38;&#38; make install</PRE
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AMAVIS-INSTALL"
>Getting and installing amavisd-new</A
></H2
><P
>Amavisd-new is the software that glues all the software described above together to postfix</P
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN846"
>Download</A
></H3
><P
>Origin-Site: <A
HREF="http://www.ijs.si/software/amavisd/amavisd-new-20030616-p8.tar.gz"
TARGET="_top"
>http://www.ijs.si/software/amavisd/amavisd-new-20030616-p8.tar.gz</A
>&#13;</P
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN850"
>Prerequisites</A
></H3
><P
>Amavisd-new needs a lot of prerequisites.</P
><P
>Run <B
CLASS="COMMAND"
>perl -MCPAN -e shell</B
> and issue:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>install ExtUtils::MakeMaker
install HTML::Parser
install DB_File
install Digest::SHA1
install Archive::Tar
install Archive::Zip
install Compress::Zlib
install Convert::TNEF
install Convert::UUlib
install MIME::Base64
install MIME::Parser
install Mail::Internet
install Mail::SPF::Query
install Net::Server
install Net::SMTP
install Net::DNS
install Digest::MD5
install IO::Stringy
install Time::HiRes
install Unix::Syslog</PRE
></TD
></TR
></TABLE
><P
>At the end run <B
CLASS="COMMAND"
>./amavisd</B
> and have a look at overseen prerequisites.</P
><P
>Edit <TT
CLASS="FILENAME"
>/etc/amavisd.conf</TT
> and change the variables <VAR
CLASS="VARNAME"
>$daemon_user</VAR
> to »amavis« and <VAR
CLASS="VARNAME"
>$daemon_group</VAR
> to »amavis«. Another variable to change is <VAR
CLASS="VARNAME"
>$mydomain to match your domain.</VAR
></P
><P
>Please also consider to change the default settings for virus and spam mails to avoid being notified about every intercepted mail</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>$final_virus_destiny      = D_DISCARD;  # (defaults to D_BOUNCE)
$final_spam_destiny       = D_DISCARD;  # (defaults to D_REJECT)</PRE
></TD
></TR
></TABLE
><P
>In the beginning of SPAM filtering I recommend to set the kill-value to something higher until you tweaked the filters. Change the variable <VAR
CLASS="VARNAME"
>$sa_kill_level_deflt</VAR
> to 8 or even higher.</P
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN867"
>Building and installing</A
></H3
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>cd /usr/local

tar -xvzf amavisd-new-20030616-p8.tar.gz

cd amavisd-new-20030616
cp amavisd /usr/local/sbin
cp amavisd.conf /etc
chown root /etc/amavisd.conf
chmod 644  /etc/amavisd.conf</PRE
></TD
></TR
></TABLE
><P
>Now it is the the time to define a group and a user for amavisd-new</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>groupadd amavis
useradd -g amavis -c "Amavisd-new user" amavis</PRE
></TD
></TR
></TABLE
><P
>Next you have to define a directory for the quarantined mail:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>mkdir /var/virusmails
chown amavis:amavis /var/virusmails
chmod 750 /var/virusmails
mkdir /var/amavis
chown amavis:amavis /var/amavis
chmod 750 /var/amavis</PRE
></TD
></TR
></TABLE
><P
>The original init script in the amavisd-new distribution does only work work with Redhat. Other distributions need to install my quick and dirty init-script:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>#!/bin/bash
#
# Amavisd-new startup script

case "$1" in
    start)
        # Starting amavisd
        /usr/local/sbin/amavisd
        ;;

    stop)

	# follows later

        ;;

    *)
        echo "Usage: $0 {start|stop}"
        exit 1
        ;;

esac</PRE
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="POSTFIX-SETUP"
>Setting up postfix</A
></H2
><P
>Postfix needs to be configured to send each mail to amavis-new in order to get sanitized.</P
><P
>You need to add the following line to <TT
CLASS="FILENAME"
>/etc/postfix/main.cf</TT
></P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>content_filter = smtp-amavis:127.0.0.1:10024</PRE
></TD
></TR
></TABLE
><P
>The <TT
CLASS="FILENAME"
>/etc/postfix/master.cf</TT
> needs also some adjustments to return the results from amavisd-new to the mailingsystem.</P
><P
>Please add the following lines to your configuration:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>smtp-amavis unix - - y - 2 smtp -o smtp_data_done_timeout=1200

127.0.0.1:10025 inet n  -       n       -       -  smtpd
    -o content_filter=
    -o local_recipient_maps=
    -o relay_recipient_maps=
    -o smtpd_restriction_classes=
    -o smtpd_client_restrictions=
    -o smtpd_helo_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o mynetworks=127.0.0.0/8
    -o strict_rfc821_envelopes=yes
    -o smtpd_error_sleep_time=0
    -o smtpd_soft_error_limit=1001
    -o smtpd_hard_error_limit=1000</PRE
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="spam-and-virus-intro.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="t1.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="moreinfo.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Fighting against Viruses and SPAM</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Further Information</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>
<HTML
><HEAD
><TITLE
>Introduction</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="Postfix-Cyrus-Web-cyradm-HOWTO"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Postfix-Cyrus-Web-cyradm-HOWTO"
HREF="index.html"><LINK
REL="NEXT"
TITLE="Technologies"
HREF="tech.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Postfix-Cyrus-Web-cyradm-HOWTO</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="index.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="tech.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="INTRO">1. Introduction</H1
><P
>   The cyrus part is only valid for Cyrus-IMAP 2.1.x and Cyrus-SASL 2.1.x. If you plan to use Cyrus-IMAP 2.0.x
   then please consult the deprecated version 1.0.x of this HOWTO.</P
><P
>  I recommend strongly to update to the Cyrus Version 2.1.x. If you do so, you will have chances to get
  valuable support by the community</P
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN96">1.1. Contributors and Contacts</H2
><P
>First I would thank all those people who send questions and suggestions that made a
	further development of this document possible. It shows me, sharing knowledge is the right way.
	I would encourage you to send me more suggestion, just write me an email <TT
CLASS="EMAIL"
>&#60;<A
HREF="mailto:luc at delouw.ch"
>luc at delouw.ch</A
>&#62;</TT
>
	</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN100">1.2. Why I wrote this document</H2
><P
>There are different approaches howto set up different mailsystems. Most documents available are
	related to Sendmail, procmail, WU-IMAPd and friends. These fine-running software is unfortunately very
	un-flexible concerning user administration.
	</P
><P
>For longer time I was testing alternative MTA's like qmail, postfix and exim, IMAP/POP-servers like 
	Cyrus, vpopmail, Courier IMAP and others.</P
><P
>At the end of the day, from my point of view the couple Postfix/Cyrus seems to be the
	most flexible and performant solution.</P
><P
>All these combinations of software had one in common: there was only little documentation available
	concerning how this software is working together with each other.
	For installing the software, lot of effort must be spent to get all information needed to get all 
	software running.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="COPYRIGHT">1.3. Copyright Information</H2
><P
>    This document is copyrighted (c) 2002, 2003 Luc de Louw and is
    distributed under the terms of the Linux Documentation Project
    (LDP) license, stated below. 
   </P
><P
>    Unless otherwise stated, Linux HOWTO documents are
    copyrighted by their respective authors. Linux HOWTO documents may
    be reproduced and distributed in whole or in part, in any medium
    physical or electronic, as long as this copyright notice is
    retained on all copies. Commercial redistribution is allowed and
    encouraged; however, the author would like to be notified of any
    such distributions.
   </P
><P
>    All translations, derivative works, or aggregate works
    incorporating any Linux HOWTO documents must be covered under this
    copyright notice. That is, you may not produce a derivative work
    from a HOWTO and impose additional restrictions on its
    distribution. Exceptions to these rules may be granted under
    certain conditions; please contact the Linux HOWTO coordinator at
    the address given below.
   </P
><P
>    In short, we wish to promote dissemination of this
    information through as many channels as possible. However, we do
    wish to retain copyright on the HOWTO documents, and would like to
    be notified of any plans to redistribute the HOWTOs.
   </P
><P
>    If you have any questions, please contact 
    <TT
CLASS="EMAIL"
>&#60;<A
HREF="mailto:linux-howto at metalab.unc.edu"
>linux-howto at metalab.unc.edu</A
>&#62;</TT
>
   </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="DISCLAIMER">1.4. Disclaimer</H2
><P
>    No liability for the contents of this documents can be accepted.
    Use the concepts, examples and other content at your own risk.
    As this is a new edition of this document, there may be errors
    and inaccuracies, that may of course be damaging to your system.
    Proceed with caution, and although this is highly unlikely,
    the author(s) do not take any responsibility for that.
   </P
><P
>    All copyrights are held by their by their respective owners, unless
    specifically noted otherwise.  Use of a term in this document
    should not be regarded as affecting the validity of any trademark
    or service mark.
   </P
><P
>    Naming of particular products or brands should not be seen 
    as endorsements.
   </P
><P
>    You are strongly recommended to take a backup of your system 
    before major installation and backups at regular intervals.
   </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="NEWVERSIONS">1.5. New Versions</H2
><P
>New version of this document are announced on freshmeat</P
><P
>    The latest version of this document you can get from
    <A
HREF="http://www.delouw.ch/linux"
TARGET="_top"
>http://www.delouw.ch/linux</A
> 
   </P
><P
>   <P
></P
><UL
><LI
><P
>      <A
HREF="http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/html/index.html"
TARGET="_top"
>HTML</A
>.
     </P
></LI
><LI
><P
>      <A
HREF="http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/Postfix-Cyrus-Web-cyradm-HOWTO.ps"
TARGET="_top"
>	Postscript (ISO A4 format)</A
>.
     </P
></LI
><LI
><P
>       <A
HREF="http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/Postfix-Cyrus-Web-cyradm-HOWTO.pdf"
TARGET="_top"
>Acrobat PDF</A
>.
     </P
></LI
><LI
><P
>       <A
HREF="http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/Postfix-Cyrus-Web-cyradm-HOWTO.sgml"
TARGET="_top"
>SGML Source</A
>.
     </P
></LI
><LI
><P
>      <A
HREF="http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/Postfix-Cyrus-Web-cyradm-HOWTO.tar.gz"
TARGET="_top"
>HTML gzipped tarball</A
>.
     </P
></LI
></UL
>
   </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="CREDITS">1.6. Credits</H2
><P
></P
><UL
><LI
><P
>	Michael Muenz <TT
CLASS="EMAIL"
>&#60;<A
HREF="mailto:m.muenz at maxonline.de"
>m.muenz at maxonline.de</A
>&#62;</TT
> for his help with SMTP Authentication
	</P
></LI
><LI
><P
>    The nice people at <TT
CLASS="EMAIL"
>&#60;<A
HREF="mailto: discuss at linuxdoc.org"
> discuss at linuxdoc.org</A
>&#62;</TT
> for
    supporting me in writing the HOWTOs
   </P
></LI
></UL
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="FEEDBACK">1.7. Feedback</H2
><P
>    Feedback is most certainly welcome for this document. Without
    your submissions and input, this document wouldn't exist. Please
    send your additions, comments and criticisms to the following
    email address : <TT
CLASS="EMAIL"
>&#60;<A
HREF="mailto:luc at delouw.ch"
>luc at delouw.ch</A
>&#62;</TT
>.
   </P
><P
>   Please understand, that I don't want to add Cyrus-IMAP 2.0.x related stuff in this Document anymore
   </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="TRANSLATIONS">1.8. Translations</H2
><P
>     	At the moment no translations are available. A german translation is planned and would be
     	written by myself as soon as I get the time. 
   </P
><P
>	Translations to other languages are always welcome. If you translated this document, please translate the
	SGML source. Please let me know if you begin to translate, so I can set a link here.
   </P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="tech.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Postfix-Cyrus-Web-cyradm-HOWTO</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Technologies</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>Further Information</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
REL="HOME"
TITLE="Postfix-Cyrus-Web-cyradm-HOWTO"
HREF="t1.html"><LINK
REL="PREVIOUS"
TITLE="The software needed against viruses and SPAM"
HREF="installing-anti-spam.html"><LINK
REL="NEXT"
TITLE="Questions and Answers"
HREF="faq.html"><META
http-equiv="Content-Type"
content="text/html; charset="></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Postfix-Cyrus-Web-cyradm-HOWTO</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="installing-anti-spam.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="faq.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="MOREINFO"
>Further Information</A
></H1
><P
>	Here you will find some other resources available in the internet.
  </P
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="NEWSGROUPS"
>News groups</A
></H2
><P
>Some of the most interesting news groups are:

    <P
></P
><UL
><LI
><P
>       <A
HREF="news:alt.comp.mail.postfix"
TARGET="_top"
>alt.comp.mail.postfix</A
>
      </P
><P
>This is low traffic group.</P
></LI
><LI
><P
>       <A
HREF="news:comp.mail.imap"
TARGET="_top"
>comp.mail.imap</A
>
      </P
></LI
></UL
>
   </P
><P
>Maybe you also check out your country newsgroups e.g ch.comp.os.linux</P
><P
>    Most newsgroups have their own FAQ that are designed to answer most
    of your questions, as the name Frequently Asked Questions indicate.
    Fresh versions should be posted regularly to the relevant newsgroups.
    If you cannot find it in your news spool you could go directly to the
    <A
HREF="ftp://rtfm.mit.edu/"
TARGET="_top"
>FAQ main archive FTP site</A
>.
    The WWW versions can be browsed at the 
    <A
HREF="http://www.cis.ohio-state.edu/hypertext/faq/usenet/FAQ-List.html"
TARGET="_top"
>FAQ
    main archive WWW site</A
>.
   </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="MAILLISTS"
>Mailing Lists</A
></H2
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN912"
><CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:postfix-users at postfix.org"
>postfix-users at postfix.org</A
>&#62;</CODE
></A
></H3
><P
>   Send an mail to <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:majordomo at postfix.org"
>majordomo at postfix.org</A
>&#62;</CODE
> with the content (not subject):
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>subscribe postfix-users</PRE
></TD
></TR
></TABLE
> </P
><P
>Before writing to the list, check out the archive: <A
HREF="http://www.deja.com/group/mailing.postfix.users"
TARGET="_top"
>   http://www.deja.com/group/mailing.postfix.users</A
></P
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN920"
><CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:info-cyrus at lists.andrew.cmu.edu"
>info-cyrus at lists.andrew.cmu.edu</A
>&#62;</CODE
></A
></H3
><P
>Send an mail to <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:majordomo at lists.andrew.cmu.edu"
>majordomo at lists.andrew.cmu.edu</A
>&#62;</CODE
> with the content (not subject):
<TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>subscribe info-cyrus</PRE
></TD
></TR
></TABLE
> </P
><P
>Before writing to the list, check out the archive: 
   <A
HREF="http://asg.web.cmu.edu/archive/index.php?mailbox=archive.info-cyrus"
TARGET="_top"
>   http://asg.web.cmu.edu/archive/index.php?mailbox=archive.info-cyrus </A
></P
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="AEN928"
><CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:web-cyradm at web-cyradm.org"
>web-cyradm at web-cyradm.org</A
>&#62;</CODE
></A
></H3
><P
>   Subscription can be done trough the webinterface <A
HREF="http://www.web-cyradm.org/mailman/listinfo/web-cyradm"
TARGET="_top"
>	http://www.web-cyradm.org/mailman/listinfo/web-cyradm</A
>

   </P
><P
>Before writing to the list, check out the archive for similar incidents:
   <A
HREF="http://www.web-cyradm.org/pipermail/web-cyradm/"
TARGET="_top"
>http://www.web-cyradm.org/pipermail/web-cyradm/
	</A
>

  </P
></DIV
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="HOWTO"
>HOWTO</A
></H2
><P
>    This are intended as the primary starting points to get the
    background information as well as show you how to solve a
    specific problem. Some relevant HOWTOs are
    <VAR
CLASS="LITERAL"
><A
HREF="http://www.tldp.org/HOWTO/Cyrus-IMAP.html"
TARGET="_top"
>Cyrus-IMAP</A
></VAR
> and 
    <VAR
CLASS="LITERAL"
><A
HREF="http://www.tldp.org/HOWTO/Apache-Compile-HOWTO/index.html"
TARGET="_top"
>	Apache-Compile-HOWTO</A
></VAR
>.  The main site for these is the
    <A
HREF="http://www.tldp.org/"
TARGET="_top"
>LDP archive</A
>.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="EBOOKS"
>Ebooks</A
></H2
><P
>There a few other HOWTOs and freely available documentations outside of the TLDP.org</P
><P
>IBM recently released a new Redbook:
	<VAR
CLASS="LITERAL"
><A
HREF="http://www.redbooks.ibm.com/redbooks/pdfs/sg247034.pdf"
TARGET="_top"
>BladeCenter, Linux, and Open Source: Blueprint for e-business on demand</A
>.</VAR
>Especially chapter 6 is interesting when looking for email solutions.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="LOCAL-RES"
>Local Resources</A
></H2
><P
>	Usually distributions installs some documentation to your system. As a standard they are
	located in <TT
CLASS="FILENAME"
>/usr/share/doc/packages</TT
></P
><P
>The SuSE rpms of Cyrus contains a lot a such documentation.</P
><P
>Postfix has some html-files in the source directory <TT
CLASS="FILENAME"
>/usr/local/postfix-2.0.16/html</TT
></P
><P
>PAM comes also with lots of documentation in <TT
CLASS="FILENAME"
>/usr/share/doc/packages/pam</TT
></P
><P
>The pam_mysql module has a README with the incredible size of 1670 bytes.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="WEB"
>Web Sites</A
></H2
><P
>    There are a huge number of informative web sites available. By
    their very nature they change quickly so do not be surprised
    if these links become quickly outdated.
   </P
><P
>    A good starting point is of course the 
    <A
HREF="http://www.tldp.org/"
TARGET="_top"
>Linux Documentation
    Project</A
> home page, an information central for
    documentation, project pages and much more.
   </P
><P
>	To get more deepened information about Postfix, then <A
HREF="http://www.postfix.org"
TARGET="_top"
>www.postfix.org</A
>
	would be the starting point.
   </P
><P
>    Please let me know if you have any other leads that can be 
    of interest.
   </P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="installing-anti-spam.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="t1.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="faq.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>The software needed against viruses and SPAM</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Questions and Answers</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>Configuring MySQL</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
REL="HOME"
TITLE="Postfix-Cyrus-Web-cyradm-HOWTO"
HREF="t1.html"><LINK
REL="PREVIOUS"
TITLE="Getting and installing the software"
HREF="install.html"><LINK
REL="NEXT"
TITLE="Configuring PAM"
HREF="pam-config.html"><META
http-equiv="Content-Type"
content="text/html; charset="></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Postfix-Cyrus-Web-cyradm-HOWTO</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="install.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="pam-config.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="MYSQL-CONFIG"
>Configuring MySQL</A
></H1
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="MYSQL-CONFIG-SECURING"
>Securing MySQL</A
></H2
><P
>Because you are using MySQL to authenticate users, you need to restrict network access 
	to port 3306.</P
><P
>The easiest way is to only bind MySQL to the loopback interface 127.0.0.1. 
	This makes sure nobody can connect to your MySQL daemon via the network.</P
><P
>	Edit <TT
CLASS="FILENAME"
>/etc/init.d/mysql.server</TT
> and change line 107 as following:</P
><P
>Original line:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>$bindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file&#38;</PRE
></TD
></TR
></TABLE
><P
>Changed line:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>$bindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file \
--bind-address=127.0.0.1&#38;</PRE
></TD
></TR
></TABLE
><P
>Restart your MySQL daemon by issuing the command<B
CLASS="COMMAND"
>/etc/init.d/mysql.server start</B
></P
><P
>To ensure the configuration change was successful, <B
CLASS="COMMAND"
>netstat -an|grep LISTEN</B
>. The 
	Output should be looking similar to this:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>bond:~ # netstat -an|grep LISTEN
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN</PRE
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="MYSQL-RINETD"
>Setting up rinetd</A
></H2
><P
>This step is only necessary if you run the MySQL sever on host other than the mail server. This allows
	you to securely connect from another host since access is allowed only from pre-defined IP addresses.</P
><P
>The example used is from the view of the host serving the MySQL database. Lets assume your 
	mail server has the IP 192.168.0.100 and the MySQL host has 192.168.0.200</P
><P
>	Edit <TT
CLASS="FILENAME"
>/etc/rinetd.conf</TT
> and add:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>192.168.0.200 3306 127.0.0.1 3306
allow 192.168.0.100</PRE
></TD
></TR
></TABLE
><P
>This means: The MySQL host is listening on 192.168.0.200 port 3306. If 192.168.0.100 
	attempts a connection, it is forwarded to 127.0.0.1:3306. All other hosts are rejected. </P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="install.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="t1.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="pam-config.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Getting and installing the software</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Configuring PAM</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>Configuring PAM</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
REL="HOME"
TITLE="Postfix-Cyrus-Web-cyradm-HOWTO"
HREF="t1.html"><LINK
REL="PREVIOUS"
TITLE="Configuring MySQL"
HREF="mysql-config.html"><LINK
REL="NEXT"
TITLE="Configuring Postfix"
HREF="postfix-config.html"><META
http-equiv="Content-Type"
content="text/html; charset="></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Postfix-Cyrus-Web-cyradm-HOWTO</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="mysql-config.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="postfix-config.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="PAM-CONFIG"
>Configuring PAM</A
></H1
><P
>Now we need to get sure that PAM knows how to authenticate the Cyrus users</P
><P
>You have to create the file <TT
CLASS="FILENAME"
>/etc/pam.d/imap</TT
> with the following entries:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>auth sufficient pam_mysql.so user=mail passwd=secret host=localhost db=mail table=accountuser usercolumn=username passwdcolumn=password crypt=1 logtable=log logmsgcolumn=msg logusercolumn=user loghostcolumn=host logpidcolumn=pid logtimecolumn=time

auth sufficient pam_unix_auth.so

account required pam_mysql.so user=mail passwd=secret host=localhost db=mail table=accountuser usercolumn=username passwdcolumn=password crypt=1 logtable=log logmsgcolumn=msg logusercolumn=user loghostcolumn=host logpidcolumn=pid logtimecolumn=time

account  sufficient       pam_unix_acct.so</PRE
></TD
></TR
></TABLE
><P
>The lines containing <VAR
CLASS="OPTION"
>pam_unix_auth.so</VAR
> and <VAR
CLASS="OPTION"
>pam_unix_acct.so</VAR
>
	 are only needed if you are migrating from WU-IMAP to Cyrus. 
	This allows you to authenticate with its old unix-password AND its new mysql-based password.</P
><P
>To use the other services provided by cyrus and smtp-authtication you need to copy the file
	so that they match the service-ID</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>cp /etc/pam.d/imap /etc/pam.d/pop
cp /etc/pam.d/imap /etc/pam.d/sieve
cp /etc/pam.d/imap /etc/pam.d/smtp</PRE
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="mysql-config.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="t1.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="postfix-config.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Configuring MySQL</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Configuring Postfix</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>Configuring Postfix</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
REL="HOME"
TITLE="Postfix-Cyrus-Web-cyradm-HOWTO"
HREF="t1.html"><LINK
REL="PREVIOUS"
TITLE="Configuring PAM"
HREF="pam-config.html"><LINK
REL="NEXT"
TITLE="Configuring Cyrus IMAP"
HREF="cyrus-config.html"><META
http-equiv="Content-Type"
content="text/html; charset="></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Postfix-Cyrus-Web-cyradm-HOWTO</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="pam-config.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="cyrus-config.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="POSTFIX-CONFIG"
>Configuring Postfix</A
></H1
><P
>Postfix needs two major config files: <TT
CLASS="FILENAME"
>main.cf</TT
> and <TT
CLASS="FILENAME"
>master.cf</TT
>. 
	Both need your attention.</P
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="POSTFIX-MASTER"
>master.cf</A
></H2
><P
>You need to change just one line:</P
><P
>old: </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}</PRE
></TD
></TR
></TABLE
><P
>new: </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>flags= user=cyrus argv=/usr/cyrus/bin/deliver -r ${sender} -m ${extension} ${user}</PRE
></TD
></TR
></TABLE
><P
>	What does that change affect?
	</P
><P
>	A look to the cyrus man-pages <B
CLASS="COMMAND"
>man deliver </B
>clears up that issue:
	</P
><P
>	The Postfix default setup uses a wrong path to cyrus deliver, this is the first change.
	The parameter »-r« inserts a proper return path. Without that, mail rejected/retured by sieve will 
	be sent to the cyrus user at yourdomain.
	</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="POSTFIX-MAIN"
>main.cf</A
></H2
><P
>Here you need to change some more things like hostname, relaying, alias-lookups etc.</P
><P
>First change the hostname:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>myhostname = foo.bar.org</PRE
></TD
></TR
></TABLE
><P
>mydestination</P
><P
>Here you have to put all domainnames that are local (corresponding to sendmail's 
<TT
CLASS="FILENAME"
>/etc/mail/sendmail.cw)</TT
>. If you have multiple domains, separate them with comma.</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>mydestination = foo.bar.org, example.com, furchbar-grausam.ch, 
 whatever.domain.tld, mysql:/etc/postfix/mysql-mydestination.cf</PRE
></TD
></TR
></TABLE
><P
>Relayhost</P
><P
>Here you define where to deliver outgoing mails. If you do not provide any host, mail is delivered directly 
to the destination smtp host. Usually your relayhosts are your internet service provider's smtp server.</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>relayhost = relay01.foobar.net relay02.foobar.net relay03.foobar.net</PRE
></TD
></TR
></TABLE
><P
>Mailtransport</P
><P
>Here you define how the mails accepted for local delivery should be handled. In your situation, mail should be 
delivered by the cyrus delivery program.</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>mailbox_transport = cyrus</PRE
></TD
></TR
></TABLE
><P
>At the end of file you need to add:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>virtual_alias_maps = hash:/etc/postfix/virtual, mysql:/etc/postfix/mysql-virtual.cf</PRE
></TD
></TR
></TABLE
><P
>If you don't want to have a overriding /etc/postfix/virtual, skip the hash entry</P
><P
>Outgoing addresses should be rewritten from test0002 at domain 
to user.name at virtualhost.com. This is important if you want to use a webmail interface.</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>sender_canonical_maps = mysql:/etc/postfix/mysql-canonical.cf </PRE
></TD
></TR
></TABLE
><P
>Now you need to create the file <TT
CLASS="FILENAME"
>/etc/postfix/mysql-virtual.cf</TT
>: </P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>#
# mysql config file for alias lookups on postfix
# comments are ok.
#

# the user name and password to log into the mysql server
hosts = localhost
user = mail
password = secret

# the database name on the servers
dbname = mail

# the table name
table = virtual

#
select_field = dest
where_field = alias
additional_conditions = and status = '1'</PRE
></TD
></TR
></TABLE
><P
>The file <TT
CLASS="FILENAME"
>/etc/postfix/mysql-canonical.cf</TT
>:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
># mysql config file for canonical lookups on postfix
# comments are ok.
#

# the user name and password to log into the mysql server
hosts = localhost
user = mail
password = secret

# the database name on the servers
dbname = mail

# the table name
table = virtual
#
select_field = alias
where_field = username
# Return the first match only
additional_conditions = and status = '1' limit 1</PRE
></TD
></TR
></TABLE
><P
>Finally the file <TT
CLASS="FILENAME"
>/etc/postfix/mysql-mydestination.cf</TT
>:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
># mysql config file for local domain (like sendmail's sendmail.cw) lookups on postfix
# comments are ok.
#

# the user name and password to log into the mysql server
hosts = localhost
user = mail
password = secret

# the database name on the servers
dbname = mail

# the table name
table = domain
#
select_field = domain_name
where_field = domain_name</PRE
></TD
></TR
></TABLE
><P
>SMTP Authentication with SASL and PAM</P
><P
>Put the following in your <TT
CLASS="FILENAME"
>/etc/postfix/main.cf</TT
></P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = 
broken_sasl_auth_clients = yes</PRE
></TD
></TR
></TABLE
><P
>You also need to create the file <TT
CLASS="FILENAME"
>/usr/local/lib/sasl2/smtpd.conf</TT
> with
the following contents:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>pwcheck_method: saslauthd</PRE
></TD
></TR
></TABLE
><P
>The next step is to tell postfix how to find the saslauthd socket:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>mv /var/run/sasl2 /var/run/sasl2-old
ln -s /var/run/saslauthd /var/run/sasl2</PRE
></TD
></TR
></TABLE
><P
></P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="ANTISPAM"
>Fighting against SPAM</A
></H2
><P
>This section describes how to implement a basic SPAM protection setup with postfix. It does not use any external software like spamassassin, etc.</P
><P
>Postfix has some built-in filters that allow you to stop obvious SPAM attempts. In particular these are:</P
><P
></P
><UL
><LI
><P
>	smtpd_helo_required = yes
	</P
><P
>	This switch in <TT
CLASS="FILENAME"
>main.cf</TT
> means that SMTP clients connecting to your mail server must give 
	a »helo« when connecting.
	</P
></LI
><LI
><P
>	smtpd_recipient_restrictions
	</P
><P
>This option in <TT
CLASS="FILENAME"
>main.cf</TT
> lets you define different rules on the handling the acceptance 
	of mail. The following example simply rejects all invalid sender and recipient data. 
	Additionally it defines how to lookup known spammers from online blacklists.
	</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="90%"
><TR
><TD
><PRE
CLASS="SCREEN"
>smtpd_recipient_restrictions =
            reject_invalid_hostname,
            reject_non_fqdn_hostname,
            reject_non_fqdn_sender,
            reject_non_fqdn_recipient,
            reject_unknown_sender_domain,
            reject_unknown_recipient_domain,
            reject_unauth_pipelining,
            permit_mynetworks,
            reject_unauth_destination,
            reject_rbl_client zombie.dnsbl.sorbs.net,
            reject_rbl_client relays.ordb.org,
            reject_rbl_client opm.blitzed.org,
            reject_rbl_client list.dsbl.org,
            reject_rbl_client sbl.spamhaus.org,
            permit</PRE
></TD
></TR
></TABLE
><P
></P
></LI
><LI
><P
>mime_header_checks=pcre:/etc/postfix/body_checks</P
><P
>MIME header checks let you reject mail which contains malicious MIME content, i.e dangerous 
	attachments such as Windows executables. Create the file <TT
CLASS="FILENAME"
>/etc/postfix/body_checks</TT
>. 
	The following example rejects all mail that contains potentially dangerous attachments. 
	In my experience, using this example would filter out most of viruses delivered by e-mail. 
	In any event, a virus scanner should always be installed.
	</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="90%"
><TR
><TD
><PRE
CLASS="SCREEN"
>	/^((Content-(Disposition: attachment;|Type:).*|\ +)| *)(file)?name\ *=\ *"?.*\.(lnk|asd|hlp|ocx|reg|bat|c[ho]m|cmd|exe|dll|vxd|pif|scr|hta|jse?|sh[mbs]|vb[esx]|ws[fh]|wmf)"?\ *$/      REJECT  attachment type not allowed
	</PRE
></TD
></TR
></TABLE
></LI
></UL
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="pam-config.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="t1.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="cyrus-config.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Configuring PAM</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Configuring Cyrus IMAP</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>Fighting against Viruses and SPAM</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
REL="HOME"
TITLE="Postfix-Cyrus-Web-cyradm-HOWTO"
HREF="t1.html"><LINK
REL="PREVIOUS"
TITLE="Testing the setup"
HREF="test.html"><LINK
REL="NEXT"
TITLE="The software needed against viruses and SPAM"
HREF="installing-anti-spam.html"><META
http-equiv="Content-Type"
content="text/html; charset="></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Postfix-Cyrus-Web-cyradm-HOWTO</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="test.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="installing-anti-spam.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="SPAM-AND-VIRUS-INTRO"
>Fighting against Viruses and SPAM</A
></H1
><P
>This chapter is optional and describes HOWTO fight against Viruses and SPAM.</P
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="BRIEF-VIRUS"
>Brief introdcution to viruses</A
></H2
><P
>I think I do not need to explain how dangerous Viruses are. Unfortunately in the most recent attacks from SCO.A (aka MyDoom) also more or less experienced users get tricked by viruses. Most of todays viruses and worms comes via the internet, most of them via E-Mail. Needless to say, that viruses should be catched by the SMTP system if possible.</P
><DIV
CLASS="CAUTION"
><P
></P
><TABLE
CLASS="CAUTION"
BORDER="1"
WIDTH="100%"
><TR
><TD
ALIGN="CENTER"
><B
>Not a substitute</B
></TD
></TR
><TR
><TD
ALIGN="LEFT"
><P
>A mailsystem that filters viruses is NEVER a substitute for a local installed anti-virus software. E-Mails are only one way how viruses can penetrate computers.</P
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="BRIEF-SPAM"
>Brief introduction to SPAM</A
></H2
><P
>The other harmless but unwanted and disturbing E-Mails are SPAM e-mails. SPAM is originally a disgusting canned meat. It is a synonym for UCE (Unsolicited Commercial Email) and UBE (Unsolicited Bulk Email).&#13;</P
><P
>Studies claim, that up to 60 percent of the worldwide e-mail traffic is SPAM. Before I installed the anti-SPAM filters on my SMTP servers, I received about 150 SPAMS's a day. One reason is this document. In ancient time, I noticed my real e-mail address unprotected. E-mail harvesters are scanning websites allover the world for addresses, and try to deliver its commercial, often illegal offers.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="STRATEGY-VIRUSES"
>Strategy against viruses</A
></H2
><P
>The strategy against viruses is pretty forward: Filtering viruses delivered via e-mail and having a localally installed anti-virus software.</P
><P
>Almost all vendors of anti-virus software have a up-to-date version for Linux and Unix Systems, because most SMTP servers are running on Unix. In this document I'll explain HOWTO implement <A
HREF="http://www.clamav.net"
TARGET="_top"
>clamav</A
>, a very active open source anti virus project.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="STRATEGY-SPAM"
>Strategy against SPAM</A
></H2
><P
>Fighting against SPAM is much more difficult than viruses. Why? It is because every virus has a unique signature. SPAM can contain arbitrary content. Some of the SPAM is in english, other is korean, other is in "you-name-it-language".</P
><P
>The best method how to prevent SPAM is to handle your e-mail address as your best treasured secret. NEVER put your address in a web-form or put it on your website. I know, that is against the idea of the internet. Information must be free. You can keep publishing your e-mail address if you implement the configuration further below.&#13;</P
><P
>In the beginning of SPAM, filtering for keywords like »viagra« was enough. Todays SPAM techniques are much more sophisticated. It is a war between users and spammers. The solution against sophisticated SPAM is even more sophisticated anti-spam software.Todays anti-spam software checks e-mail for more than just keywords. They are checking for specific mail-header data etc. Also a technique called <A
HREF="http://en.wikipedia.org/wiki/Epistemic_probability"
TARGET="_top"
>bayesian</A
> filters which can learn from particular input, distributed checksum networks etc.</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="test.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="t1.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="installing-anti-spam.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Testing the setup</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>The software needed against viruses and SPAM</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>Postfix-Cyrus-Web-cyradm-HOWTO</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
REL="NEXT"
TITLE="Technologies"
HREF="tech.html"><META
http-equiv="Content-Type"
content="text/html; charset="></HEAD
><BODY
CLASS="ARTICLE"
><DIV
CLASS="ARTICLE"
><DIV
CLASS="TITLEPAGE"
><H1
CLASS="TITLE"
><A
NAME="AEN2"
>Postfix-Cyrus-Web-cyradm-HOWTO</A
></H1
><H3
CLASS="AUTHOR"
><A
NAME="AEN4"
>Luc de Louw</A
></H3
><DIV
CLASS="AFFILIATION"
><DIV
CLASS="ADDRESS"
><P
CLASS="ADDRESS"
>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:luc at delouw.ch"
>luc at delouw.ch</A
>&#62;</CODE
><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</P
></DIV
></DIV
><DIV
CLASS="REVHISTORY"
><TABLE
WIDTH="100%"
BORDER="0"
><TR
><TH
ALIGN="LEFT"
VALIGN="TOP"
COLSPAN="3"
><B
>Revision History</B
></TH
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.2.6</TD
><TD
ALIGN="LEFT"
>2004-03-30</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Added minor additions and corrected to amavisd-new, corrected cronjob-time for freshclam</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.2.5</TD
><TD
ALIGN="LEFT"
>2004-03-28</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Added Anti-Virus and SPAM methods (amavisd-new, spamassassin, clamav), updated cyrus-imapd section with update instructions, added instruction to restrict imapd admin access.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.2.4</TD
><TD
ALIGN="LEFT"
>2003-11-30</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Input from English proofreading, minor correction and enhancements from user-input, updated software mentioned in the HOWTO</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.2.3</TD
><TD
ALIGN="LEFT"
>2003-03-24</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Some minor correction and enhancements from user-input, updated software mentioned in the HOWTO</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.2.2</TD
><TD
ALIGN="LEFT"
>2003-02-14</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Lots of grammar and typos fixed. Some corrections to the pam_mysql Makefile</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.2.1</TD
><TD
ALIGN="LEFT"
>2003-02-12</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Non-official test-release: Added lots of fixes and updates. Added OpenSSL and more pam related stuff.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.2.0</TD
><TD
ALIGN="LEFT"
>2002-10-16</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Added lot of user requests, updated the software mentioned in the HOWTO</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.1.7</TD
><TD
ALIGN="LEFT"
>2002-10-15</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Added Michael Muenz' hints for SMTP AUTH, corrected ca-cert related mistake, improved SGML code (more metadata), updated the software mentioned in the document.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.1.6</TD
><TD
ALIGN="LEFT"
>2002-06-14</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Added sasl_mech_list: PLAIN to imapd.conf, added web-cyradm mailinglist, added more
		to web-cyradm</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.1.5</TD
><TD
ALIGN="LEFT"
>2002-06-11</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Added new SQL query to initialize web-cyradm
		to have full data integrity in the MySQL Database, mysql-mydestination.cf reported to be operational as
		expected.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.1.4</TD
><TD
ALIGN="LEFT"
>2002-05-15</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Added description what is needed in /etc/services
		Another fix for pam_mysql compile, updated software versions.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.1.3</TD
><TD
ALIGN="LEFT"
>2002-05-08</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Added more description for web-cyradm, fix for wrong path of the saslauthdb-socket, Fix for
		wrong place of com_err.h, protection of the TLS/SSL private key.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.1.2</TD
><TD
ALIGN="LEFT"
>2002-04-29</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Added description for Redhat users how to install the init scripts.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.1.1</TD
><TD
ALIGN="LEFT"
>2002-04-29</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Fixed bug in configuring cyrus-IMAP (disabled unused kerberos authentication)</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.1.0</TD
><TD
ALIGN="LEFT"
>2002-04-28</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Initial support for building cyrus from source, dropped binary installation
		for Cyrus, because configuration has changed with Release 2.1.x</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.0.2</TD
><TD
ALIGN="LEFT"
>2002-04-25</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Added basic description for sieve and correct sender handling, minor fixes to db related 
		stuff, Added mysql-lookup for »mydestination« , fixed bug for building postfix 
		with mysql support.</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.0.1</TD
><TD
ALIGN="LEFT"
>2002-04-07</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Added an important fix for compiling pam_mysql</TD
></TR
><TR
><TD
ALIGN="LEFT"
>Revision 1.0.0</TD
><TD
ALIGN="LEFT"
>2002-04-07</TD
><TD
ALIGN="LEFT"
>Revised by: ldl</TD
></TR
><TR
><TD
ALIGN="LEFT"
COLSPAN="3"
>Initial Release</TD
></TR
></TABLE
></DIV
><DIV
><DIV
CLASS="ABSTRACT"
><P
></P
><A
NAME="AEN101"
></A
><P
>	This document guides you through the installation of the Postfix mail transportation agent (MTA), 
	the Cyrus IMAP server. The goal is a fully functional high-performance 
	mailsystem with user-administration with Web-cyradm, a webinterface. Data like virtualusers, 
	aliases etc. are stored in a mysql database.
    </P
><P
></P
></DIV
></DIV
><HR></DIV
><DIV
CLASS="TOC"
><DL
><DT
><B
>Table of Contents</B
></DT
><DT
><A
HREF="t1.html#INTRO"
>Introduction</A
></DT
><DT
><A
HREF="tech.html"
>Technologies</A
></DT
><DT
><A
HREF="install.html"
>Getting and installing the software</A
></DT
><DT
><A
HREF="mysql-config.html"
>Configuring MySQL</A
></DT
><DT
><A
HREF="pam-config.html"
>Configuring PAM</A
></DT
><DT
><A
HREF="postfix-config.html"
>Configuring Postfix</A
></DT
><DT
><A
HREF="cyrus-config.html"
>Configuring Cyrus IMAP</A
></DT
><DT
><A
HREF="web-cyradm-config.html"
>Configuring Web-cyradm</A
></DT
><DT
><A
HREF="test.html"
>Testing the setup</A
></DT
><DT
><A
HREF="spam-and-virus-intro.html"
>Fighting against Viruses and SPAM</A
></DT
><DT
><A
HREF="installing-anti-spam.html"
>The software needed against viruses and SPAM</A
></DT
><DT
><A
HREF="moreinfo.html"
>Further Information</A
></DT
><DT
><A
HREF="faq.html"
>Questions and Answers</A
></DT
></DL
></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="INTRO"
>Introduction</A
></H1
><P
>   The cyrus part is only valid for Cyrus-IMAP 2.1.x and Cyrus-SASL 2.1.x. If you plan to use Cyrus-IMAP 2.0.x
   then please consult the deprecated version 1.0.x of this HOWTO.</P
><P
>  I strongly recommend that you upgrade to Cyrus Version 2.1.x. If you do so, you will have a better ability to get
  valuable support from the user community</P
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN111"
>Contributors and Contacts</A
></H2
><P
>First I would thank all those people who sent questions and suggestions that made the
	further development of this document possible. It shows me that sharing knowledge is the right way.
	I would encourage you to send me more suggestion, just write me an email <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:luc at delouw.ch"
>luc at delouw.ch</A
>&#62;</CODE
>
	</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN115"
>Why I wrote this document</A
></H2
><P
>There are different approaches on how to set up different mailsystems. Most documents that are available are
	related to Sendmail, procmail, WU-IMAPd and friends. These packages are very good but are unfortunately very
	inflexible in their user administration.
	</P
><P
>For a long time I was testing alternative MTA's like qmail, postfix and exim, in conjunction with IMAP/POP-servers like 
	Cyrus, vpopmail, Courier IMAP and others.</P
><P
>At the end of the day, from my point of view the couple Postfix/Cyrus seems to be the
	most flexible and best performing solution.</P
><P
>All these combinations of software had one thing in common: their was very little documentation available
	describing how these packages work  together with each other.
	To install the software, lot of effort has be spent to get all information needed to get all the 
	software running.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="COPYRIGHT"
>Copyright Information</A
></H2
><P
>    This document is copyrighted (c) 2002, 2003, 2004 Luc de Louw and is
    distributed under the terms of the Linux Documentation Project
    (LDP) license, stated below. 
   </P
><P
>    Unless otherwise stated, Linux HOWTO documents are
    copyrighted by their respective authors. Linux HOWTO documents may
    be reproduced and distributed in whole or in part, in any medium
    physical or electronic, as long as this copyright notice is
    retained on all copies. Commercial redistribution is allowed and
    encouraged; however, the author would like to be notified of any
    such distributions.
   </P
><P
>    All translations, derivative works, or aggregate works
    incorporating any Linux HOWTO documents must be covered under this
    copyright notice. That is, you may not produce a derivative work
    from a HOWTO and impose additional restrictions on its
    distribution. Exceptions to these rules may be granted under
    certain conditions; please contact the Linux HOWTO coordinator at
    the address given below.
   </P
><P
>    In short, we wish to promote dissemination of this
    information through as many channels as possible. However, we do
    wish to retain copyright on the HOWTO documents, and would like to
    be notified of any plans to redistribute the HOWTOs.
   </P
><P
>    If you have any questions, please contact 
    <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:linux-howto at metalab.unc.edu"
>linux-howto at metalab.unc.edu</A
>&#62;</CODE
>
   </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="DISCLAIMER"
>Disclaimer</A
></H2
><P
>    No liability for the contents of this documents can be accepted.
    Use the concepts, examples and other content at your own risk.
    As this is a new edition of this document, there may be errors
    and inaccuracies, that may of course be damaging to your system.
    Proceed with caution, and although this is highly unlikely,
    the author(s) do not take any responsibility for that.
   </P
><P
>    All copyrights are held by their by their respective owners, unless
    specifically noted otherwise.  Use of a term in this document
    should not be regarded as affecting the validity of any trademark
    or service mark.
   </P
><P
>    Naming of particular products or brands should not be seen 
    as endorsements.
   </P
><P
>    You are strongly recommended to take a backup of your system 
    before major installation and backups at regular intervals.
   </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="NEWVERSIONS"
>New Versions</A
></H2
><P
>New version of this document are announced on freshmeat</P
><P
>    The latest version of this document can be obtained from
    <A
HREF="http://www.delouw.ch/linux"
TARGET="_top"
>http://www.delouw.ch/linux</A
> 
   </P
><P
>   <P
></P
><UL
><LI
><P
>      <A
HREF="http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/html/index.html"
TARGET="_top"
>HTML</A
>.
     </P
></LI
><LI
><P
>      <A
HREF="http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/Postfix-Cyrus-Web-cyradm-HOWTO.ps"
TARGET="_top"
>	Postscript (ISO A4 format)</A
>.
     </P
></LI
><LI
><P
>       <A
HREF="http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/Postfix-Cyrus-Web-cyradm-HOWTO.pdf"
TARGET="_top"
>Acrobat PDF</A
>.
     </P
></LI
><LI
><P
>       <A
HREF="http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/Postfix-Cyrus-Web-cyradm-HOWTO.sgml"
TARGET="_top"
>SGML Source</A
>.
     </P
></LI
><LI
><P
>      <A
HREF="http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/Postfix-Cyrus-Web-cyradm-HOWTO.tar.gz"
TARGET="_top"
>HTML gzipped tarball</A
>.
     </P
></LI
></UL
>
   </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="CREDITS"
>Credits</A
></H2
><P
></P
><UL
><LI
><P
>	Martynas Bieliauskas <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:martynas at inet.lt"
>martynas at inet.lt</A
>&#62;</CODE
> submitted a good idea how to restrict the cyrus admin to localhost only.
	</P
></LI
><LI
><P
>	Michael Muenz <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:m.muenz at maxonline.de"
>m.muenz at maxonline.de</A
>&#62;</CODE
> for his help with SMTP Authentication
	</P
></LI
><LI
><P
>	Ron Wheeler <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:rwheeler at artifact-software.com"
>rwheeler at artifact-software.com</A
>&#62;</CODE
> for his help with editing for readability
	</P
></LI
><LI
><P
>    The nice people at <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto: discuss at tldp.org"
> discuss at tldp.org</A
>&#62;</CODE
> for
    supporting me in writing the HOWTOs.
   </P
></LI
></UL
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="FEEDBACK"
>Feedback</A
></H2
><P
>    Feedback is most certainly welcome for this document. Without
    your submissions and input, this document wouldn't exist. Please
    send your additions, comments and criticisms to the following
    email address : <CODE
CLASS="EMAIL"
>&#60;<A
HREF="mailto:luc at delouw.ch"
>luc at delouw.ch</A
>&#62;</CODE
>.
   </P
><P
>   Please understand, that I don't want to add Cyrus-IMAP 2.0.x related stuff in this document anymore.
   </P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="TRANSLATIONS"
>Translations</A
></H2
><P
>     	At the moment no translations are available. A German translation is planned and would be
     	written by me as soon as I get the time. 
   </P
><P
>	Translations to other languages are always welcome. If you translate this document, please translate the
	SGML source. Please let me know if you begin to translate, so I can set a link here.
   </P
></DIV
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="tech.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Technologies</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>Technologies</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
REL="HOME"
TITLE="Postfix-Cyrus-Web-cyradm-HOWTO"
HREF="t1.html"><LINK
REL="PREVIOUS"
TITLE="Postfix-Cyrus-Web-cyradm-HOWTO"
HREF="t1.html"><LINK
REL="NEXT"
TITLE="Getting and installing the software"
HREF="install.html"><META
http-equiv="Content-Type"
content="text/html; charset="></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Postfix-Cyrus-Web-cyradm-HOWTO</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="t1.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="install.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="TECH"
>Technologies</A
></H1
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="POSTFIX"
>The Postfix MTA</A
></H2
><A
NAME="AEN187"
></A
><TABLE
BORDER="0"
WIDTH="100%"
CELLSPACING="0"
CELLPADDING="0"
CLASS="BLOCKQUOTE"
><TR
><TD
WIDTH="10%"
VALIGN="TOP"
>&nbsp;</TD
><TD
VALIGN="TOP"
><P
>        Postfix attempts to be fast, easy to administer, and secure, while at the same time
        being sendmail compatible enough to not upset existing users. Thus, the outside has a
        sendmail-ish flavor, but the inside is completely different.</P
></TD
><TD
WIDTH="10%"
VALIGN="TOP"
>&nbsp;</TD
></TR
><TR
><TD
COLSPAN="2"
ALIGN="RIGHT"
VALIGN="TOP"
>--<SPAN
CLASS="ATTRIBUTION"
>www.postfix.org</SPAN
></TD
><TD
WIDTH="10%"
>&nbsp;</TD
></TR
></TABLE
><P
>		<DIV
CLASS="FIGURE"
><A
NAME="AEN191"
></A
><P
><B
>Figure 1. Postfix - the big picture</B
></P
><P
><IMG
SRC="big-picture.png"></P
></DIV
>
   	</P
><P
>Doesn't it look impressive? - It looks much more complicated than it is. Postfix is indeed nice
	      to configure and handle.</P
><P
>Unlike sendmail, postfix is not one monolithic program, it is a compilation of small programs, each of
	      which has a specialized function. 
	      At this point I don't what to go into details about what each program does what.
	      If you are interested how Postfix works, please see the documentation at 
	      <A
HREF="http://www.postfix.org/docs.html"
TARGET="_top"
>http://www.postfix.org/docs.html</A
>
	</P
><P
>In this document you will find the information needed to get the system running in conjunction with the other components of a full e-mail setup.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="CYRUS"
>Cyrus IMAP</A
></H2
><P
>Cyrus IMAP is developed and maintained by Carnegie Mellon University.</P
><P
>Unlike the WU-IMAPd package, Cyrus uses its own method to store the user's mail. 
	Each message is stored in its own file. 
	The benefit of using separate files is improved reliability since only one message is lost if there is a filesystem error.
	Metadata such as the status of a message (seen, etc) is stored in a database.
	Additionally, the messages are indexed to improve Cyrus performance, specially with lots of users and/or lots of big emails.
	There is nothing else as fast as the Cyrus IMAP-server.</P
><P
>	Another very important feature is that you don't need a local Un*x user for each account. All users are 
	authenticated by the IMAP-Server. This makes it a great solution when you have a really huge number of users.</P
><P
>	User administration is done by special IMAP-commands. This allows you to either use the commandline interface
	or use one of the available Web interfaces. This method is much more secure than a Webinterface to
	<TT
CLASS="FILENAME"
> /etc/passwd</TT
>.</P
><P
>Starting from Cyrus 2.1, SASL-lib version 2 is used for authentication. 
	For the setup described in this HOWTO, a tree-layer authentication is implemented.
	Cyrus authenticates with saslauthdaemon which forwards the request
	to pam_mysql which finally looks up the user information in the MySQL-table.</P
><P
>	Since CMU changed the license policy for Cyrus, this software is going to be used by many more users.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="SASL"
>Cyrus SASL</A
></H2
><P
>SASL means »Simple Authentication and Security Layer«. It is standardized by the IETF (Internet 
	Engineering Taskforce). SASL is used by network servers (in this case Cyrus-IMAP) to
	handle authentication requests from clients.</P
><P
>Cyrus SASL is a extensive software, and sometimes not	easy to understand.
	Even I have just the minimum knowledge needed to write this HOWTO.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="OPENSSL"
>OpenSSL</A
></H2
><P
>OpenSSL is a library needed by SASL for encryption of the data-stream. It is used by 
	almost all opensource software that need encryption.
	Most or all Un*x distributions come with a pre-installed OpenSSL.
	Be sure to also install the appropriate devel-package. If you like, you can 
	compile OpenSSL by yourself. This will be required if you need to fix a security hole.
	</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="MYSQL"
>MySQL Database</A
></H2
><P
>MySQL is a very fast, powerful and very easy to use database.</P
><P
>Since Cyrus can authenticate its users with pam, you can use pam_mysql as a connector to the
	user database stored in MySQL. This allows you to create a nice Webinterface for your users for changing 
	passwords, defining and deleting aliases and more.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="PAM-MYSQL"
>pam_mysql</A
></H2
><P
>pam means "Pluggable Authentication module" and was originally proposed by some people at Sun.
	In meantime a lot of modules have been developed. One of them is an interface to MySQL</P
><P
>With pam_mysql you store the users password in a MySQL database. Further, Postfix is able to
	lookup aliases from a MySQL-table. At the end of the day, you have a base for all administrative tasks
	to be done by the postmaster.</P
><P
>You will be able to delegate some tasks to powerusers. For example, tasks such as creating accounts, changing passwords and creating new aliases can be delegated to an administrator for a particular domain. 
	At the end of the day, you, as a sysadmin, will have the time to do some more productive tasks or write a HOWTO for the Linux Documentation Project.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="WEB-CYRADM"
>Web-cyradm Webinterface</A
></H2
><P
>                <DIV
CLASS="FIGURE"
><A
NAME="AEN226"
></A
><P
><B
>Figure 2. Web-cyradm Domain administration</B
></P
><P
><IMG
SRC="home.png"></P
></DIV
>
        </P
><P
>Web-cyradm is the webinterface that allows you to perform the administrative tasks required to maintain the mail system.
	This screenshot shows the domain administration part of Web-cyradm.</P
><P
>Web-cyradm is written in PHP, the most sophisticated html-preprocessor language.
        If you don't have a webserver with php installed, I would like to refer you to my
        <A
HREF="http://www.delouw.ch/linux/apache.phtml"
TARGET="_top"
>Apache-Compile-HOWTO</A
>.
        This document describes how to set up Apache with PHP and other modules.</P
><P
>Web-cyradm is under active development from people around the globe. The list of features grows
	with each release. If you would like to contribute to web-cyradm, or you have a nice idea, feel free to contact
	the mailinglist on <A
HREF="http://www.web-cyradm.org"
TARGET="_top"
>http://www.web-cyradm.org</A
>
	</P
><P
>	The following is a partial list of features:
	<P
></P
><UL
><LI
><P
>Administration of multiple virtual domains</P
></LI
><LI
><P
>Setting of quotas</P
></LI
><LI
><P
>Automatically creating usernames, either with a defined prefix, or the domainname</P
></LI
><LI
><P
>Delegation of tasks such as creating new users to »Domain Masters« </P
></LI
><LI
><P
>Mapping of user-accounts to email addresses</P
></LI
><LI
><P
>Forwarding of accounts to single aliases</P
></LI
><LI
><P
>Vacation functions for a single aliases</P
></LI
><LI
><P
>Support for SMTP Transport Tables</P
></LI
><LI
><P
>Support for MySQL and PostgreSQL</P
></LI
><LI
><P
>i18n (internationalization) support (including different charsets)</P
></LI
><LI
><P
>Translated into 18 Languages and growing</P
></LI
></UL
>
	</P
><P
>Web-cyradm supports different roles of its users. 
	If you plan to use it as a frontend for your powerusers, please notice 
	that security may be a problem. The role based stuff needs a security review.
	</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="t1.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="t1.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="install.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Postfix-Cyrus-Web-cyradm-HOWTO</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Getting and installing the software</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>Testing the setup</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
REL="HOME"
TITLE="Postfix-Cyrus-Web-cyradm-HOWTO"
HREF="t1.html"><LINK
REL="PREVIOUS"
TITLE="Configuring Web-cyradm"
HREF="web-cyradm-config.html"><LINK
REL="NEXT"
TITLE="Fighting against Viruses and SPAM"
HREF="spam-and-virus-intro.html"><META
http-equiv="Content-Type"
content="text/html; charset="></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Postfix-Cyrus-Web-cyradm-HOWTO</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="web-cyradm-config.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="spam-and-virus-intro.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="TEST"
>Testing the setup</A
></H1
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="TEST-RUNNING"
>(Re-)Starting the daemons</A
></H2
><P
>Now all the software has been installed and configured. Lets do some testings now. 
First you have to (re-)start all the daemons affected </P
><P
></P
><UL
><LI
><P
>	<B
CLASS="COMMAND"
>postfix start</B
>
     </P
></LI
><LI
><P
>        <B
CLASS="COMMAND"
>/etc/init.d/cyrus start</B
>
     </P
></LI
><LI
><P
>        <B
CLASS="COMMAND"
>/etc/init.d/mysql.server start</B
>
     </P
></LI
><LI
><P
>        <B
CLASS="COMMAND"
>/usr/local/apache/bin/apachectl startssl</B
>
     </P
></LI
></UL
><P
>Hopefully all daemons started without any complaints. Note that this is assuming saslauthd is started 
in the cyrus startup script.</P
><P
>Now you can verify if the daemons are running properly by issuing 
<B
CLASS="COMMAND"
>netstat -an|grep LISTEN</B
></P
><P
>The output should look similar like that:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>bond:~ # netstat -an|grep LISTEN
tcp        0      0 0.0.0.0:993             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:995             0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:110             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:143             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:2000            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN</PRE
></TD
></TR
></TABLE
><P
>The port are assigned like this:</P
><P
></P
><UL
><LI
><P
>	993	imap-ssl
     </P
></LI
><LI
><P
>        995     pop3-ssl
     </P
></LI
><LI
><P
>        3306     mysql
     </P
></LI
><LI
><P
>        110     pop3
     </P
></LI
><LI
><P
>        143     imap
     </P
></LI
><LI
><P
>        2000     sieve
     </P
></LI
><LI
><P
>        80     http
     </P
></LI
><LI
><P
>        25     smtp
     </P
></LI
><LI
><P
>        443     https
     </P
></LI
></UL
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="TESTING-WEB-CYRADM"
>Testing Web-cyradm</A
></H2
><P
>Now you should be able to connect to <A
HREF="http://localhost/web-cyradm/"
TARGET="_top"
>http://localhost/web-cyradm/</A
>
Login with the credentials defined before.</P
><P
>Define a domainname and some accounts. Be sure the domainname belongs to your server. 
If not you have to fake it by enter the domain in <TT
CLASS="FILENAME"
>/etc/hosts</TT
>. 
The domain must also be defined as local in 
<TT
CLASS="FILENAME"
>/etc/postfix/main.cf</TT
> (mydestination = domain)</P
><P
>Please be sure that you are providing a unique domain prefix when adding a new domain. I.e. test for the domain
test.org. If you don't provide such a prefix you will get a error message.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="TESTING-POSTFIX"
>Testing postfix</A
></H2
><P
>Now we are going to write a mail:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>telnet localhost 25
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail ESMTP Postfix

helo localhost
250 mail
mail from: testing at example.com
250 Ok
rcpt to: tester at localhost
250 Ok

data
354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
some text
.
250 Ok: queued as B58E141D33

quit</PRE
></TD
></TR
></TABLE
><P
>If you see such a message, then all seems to work fine. Be sure to specify a recipients 
address you previously defined in the web-cyradm database</P
><P
>If you get an error like this:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>rcpt to: tester at localhost
451 &lt;tester  at localhost&gt;: Temporary lookup failure</PRE
></TD
></TR
></TABLE
><P
>Then either MySQL is not running, DB permission are not set properly or you 
miss-configured <TT
CLASS="FILENAME"
>/etc/postfix/main.cf</TT
></P
><P
>On any errors, I suggest to examine <TT
CLASS="FILENAME"
>/var/log/mail</TT
>. Often you will find 
some hints whats went wrong.</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="TESTING-CYRUS"
>Testing the IMAP functionality</A
></H2
><P
>A lot of users like to test the cyrus-IMAPd with the Command Line Interface (CLI) »cyradm« and they are failing.
To be successful with cyradm, you will need to add the cyrus user to <TT
CLASS="FILENAME"
>/etc/sasldb2</TT
> 
because »cyradm« always authenticates against SASL AND IMAP.</P
><P
>To add the Cyrus user to the sasldb use the command:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>saslpasswd2 -c cyrus
Password: (enter your passwd)
Again (for verification): (enter your password)</PRE
></TD
></TR
></TABLE
><P
>To use the »cyradm« CLI please take care that the tool does not recognize standard CLI-options 
like -u and similar. Please follow the syntax like described in the man page »cyradm 1« like the 
following example:</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>bond:~ # cyradm --user cyrus --server localhost --auth plain
Password: # This is the SASL2 password
IMAP Password: # This is the IMAP password that you need to enter in the mysql-table »accountusers«
localhost&#62;</PRE
></TD
></TR
></TABLE
><P
>With the Cyrus command <B
CLASS="COMMAND"
>help</B
> you will see all possible commands and its abbreviations.</P
><P
>To make that kind of tests. you just need a mailclient like kmail or netscape
(Yes of course, M$-Products are working as well) but in this example I'm using kmail.</P
><DIV
CLASS="FIGURE"
><A
NAME="AEN752"
></A
><P
><B
>Figure 3. Creating a new account</B
></P
><P
><IMG
SRC="imap-account.png"></P
></DIV
><P
>If you enabled TLS/SSL, you may wish to test also the following:</P
><DIV
CLASS="FIGURE"
><A
NAME="AEN756"
></A
><P
><B
>Figure 4. Testing TLS/SSL functionality</B
></P
><P
><IMG
SRC="imap-tls.png"></P
></DIV
><P
>If login fails, and you are sure, you typed the right password, take care that MySQL is running.</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="web-cyradm-config.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="t1.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="spam-and-virus-intro.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Configuring Web-cyradm</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Fighting against Viruses and SPAM</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML
><HEAD
><TITLE
>Configuring Web-cyradm</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
REL="HOME"
TITLE="Postfix-Cyrus-Web-cyradm-HOWTO"
HREF="t1.html"><LINK
REL="PREVIOUS"
TITLE="Configuring Cyrus IMAP"
HREF="cyrus-config.html"><LINK
REL="NEXT"
TITLE="Testing the setup"
HREF="test.html"><META
http-equiv="Content-Type"
content="text/html; charset="></HEAD
><BODY
CLASS="SECT1"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Postfix-Cyrus-Web-cyradm-HOWTO</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="cyrus-config.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="test.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="WEB-CYRADM-CONFIG"
>Configuring Web-cyradm</A
></H1
><P
>First copy the distribution's config file, and create the logfile. The logfile must be owned by the user
that runs the webserver. This is usually the user »nobody« or »wwwrun«.</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>cd /usr/local/apache/htdocs/web-cyradm/config

cp conf.php.dist conf.php

touch /var/log/web-cyradm-login.log
chown nobody /var/log/web-cyradm-login.log</PRE
></TD
></TR
></TABLE
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN645"
>Cyrus setup</A
></H2
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>#The Cyrus login stuff
$CYRUS = array(
        'HOST'  =&#62; 'localhost',
        'PORT'  =&#62; 143,
        'ADMIN' =&#62; 'cyrus',
        'PASS'  =&#62; 'secret'
);</PRE
></TD
></TR
></TABLE
><P
>This should be self-explanatory. Please note there is no support for SSL connections at the moment, 
this is especially important for users that would like to have web-cyradm on a different server
from the server running cyrus-imapd ..</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN649"
>Database setup</A
></H2
><P
>	Since version 0.5.2 web-cyradm uses PEAR as a database abstraction layer. This adds more flexibility. 
	MySQL and PostgreSQL are currently supported. Please note that a patch is required for PostgreSQL 
	because Postfix does not support PostgreSQL natively. I strongly suggest that you use MySQL.
        I know MySQL has some restrictions on transactions and stuff, but it is supported in the distributed Postfix code.
	</P
><P
>The entries should be self explanatory</P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><PRE
CLASS="SCREEN"
>$DB = array(
        'TYPE'  =&#62; 'mysql',
        'USER'  =&#62; 'mail',
        'PASS'  =&#62; 'secret',
        'PROTO' =&#62; 'unix',      // set to "tcp" for TCP/IP
        'HOST'  =&#62; 'localhost',
        'NAME'  =&#62; 'mail'
);</PRE
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN654"
>Default Quota</A
></H2
><P
>	The default quota to be used is set in the variable <VAR
CLASS="VARNAME"
>DEFAULT_QUOTA=20000</VAR
> and is used when 
	creating a new domain</P
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN658"
>Crypted passwords</A
></H2
><P
>Web-cyradm supports the storage of encrypted passwords. I strongly suggest the use of encryption.
	There are three methods supported at the moment: Unix-compatible (crypt), md5 and MySQL.
	The Unix-compatible encryption allows you to import encrypted passwords from an 
	existing <TT
CLASS="FILENAME"
>/etc/shadow</TT
>. This is the preferred option.
	</P
><P
>	Unfortunately, MySQL uses a proprietary encryption method which is only available
	when using MySQL. I'm currently thinking about dropping support for MySQL crypt, because it only
	works with MySQL and makes a migration to another database impossible. As soon as there is a method available
	to re-engineer the MySQL crypt on PHP there will be a solution (Help needed in programming, legal constraints?)
	</P
><P
>Check the variable <VAR
CLASS="VARNAME"
>$CRYPT</VAR
> in the file <TT
CLASS="FILENAME"
>config.inc.php</TT
>. 
	Value »plain« means no encryption, »crypt« means Shadow compatible encryption, 
	mysql means MySQL encryption.</P
><DIV
CLASS="CAUTION"
><P
></P
><TABLE
CLASS="CAUTION"
BORDER="1"
WIDTH="100%"
><TR
><TD
ALIGN="CENTER"
><B
>Choose encryption method carefully</B
></TD
></TR
><TR
><TD
ALIGN="LEFT"
><P
>	Since the supported encryption methods are all one-way encryptions, there will be NO WAY to migrate from
	one to another. Note also, that this is a global variable, it is used for all passwords,
	including the password of the admin users. I STRONGLY suggest the use of Unix Shadow compatible encryption,
	because it makes you independent of any software vendor.
	</P
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="AEN669"
>Usernames</A
></H2
><P
>	There are two username schemes supported which are defined in the variable »DOMAIN_AS_PREFIX«.
	The default is to have a defined prefix ($DOMAIN_AS_PREFIX=0), i.e. »test« for the domain »expample.com«.
	With this scheme, the first user gets the username test0001, the second test0002 and incrementing.
	</P
><P
>The other one is to have usernames like »hans.mueller.example.com«. 
	If that case set $DOMAIN_AS_PREFIX=1</P
><P
>At the moment you can not mix both schemas, evaluate carefully with scheme matches your needs best</P
><P
>If you choose to have $DOMAIN_AS_PREFIX=1, be sure you uncomment the 
	option <VAR
CLASS="OPTION"
>unixhierarchysep: yes</VAR
> like described in <A
HREF="cyrus-config.html#ETC-IMAPD"
>the Section called <I
><TT
CLASS="FILENAME"
>/etc/imapd.conf</TT
></I
></A
></P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="cyrus-config.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="t1.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="test.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Configuring Cyrus IMAP</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Testing the setup</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>
Postfix-Cyrus-Web-cyradm-HOWTO (RedHat 7.2/7.3 optimized)



This Guid explains the installation of the above topic. It only works

with RedHat 7.2 and 7.3. Version 8.0 is currently untested!

It will not cover the configuration, this will be almost the same

of the Main HOWTO from Luc.

So lets start:



--------------------------------------------------------------------------



MySQL (3.23.53)

./configure --prefix=/usr/local/mysql --enable-assembler --with-innodb

make

make install

/usr/local/mysql/bin/mysql_install_db

echo /usr/local/mysql/lib/mysql >> /etc/ld.so.conf

ldconfig

cp /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/init.d/mysqld

ln -s /usr/local/mysql/include/mysql /usr/include/mysql

ln -s /usr/local/mysql/lib/mysql /usr/lib/mysql

useradd -s /dev/null -d /dev/null mysql

chown -R mysql /usr/local/mysql/var

mkdir /var/lib/mysql

chmod 750 /etc/rc.d/init.d/mysqld

/etc/rc.d/init.d/mysqld start

ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock



First start the database and then create the link ! 



-------------------------------------------------------------------------



Cyrus SASL (2.1.10)

./configure --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin \

--sysconfdir=/etc --libdir=/usr/lib --includedir=/usr/include \

--libexecdir=/usr/libexec --mandir=/usr/man --localstatedir=/var --with-pam \

--with-saslauthd=/var/run/saslauthd --with-openssl=/usr/share/ssl \

--enable-login --disable-krb4 --with-plugindir=/usr/lib/sasl2 

make

make install

mkdir /var/run/saslauthd

ldconfig



The Configure-commands will overwrite the Version 1.6.x installed by default 

from RedHat. 



-------------------------------------------------------------------------



pam_mysql 0.5

cd pam_mysql/

make

cp pam_mysql.so /lib/security



This is the same like in Luc's HOWTO, get more info from his Guide!



--------------------------------------------------------------------------



Postfix

groupadd -g 33333 postfix

groupadd -g 33335 postdrop

useradd -u 33333 -g 33333 -d /dev/null -s /bin/false postfix

cd /root/postfix-1.1.12-snaprelease/

make makefiles 'CCARGS=-DHAS_MYSQL -I/usr/local/mysql/include/mysql -DUSE_SASL_AUTH \

-I/usr/include/sasl' 'AUXLIBS=-L/usr/local/mysql/lib/mysql \

-lmysqlclient -lz -lm -L/usr/lib -lsasl2'

make

make install



The CCARGS and AUXLIBS will only work when you've followed the steps

from above, not with LUC's HOWTO!



--------------------------------------------------------------------------



Cyrus-IMAPd

cd cyrus-imapd-2.1.11/

ln -s /usr/bin/perl /usr/bin/perl5

export CPPFLAGS="-I/usr/include/et"

./configure --with-sasl=/usr/lib --with-perl \

--with-auth=unix --with-openssl=/usr/share/ssl

make depend

make

make install



If something went wrong you can also define --with-sasl the directory

where the compiled source is. (e.g. /usr/local/cyrus-sasl-2.1.10/ or where

you "untared" it)

IMPORTANT: Since version 2.1.10 it's required to have "perl5", so create

a link if your interpreter is only called "perl"!



---------------------------------------------------------------------------



PHP + Apache

mkdir /www

useradd -s /dev/null -d /dev/null apache

cd apache_1.3.27/

./configure --prefix=/www

cd ../php-4.2.3/

./configure --with-apache=../apache_1.3.27 --with-mysql=/usr/local/mysql \

--with-config-file-path=/usr/local/etc --enable-track-vars --with-gettext

make && make install

cp php.ini-dist /usr/local/etc/php.ini

cd ../apache_1.3.27/

./configure --prefix=/www --activate-module=src/modules/php4/libphp4.a \

--enable-module=php4

make && make install



I don't use "nobody" user for apache and install it under /www. PHP and

Apache source must be under the same dir, like /usr/local/.

Add to httpd.conf: AddType application/x-httpd-php .php 

And don't forget to set register_globals = On in php.ini !



----------------------------------------------------------------------------



web-cyradm

cd /www/htdocs

rm -rf *

tar xvfz /root/files/web-cyradm-0.5.2.tar.gz

mv web-cyradm-0.5.2/ web

mkdir /var/log/cyradm

touch /var/log/cyradm/web-cyradm.log

touch /var/log/cyradm/web-cyradm-login.log

cd /var/log/cyradm

chown apache.apache web-cyradm*



---------------------------------------------------------------------------



The configuration is almost the same, so get more info from Luc's Guide

(which is great) ! 



That's all, if you have further questions, please send them to 

Luc's mailing list !

Have fun ... 



<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
?>
<!-- #################### editaccount.php start #################### -->
<tr>
	<td width="10">&nbsp; </td>
	<td valign="top">

<?php
if ($authorized) {
	include_once WC_BASE . '/lib/sieve-php.lib.php';
	include_once WC_BASE . '/lib/sieve_strs.php'; 
	$daemon = new sieve($CYRUS['HOST'],"2000", $CYRUS['ADMIN'], $CYRUS['PASS'], $_GET['username']);
	$cyr_conn = new cyradm;
	$cyr_conn->imap_login();
?>

		<h3>
			<?php print _("Email addresses defined for user");?>
			<span style="color: red;">
				<?php echo $_GET['username'];?>
			</span>
		</h3>

		<?php
		$query = "SELECT * FROM virtual WHERE username='".$_GET['username']."'"; # AND alias != '$username'";
		$result = $handle->query($query);
		$cnt = $result->numRows();
		?>

		<table cellspacing="2" cellpadding="0">
			<tr>
				<td class="navi">
					<a class="navilink" href="index.php?action=newemail&amp;domain=<?php echo $_GET['domain'];?>&amp;username=<?php echo $_GET['username'];?>"><?php
					print _("New email address");?></a>
				</td>
			</tr>
		</table>

		<table border="0">
			<tr>
				<th colspan="4">
					<?php print _("action");?>
				</th>
				
				<th>
					<?php print _("Email address");?>
				</th>

				<th>
					<?php print _("Forward");?>
				</th>

				<!--
				<th>
					<?php print _("Username");?>
				</th>
				-->

				<th>
					<?php print _("Quota used");?>
				</th>
			</tr>

<?php
					for ($c=0; $c < $cnt; $c++) {
						if ($c%2==0){
							$cssrow="row1";
						} else {
							$cssrow="row2";
						}
						$row = $result->fetchRow(DB_FETCHMODE_ASSOC, $c);
						$alias = $row['alias'];
?>

					<tr class="<?php echo $cssrow;?>">
					<?php
					$_cols = array(
						'editemail'	=> _("Edit Emailadress"),
						'forwardalias'	=> _("Forward"),
						'vacation'	=> _("Vacation"),
						'deleteemail'	=> _("Delete Emailadress")
					);
					foreach ($_cols as $_action => $_txt){
						?>
						<td align="center" valign="middle">
							<a href="<?php printf("index.php?action=%s&amp;domain=%s&amp;alias=%s&amp;username=%s", $_action, $_GET['domain'], $alias, $_GET['username']); ?>"><?php echo $_txt;?></a>
						</td>
						<?php
					}
					?>

					<td valign="middle">
						<?php echo $alias;?>
					</td>

					<td valign="middle">
					    <?php
                                    		if ($daemon->sieve_login()){
                                            	    $sieve_str = new sieve_strs;
                                            	    $old_script = $sieve_str->get_old_script($daemon);
                                            	    if (preg_match("/redirect \".*$/siU", $old_script, $matches)){
                                                        $forwards_script = $matches[0];
                                                        $forwards_text = '';
                                                        while (preg_match ("/(redirect \")(.*)(\";)(.*$)/siU", $forwards_script, $matches)){
                                                                $forwards_text .= $matches[2].'<br>';
                                                                $forwards_script = $matches[4];
                                                        }
                                                        $forwards_text = rtrim ($forwards_text, ', ');
                                                        if (preg_match ("/keep;/i", $forwards_script, $matches)){
                                                                $forwards_text .= "<b>" . $username . "</b>";
                                                        }
                                            	    } else {
                                                        $forwards_text ='';
							$keep = '';
                                            	    }
                                    		} else {
                                            	    $forwards_text = '';
                                    		}
                        			print $forwards_text;
					    ?>
					</td>

					<?php
					if ($c == 0) {
						?>
						<td valign="middle" rowspan="<?php echo $cnt;?>">
							<?php
							if ($DOMAIN_AS_PREFIX){
								$quota = $cyr_conn->getquota("user/" . $_GET['username']);
							} else {
								$quota = $cyr_conn->getquota("user." . $_GET['username']);
							}

							if ($quota['used'] != 'NOT-SET'){
								$q_used		= $quota['used'];
								$q_total	= $quota['qmax'];
								$q_percent	= 100 * $q_used / $q_total;
								
								printf ("%d MB %s %d MB (%.2f%%)",
									$quota['used']/1024, _("out of"),
									$quota['qmax']/1024, $q_percent);
							} else {
								print _("Quota not set");
							}
							?>
						</td>
						<?php
					}
					?>
				</tr>
<?php

			}
			?>
		</table>
<?php
} else {
?>
		<h3>
			<?php print $err_msg;?>
		</h3>
		<a href="index.php?action=accounts&domain=<?php echo $_GET['domain'];?>"><?php print _("Back");?></a>
<?php
}
?>
	</td>
</tr>

<!-- #################### editaccount.php end #################### -->
<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
?>
<!-- #################### editadminuser.php start #################### -->
<tr>
	<td width="10">&nbsp;</td>
	<td valign="top">

	<?php
	if ($authorized){
		if (empty($_POST['confirmed'])) {
			$query = "SELECT type FROM adminuser WHERE username='".$_GET['username']."'";
			$result = $handle->query($query);
			if (DB::isError($result)) {
				die (_("Database error"));
			}
			$row = $result->fetchRow(DB_FETCHMODE_ASSOC, 0);
			$type = $row['type'];
			?>
			<h3>
				<?php print _("Change admin user for domain");?>
				<span style="color: red;">
					<?php print $_GET['domain']; ?>
				</span>
			</h3>
			<form action="index.php" method="post">
				<input type="hidden" name="action" value="editadminuser">
				<input type="hidden" name="confirmed" value="true">
				<input type="hidden" name="username" value="<?php print $_GET['username'];?>">
				<input type="hidden" name="domain" value="<?php print $_GET['domain'];?>">
				<table>
					<tr>
						<td>
							<?php print _("Accountname");?>
						</td>

						<td>
							<?php print $_GET['username'];?>
						</td>
						</tr>

						<tr>
							<td>
								<?php print _("Admin Type");?>
							</td>

							<td>
								<select class="selectfield" name="newtype">
									<option value="0"
									<?php
									if ($type == 0) {
										# This is NOT a i18n string!
										echo "selected";
									}
									?>
									><?php print _("Superuser");?>
									</option>

									<option value="1"
									<?php
									if ($type == 1) {
										# This is NOT a i18n string!
										echo "selected";
									}
									?>
									><?php print _("Domain Master"); ?>
									</option>
								</select>
							</td>
						</tr>

						<tr>
							<td>
								<?php print _("Password");?>
							</td>

							<td>
								<input
								class="inputfield"
								type="password"
								name="new_password"
								onfocus="this.style.backgroundColor='#aaaaaa'"
								>
							</td>
						</tr>

						<tr>
							<td>
								<?php
								print _("Confirm Password");
								?>
							</td>

							<td>
								<input
								class="inputfield"
								type="password"
								name="confirm_password"
								onfocus="this.style.backgroundColor='#aaaaaa'"
								>
							</td>
						</tr>

						<tr>
							<td>
							<?php
							# For Superusers there is nothing to display
							if ($type == 0) {
								print "<p>";
								print "<h4>";
								print _("Responsible for all domains");
								print "</h4>";
							} else {
								# Query for what domains this admin is already reponsible for
								$query = "SELECT * FROM domainadmin WHERE adminuser='".$_GET['username']."'";
								$result = $handle->query($query);
								if (DB::isError($result)) {
									die (_("Database error"));
								}
								$cnt = $result->numRows();

								if ($cnt > 0) {
									print "<p>";
									print "<h4>";
									print _("Responsible for the following domains:");
									print "</h4>";
									print "</td></tr><tr>";
									for ($i=0; $i<$cnt; $i++) {
										$row = $result->fetchRow(DB_FETCHMODE_ASSOC, $i);
										$resp_domain = $row['domain_name'];
										print "<td>";
										print $resp_domain;
										print "</td>";
										print "<td>";
										print "<input type=\"checkbox\" name=\"resp_domain[$resp_domain]\" checked>";
										print "</td>";
										print "</tr>";
									}
								} else {
									print "<p><h4>";
									print _("No Domain assigned yet");
									print "</h4>";
									print "</td></tr>";
								}
							?>
								<tr>
									<td>
									<?php print _("Add new domain to this admin");?>
									</td>
									<td><input
									class="inputfield"
									type="text"
									name="newdomain"
									value="<?php print $_GET['domain']; ?>"
									onfocus="this.style.backgroundColor='#aaaaaa'">
							<?php
							} # End of if ($type == 0)
							?>
							</td>
						</tr>


						<tr>
							<td colspan="2" align="center">
								<input
								class="inputfield"
								type="submit"
								value="<?php print _("Submit"); ?>"
								>
							</td>
						</tr>
					</table>
			</form>
			<?php
		}
		elseif (!empty($_POST['confirmed'])){
				$query = "SELECT type FROM adminuser WHERE username='".$_POST['username']."'";
				$result = $handle->query($query);
				if (DB::isError($result)) {
					die (_("Database error"));
				}
				$row = $result->fetchRow(DB_FETCHMODE_ASSOC, 0);
				$type = $row['type'];

				if ($type != $_POST['newtype'] || $type = '1') {
					# First delete and set new Domainresponsibilities
					$query = "DELETE FROM domainadmin WHERE adminuser='".$_POST['username']."'";
					$result = $handle->query($query);
					if (DB::isError($result)) {
						die (_("Database error"));
					}
				}
				
				# First admin user related thing we can do is updating the type of the admin
				if ($type != $_POST['newtype']) {
					# Update the type of this admin
					$query = "UPDATE adminuser SET type='".$_POST['newtype']."' WHERE username='".$_POST['username']."'";
					$result = $handle->query($query);
					if (DB::isError($result)) {
						die (_("Database error"));
					}
					
					if ($_POST['newtype']==0){
						# Set responsibility for all domains to superuser
						$query = "INSERT INTO domainadmin (domain_name,adminuser) VALUES ('*','".$_POST['username']."')";
  						$result = $handle->query($query);
						if (DB::isError($result)) {
							die (_("Database error"));
						}
					} else {
						# no responsibility is set for domainadmins by default
					}
				} else { # if admin type remain the same
					# Insert each key in the array "domain" into database again
					if (!empty($_POST['resp_domain'])) {
						foreach ($_POST['resp_domain'] as $key => $r_domain){
							$query = "INSERT INTO domainadmin (domain_name,adminuser) VALUES('$key', '".$_POST['username']."')";
							$result = $handle->query($query);
							if (DB::isError($result)) {
								die (_("Database error"));
							}
						}
					}

					# If there is a new domain to add, lets insert it to the DB
					if (!empty($_POST['newdomain'])){
						$query = "INSERT INTO domainadmin (domain_name,adminuser) VALUES('".$_POST['newdomain']."','".$_POST['username']."')";
						$result = $handle->query($query);
						if (DB::isError($result)) {
							die (_("Database error"));
						}
					}
				}

				# If the password is empty, the password will not be changed at all, but it is not a error
				if (!empty($_POST['new_password'])) {
					$pwd = new password;
					$new_password = $pwd->encrypt($_POST['new_password'], $CRYPT);
					# If the new_password field is not empty and the password matches, update the password
					$query = "UPDATE adminuser SET password='".$new_password."' WHERE username='".$_POST['username']."'";
					$result = $handle->query($query);
					if (DB::isError($result)) {
						die (_("Database error"));
					}
				}
				$_GET['domain'] = $_POST['domain'];
				include WC_BASE . "/adminuser.php";
		} // End of if (empty($_POST['confirmed']))
	} else { // if ($authorized)
		?>
		<h3>
			<?php print $err_msg;?>
		</h3>
		<?php
	} // End of if ($authorized)
	?>
	</td>
</tr>
<!-- #################### editadminuser.php end #################### -->

<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
?>
<!-- #################################### Start editalias.php ################################# -->
<tr>
	<td width="10">&nbsp;</td>

	<td valign="top">
<?php
if ($authorized) {
	if (!empty($_GET['create'])) {
		$_GET['alias'] = $_GET['alias']."@".$_GET['domain'];
	}
	if (!empty($_GET['adddest'])) {
		$query = "INSERT INTO virtual (alias,dest,username) values ('".$_GET['alias']."', '".$_GET['dest']."', '".$_GET['domain']."')";
		$result = $handle->query($query);
		if (DB::isError($handle)) {
			print _("There was an error adding ".$_GET['dest']." to ".$_GET['alias'].".");
		}
	}

	$query = "SELECT dest, username FROM virtual WHERE alias = '".$_GET['alias']."' AND username<>''";
	$result = $handle->query($query);
	$alias_count = $result->numRows($result);

	if (empty($row_pos)) {
		$row_pos = 0;
	}
	$prev = $row_pos-10;
	$next = $row_pos+10;

	if ($row_pos < 10) {
		$prev_url = "#";
	} else {
		$prev_url = "index.php?action=editalias&domain=".$_GET['domain']."&alias=".$_GET['alias']."&row_pos=".$prev;
	}

	if( $next > $alias_count ) {
		$next_url = "#";
	} else {
		$next_url = "index.php?action=editalias&domain=".$_GET['domain']."&alias=".$_GET['alias']."&row_pos=".$next;
	}
?>
	<h3><?php print _("Editing alias"); ?> <font color=red><?php echo $_GET['alias'] ?></font></h3>

	<table cellspacing="2" cellpadding="0">
	<tr>
		<td class="navi"><a href="index.php?action=deletealias&domain=<?php echo $_GET['domain'] ?>&alias=<?php echo $_GET['alias'] ?>"><?php print _("Delete this alias");?></a></td>
		<td class="navi"><a href="index.php?action=aliases&domain=<?php echo $_GET['domain'] ?>"><?php print _("Back to aliases");?></a></td>
		<td class="navi"><a href="<?php echo $prev_url; ?>"><?php print _("Previous 10 entries");?></a></td>
		<td class="navi"><a href="<?php echo $next_url; ?>"><?php print _("Next 10 entries");?></a></td>
	</tr>
	</table>
	<table border=0>
	<tr>
		<th colspan="1"><?php print _("action"); ?></th>
		<th><?php print _("Destination");?></th>
	</tr>

<?php	
	if ($alias_count != 0) {
		for ($c = 0; $c < $alias_count; $c++) {
			if ($c%2==0){
				$cssrow="row1";
			} else {
				$cssrow="row2";
			}
		
			$row = $result->fetchRow(DB_FETCHMODE_ASSOC, $c);
			if ($row['username'] != $_GET['domain']) {
				$action = _("Cannot remove from account");
			} else {
				$action = '<a href="index.php?action=deletealias&domain='.$_GET['domain'].'&alias='.$_GET['alias'].'&dest='.$row['dest'].'">'. _("Remove destination").'</a>';
			}
?>
			<tr class="<?php echo $cssrow; ?>">
				<td><?php echo $action; ?></td>
				<td><?php echo $row['dest']; ?></td>
			</tr>
<?php
		}
	} else {
?>
	<tr>
		<td colspan="4" align="center" bgcolor="#b4c6de"><?php print _("This alias has no destinations");?></td>
	</tr>
<?php
	}
?>
	</table>
	<br>

	<form action="index.php" method="GET">
	<input type="hidden" name="action" value="editalias">
	<input type="hidden" name="domain" value="<?php echo $_GET['domain'];?>">
	<input type="hidden" name="alias" value="<?php echo $_GET['alias'];?>">
	<?php print _("New destination") ?>:
	<input type="text" name="dest" size="30" maxlength="50" class="inputfield" onFocus="this.style.backgroundColor='#aaaaaa'">&nbsp;
	<input name="adddest" value="<?php print _("Submit");?>" class="button" type="submit">&nbsp;
	<input name="reset" value="<?php echo _("Cancel");?>" class="button" type="reset">
	</form>
<?php
} else { // if ($authorized)
?>
	<h3>
		<?php echo $err_msg;?>
	</h3>
	<a href="index.php?action=editalias&domain=<?php echo $_GET['domain'];?>&alias=<?php echo $_GET['alias'];?>"><?php print _("Back");?></a>
<?php
}
?>
	</td>
</tr>
<!-- ##################################### End editalias.php ################################## -->
<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
?>
<!-- #################### editdomain.php start #################### -->
<script>
<!--
	function display(url, nam, width, height) {
                window.open(url,nam,'width=' + width + ',height=' + height + ',screenX=40,screenY=30,resizable=0,scrollbars=no,menubar=no,status=no,location=no,toolbar=no,top=220,left=180');
}
// -->
</script>
<tr>
	<td width="10">&nbsp;</td>
	<td valign="top">
<?php
if ($authorized) {
		if (!empty($_GET['confirmed'])){
				if ($DOMAIN_AS_PREFIX) {
					$_GET['newprefix'] = $_GET['domain'];
				}
				// START Andreas Kreisl : freenames
				if (!empty($_GET['freenames'])){
					$freenames = "YES";
				} else {
					$freenames = "NO";
				}
				if (!empty($_GET['freeaddress'])){
					$freeaddress = "YES";
				} else {
					$freeaddress = "NO";
				}
				// END Andreas Kreisl : freenames
				
				$query_result = true;
				$query = "UPDATE domain SET domain_name='".$_GET['newdomain']."', maxaccounts='".$_GET['maxaccounts']."', quota='".$_GET['quota']."', domainquota='".$_GET['domainquota']."', freenames='".$freenames."',freeaddress='".$freeaddress."', folders='".$_GET['defaultfolders']."', prefix='".$_GET['newprefix']."' WHERE domain_name='".$_GET['domain']."'";
				$result = $handle->query($query);
				if (DB::isError($result)){
					$query_result = false;
				}
				if ($_GET['newdomain'] != $_GET['domain']) {
					// update accounts to be associated to the new domain
					$query = "UPDATE accountuser SET domain_name='".$_GET['newdomain']."' WHERE domain_name='".$_GET['domain']."'";
					$result = $handle->query($query);
					if (DB::isError($result)){
						$query_result = false;
					}

					// update domainadmins to have rights transferred to the new domainname
					$query = "UPDATE domainadmin SET domain_name='".$_GET['newdomain']."' WHERE domain_name='".$_GET['domain']."'";
					$result = $handle->query($query);
					if (DB::isError($result)){
						$query_result = false;
					}

					// update aliases to be associated to the new domain
					$query = "UPDATE virtual SET username='".$_GET['newdomain']."' WHERE username='".$_GET['domain']."'";
					$result = $handle->query($query);
					if (DB::isError($result)){
						$query_result = false;
					}
					// ok, everything ok so far. now let's update all aliases and destinations to the new domainname.					
					$query = "SELECT alias FROM virtual WHERE alias LIKE '%".$_GET['domain']."'";
					$result = $handle->query($query);
					$cnt = $result->numRows();
					
					for($i=0; $i < $cnt; $i++){
						$row = $result->fetchRow();
						$oldalias = $row['alias'];
						$newalias = preg_replace("/".preg_quote($_GET['domain'])."/", $_GET['newdomain'], $oldalias);
						$query = "UPDATE virtual SET alias = '".$newalias."' WHERE alias = '".$oldalias."'";
						$result1 = $handle->query($query);
						$query = "UPDATE virtual SET dest = '".$newalias."' WHERE dest = '".$oldalias."'";
						$result2 = $handle->query($query);
					}
				}
				if ($query_result) {
					?>
					<h3>
						<?php print _("Successfully changed domain");?>:
						<span style="color: red;">
							<?php echo $_GET['domain']; ?>
						</span>
					</h3>
					<?php
					include WC_BASE . "/browse.php";
				} else {
					?>
					<h3>
						<?php print _("Database error, please try again");?>
					</h3>
					<?php
				}
		} elseif (empty($_GET['confirmed'])) {
				$query = "SELECT * FROM domain WHERE domain_name='".$_GET['domain']."'";
				$result = $handle->query($query);
				$row = $result->fetchRow(DB_FETCHMODE_ASSOC, 0);
				$domain = $row['domain_name'];
				$prefix = $row['prefix'];
				$maxaccounts = $row['maxaccounts'];
				$quota = $row['quota']; 
				$domainquota = $row['domainquota'];
				// START Andreas Kreisl : freenames
				$freenames = $row['freenames']; 
				// END Andreas Kreisl : freenames
				$freeaddress = $row['freeaddress'];
				$folders = $row['folders'];
				?>
				<form action="index.php" method="get" name="mainform">

					<input type="hidden" name="action" value="editdomain">
					<input type="hidden" name="confirmed" value="true">
					<input type="hidden" name="domain" value="<?php print $domain ?>">
					<input type="hidden" name="prefix" value="<?php print $prefix ?>">
					<table>
						<tr>
							<td>
								<?php print _("Domainname");?>
							</td>
							
							<td>
								<input class="inputfield"
								type="text" size="30"
								name="newdomain" 
								value="<?php print $domain;?>"
								> <a href="javascript:display('ace.php?newdomain='+document.mainform.newdomain.value+'&charset=<?php echo $charset; ?>','ACE',300,200);">Get ACE string</a>
							</td>
						</tr>
						<?php if ($DOMAIN_AS_PREFIX == 0) { ?>
						<tr>
							<td>
								<?php print _("Prefix");?>
							</td>
							
							<td>
								<input class="inputfield"
								type="text"
								size="30"
								name="newprefix" 
								value="<?php print $prefix; ?>"
								>
							</td>
						</tr>


						<!-- // START Andreas Kreisl : freenames -->
						<tr>
							<td>
								<?php print _("Allow Free Names");?>
							</td>
							
							<td>
								<input class="inputfield"
								type="checkbox"
								name="freenames" 
								<?php 
								if ($freenames == "YES") {
									echo "checked";
								}
								?>
								>
							</td>
						</tr>
						<!-- // END Andreas Kreisl : freenames -->
						<?php
						}
						?>
						<tr>
							<td>
								<?php print _("Allow Free Mail Addresses");?>
							</td>
							
							<td>
								<input class="inputfield"
								type="checkbox"
								name="freeaddress" 
								<?php 
								if ($freeaddress == "YES") {
									echo "checked";
								}
								?>
								>
							</td>
						</tr>

						<tr>
							<td width="150">
								<?php print _("Maximum Accounts");?>
							</td>
							
							<td>
								<input class="inputfield"
								type="text" size="4"
								name="maxaccounts" 
								value="<?php print $maxaccounts; ?>"
								>
							</td>
						</tr>

						<tr>
							<td>
								<?php print _("Default Quota in Kilobytes");?>
							</td>
							
							<td>
								<input class="inputfield"
								type="text" size="15"
								name="quota" 
								value="<?php print $quota; ?>"
								>
							</td>
						</tr>

						<tr>
							<td>
								<?php print _("Quota for Domain in Kilobytes");?>
							</td>
							
							<td>
								<input class="inputfield"
								type="text" size="15"
								name="domainquota"
								value="<?php print $domainquota; ?>"
								> (0 = <?php print _("Quota not set"); ?>)
							</td>
							
						</tr>

						<tr>
							<td colspan="2">
								<b><?php print _("Standard Folders");?></b>
								<?php echo "<br>";
								print _("Forders which are automaticaly created for every new account (comma separated list)");?>
							</td>
						</tr> 
						
						<tr>
							<td colspan="2">
								<input class="inputfield"
								type="text" size="80"
								name="defaultfolders"
								value="<?php print $folders; ?>"
								>
							</td>
						</tr>
					</table>

						<tr>
							<td colspan="2" align="center">
								<input 
								class="button" 
								type="submit" 
								value="<?php print _("Submit"); ?>"
								>
							</td>
						</tr>

					</table>
				</form>
				<?php
		} // End of if (empty($confirmed))
	} else {
		?>
		<h3>
			<?php print $err_msg;?>
		</h3>
		<a href="index.php?action=browse"><?php print _("Back");?></a>
		<?php
	} // End of if ($authorized)
	?>
	</td>
</tr>
<!-- #################### editdomain.php end #################### -->

<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
?>
<!-- #################### editemail.php start #################### -->
<tr>
	<td width="10">&nbsp; </td>
	<td valign="top" align="left" style="border: 0px dashed green;">

<?php
if ($authorized){
	$query = "SELECT * FROM domain WHERE domain_name='".$_GET['domain']."'";
	$result = $handle->query($query);
	$row = $result->fetchRow(DB_FETCHMODE_ASSOC, 0);
	$freeaddress=$row['freeaddress'];

	$query = "SELECT * FROM virtual WHERE alias='".$_GET['alias']."'";
	$result = $handle->query($query);
	$row = $result->fetchRow(DB_FETCHMODE_ASSOC, 0);
	$alias = $row['alias'];

	if (!empty($_GET['confirmed']) && empty($_GET['cancel'])) {
		if ($freeaddress!="YES") {
			$query = "UPDATE virtual SET alias='".$_GET['newalias']."@".$_GET['domain']."', dest='".$_GET['newdest']."' WHERE alias='".$alias."' AND username='".$_GET['username']."'";
		} else {
			$query = "UPDATE virtual SET alias='".$_GET['newalias']."@".$_GET['aliasdomain']."', dest='".$_GET['newdest']."' WHERE alias='".$alias."' AND username='".$_GET['username']."'";
		}
		$result = $handle->query($query);
		if (!DB::isError($result)){
?>
			<h3>
				<?php print _("Successfully changed");?>
			</h3>
			<?php
		} else {
			?>
			<p>
				<?php print _("Database error, please try again");?>
			</p>
			<?php
		}
		include WC_BASE . "/editaccount.php";
	} elseif (!empty($_GET['cancel'])) {
		include WC_BASE . "/editaccount.php";
	} else {
		$alias_orig = spliti('@',$alias,2);
		$aliasname = $alias_orig[0];
		$aliasdomain = $alias_orig[1];
		$dest = $row['dest'];
		$username = $row['username'];
		if ($freeaddress!="YES") {
			$alias_new = $aliasname . "@" . $_GET['domain'];
			if ($alias_new != $alias) {
				die ("<b>" . _("You can't edit this email address with 'Allow Free Mail Addressess' set to off!") . "</b>");
			}
		}
?>
				<h3>
                                        <?php print _("Edit emailadress for user");?>:
                                        <span style="color: red;">
                                                <?php echo $_GET['username'];?>
                                        </span>
                                </h3>
				<form action="index.php" method="get">

					<input type="hidden" name="action" value="editemail">
					<input type="hidden" name="confirmed" value="true">
					<input type="hidden" name="domain" value="<?php echo $_GET['domain']; ?>"> 
					<input type="hidden" name="alias" value="<?php echo $alias; ?>">
					<input type="hidden" name="username" value="<?php echo $username;?>">

					<table>

						<tr>
							<td>
								<?php print _("Emailadress");?>
							</td>

							<td>
								<input class="inputfield" 
								type="text" size="30" 
								name="newalias" 
								value="<?php echo $aliasname;?>">
								<?php
								    if ($freeaddress!="YES") {
									echo "@" . $_GET['domain'];
								    } else {
									    echo "@";
								?>
									<input class="inputfield"
									type="text" size="20"
									name="aliasdomain"
									value="<?php echo $aliasdomain;?>">
								<?php
								    }
								?>
							</td>
						</tr>

						<tr>
							<td width=150>
								<?php print _("Destination");?>
							</td>

							<td>
								<input class="inputfield"
								type="text" size="30"
								name="newdest" value="<?php echo $dest;?>">
							</td>
						</tr>


						<tr>
							<td>
								<input class="button" type="submit"
                                                                value="<?php print _("Submit");?>">

                                                                <input class="button" type="submit"
                                                                name="cancel" value="<?php print _("Cancel"); ?>">
							</td>
						</tr>

					</table>
				</form>
				<?php
			} // End of if (empty($confirmed))
		} else {
			?>
			<h3>
				<?php echo $err_msg;?>
			</h3>
			<a href="index.php?action=editaccount&domain=<?php echo $_GET['domain'];?>&username=<?php echo $_GET['username'];?>"><?php print _("Back");?></a>
			<?php
		} // End of if ($authorized)
		?>
	</td>
</tr>

<!-- #################### editemail.php end #################### -->

<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));

include WC_BASE . "/config/conf.php";
include WC_BASE . "/lib/nls.php";

$browserlang=explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
if (isset($_GET['LANG'])) {
	// Use Language setting from session
	$LANG = $_GET['LANG'];
} elseif (isset($nls['aliases'][substr($browserlang[0], 0, 2)])) {
	// Get language from the browser
	$LANG = $nls['aliases'][substr($browserlang[0], 0, 2)];
} else {
	// Fall back to default language
	$LANG = $DEFAULTLANG;
	$LANG = $nls['aliases'][substr($DEFAULTLANG,0,2)];
}
$charset = isset($nls["charsets"][$LANG])?$nls["charsets"][$LANG]:'iso-8859-1';

header('Vary: Accept-Language');
header('Content-type: text/html; charset=' . $charset);
#include WC_BASE . "/header.inc.php";
setlocale(LC_MESSAGES, "$LANG");
putenv("LANG=$LANG");
putenv("LANGUAGE=$LANG");

setlocale(LC_ALL, $LANG);

// Specify location of translation tables
bindtextdomain("web-cyradm", "./locale");

// Choose domain
textdomain("web-cyradm");


?>
<html>
	<head>
		<title>Web-cyradm</title>
		<meta http-equiv="Content-Type" content="text/html; charset=<?php print $charset;?>">
	</head>
	<body bgcolor="#FFFFFF" text="#000000" style="margin: 0;">
	<table width="100%" border="0" style="height: 100%;">
		<tr>
			<td align="center" valign="middle">
				<table width="450" border="0" 
				cellpadding="1" cellspacing="1"
				style="height: 150px;">
					<tr>
						<td bgcolor="#000000">
							<table border="0" bgcolor="#FFFFFF" 
							cellpadding=0 cellspacing=0 width=450 
							style="height: 150px;">
								<tr>
									<td bgcolor="#000666" 
									style="font-family: Verdana, Arial, sans-serif; color: #ffffff; font-weight: bold;">
										Web-cyradm
									</td>
								</tr>
								
								<tr>
									<td>&nbsp;</td>
								</tr>
								
								<tr>
									<td>
										<p align="center" 
										style="font-family: Verdana, Arial, sans-serif; color: #000; ">
											<?php print _("Login failed");?>
										</p>

										<p align="center"
										style="font-family: Verdana, Arial, sans-serif; color: #000; font-weight: bold;">
											<?php print _("This is only for authorized users");?>
										</p>

										<p align="center"
										style="font-family: Verdana, Arial, sans-serif; color: #000; ">
											<?php print _("If you like to login click"); ?>
											<a class="navi" href="index.php"><?php
											print _("here");
											?></a>
										</p>
									</td>
								</tr>

								<tr>
									<td>&nbsp;</td>
								</tr>
							</table>
						</td>
					</tr>
				</table>
			</td>
		</tr>
	</table>
	</body>
</html>
<?php
/*
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
*/
?>
<!-- ######################## beginning of footer ################ -->
<!-- 				</td> 
			</tr> -->
			<tr>
				<td height="5" valign="bottom" class="footer" bgcolor="#CCCCCC">&nbsp;</td>
				
				<td height="5" valign="bottom" class="footer" bgcolor="#CCCCCC">
					&copy; 2002-2006 by Luc de Louw | 
					 <a href="http://www.web-cyradm.org"
					target="_new">http://www.web-cyradm.org</a> | <?php print _("translated by: ").$nls['translator']["$LANG"]; ?> | you are running web-cyradm Version <?php print $VERSION; ?>
				</td>
			</tr>
		</table>
	</body>
</html>
<!-- ######################## end of footer #################### -->
<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
?>
<!-- #################### forwardaccount.php start #################### -->
<tr>
	<td width="10">&nbsp;</td>
	<td valign="top">
<?php
if ($authorized){
	if (!empty($_GET['confirmed'])) {
		if (!empty($_GET['setforward']) && $_GET['setforward'] == "1") {
			// delete all first
			$query = "DELETE FROM virtual WHERE alias='".$_GET['username']."' AND username=''";
			$result = $handle->query($query);
			$forwards = explode("\n", $_GET['forwardto']);
			reset($forwards);
			$query = "INSERT INTO virtual (alias,dest) VALUES ('".$_GET['username']."', '";
			$q = array();
			while (list(, $forward) = each($forwards)) {
				// insert new forwards
				$q[] = substr(trim($forward), 0, 255);
			}
			if (!empty($_GET['metoo'])){
				$keep = ' checked ';
				$q[] = $_GET['username'];
			} else {
				$keep = '';
			}
			$query .= implode(',', $q)."')";
			$result = $handle->query($query);
			$msg = _("Forward set");
		} elseif (!empty($_GET['setforward']) && $_GET['setforward'] == "2") {
			$query = "DELETE FROM virtual WHERE alias='".$_GET['username']."' AND username=''";
			$result = $handle->query($query);
			$msg = _("Forwarding removed");
		}
	}

	$query = "SELECT * FROM virtual WHERE alias='".$_GET['username']."' AND username=''";
	$result = $handle->query($query);
	$cnt = $result->numRows();
	if ($cnt) {
		$row = $result->fetchRow(DB_FETCHMODE_ASSOC, 0);
		$forw_is_set = 1;
	} else {
		$forw_is_set = 0;
	}
	if (!empty($msg)){
?>
				<span style="color: red;">
					<?php echo $msg;?>
				</span>
<?php
	}
?>
			<h3>
				<?php print _("Forward for account");?>
				<span style="color: red;">
					<?php echo $_GET['username'];?>
				</span>
			</h3>
			<form action="index.php" method="get">
				<input type="hidden" name="action" value="forwardaccount">
				<input type="hidden" name="confirmed" value="true">
				<input type="hidden" name="domain" value="<?php echo $_GET['domain'];?>">
				<input type="hidden" name="username" value="<?php echo $_GET['username'];?>">
				<table>
					<tr>
						<td>
							<input type="radio"
							name="setforward"
							value="1"<?php 
							echo ($forw_is_set)?' checked':'';?>
							>
							<?php 
							echo _("Set forwarding to (one adress per line)");
							?>
							:
						</td>
					</tr>

					<tr>
						<td>
							<textarea name="forwardto" class="inputfield" cols="60" rows="5"><?php
							if ($forw_is_set){
								$forwards_tmp = preg_split('|,\s*|', stripslashes($row['dest']));
								$forwards = array();
							        $keep = '';
								while (list(, $forward) = each($forwards_tmp)){
									// If a mail is to be kept on the server,
									// the $row[dest] also contains the $username
									// -> filter it out
									if (strtolower($forward) != strtolower($_GET['username'])){
										$forwards[] = htmlspecialchars(trim($forward));
									} else {
									       $keep = ' checked ';
								        }
								}
								echo implode("\n", $forwards);
							}
							?></textarea>
							
							<br>
							<input type="checkbox"
							name="metoo" 
							<?php echo (!empty($keep))?($keep):('');?>
							>
							<?php print _("Keep a copy in the user's mailbox");?>
							<br>
							<br>
						</td>
					</tr>

					<tr>
						<td>
							<input type="radio" 
							name="setforward" 
							value="2"<?php 
							echo (!$forw_is_set)?' checked':'';
							?>
							><?php 
							echo _("Remove forwarding");
							?>
						</td>
					</tr>
				</table>
				
				<input class="button"
				type="submit"
				value="<?php echo _("Submit");?>"
				>
				
				<input class="button"
				type="reset"
				value="<?php echo _("Cancel");?>"
				>
			</form>
<?php
} else {
?>
			<h3>
				<?php print $err_msg;?>
			</h3>
			<a href="index.php?action=accounts&domain=<?php echo $_GET['domain'];?>"><?php print _("Back");?></a>
<?php
}
?>
	</td>
</tr>

<!-- #################### forwardaccount.php end #################### -->

<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
?>
<!-- #################### forwardalias.php start #################### -->
<tr>
	<td width="10">&nbsp;</td>
	<td valign="top">

<?php
if ($authorized){
		if (!empty($_GET['confirmed']) && empty($_GET['cancel'])){
			include_once WC_BASE . '/lib/sieve-php.lib.php';
			include_once WC_BASE . '/lib/sieve_strs.php';
			$daemon = new sieve($CYRUS['HOST'],"2000", $CYRUS['ADMIN'], $CYRUS['PASS'], $_GET['username']);
				switch ($_GET['mode']){
				case 'set':
					if ($daemon->sieve_login()){
						$sieve_str = new sieve_strs;
						$forwards_script ='';
						$forwardwhere = $_GET['forwards'];
						while (preg_match ("/(.*),(.*$)/U",$forwardwhere, $matches)){
							$forwards_script .= 'redirect "' . trim($matches[1]) . '";'."\n";
							$forwardwhere = $matches[2];
						}
						$forwards_script .= 'redirect "' . trim($forwardwhere) . '";';
						if (!empty($_GET['metoo']) && $_GET['metoo'] == 'on'){
							$forwards_script .= "\nkeep;";
						}
						$forwards_script .= "\n";
						$old_script = $sieve_str->get_old_script($daemon);

						// vacation is the first rule.
						if (preg_match ("/(require.*)(redirect \"|$)/Uis", $old_script, $matches)){
							$vacation_script = $matches[1];
						} else {
							$vacation_script = '';
						}
						$script = $vacation_script.$forwards_script;
						if ($daemon->sieve_sendscript('sieve', $script) &&
						  $daemon->sieve_setactivescript('sieve')) {
							$_msg = _("Forward set");
						} else {
							$_msg = _("Failure in setting forward");
						}
					} else {
						$_msg = _("Wrong password");
					}
					?>
					<span style="font-size: large; font-weight: medium;">
						<?php echo $_msg;?>
					</span>
					<?php
					break;

				case 'unset':
					if ($daemon->sieve_login()){
						$sieve_str = new sieve_strs;
						$old_script = $sieve_str->get_old_script($daemon);
						if (preg_match("/(require \".*)(redirect \"|$)/Uis",$old_script,$matches)){
							$vacation_script = $matches[1];
							if ($daemon->sieve_sendscript('sieve', $vacation_script)){
								$_msg = _("Forwarding removed");
							} else {
								$_msg = _("Failure in removing forwarding");
							}
						} else {
							if ($daemon->sieve_listscripts() !== FALSE){
								if (in_array('sieve', $daemon->response)){
									if ($daemon->sieve_deletescript('sieve')) {
										$_msg = _("Forwarding removed");
									} else {
										$_msg = _("Failure in removing forwarding");
									}
								} else {
									// TODO: Comeup with a better message here...
									$_msg = _("Forwarding removed");
								}
							} else {
								// TODO: ... and comeup with a better message here.
								$_msg = _("Forwarding removed");
							}
						}
					} else {
						$_msg = _("Failed to login");
					}
					?>
					<span style="font-size: large; font-weight: medium;">
						<?php echo $_msg;?>
					</span>
					<?php
					break;

				default:
					?>
					<span style="font-size: large; font-weight: medium;">
						<?php print _("Not possible");?>
					</span>
					<?php
					break;
				}
				include WC_BASE . "/editaccount.php";
			} elseif (!empty($_GET['confirmed']) && !empty($_GET['cancel'])) {
				include WC_BASE . "/editaccount.php";
			} elseif (empty($_GET['confirmed'])){
				include_once WC_BASE . '/lib/sieve-php.lib.php';
				include_once WC_BASE . '/lib/sieve_strs.php';
				$daemon = new sieve($CYRUS['HOST'],"2000", $CYRUS['ADMIN'], $CYRUS['PASS'], $_GET['username']);
    				$query = "SELECT * FROM domain WHERE domain_name='".$_GET['domain']."'";
				$result = $handle->query($query);
				$row = $result->fetchRow(DB_FETCHMODE_ASSOC, 0);
				$freeaddress = $row['freeaddress'];
				if ($freeaddress!="YES") {
					$aliasname = spliti("@",$_GET['alias'],2);
					$aliasname = $aliasname[0];
					$alias_new = $aliasname."@".$_GET['domain'];
					if ($alias_new != $_GET['alias']) {
						die ("<b>" . _("You can't forward this email address with 'Allow Free Mail Addressess' set to off!") . "</b>");
    					}
				}
				?>

				<h3>
					<?php print _("Forward for emailadress");?>
					<span style="color: red;">
						<?php echo $_GET['alias']; ?>
					</span>
				</h3>

				<form action="index.php" method="get" style="border: 0px dashed blue;">

					<input type="hidden" name="action" value="forwardalias">
					<input type="hidden" name="confirmed" value="true">
					<input type="hidden" name="domain" value="<?php print $_GET['domain']; ?>"> 
					<input type="hidden" name="alias" value="<?php print $_GET['alias']; ?>"> 
					<input type="hidden" name="username" value="<?php echo $_GET['username'];?>">

					<?php
					if ($daemon->sieve_login()){
						$sieve_str = new sieve_strs;
						$old_script = $sieve_str->get_old_script($daemon);
						if (preg_match("/redirect \".*$/siU", $old_script, $matches)){
							$forwards_script = $matches[0];
							$forwards_text = '';
							while (preg_match ("/(redirect \")(.*)(\";)(.*$)/siU", $forwards_script, $matches)){
								$forwards_text .= $matches[2].', '; 
								$forwards_script = $matches[4];
							}
							$forwards_text = rtrim ($forwards_text, ', ');
							if (preg_match ("/keep;/i", $forwards_script, $matches)){
								$keep = 'checked';
							} else {
								$keep = '';
							}
						} else {
							$forwards_text ='';
							$keep = '';
						}
					} else {
						$forwards_text = '';
					}
					?>

					<br>

					<input type="radio" name="mode" value="set"
					checked><?php print _("Set forwarding to") . " " . _("(Seperate multiple values with ,)") ?>:

					<input class="inputfield" type="text"
					name="forwards" value="<?php print $forwards_text;?>" size="50"><br>
					
					<input type="checkbox" name="metoo" 
					<?php print $keep."> "._("Keep a copy in the user's mailbox");?><br>
					<br>
					
					<input type="radio" name="mode"
					value="unset"><?php
					print _("Remove forwarding");?><br>
					<br>
					<br>

					<input class="button" type="submit"
					value="<?php print _("Submit")?>">

					<input class="button" name="cancel"
					type="submit"
					value="<?php print _("Cancel");?>"> 
				</form>
				<?php
			} // End of if (empty($confirmed))
} else {
?>
			<h3>
				<?php echo $err_msg;?>
			</h3>
			<a href="index.php?action=editaccount&domain=<?php echo $_GET['domain'];?>&username=<?php echo $_GET['username'];?>"><?php print _("Back");?></a>
<?php
}
?>
	</td>
</tr>

<!-- #################### forwardalias.php end #################### -->

<?php
/*
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
        header("Location: index.php");
	exit();
}
*/
include WC_BASE . "/lib/nls.php";
$charset = isset($nls["charsets"][$LANG])?$nls["charsets"][$LANG]:'iso-8859-1';

header('Vary: Accept-Language');
header('Content-type: text/html; charset=' . $charset);

if (!isset($_SESSION['style'])){
	$_SESSION['style'] = "default";
}

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<!-- #####################################  Begin header ############################################ -->
<html>
	<head>
		<title>
			Web-cyradm
		</title>
		<meta http-equiv="Content-Type" content="text/html; charset=<?php print $charset;?>">
		<link rel="stylesheet" href="css/<?php print $_SESSION['style'];?>.css" type="text/css">
	</head>

	<body style="margin: 0px;">
	<table width="100%" border="0" cellspacing="0" cellpadding="0" style="height: 100%;">
		<tr>
			<td colspan="2" height="80" class="banner" bgcolor="#CCCCCC"><img 
			src="images/banner.gif" width="780" height="80" usemap="#Map" border="0"
			alt="web-cyradm" title="">
				<map name="Map">
					<area shape="rect" coords="689,2,767,15" 
					href="mailto:luc at delouw.ch"
					alt="send mail to luc at delouw.ch">
				</map>
			</td>
		</tr>
		
		<tr>
			<td width="10">&nbsp;</td>

			<td valign="middle" height="45">

<!--  <tr>
        <td width="10">&nbsp; </td>
        <td valign="top"> -->

<!-- ########################################## End header ############################################## -->

<?php

function getmicrotime(){
    list($usec, $sec) = explode(" ",microtime());
    return ((float)$usec + (float)$sec);
}

function get_var_dump(&$var, $name = NULL){
	ob_start();
	echo '<pre class="varDump" style="color: black; background-color: silver; font-family: monospace; border: 2px dotted red; display: block;">';
	if ($name !== NULL){
		echo $name . ":\n";
	}
	var_dump($var);
	echo '</pre>';
	$ret = ob_get_contents();
	ob_end_clean();

	return $ret;
}

if (file_exists("./migrate.php")){
	die(_("migrate.php exists! please delete or rename it"));
}

define('WC_BASE', dirname(__FILE__));

$wc_configured = @file_exists(WC_BASE . '/config/conf.php');

if ($wc_configured){
	@include "DB.php";
	if (!class_exists("DB")) {
		die("Can't find PEAR:DB extension.");
	}
	#require "DB.php";
	include WC_BASE . "/config/conf.php";
	include WC_BASE . "/lib/nls.php";
	include WC_BASE . "/lib/crypto.php";
	include WC_BASE . "/lib/log.php";

	if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
		$browserlang = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
	} else {
		$browserlang = 'en_EN';
	}
	require_once WC_BASE . "/session.php";

	// 1nd) If there is a language setting in the session, use this instead
	// 2st) Try to get the language from the browser
	// 3rd) If none of the above is true, use the default language
	if (isset($_SESSION['LANG'])){
		// Use Language setting from session
		$LANG = $_SESSION['LANG'];
	}
	elseif (isset($nls['aliases'][substr($browserlang[0], 0, 2)])){
                // Get language from the browser
              $LANG = $nls['aliases'][substr($browserlang[0], 0, 2)];

	} else {
		// Fall back to default language
		//$LANG = $DEFAULTLANG;
		$LANG = $nls['aliases'][substr($DEFAULTLANG,0,2)];
	}

	// For testing porpose, GET variable LANG overrides all
//	$LANG = (! empty($_GET['LANG']))?($_GET['LANG']):($LANG);

	if (isset($_GET['LANG'])){
		$LANG=$_GET['LANG'];
	}
	
	if (isset($_SESSION['init'])) {
		include WC_BASE . "/init.php";
	}
	include WC_BASE . "/header.inc.php";

	setlocale(LC_MESSAGES, $LANG);
	setlocale(LC_ALL, $LANG);
	putenv("LANG=" . $LANG);
	putenv("LANGUAGE=" . $LANG);

	// Specify location of translation tables
	bindtextdomain("web-cyradm", "./locale");

	// Choose domain
	textdomain("web-cyradm");

	if ($_SESSION['session_ok'] === TRUE) {
		require WC_BASE . "/validate.inc.php";
		if (empty($_GET['action']) || $_GET['action'] != 'logout') {
			require WC_BASE . "/menu.inc.php";
		}
		require WC_BASE . "/lib/cyradm.php";

//		if (empty($_GET['domain']) && (empty($_GET['action']) || (! in_array($_GET['action'], array('logout', 'adminuser', 'newdomain', 'editadminuser', 'newadminuser', 'search'))))){

		if (!isset($action) OR
		    empty($domain) AND !in_array($action, array('logout', 'adminuser', 'editadminuser',
		   						'deleteadminuser', 'newadminuser',
								'search', 'settings', 'changeadminpasswd',
								'display','browse'))){
			include WC_BASE . "/welcome.php";
		} else {

			# Only allow defined actions and include them

			if (isset($_GET['action']) AND
			    in_array($_GET['action'], array('logout', 'browse', 'editdomain', 'manageaccount',
							    'newdomain', "deletedomain",
							    "adminuser", "newadminuser",
							    "editadminuser", "deleteadminuser",
							    "editaccount", "newaccount",
							    "deleteaccount", "vacation",
							    "forwardalias", "forwardaccount",
							    "newemail", "deleteemail",
							    "editemail", "aliases", "newalias",
							    "editalias", "deletealias", "search",
							    "delete_catchall", "settings",
							    "changeadminpasswd", "display"))){
				include sprintf('%s/%s.php', WC_BASE, $_GET['action']);
			}

			# For password related stuff we also need to allow POST vars for some actions

			else if (isset($_POST['action']) AND
				 in_array($_POST['action'], array('newaccount', 'manageaccount',
				 				  'newadminuser', 'editadminuser',
								  'changeadminpasswd'))){
				include sprintf('%s/%s.php', WC_BASE, $_POST['action']);
			}
			else {
				switch ($_GET['action']){
					case "accounts":
						include WC_BASE . "/browseaccounts.php";
						break;

					case "catch":
						include WC_BASE . "/catchall.php";
						break;

					default:
						include WC_BASE . "/browse.php";
						break;
				}
			}


		}
		include WC_BASE . "/footer.inc.php";
	} else {
		include WC_BASE . "/login.php";
	}
} else {

	print "<h1>";
	print _("web-cyradm has not yet been configured");
	print "</h1>";
	print "<p>";
	print _("Configuration steps:");
	print "<ul><li>";
	print _("copy the config file that comes with the distribution: ");
	print "<b>cp config/conf.php.dist config/conf.php</b>";
	print "</li><li>";
	print _("Edit the file config/conf.php to match your systems configuration");
	print "</ul>";
	print _("Further information about how to configure Web-cyradm can be found at the following website:");
	print "<br><a href=\"http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/html/index.html\" target=_new>Postfix-Cyrus-Web-cyradm-HOWTO</a>";
	die();
}

<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}

# Connecting to database
$handle =& DB::connect($DB['DSN'],true);
if (DB::isError($handle)) {
	die (_("Database error"));
}

#### Getting admin settings
$query = "SELECT * FROM settings WHERE username='".$_SESSION['user']."'";
$result = $handle->query($query);
if (DB::isError($result)) {
	die (_("Database error").": "._("Check scripts/upgrade-*.sql files."));
}
$row = $result->fetchRow(DB_FETCHMODE_ASSOC, 0);
$_SESSION['style'] = $row['style'];
$_SESSION['warnlevel'] = $row['warnlevel'];

$_SESSION['domain_row_pos'] = 0;
$_SESSION['maxdisplay'] = $row['maxdisplay'];
$_SESSION['domain_orderby'] = 'domain_name';
$_SESSION['domain_orderby_desc'] = 'asc';

$_SESSION['account_row_pos'] = 0;
$_SESSION['account_maxdisplay'] = $_SESSION['maxdisplay'];

##### Getting admin privilages
# Check if admin has any domain to administrate.
# Superuser has always 1 entry.
$query = "SELECT * FROM domainadmin WHERE adminuser='".$_SESSION['user']."'";
$result = $handle->query($query);
$cnt = $result->numRows();

if (!$cnt){
	print _("Security violation detected, attempt logged");
	logger(sprintf("SECURITY VIOLATION %s %s %s %s %s%s", $_SERVER['REMOTE_ADDR'], $_SESSION['user'], $_SERVER['HTTP_USER_AGENT'], $_SERVER['HTTP_REFERER'], $_SERVER['REQUEST_METHOD'], "\n"),"WARN");
	include WC_BASE . "/logout.php";
	die ();
}

# We check and remember admin type (superuser or domain admin).
$query2 = "SELECT * FROM adminuser WHERE username='".$_SESSION['user']."'";
$result2 = $handle->query($query2);
$row = $result2->fetchRow(DB_FETCHMODE_ASSOC, 0);
$_SESSION['admintype'] = $row['type'];

# We check and remember list of domains for domain admin
if ($_SESSION['admintype'] != 0){
	$allowed_domains = array();
	
	for ($i=0; $i < $cnt; $i++){
		$row=$result->fetchRow(DB_FETCHMODE_ASSOC, $i);
		$allowed_domains[] = $row['domain_name'];
	}
	$_SESSION['allowed_domains'] = $allowed_domains;
	#Fix me: It's unnecessary (duplicated with "if (!$cnt)").
	if (sizeof($allowed_domains)==0){
		print _("Security violation detected, attempt logged");
		include WC_BASE . "/logout.php";
		die ();
	}
}
unset($_SESSION['init']);
?>
<?php
#  lib for handling crypted passwords
#  Part of the web-cyradm project 
# 
#  See http://www.web-cyradm.org
#
#  Copyright (C) 2002 by Luc de Louw <luc@delouw.ch>
#
#  License: GNU GPL
#
#
class password{

	var $table;
	var $username;
	var $userinput;
	var $newpassword;
	var $encryption;

	// Check if supplied password is valid

	function check($table, $username, $userinput, $encryption){
		include WC_BASE . "/config/conf.php";
		if (!class_exists("DB")) include "DB.php";

		    $query = "SELECT password FROM $table WHERE username ='$username'";
			$handle=DB::connect ($DB['DSN'],true);

			if (DB::isError($handle)) {
				die (_("Database error"));
			}
		
	       	$result = $handle->query($query);
			$row=$result->fetchRow(DB_FETCHMODE_ASSOC, 0);

		$dbinput = $row['password'];
			
		switch (strval($encryption)){
		default:
			if ($dbinput == $userinput){
				return true;
			}
			else {
				return false;
			}
		break;
		case "crypt":
		case "1":
			// The salt used is the encrypted password
	
			if ($dbinput == crypt($userinput,$dbinput)){
				return true;
			}
			else {
				return false;
			}
		break;		
		case "md5":
		case "2":
			if ($dbinput == md5($userinput)){
				return true;
			}
			else {
				return false;
			}
		break;
		// For compatibility with older web-cyradm
		case "mysql":
		case "3":
			if ($dbinput == $this->mysql_password($userinput)){
							return true;
			}
			else {
				return false;
			}

		}
	}

	/* This function sets the new password without checking an old password.
	   If you use this function be sure to first check the old password supplied by the
	   user by doing: return =$pwd->check($table,$username,$userinput,$encryption);
	*/

	function update($table,$username,$newpassword,$encryption){
		include WC_BASE . "/config/conf.php";

		switch ($encryption){
		case "crypt":
			case "1":
			$newpassword=crypt($newpassword,substr($newpassword,0,2));
		break;
			case "md5":
                case "2":
				$newpassword=md5($newpassword);
			break;
			case "mysql":
		// for compatibility with older web-cyradm
			case "3":
				$newpassword==$this->mysql_password($newpassword);;
			break;

		}
		// If no encryption specified plain is used
			
		$query="UPDATE $table SET password='$newpassword' WHERE username='$username'";
			$handle=DB::connect ($DB['DSN'],true);

			if (DB::isError($handle)) {
                                die (_("Database error"));
                        }

			$result = $handle->query($query);
			
			if ($result){	
				return true;
			}
	}

	function encrypt($password,$encryption){

		switch ($encryption){
                case "crypt":
			case "crypt":
			case "1":
			/* Obviousely the right way of crypting passwords with salts does not work when checking passwords
			against a stored one in the database. This affects changeadminpassword.php.

			As a workaround, the salt will be the cleartext password.

			In future it would be better to have a random salt and another solution for changadminpassword.php.
			This would probably means to abstract adminusers and accountusers in crypto.php
			*/
			
			#$password=crypt($password,substr(md5(rand()),0,2));
			$password=crypt($password,$password);
			break;
			case "md5":
			case "2":
				$password=md5($password);
			break;
		// for compatibility with older web-cyradm
			case "mysql":
			case "3":
				$password=$this->mysql_password($password);
		}
		
		// Encrypt should always return something - on plaintext unchanged input
		return $password;
	}
	function mysql_password($input){
	        include_once WC_BASE . "/config/conf.php";
		include_once "DB.php";
		global $DB;
		
		$query = "SELECT PASSWORD('" . $input . "')";
		$handle=DB::connect ($DB['DSN'],true);

		if (DB::isError($handle)) {
                        die (_("Database error"));
            	}

		$result = $handle->query($query);
		$row=$result->fetchRow(DB_FETCHMODE_ORDERED, 0);

		$password = $row[0];
		return $password;
	}
}

?>
<?php
/*************************************************************

 File: cyradm-php.lib
 Author: gernot
 Revision: 2.0.0
 Date: 2000/08/11

 This is a completely new implementation of the IMAP Access for
 PHP. It is based on a socket connection to the server an is 
 independent from the imap-Functions of PHP

 Copyright 2000 Gernot Stocker <muecketb@sbox.tu-graz.ac.at>
 
 Changes by Luc de Louw <luc@delouw.ch> 
 - Added renamemailbox command as available with cyrus IMAP 2.2.0-Alpha
 - Added getversion to find out what version of cyrus IMAP is running

 Changes by Lukasz Marciniak <landm@ibi.pl>
 - Added geterror() to find out problems with conection to cyrus IMAP
 - Changed imap_login() and command() to work with geterror()
 - Changed imap_login() to work with passed login and password

 Last Change on $Date$

 $Id$
 

 You should have received a copy of the GNU Public
 License along with this package; if not, write to the
 Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 Boston, MA 02111-1307, USA.

 
 THIS PROGRAM IS AS IT IS! THE AUTHOR TAKES NO RESPONSABILTY ABOUT 
 EVENTUAL DEMAGES, SECURITS-HOLES OR ATTACKES, WHICH COULD BE ENABLED 
 BY THIS PROGRAM

 
 ***************************************************************/


class cyradm
{

	var $host;
	var $port;
	var $mbox;
	var $list;
	var $allacl;

	var $admin;
	var $pass;
	var $fp;
	var $line;
	var $error_msg;

	/*
	#
	#Konstruktor
	#
	*/
	function cyradm()
	{
		global $rtxt;
		$_keys = array('host', 'port', 'admin', 'pass');
		foreach ($_keys as $_key){
			$this->$_key = $GLOBALS['CYRUS'][strtoupper($_key)];
		}
		$this->mbox	= $this->line	= $this->error_msg	= '';
		$this->list	= array();
		$this->fp	= 0;
		$this->allacl	= 'lrswipcda';
	} 


	/*
	#
	# SOCKETLOGIN on Server via Telnet-Connection!
	#
	*/
	function imap_login($login='', $passwd='')
	{
		if (empty($login)) {
			$login = $this->admin;
			$passwd = $this->pass;
		}
		$this->fp = fsockopen($this->host, $this->port, $errno, $errstr);
		$this->error_msg = $errstr;
		if(!$this->fp) {
			echo "<br>ERRORNO: ($errno) <br>ERRSTR: ($errstr)<br><hr>\n";
		} else {
			$_cmd = '. capability';
			$result = $this->command($_cmd);
			foreach($result as $resline) {
				if (eregi("(RIGHTS=){1}[texk]{4}",$resline)) {
					$this->allacl = 'lrswipkxtecda';
				}
			}
			$_cmd = sprintf('. login "%s" "%s"',
				$login, $passwd);
			$this->command($_cmd);
			if ($this->error_msg!="No errors") {
				return 1;
			}
		}
		return $errno;
	}


	/*
	#
	# SOCKETLOGOUT from Server via Telnet-Connection!
	#
	*/
	function imap_logout()
	{
		$this->command(". logout");
		fclose($this->fp);
	} 

	/*
	#
	# SENDING COMMAND to Server via Telnet-Connection!
	#
	*/
	function command($line)
	{
		global $rtxt;
		// print ("line in command: <br><pre><tt>" . $line . "</tt></pre><br>");
		$result = array();
		$i = $f = 0;
		$returntext = "";
		$r = fputs($this->fp,$line . "\n");
		while (!((strstr($returntext,". OK")||(strstr($returntext,". NO"))||(strstr($returntext,". BAD"))))){
			$returntext = $this->getline();
			// print ("$returntext <br>"); 
			if (strstr($returntext,"IMAP4")){
				$rtxt = $returntext;
			}
			if ($returntext){
				if (!((strstr($returntext,". OK")||(strstr($returntext,". NO"))||(strstr($returntext,". BAD"))))){
					$result[$i]=$returntext;
				}
				$i++;
			}
		}

		if (strstr($returntext,". BAD")||(strstr($returntext,". NO"))){
			$result[0]="$returntext";

			if (( strstr($returntext,". NO Quota") )){
				$this->error_msg = "No errors";
			} else {
				/*
				print "<br><font color=red><hr><H1><center><blink>ERROR: </blink>UNEXPECTED IMAP-SERVER-ERROR</center></H1><hr><br>
				<table color=red border=0 align=center cellpadding=5 callspacing=3>
				<tr><td><font color=red>SENT COMMAND: </font></td><td><font color=red>$line</font></td></tr>
				<tr><td><font color=red>SERVER RETURNED:</font></td><td></td></tr>
				";
				for ($i=0; $i < count($result); $i++) {
				print "<tr><td></td><td><font color=red>$result[$i]</font></td></tr>";
				}
				print "</table><hr><br><br></font>";
				*/
				$this->error_msg  = $returntext;
				return false;
			}
		}
		else {
			$this->error_msg = "No errors";
		}
		return $result;  
	}


	/*
	#
	# READING from Server via Telnet-Connection!
	#
	*/
	function getline()
	{
		$this->line = fgets($this->fp, 512);
		return $this->line;
	}

	/*
	#
	# Getting Cyrus IMAP error
	#
	*/
	function geterror()
	{
		return $this->error_msg;
	}

	/*
	#
	# Getting Cyrus IMAP Version
	#
	*/
	function getversion()
	{
		global $rtxt;
		$pos=strpos($rtxt,"IMAP4 v");
		$pos+=7;
		$version=substr($rtxt,$pos,5);
		// print "<p>Version: ".$version;
		return $version;
	}

	/*
	#
	# QUOTA Functions
	#
	*/

	// GETTING QUOTA
	function getquota($mb_name)
	{
		$output = $this->command(". getquota \"" . $mb_name . "\"");
		if (strstr($output[0], ". NO")) {
			$ret["used"] = "NOT-SET";
			$ret["qmax"] = "NOT-SET";
		} else {
			$realoutput = str_replace(")", "", $output[0]);
			$tok_list = split(" ", $realoutput);
			$si_used = sizeof($tok_list) - 2;
			$si_max = sizeof($tok_list) - 1;
			$ret["used"] = str_replace(")", "", $tok_list[$si_used]);
			$ret["qmax"] = $tok_list[$si_max];
		}
		return $ret;
	}  


	// SETTING QUOTA
	function setmbquota($mb_name, $quota)
	{
		$this->command(". setquota \"$mb_name\" (STORAGE $quota)");
	}



	/*
	#
	# MAILBOX Functions
	#
	*/
	function createmb($mb_name)
	{
		$this->command(". create \"$mb_name\"");
	}


	function deletemb($mb_name)
	{
		$this->command(". setacl \"$mb_name\" $this->admin $this->allacl");
		$this->command(". delete \"$mb_name\"");
	}

	function renamemb($mb_name, $newmbname)
	{
		$this->setacl($mb_name, $this->admin,$this->allacl);
		$this->command(". rename \"$mb_name\" \"$newmbname\"");
		$this->deleteacl($newmbname, $this->admin);
	}

	function renamemailbox($oldname, $newname)
	{
		// This only works with cyrus imap version 2.2.x for older please use renameuser
		$ret=$this->command(". renamemailbox \"$oldname\" \"$newname\"");
		return $ret;
	}

	function renameuser($from_mb_name, $to_mb_name)
	{
		$find_out = $split_res = array();
		$owner = $oldowner = '';

		/* Anlegen und Kopieren der INBOX */
		$this->createmb($to_mb_name);
		$this->setacl($to_mb_name, $this->admin,$this->allacl);
		$this->copymailsfromfolder($from_mb_name, $to_mb_name);

		/* Quotas uebernehmen */  
		$quota = $this->getquota($from_mb_name);
		$oldquota = trim($quota["qmax"]);

		if (strcmp($oldquota,"NOT-SET")!=0) {
			$this->setmbquota($to_mb_name, $oldquota);
		}

		/* Den Rest Umbenennen */
		$username = str_replace(".","/",$from_mb_name);
		$split_res = explode(".", $to_mb_name);
		if (strcmp($split_res[0],"user") == 0) {
			$owner=$split_res[1];
		}
		$split_res=explode(".", $from_mb_name);
		if (strcmp($split_res[0],"user") == 0) {
			$oldowner=$split_res[1];
		}

		$find_out = $this->GetFolders($username);

		for ($i=0; $i < count($find_out); $i++) {

			if (strcmp($find_out[$i],$username)!=0) {
				$split_res = split("$username",$find_out[$i]);
				$split_res[1] = str_replace("/",".",$split_res[1]);
				$this->renamemb((str_replace("/",".",$find_out[$i])), ("$to_mb_name"."$split_res[1]"));
				if ($owner) {
					$this->setacl(("$to_mb_name"."$split_res[1]"),$owner,$this->allacl);
				}
				if ($oldowner) {
					$this->deleteacl(("$to_mb_name"."$split_res[1]"),$oldowner);
				}
			}
		}
		$this->deleteacl($to_mb_name, $this->admin);
		$this->imap_logout();
		$this->imap_login();
		$this->deletemb($from_mb_name);
	}

	function copymailsfromfolder($from_mb_name, $to_mb_name)
	{
		$com_ret = $find_out = array();
		$mails = 0;

		$this->setacl($from_mb_name, $this->admin,$this->allacl);
		$com_ret = $this->command(". select $from_mb_name");
		for ($i=0; $i < count($com_ret); $i++) {
			if (strstr($com_ret[$i], "EXISTS")){ 
			$findout=explode(" ", $com_ret[$i]);
			$mails=$findout[1];
			}
		}
		if ($mails != 0){
			$com_ret=$this->command(". copy 1:$mails $to_mb_name");
			for ($i=0; $i < count($com_ret); $i++) {
				print "<span style=\"color: red;\">" . $com_ret[$i] . "</span><br>";
			}
		}
		$this->deleteacl($from_mb_name, $this->admin);  
	}

	/*
	#
	# ACL Functions
	#
	*/
	function setacl($mb_name, $user, $acl)
	{
		$this->command(". setacl \"$mb_name\" \"$user\" $acl");
	}

	function deleteacl($mb_name, $user)
	{
		$result=$this->command(". deleteacl \"$mb_name\" \"$user\"");
	}


	function getacl($mb_name)
	{
		$aclflag = 1;
		$tmp_pos = 0;
		$output = $this->command(". getacl \"$mb_name\"");
		$output = explode(" ", $output[0]);
		$i = count($output)-1;
		while ($i>3) {
			if (strstr($output[$i],'"')) {
				$i++;
			}

			if (strstr($output[$i-1],'"')) {
				$aclflag = 1;
				$lauf = $i - 1;
				$spacestring = $output[$lauf];
				$tmp_pos = $i;
				$i = $i-2;
				while ($aclflag!=0){
					$spacestring=$output[$i]." ".$spacestring;
					if (strstr($output[$i],'"')){
						$aclflag=0;
					}
					$i--; 
				}
				$spacestring = str_replace("\"","",$spacestring);
				if ($i>2) {
					$ret[$spacestring] = $output[$tmp_pos];
				}
			} else { 
				$ret[$output[$i-1]] = $output[$i];
				$i = $i - 2;
			}
		}
		return $ret;
	}

	/*
	#
	# Folder Functions
	#
	*/

	function GetFolders($username)
	{
		$username = str_replace("/", ".", $username);
		$output = $this->command(". list \"$username\" *");

		for ($i=0; $i < count($output); $i++) {
			$splitfolder=split("\"",$output[$i]);
			$output[$i]=str_replace(".","/",$splitfolder[3]);
		}
		return $output;
	}

	function EGetFolders($username)
	{
		$lastfolder=split("/",$username);
		$position=count($lastfolder)-1;
		$last=$lastfolder[$position];
		$username=str_replace("/",".",$username);
		$output = $this->command(". list \"$username\" *");

		for ($i=0; $i < count($output); $i++) {
			$splitfolder=split("\"",$output[$i]);
			$currentfolder=split("\.",$splitfolder[3]);
			$current=$currentfolder[$position];
			// echo "<br>FOLDER:($) CURRENTFOLDER:($splitfolder[3]) CURRENT:($current) LAST:($last) POSITION:($position)<br>";
			if (strcmp($current,$last)==0){
				$newoutput[$i]=str_replace(".","/",$splitfolder[3]);
			}
		}
		return $newoutput;
	}


	/*
	#
	# Folder-Output Functions
	#
	*/
	function GenerateFolderList($folder_array, $username) 
	{
		?>
		<table border="0" align="center">
			<?php
			for ($l=0; $l < count($folder_array); $l++){
				?>
				<tr>
					<td>
						<a href="acl.php?username=<?php
						echo urlencode($username);
						?>&amp;folder=<?php
						echo urlencode($folder_array[$l]);
						?>">/<?php
						echo $folder_array[$l];
						?></a>
					</td>
				</tr>
				<?php
			}
			?>
		</table>
		<?php
	}


	function GetUsers($char="") {
		$users = array();
		$this->imap_login();
		$output = $this->GetFolders("user." . $char);
		$this->imap_logout();
		$j = $prev = 0;
		for ($i=0; $i < count($output); $i++) {
			$username = split("/", $output[$i], -1);
			$this->debug("(" . $username[1] . "\n" . $users[$prev]);
			if ((isset($username)) && (isset($users))) {
				if (strcmp($username[1], $users[$prev])) {
					$users[$j] = $username[1];
					$j++;
				}
			}
			if ($j != 0) {
				$prev = $j - 1;
			}
		}
		return $users;
	}

	function debug($message) {
		// echo "<hr>$message<br><hr>";
	}


} //KLASSEN ENDE

<?php
function logger($entry, $level = 'INFO') {
	global $LOG_DIR;
	global $LOG_LEVEL;

	$levels = array (
		'DEBUG'=> 0,
		'INFO' => 1,
		'WARN' => 2,
		'ERR'=> 3
	);

	if ($levels[$level] >= $levels[$LOG_LEVEL]) {
		$fp = @fopen($LOG_DIR . "web-cyradm-login.log", "a");

		if ($fp) {
			$date = date("M d H:i:s");
			fwrite($fp, sprintf("%s [%s] %s%s", $date, $level, $entry, "\n"));
			fclose($fp);
			return TRUE;
		}
		else {
			return FALSE;
		}
	}
}
?>
<?php

/**
 ** Aliases for languages with different browser and gettext codes
 **/


//$nls['aliases']['bg'] = 'bg_BG';
$nls['aliases']['cs'] = 'cs_CZ';
$nls['aliases']['da'] = 'da_DK';
$nls['aliases']['de'] = 'de_DE';
//$nls['aliases']['el'] = 'el_GR';
$nls['aliases']['en'] = 'en_US';
$nls['aliases']['es'] = 'es_ES';
//$nls['aliases']['et'] = 'et_EE';
//$nls['aliases']['fi'] = 'fi_FI';
$nls['aliases']['fr'] = 'fr_FR';
$nls['aliases']['hu'] = 'hu_HU';
$nls['aliases']['it'] = 'it_IT';
//$nls['aliases']['ja'] = 'ja_JP';
//$nls['aliases']['ko'] = 'ko_KR';
//$nls['aliases']['lt'] = 'lt_LT';
$nls['aliases']['no'] = 'nb_NO';
$nls['aliases']['nl'] = 'nl_NL';
//$nls['aliases']['nn'] = 'nn_NO';
$nls['aliases']['pl'] = 'pl_PL';
$nls['aliases']['pt'] = 'pt_PT';
$nls['aliases']['ro'] = 'ro_RO';
$nls['aliases']['ru'] = 'ru_RU';
//$nls['aliases']['sk'] = 'sk_SK';
$nls['aliases']['sl'] = 'sl_SI';
$nls['aliases']['sv'] = 'sv_SE';
$nls['aliases']['tr'] = 'tr_TR';
$nls['aliases']['uk'] = 'uk_UA';
$nls['aliases']['zh'] = 'zh_CN';

$nls['languages']['ar_OM'] = 'Arabic (&#x0627;&#x0644;&#x0639;&#x0631;&#x0628;&#x064a;&#x0629;)';
$nls['languages']['bg_BG'] = 'Bulgarian (&#x0411;&#x044a;&#x043b;&#x0433;&#x0430;&#x0440;&#x0441;&#x043a;&
#x0438;)';
$nls['languages']['ca_ES'] = 'Catal&agrave;';
$nls['languages']['zh_CN'] = 'Chinese (Simplified) (&#x7b80;&#x4f53;&#x4e2d;&#x6587;)';
$nls['languages']['zh_TW'] = 'Chinese (Traditional) (&#x7e41;&#x9ad4;&#x4e2d;&#x6587;)';
$nls['languages']['cs_CZ'] = 'Czech (&#x010c;esky)';
$nls['languages']['da_DK'] = 'Dansk';
$nls['languages']['de_DE'] = 'Deutsch';
$nls['languages']['en_GB'] = 'English (GB)';
$nls['languages']['en_US'] = 'English (US)';
$nls['languages']['es_ES'] = 'Espa&ntilde;ol';
$nls['languages']['et_EE'] = 'Eesti';
$nls['languages']['fr_FR'] = 'Fran&ccedil;ais';
$nls['languages']['el_GR'] = 'Greek (&#x0395;&#x03bb;&#x03bb;&#x03b7;&#x03bd;&#x03b9;&#x03ba;&#x03ac;)';
$nls['languages']['is_IS'] = '&Iacute;slenska';
$nls['languages']['it_IT'] = 'Italiano';
$nls['languages']['ja_JP'] = 'Japanese (&#x65e5;&#x672c;&#x8a9e;)';
$nls['languages']['ko_KR'] = 'Korean (&#xd55c;&#xad6d;&#xc5b4;)';
$nls['languages']['lv_LV'] = 'Latvie&#x0161;u';
$nls['languages']['lt_LT'] = 'Lietuvi&#x0161;kai';
$nls['languages']['hu_HU'] = 'Magyar';
$nls['languages']['nl_NL'] = 'Nederlands';
$nls['languages']['nb_NO'] = 'Norsk bokm&aring;l';
$nls['languages']['nn_NO'] = 'Norsk nynorsk';
$nls['languages']['pl_PL'] = 'Polski';
$nls['languages']['pt_PT'] = 'Portugu&ecirc;s';
$nls['languages']['pt_BR'] = 'Portugu&ecirc;s Brasileiro';
$nls['languages']['ro_RO'] = 'Romani';
$nls['languages']['ru_RU'] = 'Russian (&#x0420;&#x0443;&#x0441;&#x0441;&#x043a;&#x0438;&#x0439;) (Windows)
';
$nls['languages']['ru_RU.KOI8-R'] = 'Russian (&#x0420;&#x0443;&#x0441;&#x0441;&#x043a;&#x0438;&#x0439;) (K
OI8-R)';
$nls['languages']['sk_SK'] = 'Slovak (Sloven&#x010d;ina)';
$nls['languages']['sl_SI'] = 'Slovenian (Sloven&#x0161;&#x010d;ina)';
$nls['languages']['fi_FI'] = 'Suomea';
$nls['languages']['sv_SE'] = 'Svenska';
$nls['languages']['th_TH'] = 'Thai (&#x0e44;&#x0e17;&#x0e22;)';
$nls['languages']['tr_TR'] = 'T&uuml;rk&ccedil;e';
$nls['languages']['uk_UA'] = 'Ukranian (&#x0423;&#x043a;&#x0440;&#x0430;&#x0457;&#x043d;&#x0441;&#x044c;&#x043a;&#x0430;)';


/**
 ** Charsets
 **/

$nls['charsets']['bg_BG'] = 'windows-1251';
$nls['charsets']['cs_CZ'] = 'ISO-8859-2';
$nls['charsets']['el_GR'] = 'ISO-8859-7';
$nls['charsets']['et_EE'] = 'ISO-8859-13';
$nls['charsets']['hu_HU'] = 'ISO-8859-2';
$nls['charsets']['ja_JP'] = 'SHIFT_JIS';
$nls['charsets']['ko_KR'] = 'EUC-KR';
$nls['charsets']['lt_LT'] = 'ISO-8859-13';
$nls['charsets']['pl_PL'] = 'ISO-8859-2';
$nls['charsets']['ro_RO'] = 'ISO-8859-2';
//$nls['charsets']['ru_RU'] = 'windows-1251';
//$nls['charsets']['ru_RU'] = 'koi8-r';
$nls['charsets']['ru_RU'] = 'ISO-8859-5';
$nls['charsets']['ru_RU.KOI8-R'] = 'KOI8-R';
$nls['charsets']['sk_SK'] = 'ISO-8859-2';
$nls['charsets']['sl_SI'] = 'ISO-8859-2';
$nls['charsets']['tr_TR'] = 'ISO-8859-9';
$nls['charsets']['uk_UA'] = 'KOI8-U';
$nls['charsets']['zh_CN'] = 'GB2312';
$nls['charsets']['zh_TW'] = 'BIG5';

/**
 ** Translators
 **/

$nls['translator']['cs_CZ'] = '<a href="mailto:kania at gdi.cz">Robert Kania</a>';
$nls['translator']['da_DK'] = '<a href="mailto:kw atCombo.dk">Kenneth Wrang</a>';
$nls['translator']['fr_FR'] = '<a href="mailto:mrjack at fastorama.com">Raphaël Jeudy</a>';
$nls['translator']['de_DE'] = '<a href="mailto:m.muenz at maxonline.de">Michael Muenz</a> and <a href="mailto:luc at delouw.ch">Luc de Louw</a>'; 
$nls['translator']['en_US'] = '<a href="mailto:m.muenz at maxonline.de">Michael Muenz</a>';
$nls['translator']['es_ES'] = '<a href="mailto:rafasg at terra.es">Rafael Santamaria</a>';
$nls['translator']['hu_HU'] = '<a href="mailto:zoltan at levardy.org">Zoltan Levardy</a>';
$nls['translator']['it_IT'] = '<a href="mailto:mirko.cavinato at omitech.it">Mirko Cavinato</a>';
$nls['translator']['nl_NL'] = '<a href="mailto:carlo at giga-byte.nl">Carlo Landmeter</a>';
$nls['translator']['nb_NO'] = '<a href="mailto:danso at effie.no">Dan Sveen Olsen</a>';
$nls['translator']['pl_PL'] = '<a href="mailto:primo at npl.pl">Przemyslaw Witek</a>';
$nls['translator']['pt_PT'] = '<a href="mailto:michelle at cipsga.org.br">Michelle Ribeiro</a>';
$nls['translator']['ro_RO'] = '<a href="mailto:catalinboiangiu at SoftHome.net">Catalin Boiangiu</a>';
$nls['translator']['sl_SI'] = '<a href="mailto:gregor at yellowtooth.com">Gregor Odlazek</a>';
$nls['translator']['ru_RU'] = '<a href="mailto:edge at gts.smtn.stavropol.ru">Andrey Kolbasenko</a> and <a href="mailto:a_mdl at mail.ru">Denis Medvedev</a>';
$nls['translator']['sv_SE'] = '<a href="mailto:fredrik at rambrik Rambris.com">Fredrik Rambris</a>, <a href="mailto:anders.litzell at telia.com">Anders Litzell</a> and <a href="mailto:anders at norrbring.biz">Anders Norrbring</a>';
$nls['translator']['tr_TR'] = '<a href="mailto:suleymankuran at yahoo.com">Süleyman Kuran</a>';
$nls['translator']['uk_UA'] = '<a href="mailto:ruslanf@yandex.ru">Ruslan Firsov</a>';
$nls['translator']['zh_CN'] = '<a href="mailto:boozhang at sdb.ac.cn">Zhang Bo</a>';


?>
<?php
    class poppassd {

    var $fp;
    var $err_str;

    function connect( $server, $port ) {
        $this->fp = fsockopen($server, $port, $err_no, $err_str);
        if (!$this->fp) {
            $this->err_str = $err_str;
            return false;
        } else {
            return $this->get_prompt();
        }
    }

    function disconnect() {
        if (isset($this->fp)) {
            fputs($this->fp, "quit\n");
            fclose($this->fp);
        }
    }

    function get_prompt() {
        $prompt = fgets($this->fp, 4096);
        if (ereg("^[1-5][0-9][0-9]",$prompt))
        {
            if (substr($prompt, 0, 3) == "200") {
                return true;
            } else {
                $this->err_str = $prompt;
                return false;
            }
        }
        else {
            return true;
        }
    }

    function send_command($cmd, $arg) {
        $line = $cmd . " " . $arg . "\n";
        fputs($this->fp, $line);
        return $this->get_prompt();
    }

    function change_password($user_name, $old_password, $new_password) {

        $server = 'localhost';
        $port = 106;
        if ($this->connect($server, $port)) {
            if ($this->send_command("user", $user_name)) {
                if ($this->send_command("pass", $old_password)) {
                    if ($this->send_command("newpass", $new_password)) {
                        $return_value = true;
                    }
                }
            }
            $this->disconnect();
        }
        return $return_value;
    }

}
?>
<?php
/**
 * sieve-php.lib.php
 *
 * $Id: sieve-php.lib.php,v 1.10 2005/12/06 15:05:28 avel Exp $ 
 *
 * Copyright 2001-2003 Dan Ellis <danellis@rushmore.com>
 *
 * This program is released under the GNU Public License.  See the enclosed
 * file COPYING for license information. If you did not receive this file, see
 * http://www.fsf.org/copyleft/gpl.html.
 *
 * You should have received a copy of the GNU Public License along with this
 * package; if not, write to the Free Software Foundation, Inc., 59 Temple
 * Place - Suite 330, Boston, MA 02111-1307, USA.        
 *
 * See CHANGES for updates since last release
 *
 * @author Dan Ellis
 * @package sieve-php
 * @copyright Copyright 2002-2003, Dan Ellis, All Rights Reserved.  
 * @version 0.1.0
 */

/**
 * Constants
 */
define ("F_NO", 0);		
define ("F_OK", 1);
define ("F_DATA", 2);
define ("F_HEAD", 3);

define ("EC_NOT_LOGGED_IN", 0);
define ("EC_QUOTA", 10);
define ("EC_NOSCRIPTS", 20);
define ("EC_UNKNOWN", 255);

/**
 * SIEVE class - A Class that implements MANAGESIEVE in PHP4|5.
 *
 * This program provides a handy interface into the Cyrus timsieved server
 * under php4.  It is tested with Sieve server included in Cyrus 2.0, but it
 * has been upgraded (not tested) to work with older Sieve server versions.
 *
 * All functions will return either true or false and will fill in
 * $sieve->error with a defined error code like EC_QUOTA, raw server errors in
 * $sieve->error_raw, and successful responses in $sieve->responses.
 *
 * NOTE: a major change since version (0.0.5) is the inclusion of a standard
 * method to retrieve  server responses.  All functions will return either true
 * or false and will fill in $sieve->error with a defined error code like
 * EC_QUOTA, raw server errors in $sieve->error_raw, and successful responses
 * in $sieve->responses.
 *
 * Usage is pretty simple.  The basics is login, do what you need and logout.
 * There are two sample files (which suck) test.php and testsieve.php.
 * test.php allows you to create/delete/view scripts and testsieve.php is a
 * very basic sieve server test.
 *
 * Please let us know of any bugs, problems or ideas at sieve-php development
 * list:  sieve-php-devel@lists.sourceforge.net. A web interface to subscribe
 * to this list is available at:
 * https://lists.sourceforge.net/mailman/listinfo/sieve-php-devel
 *
 * @author Dan Ellis
 * @example simple_example.php A simple example that shows usage of sieve-php
 * class.
 * @example vacationset-sieve.php A more elaborate example of vacation script
 * handling.
 * @version 0.1.0
 * @package sieve-php
 * @todo Maybe add the NOOP function.
 * @todo Have timing mechanism when port problems arise.
 * @todo Provide better error diagnostics. 
 */
class sieve {
  var $host;
  var $port;
  var $user;
  var $pass;
  /**
   * a comma seperated list of allowed auth types, in order of preference
   */
  var $auth_types;
  /**
   * type of authentication attempted
   */
  var $auth_in_use;
  
  var $line;
  var $fp;
  var $retval;
  var $tmpfile;
  var $fh;
  var $len;
  var $script;

  var $loggedin;
  var $capabilities;
  var $error;
  var $error_raw;
  var $responses;
  
  // lastcmd is for referral processing
  var $lastcmd;
  var $reftok;
  var $refsv;
  

  //maybe we should add an errorlvl that the user will pass to new sieve = sieve(,,,,E_WARN)
  //so we can decide how to handle certain errors?!?

  /**
   * get response
   * @todo Test Cyrus version 2.2 vs version 2.1 style referrals parsing
   * @todo Perhaps do referrals like in functin sieve_get_capability()
   */
  function get_response()
  {
    if($this->loggedin == false or feof($this->fp)){
        $this->error = EC_NOT_LOGGED_IN;
        $this->error_raw = "You are not logged in.";
        return false;
    }

    unset($this->response);
    unset($this->error);
    unset($this->error_raw);

    $this->line=fgets($this->fp,1024);
    $this->token = split(" ", $this->line, 2);

    if($this->token[0] == "NO"){
        /* we need to try and extract the error code from here.  There are two possibilites: one, that it will take the form of:
           NO ("yyyyy") "zzzzzzz" or, two, NO {yyyyy} "zzzzzzzzzzz" */
        $this->x = 0;
        list($this->ltoken, $this->mtoken, $this->rtoken) = split(" ", $this->line." ", 3);
        if($this->mtoken[0] == "{"){
            while($this->mtoken[$this->x] != "}" or $this->err_len < 1){
                $this->err_len = substr($this->mtoken, 1, $this->x);
                $this->x++;    
            }
            //print "<br>Trying to receive $this->err_len bytes for result<br>";
            $this->line = fgets($this->fp,$this->err_len);
            $this->error_raw[]=substr($this->line, 0, strlen($this->line) -2);    //we want to be nice and strip crlf's
            $this->err_recv = strlen($this->line);

            while($this->err_recv < $this->err_len-1){
                //print "<br>Trying to receive ".($this->err_len-$this->err_recv)." bytes for result<br>";
                $this->line = fgets($this->fp, ($this->err_len-$this->err_recv));
                $this->error_raw[]=substr($this->line, 0, strlen($this->line) -2);    //we want to be nice and strip crlf's
                $this->err_recv += strlen($this->line);
            } /* end while */
            $this->line = fgets($this->fp, 1024);	//we need to grab the last crlf, i think.  this may be a bug...
            $this->error=EC_UNKNOWN;
      
        } /* end if */
        elseif($this->mtoken[0] == "("){
            switch($this->mtoken){
                case "(\"QUOTA\")":
                    $this->error = EC_QUOTA;
                    $this->error_raw=$this->rtoken;
                    break;
                default:
                    $this->error = EC_UNKNOWN;
                    $this->error_raw=$this->rtoken;
                    break;
            } /* end switch */
        } /* end elseif */
        else{
            $this->error = EC_UNKNOWN;
            $this->error_raw = $this->line;
        }     
        return false;

    } /* end if */
    elseif(substr($this->token[0],0,2) == "OK"){
         return true;
    } /* end elseif */
    elseif($this->token[0][0] == "{"){
        
        /* Unable wild assumption:  that the only function that gets here is the get_script(), doesn't really matter though */       

        /* the first line is the len field {xx}, which we don't care about at this point */
        $this->line = fgets($this->fp,1024);
        while(substr($this->line,0,2) != "OK" and substr($this->line,0,2) != "NO"){
            $this->response[]=$this->line;
            $this->line = fgets($this->fp, 1024);
        }
        if(substr($this->line,0,2) == "OK")
            return true;
        else
            return false;
    } /* end elseif */
    elseif($this->token[0][0] == "\""){

        /* I'm going under the _assumption_ that the only function that will get here is the listscripts().
           I could very well be mistaken here, if I am, this part needs some rework */

        $this->found_script=false;        

        while(substr($this->line,0,2) != "OK" and substr($this->line,0,2) != "NO"){
            $this->found_script=true;
            list($this->ltoken, $this->rtoken) = explode(" ", $this->line." ",2);
		//hmmm, a bug in php, if there is no space on explode line, a warning is generated...
           
            if(strcmp(rtrim($this->rtoken), "ACTIVE")==0){
                $this->response["ACTIVE"] = substr(rtrim($this->ltoken),1,-1);  
            }
            else
                $this->response[] = substr(rtrim($this->ltoken),1,-1);
            $this->line = fgets($this->fp, 1024);
        } /* end while */
        
        return true;
        
    } /* end elseif */
    elseif(strstr($this->token[1], '(REFERRAL "' ) ){
    	/* process a referral, retry the lastcmd, return the results.  this is 
    	   sort of messy, really I should probably try to use parse_for_quotes
    	   but the problem is I still have the ( )'s to deal with.  This is 
    	   atleast true for timsieved as it sits in 2.1.16, if someone has a 
    	   BYE (REFERRAL ...) example for later timsieved please forward it to 
    	   me and I'll code it in proper-like! - mloftis@wgops.com */
    	$this->reftok = split(" ", $this->token[1], 3);
    	$this->refsv = substr($this->reftok[1], 0, -2);
    	$this->refsv = substr($this->refsv, 1);

        /* TODO - perform more testing */
        if(strstr($this->capabilities['implementation'], 'v2.1')) {
            /* Cyrus 2.1 - Style referrals */
        	$this->host = $this->refsv;
        } else {
            /* Cyrus 2.2 - Style referrals */
            $tmp = array_reverse( explode( '/', $this->refsv ) );
            $this->host = $tmp[0];
        }
    	$this->loggedin = false;
    	/* flush buffers or anything?  probably not, and the remote has already closed it's
    	   end by now!  */
    	fclose($this->fp);
    	
    	if( sieve::sieve_login() ) {
    		fputs($this->fp, $this->lastcmd);
    		return sieve::get_response();
    	} /* end good case happy ending */
    	else{
    		/* what to do?  login failed, should we punt and die? or log back into the referrer?
    		   i'm electing to retn EC_UNKNOWN for now and set the error string. */
    		   
    		$this->loggedin = false;
    		fclose($this->fp);
    		$this->error = EC_UNKNOWN;
    		$this->error_raw = 'UNABLE TO FOLLOW REFERRAL - ' . $this->line;
    		return false;
    	} /* end else of the unhappy ending */
    	
    	/* should never make it here! */
    	
    } /* end elseif */
    else{
            $this->error = EC_UNKNOWN;
            $this->error_raw = $this->line;
	    print '<b><i>UNKNOWN ERROR (Please report this line to <a
	    href="mailto:sieve-php-devel@lists.sourceforge.net">sieve-php-devel
	    Mailing List</a> to include in future releases):
	    '.$this->line.'</i></b><br>';

            return false;
    } /* end else */   
  } /* end get_response() */

  /**
   * Initialization of the SIEVE class.
   * 
   * It will return
   * false if it fails, true if all is well.  This also loads some arrays up
   * with some handy information:
   *
   * @param $host string hostname to connect to. Usually the IMAP server where
   * a SIEVE daemon, such as timsieved, is listening.
   *
   * @param $port string Numeric port to connect to. SIEVE daemons usually
   * listen to port 2000.
   *
   * @param $user string is a super-user or proxy-user that has ACL rights to
   * login on behalf of the $auth.
   *
   * @param $pass string password to use for authentication
   *
   * @param $auth string is the authorized user identity for which the SIEVE
   * scripts will be managed.
   *
   * @param $auth_types string a string containing all the allowed
   * authentication types allowed in order of preference, seperated by spaces.
   * (ex.  "PLAIN DIGEST-MD5 CRAM-MD5"  The method the library will try first
   * is PLAIN.) The default for this value is PLAIN.
   *
   * Note: $user, if included, is the account name (and $pass will be the
   * password) of an administrator account that can act on behalf of the user.
   * If you are using Cyrus, you must make sure that the admin account has
   * rights to admin the user.  This is to allow admins to edit/view users
   * scripts without having to know the user's password.  Very handy.
   */
  function sieve($host, $port, $user, $pass, $auth="", $auth_types='PLAIN') {
    $this->host=$host;
    $this->port=$port;
    $this->user=$user;
    $this->pass=$pass;
    if(!strcmp($auth, ""))		/* If there is no auth user, we deem the user itself to be the auth'd user */
        $this->auth = $this->user;
    else
        $this->auth = $auth;
    $this->auth_types=$auth_types;	/* Allowed authentication types */
    $this->fp=0;
    $this->line="";
    $this->retval="";
    $this->tmpfile="";
    $this->fh=0;
    $this->len=0;
    $this->capabilities="";
    $this->loggedin=false;
    $this->error= "";
    $this->error_raw="";
  }

   /**
    * Tokenize a line of input by quote marks and return them as an array
    *
    * @param $string string Input line to parse for quotes
    * @return array Array of broken by quotes parts of original string
    */
  function parse_for_quotes($string) {

      $start = -1;
      $index = 0;

      for($ptr = 0; $ptr < strlen($string); $ptr++){
          if($string[$ptr] == '"' and $string[$ptr] != '\\'){
              if($start == -1){
                  $start = $ptr;
              } /* end if */
              else{
                  $token[$index++] = substr($string, $start + 1, $ptr - $start - 1);
                  $found = true;
                  $start = -1;
              } /* end else */

          } /* end if */  

      } /* end for */

      if(isset($token))
          return $token;
      else
          return false;
  } /* end function */            

  /**
   * Parser for status responses.
   *
   * This should probably be replaced by a smarter parser.
   *
   * @param $string string Input that contains status responses.
   * @todo remove this function and dependencies
   */
  function status($string) {

      /*  Need to remove this and all dependencies from the class */

      switch (substr($string, 0,2)){
          case "NO":
              return F_NO;		//there should be some function to extract the error code from this line
					//NO ("quota") "You are oly allowed x number of scripts"
              break;
          case "OK":
              return F_OK;
              break;
          default:
              switch ($string[0]){
                  case "{":
                      //do parse here for curly braces - maybe modify
                      //parse_for_quotes to handle any parse delimiter?
                      return F_HEAD;
                      break;
                  default:
                      return F_DATA;
                      break;
              }
        }
  }
  
  /**
   * Attemp to log in to the sieve server.
   * 
   * It will return false if it fails, true if all is well.  This also loads
   * some arrays up with some handy information:
   *
   * capabilities["implementation"] contains the sieve version information
   * 
   * capabilities["auth"] contains the supported authentication modes by the
   * SIEVE server.
   * 
   * capabilities["modules"] contains the built in modules like "reject",
   * "redirect", etc.
   * 
   * capabilities["starttls"] , if is set and equal to true, will show that the
   * server supports the STARTTLS extension.
   * 
   * capabilities["unknown"] contains miscellaneous/extraneous header info sieve
   * may have sent
   *
   * @return boolean
   */
  function sieve_login() {

    $this->fp=fsockopen($this->host,$this->port);
    if($this->fp == false)
        return false;
 
    $this->line=fgets($this->fp,1024);

    //Hack for older versions of Sieve Server.  They do not respond with the Cyrus v2. standard
    //response.  They repsond as follows: "Cyrus timsieved v1.0.0" "SASL={PLAIN,........}"
    //So, if we see IMLEMENTATION in the first line, then we are done.

    if(ereg("IMPLEMENTATION",$this->line))
    {
      //we're on the Cyrus V2 sieve server
      while(sieve::status($this->line) == F_DATA){

          $this->item = sieve::parse_for_quotes($this->line);

          if(strcmp($this->item[0], "IMPLEMENTATION") == 0)
              $this->capabilities["implementation"] = $this->item[1];
        
          elseif(strcmp($this->item[0], "SIEVE") == 0 or strcmp($this->item[0], "SASL") == 0){

              if(strcmp($this->item[0], "SIEVE") == 0)
                  $this->cap_type="modules";
              else
                  $this->cap_type="auth";            

              $this->modules = split(" ", $this->item[1]);
              if(is_array($this->modules)){
                  foreach($this->modules as $this->module)
                      $this->capabilities[$this->cap_type][$this->module]=true;
              } /* end if */
              elseif(is_string($this->modules))
                  $this->capabilites[$this->cap_type][$this->modules]=true;
          }    
          elseif(strcmp($this->item[0], "STARTTLS") == 0) {
	          $this->capabilities['starttls'] = true;
	  
          }
	  else{ 
              $this->capabilities["unknown"][]=$this->line;
          }    
      $this->line=fgets($this->fp,1024);

       }// end while
    }
    else
    {
        //we're on the older Cyrus V1. server  
        //this version does not support module reporting.  We only have auth types.
        $this->cap_type="auth";
       
        //break apart at the "Cyrus timsieve...." "SASL={......}"
        $this->item = sieve::parse_for_quotes($this->line);

        $this->capabilities["implementation"] = $this->item[0];

        //we should have "SASL={..........}" now.  Break out the {xx,yyy,zzzz}
        $this->modules = substr($this->item[1], strpos($this->item[1], "{"),strlen($this->item[1])-1);

        //then split again at the ", " stuff.
        $this->modules = split($this->modules, ", ");
 
        //fill up our $this->modules property
        if(is_array($this->modules)){
            foreach($this->modules as $this->module)
                $this->capabilities[$this->cap_type][$this->module]=true;
        } /* end if */
        elseif(is_string($this->modules))
            $this->capabilites[$this->cap_type][$this->module]=true;
    }




    if(sieve::status($this->line) == F_NO){		//here we should do some returning of error codes?
        $this->error=EC_UNKNOWN;
        $this->error_raw = "Server not allowing connections.";
        return false;
    }

    /* decision login to decide what type of authentication to use... */


     /* Loop through each allowed authentication type and see if the server allows the type */
     foreach(explode(" ", $this->auth_types) as $auth_type)
     {
        if ($this->capabilities["auth"][$auth_type])
        {
            /* We found an auth type that is allowed. */
            $this->auth_in_use = $auth_type;
        }
     }
    
     /* call our authentication program */
   
    return sieve::authenticate();

  }

  /**
   * Log out of the sieve server.
   *
   * @return boolean Always returns true at this point.
   */
  function sieve_logout() {
    if($this->loggedin==false)
        return false;

    fputs($this->fp,"LOGOUT\r\n");
    fclose($this->fp);
    $this->loggedin=false;
    return true;
  }

  /**
   * Send the script contained in $script to the server.
   *
   * It will return any error results it finds (in $sieve->error and
   * $sieve->error_raw), and return true if it is successfully sent.  The
   * function does _not_ automatically make the script the active script.
   *
   * @param $scriptname string The name of the SIEVE script.
   * @param $script The script to be uploaded.
   * @return boolean Returns true if script has been successfully uploaded.
   */
  function sieve_sendscript($scriptname, $script) {
    if($this->loggedin==false)
        return false;
    $this->script=stripslashes($script);
    $len=strlen($this->script);
    
    $this->lastcmd = 'PUTSCRIPT "'.$scriptname.'" {'.$len.'+}'."\r\n".$this->script."\r\n";
    fputs($this->fp, $this->lastcmd);
    return sieve::get_response();

  }  
  
  /**
   * Check if there is enough space for a script to be uploaded. 
   *
   * This function returns true or false based on whether the sieve server will
   * allow your script to be sent and your quota has not been exceeded.  This
   * function does not currently work due to a believed bug in timsieved.  It
   * could be my code too.
   *
   * It appears the timsieved does not honor the NUMBER type.  see lex.c in
   * timsieved src.  don't expect this function to work yet.  I might have
   * messed something up here, too.
   *
   * @param $scriptname string The name of the SIEVE script.
   * @param $scriptsize integer The size of the SIEVE script.
   * @return boolean
   * @todo Does not work; bug fix and test.
   */
  function sieve_havespace($scriptname, $scriptsize)   {
    if($this->loggedin==false)
        return false;
        
    $this->lastcmd = "HAVESPACE \"$scriptname\" $scriptsize\r\n";
    fputs($this->fp, $this->lastcmd);
    return sieve::get_response();
  }  

  /**
   * Set the script active on the sieve server.
   *
   * @param $scriptname string The name of the SIEVE script.
   * @return boolean
   */
  function sieve_setactivescript($scriptname)   {
    if($this->loggedin==false)
        return false;
    
		$this->lastcmd = "SETACTIVE \"$scriptname\"\r\n";
    fputs($this->fp, $this->lastcmd);   
    return sieve::get_response();

  }
  
  /**
   * Return the contents of the requested script.
   * 
   * If you want to display the script, you will need to change all CrLf to
   * '.'.
   *
   * @param $scriptname string The name of the SIEVE script.
   * @return arr SIEVE script data.
   */
  function sieve_getscript($scriptname) {
    unset($this->script);
    if($this->loggedin==false)
        return false;
        
    $this->lastcmd = "GETSCRIPT \"$scriptname\"\r\n";
    fputs($this->fp, $this->lastcmd);
    return sieve::get_response();
  }

  /**
   * Attempt to delete the script requested.
   *
   * If the script is currently active, the server will not have any active
   * script after the deletion.
   *
   * @param $scriptname string The name of the SIEVE script.
   * @return mixed
   */
  function sieve_deletescript($scriptname)   {
    if($this->loggedin==false)
        return false;
        
		$this->lastcmd = "DELETESCRIPT \"$scriptname\"\r\n";
    fputs($this->fp, $this->lastcmd);    

    return sieve::get_response();
  }

  
  /**
   * List available scripts on the SIEVE server.
   *
   * This function returns true or false.  $sieve->response will be filled
   * with the names of the scripts found.  If a script is active, the
   * $sieve->response["ACTIVE"] will contain the name of the active script.
   *
   * @return boolean
   */
  function sieve_listscripts() { 
  	 $this->lastcmd = "LISTSCRIPTS\r\n";
     fputs($this->fp, $this->lastcmd); 
     sieve::get_response();		//should always return true, even if there are no scripts...
     if(isset($this->found_script) and $this->found_script)
         return true;
     else{
         $this->error=EC_NOSCRIPTS;	//sieve::getresponse has no way of telling wether a script was found...
         $this->error_raw="No scripts found for this account.";
         return false;
     }
   }


  /**
   * Check availability of connection to the SIEVE server.
   *
   * This function returns true or false based on whether the connection to the
   * sieve server is still alive.
   *
   * @return boolean
   */
  function sieve_alive()   {
      if(!isset($this->fp) or $this->fp==0){
          $this->error = EC_NOT_LOGGED_IN;
          return false;
      }
      elseif(feof($this->fp)){			
          $this->error = EC_NOT_LOGGED_IN;
          return false;
      }
      else
          return true;
  }

  /**
   * Perform SASL authentication to SIEVE server.
   *
   * Attempts to authenticate to SIEVE, using some SASL authentication method
   * such as PLAIN or DIGEST-MD5.
   *
   */
  function authenticate() {

    switch ($this->auth_in_use) {

        case "PLAIN":
            $auth=base64_encode("$this->auth\0$this->user\0$this->pass");
   
            $this->len=strlen($auth);			
            fputs($this->fp, 'AUTHENTICATE "PLAIN" {' . $this->len . '+}' . "\r\n");
            fputs($this->fp, "$auth\r\n");

            $this->line=fgets($this->fp,1024);		
            while(sieve::status($this->line) == F_DATA)
               $this->line=fgets($this->fp,1024);

             if(sieve::status($this->line) == F_NO)
               return false;
             $this->loggedin=true;
               return true;    
	    break;
	
        case "DIGEST-MD5":
	     // SASL DIGEST-MD5 support works with timsieved 1.1.0
	     // follows rfc2831 for generating the $response to $challenge
	     fputs($this->fp, "AUTHENTICATE \"DIGEST-MD5\"\r\n");
	     // $clen is length of server challenge, we ignore it. 
	     $clen = fgets($this->fp, 1024);
	     // read for 2048, rfc2831 max length allowed
	     $challenge = fgets($this->fp, 2048);
	     // vars used when building $response_value and $response
	     $cnonce = base64_encode(bin2hex(hmac_md5(microtime())));
	     $ncount = "00000001";
	     $qop_value = "auth"; 
	     $digest_uri_value = "sieve/$this->host";
	     // decode the challenge string
	     $result = decode_challenge($challenge);
	     // verify server supports qop=auth 
	     $qop = explode(",",$result['qop']);
	     if (!in_array($qop_value, $qop)) {
	        // rfc2831: client MUST fail if no qop methods supported
	        return false;
	     }
	     // build the $response_value
	     $string_a1 = utf8_encode($this->user).":";
	     $string_a1 .= utf8_encode($result['realm']).":";
	     $string_a1 .= utf8_encode($this->pass);
	     $string_a1 = hmac_md5($string_a1);
	     $A1 = $string_a1.":".$result['nonce'].":".$cnonce.":".utf8_encode($this->auth);
	     $A1 = bin2hex(hmac_md5($A1));
	     $A2 = bin2hex(hmac_md5("AUTHENTICATE:$digest_uri_value"));
	     $string_response = $result['nonce'].":".$ncount.":".$cnonce.":".$qop_value;
	     $response_value = bin2hex(hmac_md5($A1.":".$string_response.":".$A2));
	     // build the challenge $response
	     $reply = "charset=utf-8,username=\"".$this->user."\",realm=\"".$result['realm']."\",";
	     $reply .= "nonce=\"".$result['nonce']."\",nc=$ncount,cnonce=\"$cnonce\",";
	     $reply .= "digest-uri=\"$digest_uri_value\",response=$response_value,";
	     $reply .= "qop=$qop_value,authzid=\"".utf8_encode($this->auth)."\"";
	     $response = base64_encode($reply);
	     fputs($this->fp, "\"$response\"\r\n");
 	
             $this->line = fgets($this->fp, 1024);
             while(sieve::status($this->line) == F_DATA)
                $this->line = fgets($this->fp,1024);

             if(sieve::status($this->line) == F_NO)
               return false;
             $this->loggedin = TRUE;
               return TRUE;    
             break;
	
        case "CRAM-MD5":
  	     // SASL CRAM-MD5 support works with timsieved 1.1.0
	     // follows rfc2195 for generating the $response to $challenge
	     // CRAM-MD5 does not support proxy of $auth by $user
	     // requires php mhash extension
	     fputs($this->fp, "AUTHENTICATE \"CRAM-MD5\"\r\n");
	     // $clen is the length of the challenge line the server gives us
	     $clen = fgets($this->fp, 1024);
	     // read for 1024, should be long enough?
	     $challenge = fgets($this->fp, 1024);
	     // build a response to the challenge
	     $hash = bin2hex(hmac_md5(base64_decode($challenge), $this->pass));
	     $response = base64_encode($this->user." ".$hash);
	     // respond to the challenge string
	     fputs($this->fp, "\"$response\"\r\n");
	     
             $this->line = fgets($this->fp, 1024);		
             while(sieve::status($this->line) == F_DATA)
                $this->line = fgets($this->fp,1024);

             if(sieve::status($this->line) == F_NO)
               return false;
             $this->loggedin = TRUE;
               return TRUE;    
             break;

	case "LOGIN":
 	     $login=base64_encode($this->user);
 	     $pass=base64_encode($this->pass);
 	
 	     fputs($this->fp, "AUTHENTICATE \"LOGIN\"\r\n");
 	     fputs($this->fp, "{".strlen($login)."+}\r\n");
 	     fputs($this->fp, "$login\r\n");
 	     fputs($this->fp, "{".strlen($pass)."+}\r\n");
 	     fputs($this->fp, "$pass\r\n");
 
	     $this->line=fgets($this->fp,1024);
 	     while(sieve::status($this->line) == F_HEAD ||
 	           sieve::status($this->line) == F_DATA)
 	         $this->line=fgets($this->fp,1024);
 	
 	     if(sieve::status($this->line) == F_NO)
 	         return false;
 	     $this->loggedin=true;
 	     return true;
 	     break;

        default:
            return false;
            break;

    }//end switch
  }

  /**
   * Return an array of available capabilities.
   *
   * @return array
   */
  function sieve_get_capability() {
    if($this->loggedin==false)
        return false;
    fputs($this->fp, "CAPABILITY\r\n"); 
    $this->line=fgets($this->fp,1024);

    $tmp = array();
    if(preg_match('|^BYE \(REFERRAL "(sieve://)?([^/"]+)"\)|', $this->line, $tmp ) ){
        $this->host = $tmp[2];
        $this->loggedin = false;
        fclose($this->fp);

        if( sieve::sieve_login() ) {
            return $this->sieve_get_capability();
        } else {
            $this->loggedin = false;
            fclose($this->fp);
            $this->error = EC_UNKNOWN;
            $this->error_raw = 'UNABLE TO FOLLOW REFERRAL - ' . $this->line;
            return false;
        }
    }

    //Hack for older versions of Sieve Server.  They do not respond with the Cyrus v2. standard
    //response.  They repsond as follows: "Cyrus timsieved v1.0.0" "SASL={PLAIN,........}"
    //So, if we see IMLEMENTATION in the first line, then we are done.

    if(ereg("IMPLEMENTATION",$this->line))
    {
      //we're on the Cyrus V2 sieve server
      while(sieve::status($this->line) == F_DATA){

          $this->item = sieve::parse_for_quotes($this->line);

          if(strcmp($this->item[0], "IMPLEMENTATION") == 0)
              $this->capabilities["implementation"] = $this->item[1];
        
          elseif(strcmp($this->item[0], "SIEVE") == 0 or strcmp($this->item[0], "SASL") == 0){

              if(strcmp($this->item[0], "SIEVE") == 0)
                  $this->cap_type="modules";
              else
                  $this->cap_type="auth";            

              $this->modules = split(" ", $this->item[1]);
              if(is_array($this->modules)){
                  foreach($this->modules as $this->module)
                      $this->capabilities[$this->cap_type][$this->module]=true;
              } /* end if */
              elseif(is_string($this->modules))
                  $this->capabilites[$this->cap_type][$this->modules]=true;
          }    
          else{ 
              $this->capabilities["unknown"][]=$this->line;
          }    
      $this->line=fgets($this->fp,1024);

       }// end while
    }
    else
    {
        //we're on the older Cyrus V1. server  
        //this version does not support module reporting.  We only have auth types.
        $this->cap_type="auth";
       
        //break apart at the "Cyrus timsieve...." "SASL={......}"
        $this->item = sieve::parse_for_quotes($this->line);

        $this->capabilities["implementation"] = $this->item[0];

        //we should have "SASL={..........}" now.  Break out the {xx,yyy,zzzz}
        $this->modules = substr($this->item[1], strpos($this->item[1], "{"),strlen($this->item[1])-1);

        //then split again at the ", " stuff.
        $this->modules = split($this->modules, ", ");
 
        //fill up our $this->modules property
        if(is_array($this->modules)){
            foreach($this->modules as $this->module)
                $this->capabilities[$this->cap_type][$this->module]=true;
        } /* end if */
        elseif(is_string($this->modules))
            $this->capabilites[$this->cap_type][$this->module]=true;
    }

    return $this->modules;
  }

}


/**
 * The following functions are support functions and might be handy to the
 * sieve class.
 */

if(!function_exists('hmac_md5')) {

/**
 * Creates a HMAC digest that can be used for auth purposes.
 * See RFCs 2104, 2617, 2831
 * Uses mhash() extension if available
 *
 * Squirrelmail has this function in functions/auth.php, and it might have been
 * included already. However, it helps remove the dependancy on mhash.so PHP
 * extension, for some sites. If mhash.so _is_ available, it is used for its
 * speed.
 *
 * This function is Copyright (c) 1999-2003 The SquirrelMail Project Team
 * Licensed under the GNU GPL. For full terms see the file COPYING.
 *
 * @param string $data Data to apply hash function to.
 * @param string $key Optional key, which, if supplied, will be used to
 * calculate data's HMAC.
 * @return string HMAC Digest string
 */
function hmac_md5($data, $key='') {
    // See RFCs 2104, 2617, 2831
    // Uses mhash() extension if available
    if (extension_loaded('mhash')) {
      if ($key== '') {
        $mhash=mhash(MHASH_MD5,$data);
      } else {
        $mhash=mhash(MHASH_MD5,$data,$key);
      }
      return $mhash;
    }
    if (!$key) {
         return pack('H*',md5($data));
    }
    $key = str_pad($key,64,chr(0x00));
    if (strlen($key) > 64) {
        $key = pack("H*",md5($key));
    }
    $k_ipad =  $key ^ str_repeat(chr(0x36), 64) ;
    $k_opad =  $key ^ str_repeat(chr(0x5c), 64) ;
    /* Heh, let's get recursive. */
    $hmac=hmac_md5($k_opad . pack("H*",md5($k_ipad . $data)) );
    return $hmac;
}
}

/**
 * A hack to decode the challenge from timsieved 1.1.0.
 * 
 * This function may not work with other versions and most certainly won't work
 * with other DIGEST-MD5 implentations
 *
 * @param $input string Challenge supplied by timsieved.
 */
function decode_challenge ($input) {
    $input = base64_decode($input);
    preg_match("/nonce=\"(.*)\"/U",$input, $matches);
    $resp['nonce'] = $matches[1];
    preg_match("/realm=\"(.*)\"/U",$input, $matches);
    $resp['realm'] = $matches[1];
    preg_match("/qop=\"(.*)\"/U",$input, $matches);
    $resp['qop'] = $matches[1];
    return $resp;
}

// vim:ts=4:et:ft=php

?>
<?php
class sieve_strs {

function user_domain_decomp ( $user_domain, $host_domain, &$user, &$domain )
{
	$user_domain_x = $user_domain;
	$user = '';
	do {
	  $domain = substr (strstr($user_domain_x,'.'),1);
	  if ( $domain == '' ) {
	    return false;
	  }
	  preg_match ( '/.*\./U', $user_domain_x, $matches );
	  $user_domain_x = $domain;
	  $user_x = rtrim ( $matches[0], '.' );
	  $user .= '.'.$user_x;
	} while (!preg_match("/$domain$/", $host_domain));
	$user = substr ($user,1);
	return true;
}

function get_old_script ( $sieve )
{
  if($sieve->sieve_getscript('sieve')){
    $old_script = '';
    foreach($sieve->response as $line){
      $old_script .= $line;
    }
    $old_script2 = rtrim ($old_script, "\n");
    $old_script = rtrim ($old_script2, "\r");
  } else $old_script ='';
  return $old_script;
}

}
?>
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: web-cyradm\n"
"POT-Creation-Date: 2003-05-29 16:28+0200\n"
"PO-Revision-Date: 2003-08-18 13:52+0100\n"
"Last-Translator: throats <throats@gdi.cz>\n"
"Language-Team: gdi.cz <web-cyradm@gdi.cz>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-2\n"
"Content-Transfer-Encoding: 8bit\n"

#: CVS/Base/browseaccounts.php:22
#: browseaccounts.php:22
msgid "Browse accounts for domain"
msgstr "Procházení úètù domény"

#: CVS/Base/browseaccounts.php:34
#: adminuser.php:21
#: browse.php:66
#: browseaccounts.php:34
#: catchall.php:24
#: catchall.php:118
#: change_password.php:19
#: change_password.php:32
#: change_password.php:42
#: delete_catchall.php:23
#: deleteaccount.php:83
#: deleteadminuser.php:74
#: deletedomain.php:17
#: deleteemail.php:62
#: editaccount.php:31
#: editdomain.php:37
#: editdomain.php:67
#: editemail.php:15
#: editemail.php:38
#: forwardaccount.php:28
#: forwardalias.php:16
#: forwardalias.php:33
#: lib/crypto.php:30
#: lib/crypto.php:110
#: lib/crypto.php:149
#: newaccount.php:26
#: newadminuser.php:137
#: newadminuser.php:215
#: newalias.php:26
#: newdomain.php:237
#: newemail.php:15
#: vacation.php:15
#: vacation.php:30
#: validate.inc.php:58
msgid "Database error"
msgstr "Chyba databáze"

#: CVS/Base/browseaccounts.php:48
#: browseaccounts.php:48
#: newaccount.php:68
msgid "Total accounts"
msgstr "Úètù celkem"

#: CVS/Base/browseaccounts.php:49
#: adminuser.php:36
#: browseaccounts.php:49
msgid "Displaying from position:"
msgstr "Zobrazeno od pozice:"

#: CVS/Base/browseaccounts.php:55
#: CVS/Base/browseaccounts.php:242
#: browseaccounts.php:55
#: browseaccounts.php:242
#: search.php:123
#: search.php:239
msgid "Add new account"
msgstr "Nový úèet"

#: CVS/Base/browseaccounts.php:78
#: adminuser.php:65
#: aliases.php:56
#: browseaccounts.php:78
#: editalias.php:69
#: search.php:131
#: search.php:135
msgid "Previous 10 entries"
msgstr "O 10 zpìt"

#: CVS/Base/browseaccounts.php:82
#: adminuser.php:69
#: aliases.php:57
#: browseaccounts.php:82
#: editalias.php:70
#: search.php:138
#: search.php:142
msgid "Next 10 entries"
msgstr "Dal¹ích 10"

#: CVS/Base/browseaccounts.php:91
#: adminuser.php:78
#: aliases.php:64
#: browse.php:20
#: browseaccounts.php:91
#: editaccount.php:50
#: editalias.php:76
#: search.php:52
#: search.php:149
#: search.php:253
msgid "action"
msgstr "akce"

#: CVS/Base/browseaccounts.php:96
#: aliases.php:65
#: browseaccounts.php:96
#: editaccount.php:54
#: newaccount.php:136
#: newalias.php:82
#: search.php:150
#: search.php:254
msgid "Email address"
msgstr "Email"

#: CVS/Base/browseaccounts.php:96
#: browseaccounts.php:96
#: editaccount.php:63
#: login.php:61
#: search.php:151
msgid "Username"
msgstr "U¾ivatelské jméno"

#: CVS/Base/browseaccounts.php:97
#: browseaccounts.php:97
msgid "Last login"
msgstr "Poslední pøihlá¹ení"

#: CVS/Base/browseaccounts.php:97
#: browseaccounts.php:97
#: editaccount.php:68
#: search.php:152
msgid "Quota used"
msgstr "Vyu¾ití kvóty"

#: CVS/Base/browseaccounts.php:136
#: browseaccounts.php:136
msgid "n/a"
msgstr "n/a"

#: CVS/Base/browseaccounts.php:146
#: browseaccounts.php:146
#: search.php:171
msgid "Edit account"
msgstr "Upravit úèet"

#: CVS/Base/browseaccounts.php:151
#: browseaccounts.php:151
msgid "Change Password"
msgstr "Zmìnit heslo"

#: CVS/Base/browseaccounts.php:155
#: browseaccounts.php:155
#: editaccount.php:58
#: editaccount.php:91
msgid "Forward"
msgstr "Pøedat"

#: CVS/Base/browseaccounts.php:159
#: browseaccounts.php:159
#: search.php:172
msgid "Delete account"
msgstr "Smazat úèet"

#: CVS/Base/browseaccounts.php:163
#: browseaccounts.php:163
#: search.php:173
msgid "Set quota"
msgstr "Nastavit kvótu"

#: CVS/Base/browseaccounts.php:167
#: browseaccounts.php:167
#: search.php:174
msgid "Set catch all"
msgstr "Nastavit doménový ko¹"

#: CVS/Base/browseaccounts.php:181
#: browseaccounts.php:181
#: search.php:190
msgid "Forwards"
msgstr "Pøedávání"

#: CVS/Base/browseaccounts.php:218
#: browseaccounts.php:218
#: editaccount.php:152
#: search.php:217
msgid "out of"
msgstr "z"

#: CVS/Base/browseaccounts.php:221
#: browseaccounts.php:221
#: search.php:220
msgid "Unable to retrieve quota"
msgstr "Nezdaøilo se zjistit kvótu."

#: CVS/Base/browseaccounts.php:224
#: browseaccounts.php:224
#: editaccount.php:155
#: search.php:223
msgid "Quota not set"
msgstr "Kvóta není nastavena"

#: CVS/Base/browseaccounts.php:236
#: browseaccounts.php:236
#: search.php:235
msgid "No accounts found"
msgstr "Nebyl nalezen ¾ádný úèet"

#: adminuser.php:13
msgid "Browse admins"
msgstr "Procházet správce"

#: adminuser.php:35
msgid "Total administrators"
msgstr "Správcù celkem"

#: adminuser.php:43
msgid "Add administator"
msgstr "Nový správce"

#: adminuser.php:82
msgid "Adminname"
msgstr "Jméno správce"

#: adminuser.php:86
msgid "domain"
msgstr "doména"

#: adminuser.php:90
msgid "admin type"
msgstr "Druh správce"

#: adminuser.php:119
msgid "Edit adminuser"
msgstr "Uprav správce"

#: adminuser.php:125
msgid "Delete adminuser"
msgstr "Sma¾ správce"

#: adminuser.php:144
msgid "All domains"
msgstr "v¹echny domény"

#: adminuser.php:148
msgid "None"
msgstr ""

#: adminuser.php:158
#: editadminuser.php:65
#: menu.inc.php:132
#: newadminuser.php:57
#: newadminuser.php:207
msgid "Superuser"
msgstr "Superu¾ivatel"

#: adminuser.php:160
#: editadminuser.php:76
#: menu.inc.php:134
#: newadminuser.php:61
#: newadminuser.php:209
msgid "Domain Master"
msgstr "Správce domény"

#: adminuser.php:174
msgid "No accounts fount"
msgstr "Nebyl nalezen ¾ádný úèet"

#: adminuser.php:181
msgid "Add administrator"
msgstr "Nový správce"

#: aliases.php:11
msgid "Browse aliases for domain"
msgstr "Procházet aliasy pro doménu"

#: aliases.php:50
msgid "Total aliases"
msgstr "Celkem aliasù"

#: aliases.php:55
msgid "Add new alias"
msgstr "Pøidat alias"

#: aliases.php:66
#: editalias.php:77
#: editemail.php:113
#: newemail.php:98
#: search.php:255
msgid "Destination"
msgstr "Pøíjemce"

#: aliases.php:91
#: search.php:273
msgid "Edit Alias"
msgstr "Upravit alias"

#: aliases.php:92
#: search.php:274
msgid "Delete Alias"
msgstr "Smazat alias"

#: auth.inc.php:70
msgid "Web-cyradm is for authorized users only."
msgstr "Web-cyradm smí pou¾ívat jen  oprávnìný u¾ivatel."

#: auth.inc.php:71
msgid "Make sure you entered the right password."
msgstr "Zkontrolujte si prosím správnost hesla."

#: auth.inc.php:72
msgid "Push the back button in your browser to try again."
msgstr "Pou¾ijte tlaèítko Zpìt v prohlí¾eèi a pøihlá¹ení opakujte."

#: auth.inc.php:73
msgid " Your attempt to login has been stored."
msgstr "Pokus o pøihlá¹ení byl zaznamenán."

#: browse.php:13
msgid "Browse domains"
msgstr "Procházet domény"

#: browse.php:24
#: search.php:53
msgid "domainname"
msgstr "jméno domény"

#: browse.php:31
#: search.php:57
msgid "prefix"
msgstr "pøedpona(prefix)"

#: browse.php:38
#: search.php:60
msgid "max Accounts"
msgstr "max úètù"

#: browse.php:42
#: search.php:61
msgid "default quota per user"
msgstr "Výchozí kvóta pro u¾ivatele"

#: browse.php:90
#: search.php:82
msgid "Edit Domain"
msgstr "Uprav doménu"

#: browse.php:91
#: search.php:83
msgid "Delete Domain"
msgstr "Sma¾ doménu"

#: browse.php:92
#: deletedomain.php:51
#: menu.inc.php:59
#: search.php:84
msgid "accounts"
msgstr "úèty"

#: browse.php:93
#: menu.inc.php:68
#: search.php:85
msgid "Aliases"
msgstr "Aliasy"

#: catchall.php:13
#, fuzzy
msgid "Define a Account for receiving undefined adresses for domain"
msgstr "Vytvoøit úèet pro pøíjem neznámých adres v doménì"

#: catchall.php:38
msgid "Do you really want to define the user"
msgstr "Opravdu chcete vytvoøit nového u¾ivatele"

#: catchall.php:42
msgid "to receive all undefined emailadresses"
msgstr ", aby pøijímal v¹echny neznámé e-mailové adresy"

#: catchall.php:46
msgid "The currently defined user"
msgstr ""

#: catchall.php:46
msgid "will not receiving any undefined emailadresses anymore"
msgstr "aby pøijímal v¹echny neznámé e-mailové adresy"

#: catchall.php:74
msgid "The user"
msgstr "U¾ivatel"

#: catchall.php:74
msgid "is allready defined to receive all undefined Emails."
msgstr "aby pøijímal v¹echny neznámé e-mailové adresy"

#: catchall.php:76
msgid "Do you want to remove the function \"catch all\" for the account"
msgstr "Chcete zakázat doménový ko¹ pro úèet"

#: catchall.php:127
#: newadminuser.php:197
msgid "successfully added to Database"
msgstr "úspì¹nì ulo¾eno do databáze"

#: catchall.php:133
#: delete_catchall.php:37
#: editdomain.php:56
#: editemail.php:53
#: newdomain.php:255
#: newemail.php:44
msgid "Database error, please try again"
msgstr "Chyba databáze, prosím zkuste opakovat operaci"

#: catchall.php:140
#: delete_catchall.php:44
msgid "Cancelled"
msgstr "Zru¹eno"

#: change_password.php:53
msgid "Password changed"
msgstr "Heslo bylo zmìnìno"

#: change_password.php:56
msgid "Failure in changing password."
msgstr "Chyba pøi zmìnì hesla"

#: change_password.php:59
#: editadminuser.php:252
msgid "New passwords are not equal. Password not changed"
msgstr "Nová hesla si neodpovídají. Heslo nebylo zmìnìno"

#: change_password.php:72
msgid "Change password for account"
msgstr "Zmìnit heslo pro úèet"

#: change_password.php:91
msgid "New password"
msgstr "Nové heslo"

#: change_password.php:101
msgid "Confirm new password"
msgstr "Potrvrzení nového hesla"

#: change_password.php:121
#: newaccount.php:243
msgid "Passwords do not match"
msgstr "Hesla si neodpovídají"

#: deleteaccount.php:25
msgid "Delete an Account from the System"
msgstr "Smazat úèet ze systému"

#: deleteaccount.php:29
msgid "Do you really want to delete the user "
msgstr "Opravdu chcete smazat u¾ivatele"

#: deleteaccount.php:33
#, fuzzy
msgid "with all its defined Emailadresses"
msgstr "se v¹emi {jeho} e-mailovými adresami"

#: deleteaccount.php:69
#: deleteadminuser.php:68
#: deletedomain.php:84
#: deleteemail.php:55
msgid "Action cancelled, nothing deleted"
msgstr "Akce zru¹ena, nic nebylo smazáno"

#: deleteaccount.php:100
msgid "User deleted"
msgstr "U¾ivatel smazán"

#: deleteaccount.php:111
#: deletedomain.php:175
msgid "Security violation detected, action cancelled. Your attempt has been logged."
msgstr "Naru¹ení bezpeènosti, oprace zru¹ena. Pokus byl zaznamenán"

#: deleteadminuser.php:17
msgid "Delete an Admin account from the System"
msgstr "Sma¾ úèet správce ze systému"

#: deleteadminuser.php:21
msgid "Do you really want to delete the Domain supervisor"
msgstr "Chcete opravdu smazat správce domény"

#: deleteadminuser.php:90
#: editadminuser.php:276
msgid "At least one Superuser is needed for Web-cyradm"
msgstr "Web-cyradm musí mít alespoò jednoho Superu¾ivatele"

#: deleteadminuser.php:103
msgid "Admin user deleted"
msgstr "Správce smazán"

#: deleteadminuser.php:116
#: editadminuser.php:299
#: newadminuser.php:226
msgid "Security violation detected, nothing deleted, attempt has been logged"
msgstr "Naru¹ení bezpeènosti, nic nebylo smazáno. Pokus byl zaznamenán."

#: deletedomain.php:28
msgid "Delete a Domain from the System"
msgstr "Smazat doménu ze systému"

#: deletedomain.php:32
msgid "Do you really want to delete the Domain"
msgstr "Chcete opravdu smazat doménu"

#: deletedomain.php:37
msgid "with all its defined accounts, admins, and emailadresses"
msgstr "se v¹emi jejími úèty, správci a adresami"

#: deletedomain.php:43
msgid "This can take a while depending on how many account have to be deleted"
msgstr "Operace mù¾e chvíli trvat v závislosti na poètu ru¹ených úètù "

#: deletedomain.php:47
msgid "Your action will delete"
msgstr "Potvrzením sma¾ete"

#: deletedomain.php:154
#: newadminuser.php:101
msgid "Domain"
msgstr "Doména"

#: deletedomain.php:158
#, fuzzy
msgid "successfully deleted"
msgstr "úspì¹nì smazána"

#: deletealias.php:28
msgid "Please confirm you want to remove"
msgstr "Potvrïte ze chcete odstranit"

#: deletealias.php:28
msgid "from the alias"
msgstr ""

#: deletealias.php:30
msgid "Yes"
msgstr "Ano"

#: deletealias.php:49
msgid "Please confirm you want to remove the alias"
msgstr "Potvrïte ze chcete odstranit alias"

#: deletealias.php:77
msgid "Removed"
msgstr "Odstranìno"

#: deletealias.php:77
msgid "from"
msgstr "z"

#: deletealias.php:85
msgid "Removed the alias"
msgstr "Odstranìn alias"

#: editaccount.php:21
msgid "Email adresses defined for user"
msgstr "Vytvoøené e-mailové adresy u¾ivatele"

#: editaccount.php:42
msgid "New email address"
msgstr "Nova e-mailová adresa"

#: editaccount.php:90
msgid "Edit Emailadress"
msgstr "Upravit e-mail"

#: editaccount.php:92
msgid "Vacation"
msgstr "Dovolená"

#: editaccount.php:93
msgid "Delete Emailadress"
msgstr "Smazat e-mailovou adresu"

#: editadminuser.php:13
msgid "Change admin user for domain"
msgstr "Zmìnit správce domény"

#: editadminuser.php:42
#: newaccount.php:106
#: newadminuser.php:36
msgid "Accountname"
msgstr "Název úètu"

#: editadminuser.php:52
#: newadminuser.php:51
msgid "Admin Type"
msgstr "Typ správce"

#: editadminuser.php:84
#: login.php:71
#: newaccount.php:138
#: newadminuser.php:71
msgid "Password"
msgstr "Heslo"

#: editadminuser.php:100
#: newaccount.php:139
#: newadminuser.php:86
msgid "Confirm Password"
msgstr "Potvrzení hesla"

#: editadminuser.php:155
#, fuzzy
msgid "No Domain assigned yet"
msgstr "Není vybrána doména"

#: editadminuser.php:165
msgid "Add new domain to this admin"
msgstr "Nová doména s tímto správcem"

#: editadminuser.php:223
msgid "No such domain, create domain first"
msgstr "Tato doména neexistuje. Doménu je tøeba nejøíve vytvoøit."

#: editadminuser.php:231
msgid "Admin already repsonsible for the domain"
msgstr "Správce je ji¾ za doménu odpovìdný"

#: editalias.php:27
msgid "There was an error adding $dest to $alias: "
msgstr "Nastala chyba pøi pøidávání $dest k $alias: "

#: editalias.php:64
msgid "Editing alias"
msgstr "Úprava aliasu"

#: editalias.php:68
msgid "Delete this alias"
msgstr "Smazat tento alias"

#: editalias.php:101
msgid "Cannot remove from account"
msgstr "Nelze odstranit z úètu"

#: editalias.php:105
#: editalias.php:109
msgid "Remove destination"
msgstr "Odstranít pøíjemce"

#: editalias.php:125
msgid "This alias has no destinations"
msgstr "Alias nemá pøíjemce"

#: editalias.php:142
msgid "New destination"
msgstr "Nový pøíjemce"

#: editdomain.php:46
msgid "Successfully changed domain"
msgstr "úspì¹nì zmìnìna doména"

#: editdomain.php:92
#: newdomain.php:39
msgid "Domainname"
msgstr "Název domény"

#: editdomain.php:106
#: newdomain.php:57
msgid "Prefix"
msgstr "Pøedpona(prefix)"

#: editdomain.php:123
#: newdomain.php:73
msgid "Allow Free Names"
msgstr ""

#: editdomain.php:141
#: newdomain.php:90
msgid "Allow Free Mail Addresses"
msgstr "Povolit volitelné adresy"

#: editdomain.php:159
#: newdomain.php:102
msgid "Maximum Accounts"
msgstr "Maximálnì úètù"

#: editdomain.php:173
#: newdomain.php:117
msgid "Default Quota in Kilobytes"
msgstr "Výchozí kvóta v KB"

#: editdomain.php:202
msgid "Your are not allowed to change domains!"
msgstr "Nemáte oprávnìní mìnit domény!"

#: editemail.php:46
msgid "Successfully changed"
msgstr "Úspì¹nì zmìnìno"

#: editemail.php:68
msgid "You can't edit this email address with 'Allow Free Mail Addressess' set to off!"
msgstr "Nelze upravit adresu, pokud jsou zakázány volitelné adresy."

#: editemail.php:95
#: newemail.php:77
msgid "Emailadress"
msgstr "E-mailová adresa"

#: failed.php:66
msgid "Login failed"
msgstr "Neúspì¹né pøihlá¹ení"

#: failed.php:71
#: login.php:51
msgid "This is only for authorized users"
msgstr "Pouze pro oprávnìné u¾ivatele"

#: failed.php:76
#: logout.php:62
#: timeout.php:38
msgid "If you like to login click"
msgstr "Pro pøihlá¹ení kliknìte "

#: failed.php:78
#: logout.php:64
#: timeout.php:40
msgid "here"
msgstr "zde"

#: forwardaccount.php:51
#: forwardalias.php:68
msgid "Forward set"
msgstr "Pøedávání nastaveno"

#: forwardalias.php:70
msgid "Failure in setting forward"
msgstr "Nastavení pøedávání se nezdaøilo"

#: forwardalias.php:73
msgid "Wrong password"
msgstr "©patné heslo"

#: forwardaccount.php:57
#: forwardalias.php:89
#: forwardalias.php:97
#: forwardalias.php:103
#: forwardalias.php:107
msgid "Forwarding removed"
msgstr "Pøedávání zru¹eno"

#: forwardalias.php:91
#: forwardalias.php:99
msgid "Failure in removing forwarding"
msgstr "Zru¹ení pøedávání se nezdaøilo"

#: forwardalias.php:111
#: vacation.php:79
#: vacation.php:107
msgid "Failed to login"
msgstr "Neúspì¹né pøihlá¹ení"

#: forwardalias.php:123
#: vacation.php:119
msgid "Not possible"
msgstr "Nelze"

#: forwardalias.php:152
msgid "You can't forward this email address with 'Allow Free Mail Addressess' set to off!"
msgstr "Nelze pøedávat z této adresy, pokud jsou zakázány volitelné adresy."

#: forwardalias.php:161
msgid "Forward for emailadress"
msgstr "Pøedávání pro adresu"

#: forwardalias.php:204
msgid "Set forwarding to"
msgstr "Nastavení pøedávání na"

#: forwardalias.php:204
msgid "(Seperate multiple values with ,)"
msgstr "(Oddìlujte hodnoty èárkou)"

#: forwardaccount.php:125
#: forwardalias.php:210
msgid "Keep a copy in the user's mailbox"
msgstr "Nechávat kopii ve schránce"

#: forwardaccount.php:139
#: forwardalias.php:215
msgid "Remove forwarding"
msgstr "Zru¹ení pøedávání"

#: index.php:23
msgid "migrate.php exists! please delete or rename it"
msgstr "migrate.php existuje! Sma¾te ho anebo pøejmenujte"

#: index.php:138
msgid "web-cyradm has not yet been configured"
msgstr "web-cyradm je¹tì nebyl nastavován"

#: index.php:141
msgid "Configuration steps:"
msgstr "Kroky nastavení:"

#: index.php:143
msgid "copy the config file that comes with the distribution: "
msgstr "zkopírujte konfiguraèní soubor z distribuce"

#: index.php:146
msgid "Edit the file config/conf.php to match your systems configuration"
msgstr "Upravte soubor config/conf.php, aby odpovídal nastavení va¹eho systému"

#: index.php:148
msgid "Further information about how to configure Web-cyradm can be found at the following website:"
msgstr "Dal¹í informace o nastavování Web-cyradm najdete na:"

#: login.php:50
msgid "Welcome to Web-cyradm"
msgstr "Vítá vás Web-cyradm"

#: login.php:52
msgid "Please authenticate yourself"
msgstr "Prosím ovìøte svou toto¾nost"

#: login.php:84
msgid "Select language"
msgstr "Zvolte jazyk"

#: logout.php:52
msgid "Thank you for using Web-cyradm"
msgstr "Díky za pou¾ití Web-cyradmin"

#: logout.php:57
msgid "You are logged out"
msgstr "Jste odhlá¹en"

#: menu.inc.php:19
msgid "Superusers Menu"
msgstr "Menu superu¾ivatele"

#: menu.inc.php:23
msgid "Domainmasters menu"
msgstr "Menu správce domény"

#: menu.inc.php:31
msgid "add new domain"
msgstr "nová doména"

#: menu.inc.php:38
msgid "browse domains"
msgstr "procházet domény"

#: menu.inc.php:45
msgid "adminusers"
msgstr "správci"

#: menu.inc.php:75
msgid "home"
msgstr "hlavní stránka"

#: menu.inc.php:82
msgid "logout"
msgstr "odhlá¹ení"

#: menu.inc.php:90
msgid "Search"
msgstr "Hledat"

#: menu.inc.php:114
msgid "Logged in as user"
msgstr "Pøíhlá¹en jako u¾ivatel"

#: menu.inc.php:126
msgid "Your role is"
msgstr "Úroveò oprávnìní"

#: menu.inc.php:144
msgid "Current domain is"
msgstr "Aktuální doména"

#: menu.inc.php:150
msgid "No domain selected"
msgstr "Není vybrána doména"

#: newaccount.php:13
msgid "Add new Account to domain"
msgstr "Pøidat úèet domény"

#: newaccount.php:43
#: newalias.php:43
msgid "transport is not cyrus, unable to create account"
msgstr "transport není cyrus"

#: newaccount.php:55
msgid "Sorry, no more account allowed for domain"
msgstr "Nelze vytvoøit více úètù v doménì"

#: newaccount.php:60
msgid "Maximum allowed accounts is"
msgstr "Maximální poèet úètù je"

#: newaccount.php:137
msgid "Quota"
msgstr "Kvóta"

#: newaccount.php:196
msgid "Sorry, the username already exists"
msgstr "U¾ivatelské jméno ji¾ existuje"

#: newaccount.php:221
msgid "Account successfully added to the Database"
msgstr "Úèet byl ùspì¹nì pøidán do databáze"

#: newaccount.php:234
msgid "Account succesfully added to the IMAP Subsystem"
msgstr "Úèet byl úspì¹nì pøidán do systému IMAP"

#: newadminuser.php:13
msgid "Add new administrator"
msgstr "Nový správce"

#: newadminuser.php:64
msgid "Select \"Superuser\" for all domains"
msgstr "Vyberte \"Superu¾ivatele\" pro v¹echny domény"

#: newadminuser.php:132
msgid "You must provide a username"
msgstr "Musíte zadat u¾ivatelské jméno"

#: newadminuser.php:145
msgid "Passwords are empty or not equal."
msgstr "Hesla jsou prázdná nebo si neodpovídají."

#: newadminuser.php:157
msgid "Username already exist"
msgstr "U¾ivatelské jméno ji¾ existuje"

#: newalias.php:15
msgid "Add new alias to domain"
msgstr "Nový alias domény"

#: newalias.php:55
msgid "Sorry, no more alias allowed for domain"
msgstr "Nelze vytvoøit více aliasù v doménì"

#: newalias.php:60
msgid "Maximum allowed aliases is"
msgstr "Maximální poèet aliasù je"

#: newdomain.php:15
msgid "Add new domain"
msgstr "Nová doména"

#: newdomain.php:140
msgid "Standard Mailboxes"
msgstr "Standardní schránky"

#: newdomain.php:146
msgid "emailadress where the default aliases should be mapped (empty means no mapping)"
msgstr "e-mailové adresy pro mapování výchozích aliasù (prázdné znamená bez mapování)"

#: newdomain.php:163
msgid "Mail transport"
msgstr "Mail transport"

#: newdomain.php:166
msgid "Leave this as is, unless you know what you are doing"
msgstr "Nemìòte, pokud si nejste jisti dùsledky"

#: newdomain.php:187
msgid "Parameter"
msgstr "Parametr"

#: newdomain.php:245
#: newemail.php:34
msgid "Successfully added"
msgstr "Úspì¹nì pøidáno"

#: newdomain.php:273
msgid "You are not allowed to add new domains"
msgstr "Nemáte oprávnìní vytváøet nové domény"

#: newemail.php:56
msgid "New emailadress for user"
msgstr "Nová e-mailová adresa pro u¾ivatele"

#: search.php:48
msgid "Total domains matching"
msgstr ""

#: search.php:110
msgid "Total users matching"
msgstr ""

#: search.php:118
msgid "Displaying from position"
msgstr "Zobrazuji "

#: search.php:245
msgid "Total aliases matching"
msgstr ""

#: search.php:247
msgid "No aliases found"
msgstr "Nebyl nalezen ¾ádný alias"

#: setquota.php:26
msgid "Setting individual Quota for user"
msgstr "Nastavuji individuální kvótu pro u¾ivatele"

#: setquota.php:58
msgid "Submit"
msgstr "Odeslat"

#: setquota.php:70
msgid "Quote for user"
msgstr "Kvóta pro u¾ivatele"

#: setquota.php:74
msgid "changed to"
msgstr "zmìnìno na"

#: timeout.php:33
msgid "Your session timed out"
msgstr "Vypr¹el èasový limit relace."

#: vacation.php:71
msgid "Vacation notice set"
msgstr "Odpovìï v nepøítomnosti zapnuta"

#: vacation.php:73
msgid "Failed to activate vacation"
msgstr "Chyba pøi zapínáni odpovìdi v nepøítomnosti"

#: vacation.php:76
msgid "Failure in modifying vacation notice"
msgstr "Chyba pøi provádìní zmìn odpovìdi v nepøítomnosti"

#: vacation.php:95
msgid "Vacation notice unset"
msgstr "Odpovìd v nepøítomnosti vypnuta"

#: vacation.php:97
msgid "Failure in unseting vacation notice"
msgstr "Chyba pøi vypínanání odpovìdi v nepøítomnosti"

#: vacation.php:101
msgid "Vacation notice removed"
msgstr "Odpovìï v nepøítomnosti odstranìna"

#: vacation.php:103
msgid "Failure in removing vacation notice"
msgstr "Chyba pøi odstraòování odpovìdi v nepøítomnosti"

#: vacation.php:142
msgid "You can't set Vacation Message for this email address with 'Allow Free Mail Addressess' set to off!"
msgstr ", pokud jsou zakázány volitelné adresy."

#: vacation.php:152
msgid "Vacation message for emailadress"
msgstr "Odpovìd v nepøítomnosti pro adresu"

#: vacation.php:174
msgid "Set vacation notice"
msgstr "Zapnout odpovìï v nepøítomnosti"

#: vacation.php:178
msgid "Remove vacation notice"
msgstr "Odstranit odpovìï v nepøítomnosti"

#: validate.inc.php:74
#: validate.inc.php:87
#: validate.inc.php:134
#: validate.inc.php:249
msgid "Security violation detected, attempt logged"
msgstr "Naru¹ení bezpeènosti, pokus zaznamenán"

#: validate.inc.php:130
msgid "Quota exeedes the maximum allowed qutoa for this domain."
msgstr "Kvóta pøekraèuje maximální kvótu pro doménu"

#: forwardaccount.php:77
msgid "Forward for account"
msgstr "Pøedávání pro úèet"

#: forwardaccount.php:93
msgid "Set forwarding to (one adress per line)"
msgstr "Nastavení pøedávání na (ka¾dá adresa na samostatném øádku)"

#: delete_catchall.php:31
msgid "successfully deleted from the Database"
msgstr "úspì¹nì odstranìno z databáze"

#: deleteemail.php:16
msgid "Delete emailadress from the System"
msgstr "Smazat e-mailové adresy ze sytému"

#: deleteemail.php:23
msgid "Do you really want to delete the emailadress for user"
msgstr "Chcete opravdu smazat e-mail u¾ivatele"

#: deleteemail.php:44
msgid "Yes, delete"
msgstr "Ano, smazat"

#: deleteemail.php:49
msgid "Cancel"
msgstr "Zru¹it"

#: deleteemail.php:70
msgid "Emailadress deleted."
msgstr "E-mailová adresa smazána"

# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Free Software Foundation, Inc.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2003-08-10 16:56+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"

#: CVS/Base/browseaccounts.php:22 browseaccounts.php:22
msgid "Browse accounts for domain"
msgstr "Gennemse konti for domænet"

#: CVS/Base/browseaccounts.php:34 adminuser.php:21 browse.php:66
#: browseaccounts.php:34 catchall.php:24 catchall.php:118
#: change_password.php:19 change_password.php:32 change_password.php:42
#: deleteaccount.php:83 deleteadminuser.php:74 deletedomain.php:17
#: editaccount.php:31 editdomain.php:37 editdomain.php:67 editemail.php:15
#: editemail.php:38 forwardalias.php:16 forwardalias.php:33 newaccount.php:26
#: newadminuser.php:137 newadminuser.php:215 newalias.php:26 newdomain.php:237
#: newemail.php:15 vacation.php:15 vacation.php:30 validate.inc.php:58
#: lib/crypto.php:30 lib/crypto.php:110 lib/crypto.php:149
#: forwardaccount.php:28 delete_catchall.php:23 deleteemail.php:62
msgid "Database error"
msgstr "Database fejl"

#: CVS/Base/browseaccounts.php:48 browseaccounts.php:48 newaccount.php:68
msgid "Total accounts"
msgstr "Konti"

#: CVS/Base/browseaccounts.php:49 adminuser.php:36 browseaccounts.php:49
msgid "Displaying from position:"
msgstr ""

#: CVS/Base/browseaccounts.php:55 CVS/Base/browseaccounts.php:242
#: browseaccounts.php:55 browseaccounts.php:242 search.php:123 search.php:239
msgid "Add new account"
msgstr "Tilfj ny konto"

#: CVS/Base/browseaccounts.php:78 adminuser.php:65 aliases.php:56
#: browseaccounts.php:78 editalias.php:69 search.php:131 search.php:135
msgid "Previous 10 entries"
msgstr "Forrige 10"

#: CVS/Base/browseaccounts.php:82 adminuser.php:69 aliases.php:57
#: browseaccounts.php:82 editalias.php:70 search.php:138 search.php:142
msgid "Next 10 entries"
msgstr "Næste 10"

#: CVS/Base/browseaccounts.php:91 adminuser.php:78 aliases.php:64
#: browse.php:20 browseaccounts.php:91 editaccount.php:50 editalias.php:76
#: search.php:52 search.php:149 search.php:253
msgid "action"
msgstr "funktioner"

#: CVS/Base/browseaccounts.php:96 aliases.php:65 browseaccounts.php:96
#: editaccount.php:54 newaccount.php:136 newalias.php:82 search.php:150
#: search.php:254
msgid "Email address"
msgstr "Email adresse"

#: CVS/Base/browseaccounts.php:96 browseaccounts.php:96 editaccount.php:63
#: login.php:61 search.php:151
msgid "Username"
msgstr "Brugernavn"

#: CVS/Base/browseaccounts.php:97 browseaccounts.php:97
#, fuzzy
msgid "Last login"
msgstr "Fejl ved login"

#: CVS/Base/browseaccounts.php:97 browseaccounts.php:97 editaccount.php:68
#: search.php:152
msgid "Quota used"
msgstr "Quota brugt"

#: CVS/Base/browseaccounts.php:136 browseaccounts.php:136
msgid "n/a"
msgstr ""

#: CVS/Base/browseaccounts.php:146 browseaccounts.php:146 search.php:171
msgid "Edit account"
msgstr "Rediger konto"

#: CVS/Base/browseaccounts.php:151 browseaccounts.php:151
#, fuzzy
msgid "Change Password"
msgstr "Ændre Kodeord"

#: CVS/Base/browseaccounts.php:155 browseaccounts.php:155 editaccount.php:58
#: editaccount.php:91
msgid "Forward"
msgstr "Frem"

#: CVS/Base/browseaccounts.php:159 browseaccounts.php:159 search.php:172
msgid "Delete account"
msgstr "Slet konto"

#: CVS/Base/browseaccounts.php:163 browseaccounts.php:163 search.php:173
msgid "Set quota"
msgstr "Sæt quota"

#: CVS/Base/browseaccounts.php:167 browseaccounts.php:167 search.php:174
msgid "Set catch all"
msgstr "lav til maildrop"

#: CVS/Base/browseaccounts.php:181 browseaccounts.php:181 search.php:190
#, fuzzy
msgid "Forwards"
msgstr "Frem"

#: CVS/Base/browseaccounts.php:218 browseaccounts.php:218 editaccount.php:152
#: search.php:217
msgid "out of"
msgstr "ud af"

#: CVS/Base/browseaccounts.php:221 browseaccounts.php:221 search.php:220
msgid "Unable to retrieve quota"
msgstr ""

#: CVS/Base/browseaccounts.php:224 browseaccounts.php:224 editaccount.php:155
#: search.php:223
msgid "Quota not set"
msgstr "Quota ikke sat"

#: CVS/Base/browseaccounts.php:236 browseaccounts.php:236 search.php:235
msgid "No accounts found"
msgstr "Ingen konti fundet"

#: adminuser.php:13
msgid "Browse admins"
msgstr "Gennemse Administratorer"

#: adminuser.php:35
msgid "Total administrators"
msgstr "Administratorer"

#: adminuser.php:43
msgid "Add administator"
msgstr "Tilføj Administrator"

#: adminuser.php:82
msgid "Adminname"
msgstr "Admin navn"

#: adminuser.php:86
msgid "domain"
msgstr "domæne"

#: adminuser.php:90
msgid "admin type"
msgstr "Admin type"

#: adminuser.php:119
msgid "Edit adminuser"
msgstr "Rediger admin bruger"

#: adminuser.php:125
msgid "Delete adminuser"
msgstr "Slet admin bruger"

#: adminuser.php:144
#, fuzzy
msgid "All domains"
msgstr "domæne"

#: adminuser.php:148
msgid "None"
msgstr ""

#: adminuser.php:158 editadminuser.php:65 menu.inc.php:132 newadminuser.php:57
#: newadminuser.php:207
msgid "Superuser"
msgstr "Superbruger"

#: adminuser.php:160 editadminuser.php:76 menu.inc.php:134 newadminuser.php:61
#: newadminuser.php:209
msgid "Domain Master"
msgstr "Domæne Administrator "

#: adminuser.php:174
msgid "No accounts fount"
msgstr "Ingen konti fundet"

#: adminuser.php:181
msgid "Add administrator"
msgstr "Tilføj administrator"

#: aliases.php:11
#, fuzzy
msgid "Browse aliases for domain"
msgstr "Gennemse konti for domænet"

#: aliases.php:50
#, fuzzy
msgid "Total aliases"
msgstr "Administratorer"

#: aliases.php:55
#, fuzzy
msgid "Add new alias"
msgstr "Tilføj nyt domæne"

#: aliases.php:66 editalias.php:77 editemail.php:113 newemail.php:98
#: search.php:255
msgid "Destination"
msgstr "Destination"

#: aliases.php:91 search.php:273
#, fuzzy
msgid "Edit Alias"
msgstr "Rediger emailadresse"

#: aliases.php:92 search.php:274
#, fuzzy
msgid "Delete Alias"
msgstr "Slet emailadresse"

#: auth.inc.php:70
msgid "Web-cyradm is for authorized users only."
msgstr "Dette er kun for autoriserede brugere"

#: auth.inc.php:71
msgid "Make sure you entered the right password."
msgstr "Verificer af du indtastede det rigtige kodeord."

#: auth.inc.php:72
msgid "Push the back button in your browser to try again."
msgstr "Klik på tilbage knappen i din browser for at prøve igen."

#: auth.inc.php:73
#, fuzzy
msgid " Your attempt to login has been stored."
msgstr "Dit forsøg på at logge ind er blevet gemt."

#: browse.php:13
msgid "Browse domains"
msgstr "Gennemse domæner"

#: browse.php:24 search.php:53
msgid "domainname"
msgstr "Domænenavn"

#: browse.php:31 search.php:57
msgid "prefix"
msgstr "prefix"

#: browse.php:38 search.php:60
msgid "max Accounts"
msgstr "Max. antal konti"

#: browse.php:42 search.php:61
msgid "default quota per user"
msgstr "Standard quota per bruger"

#: browse.php:90 search.php:82
msgid "Edit Domain"
msgstr "Rediger Domæne"

#: browse.php:91 search.php:83
msgid "Delete Domain"
msgstr "Slet Domæne"

#: browse.php:92 deletedomain.php:51 menu.inc.php:59 search.php:84
msgid "accounts"
msgstr "konti"

#: browse.php:93 menu.inc.php:68 search.php:85
msgid "Aliases"
msgstr ""

#: catchall.php:13
msgid "Define a Account for receiving undefined adresses for domain"
msgstr "Definer en konto for udefinerede adresser på domænet"

#: catchall.php:38
msgid "Do you really want to define the user"
msgstr "Vil du virkelig definere brugeren"

#: catchall.php:42
msgid "to receive all undefined emailadresses"
msgstr "til at modtage for alle udefinerede adresser"

#: catchall.php:46
msgid "The currently defined user"
msgstr ""

#: catchall.php:46
#, fuzzy
msgid "will not receiving any undefined emailadresses anymore"
msgstr "til at modtage for alle udefinerede adresser"

#: catchall.php:74
msgid "The user"
msgstr ""

#: catchall.php:74
#, fuzzy
msgid "is allready defined to receive all undefined Emails."
msgstr "til at modtage for alle udefinerede adresser"

#: catchall.php:76
msgid "Do you want to remove the function \"catch all\" for the account"
msgstr ""

#: catchall.php:127 newadminuser.php:197
msgid "successfully added to Database"
msgstr "korrekt tilføjet til database"

#: catchall.php:133 editdomain.php:56 editemail.php:53 newdomain.php:255
#: newemail.php:44 delete_catchall.php:37
msgid "Database error, please try again"
msgstr "Database fejl, prøv igen"

#: catchall.php:140 delete_catchall.php:44
#, fuzzy
msgid "Cancelled"
msgstr "Annuler"

#: change_password.php:53
msgid "Password changed"
msgstr "Kodeord ændret"

#: change_password.php:56
msgid "Failure in changing password."
msgstr "Fejl ved ændring af kodeord."

#: change_password.php:59 editadminuser.php:252
msgid "New passwords are not equal. Password not changed"
msgstr "De nye kodeord er ikke ens, kodeord uændret"

#: change_password.php:72
msgid "Change password for account"
msgstr "Ændre kodeorg for kontoen"

#: change_password.php:91
msgid "New password"
msgstr "Ny Kodeord"

#: change_password.php:101
msgid "Confirm new password"
msgstr "Verificer Kodeord"

#: change_password.php:121 newaccount.php:243
msgid "Passwords do not match"
msgstr ""

#: deleteaccount.php:25
msgid "Delete an Account from the System"
msgstr "Slet en konto fra systemet"

#: deleteaccount.php:29
msgid "Do you really want to delete the user "
msgstr "Vil du virkelig slette brugeren"

#: deleteaccount.php:33
msgid "with all its defined Emailadresses"
msgstr "med alle dens definerede emailadresser"

#: deleteaccount.php:69 deleteadminuser.php:68 deletedomain.php:84
#: deleteemail.php:55
msgid "Action cancelled, nothing deleted"
msgstr "sletning annuleret, ingenting slettet"

#: deleteaccount.php:100
#, fuzzy
msgid "User deleted"
msgstr "Ja, Slet"

#: deleteaccount.php:111 deletedomain.php:175
msgid ""
"Security violation detected, action cancelled. Your attempt has been logged."
msgstr ""
"Sikkerhedsbrud detekteret, handling annuleret. Dit forsøg er blevet gemt."

#: deleteadminuser.php:17
msgid "Delete an Admin account from the System"
msgstr "Slet en konto fra systemet"

#: deleteadminuser.php:21
msgid "Do you really want to delete the Domain supervisor"
msgstr "Vil du virkelig slette domænet"

#: deleteadminuser.php:90 editadminuser.php:276
msgid "At least one Superuser is needed for Web-cyradm"
msgstr ""

#: deleteadminuser.php:103
msgid "Admin user deleted"
msgstr ""

#: deleteadminuser.php:116 editadminuser.php:299 newadminuser.php:226
#, fuzzy
msgid "Security violation detected, nothing deleted, attempt has been logged"
msgstr ""
"Sikkerhedsbrud detekteret, handling annuleret. Dit forsøg er blevet gemt."

#: deletedomain.php:28
msgid "Delete a Domain from the System"
msgstr "Slet et domæne fra systemet"

#: deletedomain.php:32
msgid "Do you really want to delete the Domain"
msgstr "Vil du virkelig slette domænet"

#: deletedomain.php:37
msgid "with all its defined accounts, admins, and emailadresses"
msgstr "med alle dets definerede konti, admins og emailadresser"

#: deletedomain.php:43
msgid "This can take a while depending on how many account have to be deleted"
msgstr ""
"Dette kan tage et stykke tid, afhængigt af hvor mange konti der skal slettes"

#: deletedomain.php:47
msgid "Your action will delete"
msgstr "Dit valg vil slette"

#: deletedomain.php:154 newadminuser.php:101
msgid "Domain"
msgstr "domæne"

#: deletedomain.php:158
msgid "successfully deleted"
msgstr "Korrekt slettet"

#: deletealias.php:28
msgid "Please confirm you want to remove"
msgstr ""

#: deletealias.php:28
msgid "from the alias"
msgstr ""

#: deletealias.php:30
msgid "Yes"
msgstr "Ja"

#: deletealias.php:49
msgid "Please confirm you want to remove the alias"
msgstr ""

#: deletealias.php:77
msgid "Removed"
msgstr ""

#: deletealias.php:77
msgid "from"
msgstr ""

#: deletealias.php:85
msgid "Removed the alias"
msgstr ""

#: editaccount.php:21
msgid "Email adresses defined for user"
msgstr "Emailadresser defineret for brugeren"

#: editaccount.php:42
msgid "New email address"
msgstr "Ny email adresse"

#: editaccount.php:90
msgid "Edit Emailadress"
msgstr "Rediger emailadresse"

#: editaccount.php:92
#, fuzzy
msgid "Vacation"
msgstr "Ferie"

#: editaccount.php:93
msgid "Delete Emailadress"
msgstr "Slet emailadresse"

#: editadminuser.php:13
msgid "Change admin user for domain"
msgstr "Skift admin for domænet"

#: editadminuser.php:42 newaccount.php:106 newadminuser.php:36
msgid "Accountname"
msgstr "Kontonavn"

#: editadminuser.php:52 newadminuser.php:51
msgid "Admin Type"
msgstr "Admin type"

#: editadminuser.php:84 login.php:71 newaccount.php:138 newadminuser.php:71
msgid "Password"
msgstr "Kodeord"

#: editadminuser.php:100 newaccount.php:139 newadminuser.php:86
msgid "Confirm Password"
msgstr "Verificer Kodeord"

#: editadminuser.php:155
msgid "No Domain assigned yet"
msgstr ""

#: editadminuser.php:165
#, fuzzy
msgid "Add new domain to this admin"
msgstr "Tilføj ny konti til domænet"

#: editadminuser.php:223
msgid "No such domain, create domain first"
msgstr ""

#: editadminuser.php:231
msgid "Admin already repsonsible for the domain"
msgstr ""

#: editalias.php:27
msgid "There was an error adding $dest to $alias: "
msgstr ""

#: editalias.php:64
#, fuzzy
msgid "Editing alias"
msgstr "Rediger emailadresse"

#: editalias.php:68
#, fuzzy
msgid "Delete this alias"
msgstr "Slet emailadresse"

#: editalias.php:101
#, fuzzy
msgid "Cannot remove from account"
msgstr "Ændre kodeorg for kontoen"

#: editalias.php:105 editalias.php:109
#, fuzzy
msgid "Remove destination"
msgstr "Destination"

#: editalias.php:125
msgid "This alias has no destinations"
msgstr ""

#: editalias.php:142
#, fuzzy
msgid "New destination"
msgstr "Destination"

#: editdomain.php:46
#, fuzzy
msgid "Successfully changed domain"
msgstr "Korrekt ændret"

#: editdomain.php:92 newdomain.php:39
msgid "Domainname"
msgstr "Domænenavn"

#: editdomain.php:106 newdomain.php:57
msgid "Prefix"
msgstr "Prefix"

#: editdomain.php:123 newdomain.php:73
msgid "Allow Free Names"
msgstr ""

#: editdomain.php:141 newdomain.php:90
#, fuzzy
msgid "Allow Free Mail Addresses"
msgstr "Ny email adresse"

#: editdomain.php:159 newdomain.php:102
msgid "Maximum Accounts"
msgstr "Max. konti"

#: editdomain.php:173 newdomain.php:117
msgid "Default Quota in Kilobytes"
msgstr "Standard Quota i Kilobytes"

#: editdomain.php:202
msgid "Your are not allowed to change domains!"
msgstr "Du har ikke tilladelse til at ændre domæner!"

#: editemail.php:46
msgid "Successfully changed"
msgstr "Korrekt ændret"

#: editemail.php:68
msgid ""
"You can't edit this email address with 'Allow Free Mail Addressess' set to "
"off!"
msgstr ""

#: editemail.php:95 newemail.php:77
msgid "Emailadress"
msgstr "Emailadresse"

#: failed.php:66
msgid "Login failed"
msgstr "Login fejlet"

#: failed.php:71 login.php:51
msgid "This is only for authorized users"
msgstr "Dette er kun for autoriserede brugere"

#: failed.php:76 logout.php:62 timeout.php:38
msgid "If you like to login click"
msgstr "Hvis du vil logge ind, klik"

#: failed.php:78 logout.php:64 timeout.php:40
msgid "here"
msgstr "her"

#: forwardalias.php:68 forwardaccount.php:51
msgid "Forward set"
msgstr "Videresend sat"

#: forwardalias.php:70
msgid "Failure in setting forward"
msgstr "Fejl i indstilling af videresend"

#: forwardalias.php:73
msgid "Wrong password"
msgstr "Forkert Kodeord"

#: forwardalias.php:89 forwardalias.php:97 forwardalias.php:103
#: forwardalias.php:107 forwardaccount.php:57
msgid "Forwarding removed"
msgstr "Videresend fjernet"

#: forwardalias.php:91 forwardalias.php:99
msgid "Failure in removing forwarding"
msgstr "Fejl i fjernelse af videresendelse"

#: forwardalias.php:111 vacation.php:79 vacation.php:107
msgid "Failed to login"
msgstr "Fejl ved login"

#: forwardalias.php:123 vacation.php:119
msgid "Not possible"
msgstr "Ikke muligt"

#: forwardalias.php:152
msgid ""
"You can't forward this email address with 'Allow Free Mail Addressess' set "
"to off!"
msgstr ""

#: forwardalias.php:161
msgid "Forward for emailadress"
msgstr "Videresend for emailadresse"

#: forwardalias.php:204
msgid "Set forwarding to"
msgstr "Sæt videresend til"

#: forwardalias.php:204
msgid "(Seperate multiple values with ,)"
msgstr ""

#: forwardalias.php:210 forwardaccount.php:125
msgid "Keep a copy in the user's mailbox"
msgstr "Gem en kopi i brugerens postkasse"

#: forwardalias.php:215 forwardaccount.php:139
msgid "Remove forwarding"
msgstr "Fjern videresendelse"

#: index.php:23
msgid "migrate.php exists! please delete or rename it"
msgstr ""

#: index.php:138
msgid "web-cyradm has not yet been configured"
msgstr ""

#: index.php:141
msgid "Configuration steps:"
msgstr ""

#: index.php:143
msgid "copy the config file that comes with the distribution: "
msgstr ""

#: index.php:146
msgid "Edit the file config/conf.php to match your systems configuration"
msgstr ""

#: index.php:148
msgid ""
"Further information about how to configure Web-cyradm can be found at the "
"following website:"
msgstr ""

#: login.php:50
msgid "Welcome to Web-cyradm"
msgstr "Velkommen til Web-cyradm"

#: login.php:52
msgid "Please authenticate yourself"
msgstr "Autoriser venligst dig selv"

#: login.php:84
msgid "Select language"
msgstr ""

#: logout.php:52
msgid "Thank you for using Web-cyradm"
msgstr "Tak fordi du brugte Web-cyradm"

#: logout.php:57
msgid "You are logged out"
msgstr "Du er logget af"

#: menu.inc.php:19
#, fuzzy
msgid "Superusers Menu"
msgstr "Superbruger"

#: menu.inc.php:23
msgid "Domainmasters menu"
msgstr "Domæne administratorens menu"

#: menu.inc.php:31
msgid "add new domain"
msgstr "tilføj nyt domæne"

#: menu.inc.php:38
msgid "browse domains"
msgstr "Gennemse domæner"

#: menu.inc.php:45
msgid "adminusers"
msgstr "admin brugere"

#: menu.inc.php:75
msgid "home"
msgstr "hjem"

#: menu.inc.php:82
msgid "logout"
msgstr "log af"

#: menu.inc.php:90
msgid "Search"
msgstr "Søg"

#: menu.inc.php:114
msgid "Logged in as user"
msgstr "Logget ind som bruger"

#: menu.inc.php:126
msgid "Your role is"
msgstr "Din rolle er"

#: menu.inc.php:144
#, fuzzy
msgid "Current domain is"
msgstr "Gennemse domæner"

#: menu.inc.php:150
msgid "No domain selected"
msgstr ""

#: newaccount.php:13
msgid "Add new Account to domain"
msgstr "Tilføj ny konti til domænet"

#: newaccount.php:43 newalias.php:43
msgid "transport is not cyrus, unable to create account"
msgstr "transporten er ikke cyrus, kan ikke oprette konto"

#: newaccount.php:55
msgid "Sorry, no more account allowed for domain"
msgstr "Desværre, det er ikke tilladt at oprette flere konti på domænet"

#: newaccount.php:60
msgid "Maximum allowed accounts is"
msgstr "Max. antal konti er"

#: newaccount.php:137
msgid "Quota"
msgstr "Quota"

#: newaccount.php:196
msgid "Sorry, the username already exists"
msgstr ""

#: newaccount.php:221
msgid "Account successfully added to the Database"
msgstr "Konto korrekt tilføjet til databasen"

#: newaccount.php:234
msgid "Account succesfully added to the IMAP Subsystem"
msgstr "Konto korrekt tilføjet til IMAP undersystemet"

#: newadminuser.php:13
#, fuzzy
msgid "Add new administrator"
msgstr "Tilføj administrator"

#: newadminuser.php:64
msgid "Select \"Superuser\" for all domains"
msgstr "Vælg \"Superuser\" for alle domæner"

#: newadminuser.php:132
msgid "You must provide a username"
msgstr ""

#: newadminuser.php:145
msgid "Passwords are empty or not equal."
msgstr ""

#: newadminuser.php:157
msgid "Username already exist"
msgstr ""

#: newalias.php:15
#, fuzzy
msgid "Add new alias to domain"
msgstr "Tilføj ny Admin til domænet"

#: newalias.php:55
#, fuzzy
msgid "Sorry, no more alias allowed for domain"
msgstr "Desværre, det er ikke tilladt at oprette flere konti på domænet"

#: newalias.php:60
#, fuzzy
msgid "Maximum allowed aliases is"
msgstr "Max. antal konti er"

#: newdomain.php:15
msgid "Add new domain"
msgstr "Tilføj nyt domæne"

#: newdomain.php:140
#, fuzzy
msgid "Standard Mailboxes"
msgstr "Standard Postkasser"

#: newdomain.php:146
msgid ""
"emailadress where the default aliases should be mapped (empty means no "
"mapping)"
msgstr ""
"Email adresse hvor standard aliaset skal mappes (Blank betyder ingen mapning"

#: newdomain.php:163
msgid "Mail transport"
msgstr "Mail transport"

#: newdomain.php:166
msgid "Leave this as is, unless you know what you are doing"
msgstr "Lad denne være, med mindre du ved hvad du gør"

#: newdomain.php:187
msgid "Parameter"
msgstr ""

#: newdomain.php:245 newemail.php:34
msgid "Successfully added"
msgstr "Korrekt tilføjet"

#: newdomain.php:273
msgid "You are not allowed to add new domains"
msgstr "Du har ikke tilladelse til at tilføje nye domæner"

#: newemail.php:56
msgid "New emailadress for user"
msgstr "Ny emailadresse for bruger"

#: search.php:48
#, fuzzy
msgid "Total domains matching"
msgstr "Administratorer"

#: search.php:110
msgid "Total users matching"
msgstr ""

#: search.php:118
msgid "Displaying from position"
msgstr ""

#: search.php:245
msgid "Total aliases matching"
msgstr ""

#: search.php:247
#, fuzzy
msgid "No aliases found"
msgstr "Ingen konti fundet"

#: setquota.php:26
msgid "Setting individual Quota for user"
msgstr "Sætter individuel Quora for bruger"

#: setquota.php:58
msgid "Submit"
msgstr "Tilføj"

#: setquota.php:70
#, fuzzy
msgid "Quote for user"
msgstr "Quota ikke sat"

#: setquota.php:74
msgid "changed to"
msgstr ""

#: timeout.php:33
msgid "Your session timed out"
msgstr "Din session er udløbet"

#: vacation.php:71
msgid "Vacation notice set"
msgstr "Ferie besked sat"

#: vacation.php:73
msgid "Failed to activate vacation"
msgstr "Fejl ved aktivering af Ferie"

#: vacation.php:76
msgid "Failure in modifying vacation notice"
msgstr "Fejl ved ændring af ferie besked"

#: vacation.php:95
#, fuzzy
msgid "Vacation notice unset"
msgstr "Ferie besked sat"

#: vacation.php:97
msgid "Failure in unseting vacation notice"
msgstr "Fejl ved deaktivering af ferie besked"

#: vacation.php:101
msgid "Vacation notice removed"
msgstr "Ferie besked fjernet"

#: vacation.php:103
msgid "Failure in removing vacation notice"
msgstr "Fel ved fjernelse af ferie besked"

#: vacation.php:142
msgid ""
"You can't set Vacation Message for this email address with 'Allow Free Mail "
"Addressess' set to off!"
msgstr ""

#: vacation.php:152
msgid "Vacation message for emailadress"
msgstr "Ferie besked for denne emailadresse"

#: vacation.php:174
msgid "Set vacation notice"
msgstr "Sæt ferie besked"

#: vacation.php:178
msgid "Remove vacation notice"
msgstr "Fjern ferie besked"

#: validate.inc.php:74 validate.inc.php:87 validate.inc.php:134
#: validate.inc.php:249
#, fuzzy
msgid "Security violation detected, attempt logged"
msgstr ""
"Sikkerhedsbrud detekteret, handling annuleret. Dit forsøg er blevet gemt."

#: validate.inc.php:130
msgid "Quota exeedes the maximum allowed qutoa for this domain."
msgstr ""

#: forwardaccount.php:77
msgid "Forward for account"
msgstr "Videresend for konto"

#: forwardaccount.php:93
#, fuzzy
msgid "Set forwarding to (one adress per line)"
msgstr "Sæt videresend til"

#: delete_catchall.php:31
#, fuzzy
msgid "successfully deleted from the Database"
msgstr "korrekt tilføjet til database"

#: deleteemail.php:16
#, fuzzy
msgid "Delete emailadress from the System"
msgstr "Slet en emailadresse fra systemet"

#: deleteemail.php:23
msgid "Do you really want to delete the emailadress for user"
msgstr "Vil du virkelig slette emailadressen for brugeren"

#: deleteemail.php:44
msgid "Yes, delete"
msgstr "Ja, Slet"

#: deleteemail.php:49
msgid "Cancel"
msgstr "Annuler"

#: deleteemail.php:70
#, fuzzy
msgid "Emailadress deleted."
msgstr "Emailadresse"

#~ msgid "successfully changed Database...."
#~ msgstr "korrekt ændring af database"

#~ msgid "Please select a domain first"
#~ msgstr "Vælg venligst først et domæne"

#~ msgid "Not yet supported, change will be ignored"
#~ msgstr "Ikke supporteret endnu, ændring vil blive ignoreret"
# translation of web-cyradm.po to 
# translation of web-cyradm.po to Deutsch
# Copyright (C) 2002 Free Software Foundation, Inc.
# Luc de Louw <luc@delouw.ch>, 2002
#
msgid ""
msgstr ""
"Project-Id-Version: web-cyradm\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-07-28 14:56+0200\n"
"PO-Revision-Date: 2003-05-25 00:58+0200\n"
"Last-Translator: Luc de Louw <luc@delouw.ch>\n"
"Language-Team:  <kde-i18n-de@lists.kde.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.2beta2\n"

#: adminuser.php:15
msgid "Browse admins"
msgstr "Liste der Administratoren"

#: adminuser.php:33
msgid "Total administrators"
msgstr "Anzahl Administratoren"

#: adminuser.php:34 browse.php:56 browseaccounts.php:42
msgid "Displaying from position:"
msgstr "Anzeige ab Position:"

#: adminuser.php:41
msgid "Add administator"
msgstr "Administrator hinzuf&uuml;gen"

#: adminuser.php:60 aliases.php:42 editalias.php:72 search.php:132
#: search.php:136
msgid "Previous 10 entries"
msgstr "10 Eintr&auml;ge zur&uuml;ck"

#: adminuser.php:64 aliases.php:43 editalias.php:73 search.php:139
#: search.php:143
msgid "Next 10 entries"
msgstr "N&auml;chste 10 Eintr&auml;ge"

#: adminuser.php:73 aliases.php:50 browse.php:103 browseaccounts.php:82
#: editaccount.php:52 editalias.php:79 search.php:53 search.php:150
#: search.php:261
msgid "action"
msgstr "Befehle"

#: adminuser.php:77
msgid "Adminname"
msgstr "Benutzername des Administrators"

#: adminuser.php:81
msgid "domain"
msgstr "Dom&auml;ne"

#: adminuser.php:85
msgid "admin type"
msgstr "Administrator Typ"

#: adminuser.php:112
msgid "Edit adminuser"
msgstr "Administrator &auml;ndern"

#: adminuser.php:118
msgid "Delete adminuser"
msgstr "Administrator l&ouml;schen"

#: adminuser.php:137
msgid "All domains"
msgstr "Alle Dom&auml;nen"

#: adminuser.php:141
msgid "None"
msgstr "Keine"

#: adminuser.php:151 editadminuser.php:61 menu.inc.php:143 newadminuser.php:60
#: newadminuser.php:174
msgid "Superuser"
msgstr "Superuser"

#: adminuser.php:153 editadminuser.php:71 menu.inc.php:145 newadminuser.php:64
#: newadminuser.php:176
msgid "Domain Master"
msgstr "Dom&auml;nen Administrator"

#: aliases.php:13
msgid "Browse aliases for domain"
msgstr "Aliase anzeigen für Domäne"

#: aliases.php:36
msgid "Total aliases"
msgstr "Anzahl Aliases"

#: aliases.php:41
msgid "Add new alias"
msgstr "Alias hinzufügen"

#: aliases.php:51 browseaccounts.php:86 editaccount.php:56 newaccount.php:194
#: newalias.php:84 search.php:151 search.php:262
msgid "Email address"
msgstr "E-Mail-Adresse"

#: aliases.php:52 editalias.php:80 editemail.php:115 newemail.php:93
#: search.php:263
msgid "Destination"
msgstr "Ziel"

#: aliases.php:70 search.php:281
msgid "Edit Alias"
msgstr "E-Mail-Adresse &auml;ndern"

#: aliases.php:71 search.php:282
msgid "Delete Alias"
msgstr "E-Mail-Adresse l&ouml;schen"

#: auth.inc.php:49
msgid "Web-cyradm is for authorized users only."
msgstr "Nur f&uuml;r berechtigte Benutzer."

#: auth.inc.php:50
msgid "Make sure you entered the right password."
msgstr "Stellen Sie sicher, dass Sie das richtige Passwort eingegeben haben."

#: auth.inc.php:51
msgid "Push the back button in your browser to try again."
msgstr "Klicken Sie \"Zur&uuml;ck\" in Ihrem Browser und probieren Sie es nochmal."

#: auth.inc.php:52
msgid " Your attempt to login has been stored."
msgstr "Ihr Loginversuch wurde gespeichert."

#: browse.php:15
msgid "Browse domains"
msgstr "Dom&auml;nenliste"

#: browse.php:50 browseaccounts.php:36 browseaccounts.php:121
#: browseaccounts.php:186 catchall.php:108 change_password.php:21
#: change_password.php:32 changeadminpasswd.php:97 delete_catchall.php:20
#: deleteaccount.php:82 deleteaccount.php:88 deleteaccount.php:94
#: deleteadminuser.php:70 deleteadminuser.php:77 deleteadminuser.php:84
#: deletedomain.php:19 deleteemail.php:58 editaccount.php:33
#: editadminuser.php:20 editadminuser.php:123 editadminuser.php:185
#: editadminuser.php:195 editadminuser.php:205 editadminuser.php:213
#: editadminuser.php:225 editadminuser.php:235 editadminuser.php:248
#: editdomain.php:44 editdomain.php:84 editemail.php:17 editemail.php:40
#: editservices.php:26 editservices.php:34 forwardaccount.php:30
#: forwardalias.php:18 forwardalias.php:35 init.php:12 newaccount.php:23
#: newaccount.php:53 newaccount.php:281 newaccount.php:287
#: newadminuser.php:137 newadminuser.php:143 newadminuser.php:151
#: newadminuser.php:158 newalias.php:28 newdomain.php:254 newemail.php:19
#: setquota.php:80 setquota.php:94 vacation.php:17 vacation.php:32
#: validate.inc.php:119 validate.inc.php:126 validate.inc.php:234
#: validate.inc.php:250 validate.inc.php:294 validate.inc.php:308
#: validate.inc.php:334 validate.inc.php:343 validate.inc.php:384
#: validate.inc.php:393 validate.inc.php:454 validate.inc.php:466
#: validate.inc.php:505 validate.inc.php:525 validate.inc.php:541
#: validate.inc.php:550 validate.inc.php:580 validate.inc.php:591
#: validate.inc.php:704 validate.inc.php:721 lib/crypto.php:30
#: lib/crypto.php:110 lib/crypto.php:160
msgid "Database error"
msgstr "Datenbankfehler"

#: browse.php:55
msgid "Total Domains:"
msgstr "Domänen insgesamt:"

#: browse.php:66 newdomain.php:17
msgid "Add new domain"
msgstr "Dom&auml;ne hinzuf&uuml;gen"

#: browse.php:78 browse.php:81 browseaccounts.php:60 browseaccounts.php:63
msgid "First entry"
msgstr "Erster Eintrag"

#: browse.php:79 browse.php:82 browseaccounts.php:61 browseaccounts.php:64
msgid "Previous entries"
msgstr "Vorherige Einträge"

#: browse.php:86 browse.php:89 browseaccounts.php:68 browseaccounts.php:71
msgid "Next entries"
msgstr "Nächste Einträge"

#: browse.php:87 browse.php:90 browseaccounts.php:69 browseaccounts.php:72
msgid "Last entry"
msgstr "Letzter Eintrag"

#: browse.php:108 browse.php:109 search.php:54
msgid "domainname"
msgstr "Dom&auml;nenname"

#: browse.php:116 search.php:58
msgid "prefix"
msgstr "Pr&auml;fix"

#: browse.php:123 search.php:61
msgid "max Accounts"
msgstr "Maximale Anzahl Konten"

#: browse.php:127 browse.php:128
msgid "Domain quota"
msgstr "Standard Speicherplatz pro Domäne"

#: browse.php:132 browse.php:133 search.php:62
msgid "default quota per user"
msgstr "Standard Speicherplatz pro Konto"

#: browse.php:155 search.php:83
msgid "Edit Domain"
msgstr "Dom&auml;ne &auml;ndern"

#: browse.php:156 search.php:84
msgid "Delete Domain"
msgstr "Dom&auml;ne l&ouml;schen"

#: browse.php:174 browse.php:177 deletedomain.php:53 menu.inc.php:64
#: search.php:85
msgid "accounts"
msgstr "Konten"

#: browse.php:186 browse.php:189 search.php:86
msgid "Aliases"
msgstr "Übergeordnete E-Mailadressen"

#: browse.php:219 browseaccounts.php:242 editaccount.php:157
#: editdomain.php:214 newdomain.php:143 search.php:231
msgid "Quota not set"
msgstr "Keine Speicherplatzbegrenzung"

#: browseaccounts.php:25
msgid "Browse accounts for domain"
msgstr "Konten der Dom&auml;ne"

#: browseaccounts.php:41 newaccount.php:128
msgid "Total accounts"
msgstr "Anzahl Konten"

#: browseaccounts.php:48 browseaccounts.php:302 search.php:124 search.php:247
msgid "Add new account"
msgstr "Konto hinzuf&uuml;gen"

#: browseaccounts.php:90 editaccount.php:65 login.php:72 search.php:152
msgid "Username"
msgstr "Benutzername"

#: browseaccounts.php:94
msgid "Last login"
msgstr "Letzte Anmeldung"

#: browseaccounts.php:94 editaccount.php:70 search.php:153
msgid "Quota used"
msgstr "Benutzter Speicherplatz"

#: browseaccounts.php:101
msgid "services"
msgstr "Dienste"

#: browseaccounts.php:137
msgid "n/a"
msgstr "nicht verfügbar"

#: browseaccounts.php:147 search.php:176
msgid "Edit account"
msgstr "Konto &auml;ndern"

#: browseaccounts.php:152
msgid "Services"
msgstr "Dienste"

#: browseaccounts.php:157 search.php:177
msgid "Change Password"
msgstr "Neues Passwort"

#: browseaccounts.php:161 editaccount.php:60 editaccount.php:93 search.php:179
msgid "Forward"
msgstr "Weiterleiten"

#: browseaccounts.php:165 search.php:180
msgid "Delete account"
msgstr "Konto l&ouml;schen"

#: browseaccounts.php:169 search.php:181
msgid "Set quota"
msgstr "Speicherplatz"

#: browseaccounts.php:173 search.php:182
msgid "Set catch all"
msgstr "Sammeladresse"

#: browseaccounts.php:191 search.php:198
msgid "Forwards"
msgstr "Weiterleitungen"

#: browseaccounts.php:233 editaccount.php:154 search.php:225
msgid "out of"
msgstr "von"

#: browseaccounts.php:239 search.php:228
msgid "Unable to retrieve quota"
msgstr "Speicherplatzkontingent nicht verfügbar"

#: browseaccounts.php:296 search.php:243
msgid "No accounts found"
msgstr "Keine Konten gefunden"

#: browseaccounts.php:314 catchall.php:130 delete_catchall.php:42
#: deleteaccount.php:117 deleteadminuser.php:103 newaccount.php:42
#: newaccount.php:102 newaccount.php:117 newaccount.php:317 newemail.php:122
#: setquota.php:170
msgid "Back"
msgstr "Zur&uuml;ck"

#: catchall.php:15
msgid "Define a Account for receiving undefined adresses for domain"
msgstr "Definieren eines Kontos als Sammelkonto f&uuml;r Dom&auml;ne"

#: catchall.php:32
msgid "Do you really want to define the user"
msgstr "M&ouml;chten Sie das Konto"

#: catchall.php:36
msgid "to receive all undefined emailadresses"
msgstr "als Sammeladresse einrichten"

#: catchall.php:40
msgid "The currently defined user"
msgstr "Der aktuell definierte Benutzer"

#: catchall.php:40
msgid "will not receiving any undefined emailadresses anymore"
msgstr "Sammeladresse entfernen"

#: catchall.php:68
msgid "The user"
msgstr "Der Benutzer"

#: catchall.php:68
msgid "is allready defined to receive all undefined Emails."
msgstr "ist bereits als Sammeladresse definiert"

#: catchall.php:70
msgid "Do you want to remove the function \"catch all\" for the account"
msgstr "Möchten Sie die \"catch all\" Funktion dem Konto entziehen"

#: catchall.php:112 newadminuser.php:164
msgid "successfully added to Database"
msgstr "Erfolgreich in der Datenbank eingef&uuml;gt"

#: catchall.php:120 delete_catchall.php:32
msgid "Cancelled"
msgstr "Abgebrochen"

#: change_password.php:37 change_password.php:46
msgid "Password changed"
msgstr "Passwort ge;auml;ndert"

#: change_password.php:40
msgid "Unknown error"
msgstr "Unbekannter Fehler"

#: change_password.php:49
msgid "Failure in changing password."
msgstr "Fehler beim Passwort &auml;ndern."

#: change_password.php:59 changeadminpasswd.php:17
msgid "Change password for account"
msgstr "Neues Passwort f&uuml;r Konto"

#: change_password.php:76
msgid "New password"
msgstr "Neues Passwort"

#: change_password.php:86
msgid "Confirm new password"
msgstr "Passwort best&auml;tigen"

#: changeadminpasswd.php:28
msgid "Old Password"
msgstr "Altes Passwort"

#: changeadminpasswd.php:43
msgid "New Password"
msgstr "Neues Passwort"

#: changeadminpasswd.php:59 editadminuser.php:95 newaccount.php:197
#: newadminuser.php:89
msgid "Confirm Password"
msgstr "Passwort best&auml;tigen"

#: changeadminpasswd.php:99
msgid "Password not changed"
msgstr "Passwort nicht ge;auml;ndert"

#: changeadminpasswd.php:101
msgid "Password successfully changed"
msgstr "Passwort erfolgreich ge&auml;ndert"

#: delete_catchall.php:24
msgid "successfully deleted from the Database"
msgstr "Erfolgreich von der Datenbank gel&ouml;scht"

#: deleteaccount.php:20
msgid "Delete an Account from the System"
msgstr "L&ouml;schen eines Kontos vom System"

#: deleteaccount.php:24
msgid "Do you really want to delete the user "
msgstr "M&ouml;chten Sie das Konto "

#: deleteaccount.php:28
msgid "with all its defined Emailadresses"
msgstr "mit all seinen definierten E-Mail-Addressen l&ouml;schen"

#: deleteaccount.php:65 deleteadminuser.php:62 deletedomain.php:86
#: deleteemail.php:51
msgid "Action cancelled, nothing deleted"
msgstr "Befehl abgebrochen, keine Daten gel&ouml;scht"

#: deleteaccount.php:104
msgid "User deleted"
msgstr "Konto gelöscht"

#: deleteadminuser.php:19
msgid "Delete an Admin account from the System"
msgstr "L&ouml;schen eines Administrators vom System"

#: deleteadminuser.php:23
msgid "Do you really want to delete the Domain supervisor"
msgstr "M&ouml;chten Sie den Dom&auml;nenadministrator wirklich l&ouml;schen"

#: deleteadminuser.php:89
msgid "Admin user deleted"
msgstr "Administrator gelöscht"

#: deletealias.php:30
msgid "Please confirm you want to remove"
msgstr "Bitte bestätigen Sie das Löschen von"

#: deletealias.php:30
msgid "from the alias"
msgstr "von Alias"

#: deletealias.php:49
msgid "Please confirm you want to remove the alias"
msgstr "Bitte bestätigen Sie die Entfernung von Alias"

#: deletealias.php:77
msgid "Removed"
msgstr "Gelöscht"

#: deletealias.php:77
msgid "from"
msgstr "von"

#: deletealias.php:85
msgid "Removed the alias"
msgstr "Alias gelöscht"

#: deletedomain.php:30
msgid "Delete a Domain from the System"
msgstr "L&ouml;schen einer Dom&auml;ne vom System"

#: deletedomain.php:34
msgid "Do you really want to delete the Domain"
msgstr "M&ouml;chten Sie die Dom&auml;ne"

#: deletedomain.php:39
msgid "with all its defined accounts, admins, and emailadresses"
msgstr "mit allen definierten Konten, Administratoren wirklich l&ouml;schen"

#: deletedomain.php:45
msgid "This can take a while depending on how many account have to be deleted"
msgstr ""
"Abh&auml;ngig von der Datenmenge die gel&ouml;scht werden muss, kann dies "
"eine Weile dauern"

#: deletedomain.php:49
msgid "Your action will delete"
msgstr "Wenn Sie weitermachen wird gel&ouml;scht"

#: deletedomain.php:156 newadminuser.php:104
msgid "Domain"
msgstr "Dom&auml;ne"

#: deletedomain.php:160
msgid "successfully deleted"
msgstr "erfolgreich gel&ouml;scht"

#: deletedomain.php:177 validate.inc.php:175 validate.inc.php:212
#: validate.inc.php:219 validate.inc.php:270 validate.inc.php:280
#: validate.inc.php:363 validate.inc.php:366 validate.inc.php:375
#: validate.inc.php:378 validate.inc.php:413 validate.inc.php:420
#: validate.inc.php:425 validate.inc.php:495 validate.inc.php:499
#: validate.inc.php:510 validate.inc.php:520 validate.inc.php:530
#: validate.inc.php:536 validate.inc.php:562 validate.inc.php:575
#: validate.inc.php:585
msgid ""
"Security violation detected, action cancelled. Your attempt has been logged."
msgstr ""
"Sicherheits&uuml;berschreitung entdeckt, Aktion abgebrochen. Ihr Versuch "
"wurde geloggt."

#: deleteemail.php:18
msgid "Delete emailadress from the System"
msgstr "L&ouml;schen einer Emailadresse"

#: deleteemail.php:25
msgid "Do you really want to delete the emailadress for user"
msgstr "M&ouml;chten Sie die Emailadresse des folgenden Benutzers wirklich l&ouml;schen"
"M&ouml;chten Sie diese Emailadresse f&uuml;r das nachstehende Konto wirklich "
"l&ouml;schen:"

#: deleteemail.php:66
msgid "Emailadress deleted."
msgstr "E-Mail-Adresse gelöscht"

#: display.php:17
msgid "Display preferences for"
msgstr "Anzeigeeinstellungen für Benutzer"

#: display.php:26
msgid "No template definitions found, please check your config file"
msgstr "Keine Templatedefinitionen gefunden, bitte &uuml;berpr&uuml;fen Sie Ihre KOnfigurationsdatei"

#: display.php:36
msgid "Color scheme"
msgstr "Farbschema"

#: display.php:58
msgid "Number of domains displayed on page"
msgstr "Anzahl der angezeigten Domänen die je Seite"

#: display.php:74
msgid "Number of accounts displayed on page"
msgstr "Anzahl der angezeigten Accounts je Seite"

#: display.php:90
msgid "Quota usage warn level"
msgstr "Warngrenze für Speicherplatzbegrenzung"

#: display.php:121
msgid "Reload page"
msgstr "Seite neu laden"

#: editaccount.php:23
msgid "Email addresses defined for user"
msgstr "E-Mail-Adressen von Benutzer"

#: editaccount.php:44
msgid "New email address"
msgstr "E-Mail-Adresse hinzuf&uuml;gen"

#: editaccount.php:92
msgid "Edit Emailadress"
msgstr "E-Mail-Adresse &auml;ndern"

#: editaccount.php:94
msgid "Vacation"
msgstr "Abwesenheitsmeldung"

#: editaccount.php:95
msgid "Delete Emailadress"
msgstr "E-Mail-Adresse l&ouml;schen"

#: editadminuser.php:26
msgid "Change admin user for domain"
msgstr "Administrator &auml;ndern f&uuml;r Dom&auml;ne"

#: editadminuser.php:39 newaccount.php:164 newadminuser.php:39
msgid "Accountname"
msgstr "Kontoname"

#: editadminuser.php:49 newadminuser.php:54
msgid "Admin Type"
msgstr "Administratorentyp"

#: editadminuser.php:79 login.php:82 newaccount.php:196 newadminuser.php:74
msgid "Password"
msgstr "Passwort"

#: editadminuser.php:116
msgid "Responsible for all domains"
msgstr "Verantwortlich f&uuml;r alle Dom&auml;nen"

#: editadminuser.php:130
msgid "Responsible for the following domains:"
msgstr "Verantwortlich f&uuml;r folgende Domänen:"

#: editadminuser.php:146
msgid "No Domain assigned yet"
msgstr "Noch keine Dom&auml;ne zugewiesen"

#: editadminuser.php:153
msgid "Add new domain to this admin"
msgstr "Neue Domäne diesem Administrator zuweisen"

#: editalias.php:29
msgid "There was an error adding $dest to $alias: "
msgstr "Beim hinzufügen von $dest zu $alias ist ein Fehler aufgetreten: "

#: editalias.php:66
msgid "Editing alias"
msgstr "E-Mail-Adresse &auml;ndern"

#: editalias.php:70
msgid "Delete this alias"
msgstr "E-Mail-Adresse l&ouml;schen"

#: editalias.php:71
msgid "Back to aliases"
msgstr "Zur&uuml;ck zu den &Uuml;bergeordneten Adressen"

#: editalias.php:104
msgid "Cannot remove from account"
msgstr "Kann nicht gelöscht werden"

#: editalias.php:108 editalias.php:112
msgid "Remove destination"
msgstr "Ziel löschen"

#: editalias.php:128
msgid "This alias has no destinations"
msgstr "Dieser Alias hat kein Ziel"

#: editalias.php:145
msgid "New destination"
msgstr "Neues Ziel"

#: editdomain.php:55
msgid "Successfully changed domain"
msgstr "Domäne erfolgreich ge&auml;ndert"

#: editdomain.php:65 editemail.php:55 newdomain.php:272 newemail.php:45
msgid "Database error, please try again"
msgstr "Datenbankfehler"

#: editdomain.php:111 newdomain.php:41
msgid "Domainname"
msgstr "Dom&auml;nenname"

#: editdomain.php:125 newdomain.php:59
msgid "Prefix"
msgstr "Pr&auml;fix"

#: editdomain.php:142 newdomain.php:75
msgid "Allow Free Names"
msgstr "Frei wählbare Kontonamen"

#: editdomain.php:160 newdomain.php:92
msgid "Allow Free Mail Addresses"
msgstr "Frei wählbare E-mailadressen"

#: editdomain.php:178 newdomain.php:104
msgid "Maximum Accounts"
msgstr "Maximale Anzahl Konten"

#: editdomain.php:192 newdomain.php:119
msgid "Default Quota in Kilobytes"
msgstr "Standard Speicherplatz in KB"

#: editdomain.php:206 newdomain.php:134
msgid "Quota for Domain in Kilobytes"
msgstr "Standard Speicherplatz für Domäne in KB"

#: editdomain.php:236
msgid "Your are not allowed to change domains!"
msgstr "Sie haben keine Berechtigung um Dom&auml;en zu bearbeiten"

#: editemail.php:48
msgid "Successfully changed"
msgstr "Erfolgreich ge&auml;ndert"

#: editemail.php:70
msgid ""
"You can't edit this email address with 'Allow Free Mail Addressess' set to "
"off!"
msgstr "E-mail Adresse kann nicht geändert werden"

#: editemail.php:97 newemail.php:77
msgid "Emailadress"
msgstr "E-Mail-Adresse"

#: editservices.php:16
msgid "Edit services for user"
msgstr "Ändern der Dienste für Benutzer"

#: editservices.php:68
msgid "Service"
msgstr "Dienste"

#: editservices.php:69
msgid "Status"
msgstr "Status"

#: editservices.php:72
msgid "Fetch mail via IMAP client"
msgstr "Mails via IMAP abholen"

#: editservices.php:76
msgid "Fetch mail via POP client"
msgstr "Mails via POP abholen"

#: editservices.php:80
msgid "Set vacation message and filter rules with sieve"
msgstr "Abwesenheitsnotizen und Filterregeln mit Sieve bearbeiten"

#: editservices.php:85
msgid "Send E-Mails via smtp authentication"
msgstr "E-Mail Versand mit SMTP Authentifizierung"

#: editservices.php:90
msgid "Receive E-Mails via smtp"
msgstr "E-Mails über SMTP empfangen"

#: editservices.php:109
msgid "Services successfully changed"
msgstr "Dienste erfolgreich ge&auml;ndert"

#: editservices.php:112
msgid "Back to accounts"
msgstr "Zur&uuml;ck zur Konten&uuml;bersicht"

#: failed.php:61
msgid "Login failed"
msgstr "Login fehlgeschlagen"

#: failed.php:66 login.php:62
msgid "This is only for authorized users"
msgstr "Nur f&uuml;r berechtigte Benutzer"

#: failed.php:71 logout.php:64 timeout.php:69
msgid "If you like to login click"
msgstr "Zum wieder anmelden klicken Sie"

#: failed.php:73 logout.php:66 timeout.php:71
msgid "here"
msgstr "hier"

#: forwardaccount.php:53 forwardalias.php:70
msgid "Forward set"
msgstr "Weiterleitung gesetzt"

#: forwardaccount.php:57 forwardalias.php:91 forwardalias.php:99
#: forwardalias.php:105 forwardalias.php:109
msgid "Forwarding removed"
msgstr "Weiterleitung entfernt"

#: forwardaccount.php:77
msgid "Forward for account"
msgstr "Weiterleitung f&uuml;r Konto"

#: forwardaccount.php:93
msgid "Set forwarding to (one adress per line)"
msgstr "Weiterleitung an (eine E-Mailadresse pro Linie)"

#: forwardaccount.php:125 forwardalias.php:212
msgid "Keep a copy in the user's mailbox"
msgstr "Kopie lokal behalten"

#: forwardaccount.php:139 forwardalias.php:217
msgid "Remove forwarding"
msgstr "Weiterleitung entfernen"

#: forwardalias.php:72
msgid "Failure in setting forward"
msgstr "Fehler beim Setzen der Weiterleitung"

#: forwardalias.php:75
msgid "Wrong password"
msgstr "Falsches Passwort"

#: forwardalias.php:93 forwardalias.php:101
msgid "Failure in removing forwarding"
msgstr "Fehler beim Entfernen der Weiterleitung"

#: forwardalias.php:113 vacation.php:81 vacation.php:109
msgid "Failed to login"
msgstr "Anmeldung fehlgeschlagen"

#: forwardalias.php:125 vacation.php:121
msgid "Not possible"
msgstr "Nicht m&ouml;glich"

#: forwardalias.php:154
msgid ""
"You can't forward this email address with 'Allow Free Mail Addressess' set "
"to off!"
msgstr "Diese E-Mailadresse kann nicht weitergeleitet werden."

#: forwardalias.php:163
msgid "Forward for emailadress"
msgstr "Weiterleitung f&uuml;r E-Mail-Adresse"

#: forwardalias.php:206
msgid "Set forwarding to"
msgstr "Weiterleitung an"

#: forwardalias.php:206
msgid "(Seperate multiple values with ,)"
msgstr "(Mehrer E-Mailadressen mit \",\" trennen)"

#: index.php:23
msgid "migrate.php exists! please delete or rename it"
msgstr "migrate.php existiert! Bitte löschen oder umbenennen.."

#: index.php:152
msgid "web-cyradm has not yet been configured"
msgstr "Web-cyradm wurde noch nicht eingerichtet"

#: index.php:155
msgid "Configuration steps:"
msgstr "Einrichtungsschritte:"

#: index.php:157
msgid "copy the config file that comes with the distribution: "
msgstr "Kopieren Sie die mitgelieferte Konfigurationsdatei:"

#: index.php:160
msgid "Edit the file config/conf.php to match your systems configuration"
msgstr "Passen Sie die Datei config/conf.php Ihrer Systemkonfiguration an"

#: index.php:162
msgid ""
"Further information about how to configure Web-cyradm can be found at the "
"following website:"
msgstr ""
"Weitere Informationen zur Einrichtung von Web-cyradm können auf der "
"folgenden Webseite gefunden werden:"

#: init.php:38 init.php:61 validate.inc.php:131 validate.inc.php:148
#: validate.inc.php:837
msgid "Security violation detected, attempt logged"
msgstr ""
"Sicherheits&uuml;berschreitung entdeckt, Aktion abgebrochen. Ihr Versuch "
"wurde geloggt."

#: login.php:61
msgid "Welcome to Web-cyradm"
msgstr "Willkommen bei Web-cyradm"

#: login.php:63
msgid "Please authenticate yourself"
msgstr "Bitte melden Sie sich an"

#: login.php:95
msgid "Select language"
msgstr "Sprachauswahl"

#: logout.php:54
msgid "Thank you for using Web-cyradm"
msgstr "Danke das Sie Web-cyradm benutzt haben"

#: logout.php:59
msgid "You are logged out"
msgstr "Sie sind jetzt abgemeldet"

#: menu.inc.php:21
msgid "Superusers Menu"
msgstr "Superuser Menu"

#: menu.inc.php:25
msgid "Domainmasters menu"
msgstr "Dom&auml;nen Administratoren Menu"

#: menu.inc.php:28 menu.inc.php:101
msgid "Search"
msgstr "Suchen"

#: menu.inc.php:36
msgid "add new domain"
msgstr "Dom&auml;ne hinzuf&uuml;gen"

#: menu.inc.php:43
msgid "browse domains"
msgstr "Dom&auml;nen auflisten"

#: menu.inc.php:50
msgid "adminusers"
msgstr "Administratoren"

#: menu.inc.php:73
msgid "aliases"
msgstr "Übergeordnete E-Mailadressen"

#: menu.inc.php:80
msgid "home"
msgstr "Start"

#: menu.inc.php:86
msgid "settings"
msgstr "Einstellungen"

#: menu.inc.php:93
msgid "logout"
msgstr "Abmelden"

#: menu.inc.php:125
msgid "Logged in as user"
msgstr "Angemeldet als Benutzer"

#: menu.inc.php:137
msgid "Your role is"
msgstr "Sie sind"

#: menu.inc.php:155
msgid "Current domain is"
msgstr "Aktuelle Dom&auml;ne ist"

#: menu.inc.php:161
msgid "No domain selected"
msgstr "Noch keine Dom&auml;ne gew&auml;hlt"

#: newaccount.php:39 newalias.php:45
msgid "transport is not cyrus, unable to create account"
msgstr "Transport ist nicht cyrus, Konto kann nicht erstellt werden"

#: newaccount.php:92
msgid "Sorry, no more account allowed for domain"
msgstr "Keine weiteren Konten erlaubt f&uuml;r die Dom&auml;ne"

#: newaccount.php:97
msgid "Maximum allowed accounts is"
msgstr "Maximale Konten-Anzahl"

#: newaccount.php:107
msgid "Sorry, no more disk space left for domain"
msgstr "Kein weiterer Speicherplatz f&uuml;r die Dom&auml;ne verf&uuml;gbar"

#: newaccount.php:112
msgid "Quota is"
msgstr "Speicherplatzbegrenzung ist"

#: newaccount.php:122
msgid "Add new Account to domain"
msgstr "Konto hinzuf&uuml;gen"

#: newaccount.php:195
msgid "Quota"
msgstr "Speicherplatzbegrenzung"

#: newaccount.php:256 setquota.php:114 setquota.php:141
msgid "Quota exeeded"
msgstr "Benutzter Speicherplatz &uuml;berschreitet die Limite"

#: newaccount.php:258 setquota.php:116
msgid "New quota is"
msgstr "Neue Speicherplatzbegrenzung betr&aauml;gt"

#: newaccount.php:291
msgid "Account successfully added to the Database"
msgstr "Konto erfolgreich der Datenbank hinzugef&uuml;gt"

#: newaccount.php:303
msgid "Account succesfully added to the IMAP Subsystem"
msgstr "Konto erfolgreich dem IMAP Subsystem hinzugef&uuml;gt"

#: newadminuser.php:19
msgid "Add new administrator"
msgstr "Administrator hinzuf&uuml;gen"

#: newadminuser.php:67
msgid "Select \"Superuser\" for all domains"
msgstr "\"Superuser\" selektieren f&uuml;r alle Dom&auml;nen"

#: newalias.php:17
msgid "Add new alias to domain"
msgstr "Neuer Alias für Domäne"

#: newalias.php:57
msgid "Sorry, no more alias allowed for domain"
msgstr "Keine weiteren Aliases erlaubt f&uuml;r die Dom&auml;ne"

#: newalias.php:62
msgid "Maximum allowed aliases is"
msgstr "Maximale Anzahl Aliases ist"

#: newdomain.php:157
msgid "Standard Mailboxes"
msgstr "Standardmailboxen"

#: newdomain.php:163
msgid ""
"emailadress where the default aliases should be mapped (empty means no "
"mapping)"
msgstr ""
"E-Mail-Adresse an welche die Standardaliases weitergeleitet werden sollen "
"(leer f&uuml;r keine Weiterleitung)"

#: newdomain.php:181
msgid "Mail transport"
msgstr "Mail Transport"

#: newdomain.php:184
msgid "Leave this as is, unless you know what you are doing"
msgstr "&Auml;ndern Sie dieses nur, wenn Sie sicher sind was Sie tun"

#: newdomain.php:205
msgid "Parameter"
msgstr "Parameter"

#: newdomain.php:262 newemail.php:35
msgid "Successfully added"
msgstr "Erfolgreich hinzugef&uuml;gt"

#: newdomain.php:290
msgid "You are not allowed to add new domains"
msgstr "Sie haben keine Berechtigung um Dom&auml;nen hinzuzuf&uuml;gen"

#: newemail.php:56
msgid "New emailadress for user"
msgstr "Neue E-Mail-Addresse f&uuml;r Konto"

#: search.php:49
msgid "Total domains matching"
msgstr "Anzahl Domänen gefunden"

#: search.php:111
msgid "Total users matching"
msgstr "Anzahl Kontos gefunden"

#: search.php:119
msgid "Displaying from position"
msgstr "Anzeige von Position"

#: search.php:253
msgid "Total aliases matching"
msgstr "Anzahl Aliases gefunden"

#: search.php:255
msgid "No aliases found"
msgstr "Keine Aliases gefunden"

#: setquota.php:32
msgid "Setting individual Quota for user"
msgstr "Speicherplatz f&uuml;r Konto"

#: setquota.php:64
msgid "Submit"
msgstr "Abschicken"

#: setquota.php:127 setquota.php:152
msgid "Quote for user"
msgstr "Speicherplatzbegrenzung für Konto"

#: setquota.php:131 setquota.php:156
msgid "changed to"
msgstr "geändert:"

#: setquota.php:143
msgid "Quota NOT changed"
msgstr "Speicherplatzbegrenzung wurde NICHT ge&auuml;ndert."

#: settings.php:17
msgid "Administration Settings"
msgstr "Administrative Einstellungen"

#: settings.php:23
msgid "Display Preferences"
msgstr "Anzeigeeinstellungen"

#: settings.php:30
msgid "You can set all administrative settings."
msgstr "Hier können Sie alle administrative Einstellungen ändern."

#: settings.php:34
msgid "You can change the way that Web-cyradm displays information to you."
msgstr ""
"Hier können Sie einstellen wie Web-Cyradm Ihnen die Informationen anzeigt."

#: settings.php:43
msgid "Change password"
msgstr "Passwort ändnern"

#: settings.php:53
msgid "Use this to change your admin password."
msgstr "Hier können Sie Ihr Admin Passwort ändern."

#: timeout.php:64
msgid "Your session timed out"
msgstr "Ihre Sitzung war zu lange inaktiv"

#: vacation.php:73
msgid "Vacation notice set"
msgstr "Abwesenheitsmeldung gesetzt"

#: vacation.php:75
msgid "Failed to activate vacation"
msgstr "Fehler beim Setzen der Abwesenheitsmeldung"

#: vacation.php:78
msgid "Failure in modifying vacation notice"
msgstr "Fehler beim Bearbeiten der Abwesenheitsmeldung"

#: vacation.php:97
msgid "Vacation notice unset"
msgstr "Abwesenheitsmeldung gelöscht"

#: vacation.php:99
msgid "Failure in unseting vacation notice"
msgstr "Fehler beim Entfernen der Abwesenheitsmeldung"

#: vacation.php:103
msgid "Vacation notice removed"
msgstr "Abwesenheitsmeldung entfernt"

#: vacation.php:105
msgid "Failure in removing vacation notice"
msgstr "Fehler beim Entfernen der Abwesenheitsmeldung"

#: vacation.php:144
msgid ""
"You can't set Vacation Message for this email address with 'Allow Free Mail "
"Addressess' set to off!"
msgstr "Abwesenheitsmeldung kann nicht gesetzt werden."

#: vacation.php:154
msgid "Vacation message for emailadress"
msgstr "Abwesenheitsmeldung f&uuml;r E-Mail-Adresse"

#: vacation.php:176
msgid "Set vacation notice"
msgstr "Abwesenheitsmeldung festlegen"

#: vacation.php:180
msgid "Remove vacation notice"
msgstr "Abwesenheitsmeldung entfernen"

#: validate.inc.php:190 validate.inc.php:208 validate.inc.php:266
#: validate.inc.php:359 validate.inc.php:783 validate.inc.php:786
#: validate.inc.php:795 validate.inc.php:798 validate.inc.php:807
msgid "Security violation detected, nothing deleted, attempt has been logged"
msgstr ""
"Sicherheits&uuml;berschreitung entdeckt, Aktion abgebrochen. Ihr Versuch "
"wurde geloggt."

#: validate.inc.php:222 validate.inc.php:273 validate.inc.php:283
msgid "You must provide a username"
msgstr "Sie müssen einen Benutzernamen angeben"

#: validate.inc.php:225 validate.inc.php:286 validate.inc.php:430
#: validate.inc.php:638
msgid "Password incorrect"
msgstr "Falsches Passwort"

#: validate.inc.php:228 validate.inc.php:289 validate.inc.php:641
#: validate.inc.php:739
msgid "New passwords are not equal. Password not changed"
msgstr "Neues Password nicht best&auml;tigt. Passwort wurde nicht gewechselt"

#: validate.inc.php:238
msgid "Username already exist"
msgstr "Benutzername bereits vergeben"

#: validate.inc.php:244 validate.inc.php:328
msgid "Invalid domain name"
msgstr "Ung&uuml;ltiger Dom&auml;nenname"

#: validate.inc.php:254 validate.inc.php:338
msgid "No such domain"
msgstr "Dom&auml;ne existiert nicht"

#: validate.inc.php:316 validate.inc.php:401
msgid "At least one Superuser is needed for Web-cyradm"
msgstr "Web-cyradm benötigt mindestens ein Superuser"

#: validate.inc.php:346
msgid "Admin already repsonsible for the domain"
msgstr "Administrator ist dieser Domäne breits zugeordnet"

#: validate.inc.php:433
msgid "Passwords do not match"
msgstr "Passörter stimmen nicht überein"

#: validate.inc.php:436 validate.inc.php:609
msgid "Invalid email adress"
msgstr "Ung&uuml;ltige EMailadresse"

#: validate.inc.php:439
msgid "Invalid username"
msgstr "Ung&uuml;ltiger Benutzername"

#: validate.inc.php:459
msgid "Sorry, the username already exists"
msgstr "Kontenname bereits vergeben"

#: validate.inc.php:471
msgid "Sorry, the emailadress already exists"
msgstr "Benutzername bereits vergeben"

#: validate.inc.php:486 validate.inc.php:556
msgid "Quota exeedes the maximum allowed quota for this domain."
msgstr ""
"Gewünschter Speichplatz überschreitet den maximal Zulässigen Wert für diese "
"Domäne "

#: validate.inc.php:605
msgid "Invalid destination"
msgstr "Ung&uuml;ltiges Ziel"

#~ msgid "No accounts fount"
#~ msgstr "Kein Konto gefunden"

#~ msgid "Add administrator"
#~ msgstr "Administrator hinzuf&uuml;gen"

#~ msgid "Yes"
#~ msgstr "Ja"

#~ msgid "Email adresses defined for user"
#~ msgstr "Definierte E-Mail-Adressen f&uuml;r das Konto"

#~ msgid "No such domain, create domain first"
#~ msgstr "Domäne unbekannt, bitte erst Domäne anlegen"

#~ msgid "Passwords are empty or not equal."
#~ msgstr "Passwörter stimmen nicht überein, oder ist leer"

#~ msgid "Yes, delete"
#~ msgstr "Ja, l&ouml;schen"

#~ msgid "Cancel"
#~ msgstr "Abbrechen"

#~ msgid "Change"
#~ msgstr "Ändern"
# translation of web-cyradm.po to 
# translation of web-cyradm.po to English
# Copyright (C) 2002 Free Software Foundation, Inc.
# Luc de Louw <luc@delouw.ch>, 2002
#
msgid ""
msgstr ""
"Project-Id-Version: web-cyradm\n"
"POT-Creation-Date: 2003-08-10 16:56+0200\n"
"PO-Revision-Date: 2003-05-25 00:58+0200\n"
"Last-Translator: Luc de Louw <luc@delouw.ch>\n"
"Language-Team:  <kde-i18n-de@lists.kde.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.2beta2\n"

#: CVS/Base/browseaccounts.php:22 browseaccounts.php:22
msgid "Browse accounts for domain"
msgstr "Browse accounts for domain"

#: CVS/Base/browseaccounts.php:34 adminuser.php:21 browse.php:66
#: browseaccounts.php:34 catchall.php:24 catchall.php:118
#: change_password.php:19 change_password.php:32 change_password.php:42
#: deleteaccount.php:83 deleteadminuser.php:74 deletedomain.php:17
#: editaccount.php:31 editdomain.php:37 editdomain.php:67 editemail.php:15
#: editemail.php:38 forwardalias.php:16 forwardalias.php:33 newaccount.php:26
#: newadminuser.php:137 newadminuser.php:215 newalias.php:26 newdomain.php:237
#: newemail.php:15 vacation.php:15 vacation.php:30 validate.inc.php:58
#: lib/crypto.php:30 lib/crypto.php:110 lib/crypto.php:149
#: forwardaccount.php:28 delete_catchall.php:23 deleteemail.php:62
msgid "Database error"
msgstr "Database error"

#: CVS/Base/browseaccounts.php:48 browseaccounts.php:48 newaccount.php:68
msgid "Total accounts"
msgstr "Total accounts"

#: CVS/Base/browseaccounts.php:49 adminuser.php:36 browseaccounts.php:49
msgid "Displaying from position:"
msgstr "Displaying from position:"

#: CVS/Base/browseaccounts.php:55 CVS/Base/browseaccounts.php:242
#: browseaccounts.php:55 browseaccounts.php:242 search.php:123 search.php:239
msgid "Add new account"
msgstr "Add new account"

#: CVS/Base/browseaccounts.php:78 adminuser.php:65 aliases.php:56
#: browseaccounts.php:78 editalias.php:69 search.php:131 search.php:135
msgid "Previous 10 entries"
msgstr "Previous 10 entries"

#: CVS/Base/browseaccounts.php:82 adminuser.php:69 aliases.php:57
#: browseaccounts.php:82 editalias.php:70 search.php:138 search.php:142
msgid "Next 10 entries"
msgstr "Next 10 entries"

#: CVS/Base/browseaccounts.php:91 adminuser.php:78 aliases.php:64
#: browse.php:20 browseaccounts.php:91 editaccount.php:50 editalias.php:76
#: search.php:52 search.php:149 search.php:253
msgid "action"
msgstr "action"

#: CVS/Base/browseaccounts.php:96 aliases.php:65 browseaccounts.php:96
#: editaccount.php:54 newaccount.php:136 newalias.php:82 search.php:150
#: search.php:254
msgid "Email address"
msgstr "Email address"

#: CVS/Base/browseaccounts.php:96 browseaccounts.php:96 editaccount.php:63
#: login.php:61 search.php:151
msgid "Username"
msgstr "Username"

#: CVS/Base/browseaccounts.php:97 browseaccounts.php:97
msgid "Last login"
msgstr "Last login"

#: CVS/Base/browseaccounts.php:97 browseaccounts.php:97 editaccount.php:68
#: search.php:152
msgid "Quota used"
msgstr "Quota used"

#: CVS/Base/browseaccounts.php:136 browseaccounts.php:136
msgid "n/a"
msgstr "n/a"

#: CVS/Base/browseaccounts.php:146 browseaccounts.php:146 search.php:171
msgid "Edit account"
msgstr "Edit account"

#: CVS/Base/browseaccounts.php:151 browseaccounts.php:151
msgid "Change Password"
msgstr "Change Password"

#: CVS/Base/browseaccounts.php:155 browseaccounts.php:155 editaccount.php:58
#: editaccount.php:91
msgid "Forward"
msgstr "Forward"

#: CVS/Base/browseaccounts.php:159 browseaccounts.php:159 search.php:172
msgid "Delete account"
msgstr "Delete account"

#: CVS/Base/browseaccounts.php:163 browseaccounts.php:163 search.php:173
msgid "Set quota"
msgstr "Set quota"

#: CVS/Base/browseaccounts.php:167 browseaccounts.php:167 search.php:174
msgid "Set catch all"
msgstr "Set catch all"

#: CVS/Base/browseaccounts.php:181 browseaccounts.php:181 search.php:190
msgid "Forwards"
msgstr "Forwards"

#: CVS/Base/browseaccounts.php:218 browseaccounts.php:218 editaccount.php:152
#: search.php:217
msgid "out of"
msgstr "out of"

#: CVS/Base/browseaccounts.php:221 browseaccounts.php:221 search.php:220
msgid "Unable to retrieve quota"
msgstr "Unable to retrieve quota"

#: CVS/Base/browseaccounts.php:224 browseaccounts.php:224 editaccount.php:155
#: search.php:223
msgid "Quota not set"
msgstr "Quota not set"

#: CVS/Base/browseaccounts.php:236 browseaccounts.php:236 search.php:235
msgid "No accounts found"
msgstr "No accounts found"

#: adminuser.php:13
msgid "Browse admins"
msgstr "Browse admins"

#: adminuser.php:35
msgid "Total administrators"
msgstr "Total administrators"

#: adminuser.php:43
msgid "Add administator"
msgstr "Add administator"

#: adminuser.php:82
msgid "Adminname"
msgstr "Adminname"

#: adminuser.php:86
msgid "domain"
msgstr "domain"

#: adminuser.php:90
msgid "admin type"
msgstr "admin type"

#: adminuser.php:119
msgid "Edit adminuser"
msgstr "Edit adminuser"

#: adminuser.php:125
msgid "Delete adminuser"
msgstr "Delete adminuser"

#: adminuser.php:144
msgid "All domains"
msgstr "All domains"

#: adminuser.php:148
msgid "None"
msgstr "None"

#: adminuser.php:158 editadminuser.php:65 menu.inc.php:132 newadminuser.php:57
#: newadminuser.php:207
msgid "Superuser"
msgstr "Superuser"

#: adminuser.php:160 editadminuser.php:76 menu.inc.php:134 newadminuser.php:61
#: newadminuser.php:209
msgid "Domain Master"
msgstr "Domain Master"

#: adminuser.php:174
msgid "No accounts fount"
msgstr "No accounts fount"

#: adminuser.php:181
msgid "Add administrator"
msgstr "Add administrator"

#: aliases.php:11
msgid "Browse aliases for domain"
msgstr "Browse aliases for domain"

#: aliases.php:50
msgid "Total aliases"
msgstr "Total aliases"

#: aliases.php:55
msgid "Add new alias"
msgstr "Add new alias"

#: aliases.php:66 editalias.php:77 editemail.php:113 newemail.php:98
#: search.php:255
msgid "Destination"
msgstr "Destination"

#: aliases.php:91 search.php:273
msgid "Edit Alias"
msgstr "Edit Alias"

#: aliases.php:92 search.php:274
msgid "Delete Alias"
msgstr "Delete Alias"

#: auth.inc.php:70
msgid "Web-cyradm is for authorized users only."
msgstr "Web-cyradm is for authorized users only."

#: auth.inc.php:71
msgid "Make sure you entered the right password."
msgstr "Make sure you entered the right password."

#: auth.inc.php:72
msgid "Push the back button in your browser to try again."
msgstr "Push the back button in your browser to try again."

#: auth.inc.php:73
msgid " Your attempt to login has been stored."
msgstr " Your attempt to login has been stored."

#: browse.php:13
msgid "Browse domains"
msgstr "Browse domains"

#: browse.php:24 search.php:53
msgid "domainname"
msgstr "domainname"

#: browse.php:31 search.php:57
msgid "prefix"
msgstr "prefix"

#: browse.php:38 search.php:60
msgid "max Accounts"
msgstr "max Accounts"

#: browse.php:42 search.php:61
msgid "default quota per user"
msgstr "default quota per user"

#: browse.php:90 search.php:82
msgid "Edit Domain"
msgstr "Edit Domain"

#: browse.php:91 search.php:83
msgid "Delete Domain"
msgstr "Delete Domain"

#: browse.php:92 deletedomain.php:51 menu.inc.php:59 search.php:84
msgid "accounts"
msgstr "accounts"

#: browse.php:93 menu.inc.php:68 search.php:85
msgid "Aliases"
msgstr "Aliases"

#: catchall.php:13
msgid "Define a Account for receiving undefined adresses for domain"
msgstr "Define a Account for receiving undefined adresses for domain"

#: catchall.php:38
msgid "Do you really want to define the user"
msgstr "Do you really want to define the user"

#: catchall.php:42
msgid "to receive all undefined emailadresses"
msgstr "to receive all undefined emailadresses"

#: catchall.php:46
msgid "The currently defined user"
msgstr "The currently defined user"

#: catchall.php:46
msgid "will not receiving any undefined emailadresses anymore"
msgstr "will not receiving any undefined emailadresses anymore"

#: catchall.php:74
msgid "The user"
msgstr "The user"

#: catchall.php:74
msgid "is allready defined to receive all undefined Emails."
msgstr "is allready defined to receive all undefined Emails."

#: catchall.php:76
msgid "Do you want to remove the function \"catch all\" for the account"
msgstr "Do you want to remove the function \"catch all\" for the account"

#: catchall.php:127 newadminuser.php:197
msgid "successfully added to Database"
msgstr "successfully added to Database"

#: catchall.php:133 editdomain.php:56 editemail.php:53 newdomain.php:255
#: newemail.php:44 delete_catchall.php:37
msgid "Database error, please try again"
msgstr "Database error, please try again"

#: catchall.php:140 delete_catchall.php:44
msgid "Cancelled"
msgstr "Cancelled"

#: change_password.php:53
msgid "Password changed"
msgstr "Password changed"

#: change_password.php:56
msgid "Failure in changing password."
msgstr "Failure in changing password."

#: change_password.php:59 editadminuser.php:252
msgid "New passwords are not equal. Password not changed"
msgstr "New passwords are not equal. Password not changed"

#: change_password.php:72
msgid "Change password for account"
msgstr "Change password for account"

#: change_password.php:91
msgid "New password"
msgstr "New password"

#: change_password.php:101
msgid "Confirm new password"
msgstr "Confirm new password"

#: change_password.php:121 newaccount.php:243
msgid "Passwords do not match"
msgstr "Passwords do not match"

#: deleteaccount.php:25
msgid "Delete an Account from the System"
msgstr "Delete an Account from the System"

#: deleteaccount.php:29
msgid "Do you really want to delete the user "
msgstr "Do you really want to delete the user "

#: deleteaccount.php:33
msgid "with all its defined Emailadresses"
msgstr "with all its defined Emailadresses"

#: deleteaccount.php:69 deleteadminuser.php:68 deletedomain.php:84
#: deleteemail.php:55
msgid "Action cancelled, nothing deleted"
msgstr "Action cancelled, nothing deleted"

#: deleteaccount.php:100
msgid "User deleted"
msgstr "User deleted"

#: deleteaccount.php:111 deletedomain.php:175
msgid ""
"Security violation detected, action cancelled. Your attempt has been logged."
msgstr ""
"Security violation detected, action cancelled. Your attempt has been logged."

#: deleteadminuser.php:17
msgid "Delete an Admin account from the System"
msgstr "Delete an Admin account from the System"

#: deleteadminuser.php:21
msgid "Do you really want to delete the Domain supervisor"
msgstr "Do you really want to delete the Domain supervisor"

#: deleteadminuser.php:90 editadminuser.php:276
msgid "At least one Superuser is needed for Web-cyradm"
msgstr "At least one Superuser is needed for Web-cyradm"

#: deleteadminuser.php:103
msgid "Admin user deleted"
msgstr "Admin user deleted"

#: deleteadminuser.php:116 editadminuser.php:299 newadminuser.php:226
msgid "Security violation detected, nothing deleted, attempt has been logged"
msgstr "Security violation detected, nothing deleted, attempt has been logged"

#: deletedomain.php:28
msgid "Delete a Domain from the System"
msgstr "Delete a Domain from the System"

#: deletedomain.php:32
msgid "Do you really want to delete the Domain"
msgstr "Do you really want to delete the Domain"

#: deletedomain.php:37
msgid "with all its defined accounts, admins, and emailadresses"
msgstr "with all its defined accounts, admins, and emailadresses"

#: deletedomain.php:43
msgid "This can take a while depending on how many account have to be deleted"
msgstr "This can take a while depending on how many account have to be deleted"

#: deletedomain.php:47
msgid "Your action will delete"
msgstr "Your action will delete"

#: deletedomain.php:154 newadminuser.php:101
msgid "Domain"
msgstr "Domain"

#: deletedomain.php:158
msgid "successfully deleted"
msgstr "successfully deleted"

#: deletealias.php:28
msgid "Please confirm you want to remove"
msgstr "Please confirm you want to remove"

#: deletealias.php:28
msgid "from the alias"
msgstr "from the alias"

#: deletealias.php:30
msgid "Yes"
msgstr "Yes"

#: deletealias.php:49
msgid "Please confirm you want to remove the alias"
msgstr "Please confirm you want to remove the alias"

#: deletealias.php:77
msgid "Removed"
msgstr "Removed"

#: deletealias.php:77
msgid "from"
msgstr "from"

#: deletealias.php:85
msgid "Removed the alias"
msgstr "Removed the alias"

#: editaccount.php:21
msgid "Email adresses defined for user"
msgstr "Email adresses defined for user"

#: editaccount.php:42
msgid "New email address"
msgstr "New email address"

#: editaccount.php:90
msgid "Edit Emailadress"
msgstr "Edit Emailadress"

#: editaccount.php:92
msgid "Vacation"
msgstr "Vacation"

#: editaccount.php:93
msgid "Delete Emailadress"
msgstr "Delete Emailadress"

#: editadminuser.php:13
msgid "Change admin user for domain"
msgstr "Change admin user for domain"

#: editadminuser.php:42 newaccount.php:106 newadminuser.php:36
msgid "Accountname"
msgstr "Accountname"

#: editadminuser.php:52 newadminuser.php:51
msgid "Admin Type"
msgstr "Admin Type"

#: editadminuser.php:84 login.php:71 newaccount.php:138 newadminuser.php:71
msgid "Password"
msgstr "Password"

#: editadminuser.php:100 newaccount.php:139 newadminuser.php:86
msgid "Confirm Password"
msgstr "Confirm Password"

#: editadminuser.php:155
msgid "No Domain assigned yet"
msgstr "No Domain assigned yet"

#: editadminuser.php:165
msgid "Add new domain to this admin"
msgstr "Add new domain to this admin"

#: editadminuser.php:223
msgid "No such domain, create domain first"
msgstr "No such domain, create domain first"

#: editadminuser.php:231
msgid "Admin already repsonsible for the domain"
msgstr "Admin already repsonsible for the domain"

#: editalias.php:27
msgid "There was an error adding $dest to $alias: "
msgstr "There was an error adding $dest to $alias: "

#: editalias.php:64
msgid "Editing alias"
msgstr "Editing alias"

#: editalias.php:68
msgid "Delete this alias"
msgstr "Delete this alias"

#: editalias.php:101
msgid "Cannot remove from account"
msgstr "Cannot remove from account"

#: editalias.php:105 editalias.php:109
msgid "Remove destination"
msgstr "Remove destination"

#: editalias.php:125
msgid "This alias has no destinations"
msgstr "This alias has no destinations"

#: editalias.php:142
msgid "New destination"
msgstr "New destination"

#: editdomain.php:46
msgid "Successfully changed domain"
msgstr "Successfully changed domain"

#: editdomain.php:92 newdomain.php:39
msgid "Domainname"
msgstr "Domainname"

#: editdomain.php:106 newdomain.php:57
msgid "Prefix"
msgstr "Prefix"

#: editdomain.php:123 newdomain.php:73
msgid "Allow Free Names"
msgstr "Allow Free Names"

#: editdomain.php:141 newdomain.php:90
msgid "Allow Free Mail Addresses"
msgstr "Allow Free Mail Addresses"

#: editdomain.php:159 newdomain.php:102
msgid "Maximum Accounts"
msgstr "Maximum Accounts"

#: editdomain.php:173 newdomain.php:117
msgid "Default Quota in Kilobytes"
msgstr "Default Quota in Kilobytes"

#: editdomain.php:202
msgid "Your are not allowed to change domains!"
msgstr "Your are not allowed to change domains!"

#: editemail.php:46
msgid "Successfully changed"
msgstr "Successfully changed"

#: editemail.php:68
msgid ""
"You can't edit this email address with 'Allow Free Mail Addressess' set to "
"off!"
msgstr ""
"You can't edit this email address with 'Allow Free Mail Addressess' set to "
"off!"

#: editemail.php:95 newemail.php:77
msgid "Emailadress"
msgstr "Emailadress"

#: failed.php:66
msgid "Login failed"
msgstr "Login failed"

#: failed.php:71 login.php:51
msgid "This is only for authorized users"
msgstr "This is only for authorized users"

#: failed.php:76 logout.php:62 timeout.php:38
msgid "If you like to login click"
msgstr "If you like to login click"

#: failed.php:78 logout.php:64 timeout.php:40
msgid "here"
msgstr "here"

#: forwardalias.php:68 forwardaccount.php:51
msgid "Forward set"
msgstr "Forward set"

#: forwardalias.php:70
msgid "Failure in setting forward"
msgstr "Failure in setting forward"

#: forwardalias.php:73
msgid "Wrong password"
msgstr "Wrong password"

#: forwardalias.php:89 forwardalias.php:97 forwardalias.php:103
#: forwardalias.php:107 forwardaccount.php:57
msgid "Forwarding removed"
msgstr "Forwarding removed"

#: forwardalias.php:91 forwardalias.php:99
msgid "Failure in removing forwarding"
msgstr "Failure in removing forwarding"

#: forwardalias.php:111 vacation.php:79 vacation.php:107
msgid "Failed to login"
msgstr "Failed to login"

#: forwardalias.php:123 vacation.php:119
msgid "Not possible"
msgstr "Not possible"

#: forwardalias.php:152
msgid ""
"You can't forward this email address with 'Allow Free Mail Addressess' set "
"to off!"
msgstr ""
"You can't forward this email address with 'Allow Free Mail Addressess' set "
"to off!"

#: forwardalias.php:161
msgid "Forward for emailadress"
msgstr "Forward for emailadress"

#: forwardalias.php:204
msgid "Set forwarding to"
msgstr "Set forwarding to"

#: forwardalias.php:204
msgid "(Seperate multiple values with ,)"
msgstr "(Seperate multiple values with ,)"

#: forwardalias.php:210 forwardaccount.php:125
msgid "Keep a copy in the user's mailbox"
msgstr "Keep a copy in the user's mailbox"

#: forwardalias.php:215 forwardaccount.php:139
msgid "Remove forwarding"
msgstr "Remove forwarding"

#: index.php:23
msgid "migrate.php exists! please delete or rename it"
msgstr "migrate.php exists! please delete or rename it"

#: index.php:138
msgid "web-cyradm has not yet been configured"
msgstr "web-cyradm has not yet been configured"

#: index.php:141
msgid "Configuration steps:"
msgstr "Configuration steps:"

#: index.php:143
msgid "copy the config file that comes with the distribution: "
msgstr "copy the config file that comes with the distribution: "

#: index.php:146
msgid "Edit the file config/conf.php to match your systems configuration"
msgstr "Edit the file config/conf.php to match your systems configuration"

#: index.php:148
msgid ""
"Further information about how to configure Web-cyradm can be found at the "
"following website:"
msgstr ""
"Further information about how to configure Web-cyradm can be found at the "
"following website:"

#: login.php:50
msgid "Welcome to Web-cyradm"
msgstr "Welcome to Web-cyradm"

#: login.php:52
msgid "Please authenticate yourself"
msgstr "Please authenticate yourself"

#: login.php:84
msgid "Select language"
msgstr "Select language"

#: logout.php:52
msgid "Thank you for using Web-cyradm"
msgstr "Thank you for using Web-cyradm"

#: logout.php:57
msgid "You are logged out"
msgstr "You are logged out"

#: menu.inc.php:19
msgid "Superusers Menu"
msgstr "Superusers Menu"

#: menu.inc.php:23
msgid "Domainmasters menu"
msgstr "Domainmasters menu"

#: menu.inc.php:31
msgid "add new domain"
msgstr "add new domain"

#: menu.inc.php:38
msgid "browse domains"
msgstr "browse domains"

#: menu.inc.php:45
msgid "adminusers"
msgstr "adminusers"

#: menu.inc.php:75
msgid "home"
msgstr "home"

#: menu.inc.php:82
msgid "logout"
msgstr "logout"

#: menu.inc.php:90
msgid "Search"
msgstr "Search"

#: menu.inc.php:114
msgid "Logged in as user"
msgstr "Logged in as user"

#: menu.inc.php:126
msgid "Your role is"
msgstr "Your role is"

#: menu.inc.php:144
msgid "Current domain is"
msgstr "Current domain is"

#: menu.inc.php:150
msgid "No domain selected"
msgstr "No domain selected"

#: newaccount.php:13
msgid "Add new Account to domain"
msgstr "Add new Account to domain"

#: newaccount.php:43 newalias.php:43
msgid "transport is not cyrus, unable to create account"
msgstr "transport is not cyrus, unable to create account"

#: newaccount.php:55
msgid "Sorry, no more account allowed for domain"
msgstr "Sorry, no more account allowed for domain"

#: newaccount.php:60
msgid "Maximum allowed accounts is"
msgstr "Maximum allowed accounts is"

#: newaccount.php:137
msgid "Quota"
msgstr "Quota"

#: newaccount.php:196
msgid "Sorry, the username already exists"
msgstr "Sorry, the username already exists"

#: newaccount.php:221
msgid "Account successfully added to the Database"
msgstr "Account successfully added to the Database"

#: newaccount.php:234
msgid "Account succesfully added to the IMAP Subsystem"
msgstr "Account succesfully added to the IMAP Subsystem"

#: newadminuser.php:13
msgid "Add new administrator"
msgstr "Add new administrator"

#: newadminuser.php:64
msgid "Select \"Superuser\" for all domains"
msgstr "Select \"Superuser\" for all domains"

#: newadminuser.php:132
msgid "You must provide a username"
msgstr "You must provide a username"

#: newadminuser.php:145
msgid "Passwords are empty or not equal."
msgstr "Passwords are empty or not equal."

#: newadminuser.php:157
msgid "Username already exist"
msgstr "Username already exist"

#: newalias.php:15
msgid "Add new alias to domain"
msgstr "Add new alias to domain"

#: newalias.php:55
msgid "Sorry, no more alias allowed for domain"
msgstr "Sorry, no more alias allowed for domai"

#: newalias.php:60
msgid "Maximum allowed aliases is"
msgstr "Maximum allowed aliases is"

#: newdomain.php:15
msgid "Add new domain"
msgstr "Add new domain"

#: newdomain.php:140
msgid "Standard Mailboxes"
msgstr "Standard Mailboxes"

#: newdomain.php:146
msgid ""
"emailadress where the default aliases should be mapped (empty means no "
"mapping)"
msgstr ""
"emailadress where the default aliases should be mapped (empty means no "
"mapping)"

#: newdomain.php:163
msgid "Mail transport"
msgstr "Mail transport"

#: newdomain.php:166
msgid "Leave this as is, unless you know what you are doing"
msgstr "Leave this as is, unless you know what you are doing"

#: newdomain.php:187
msgid "Parameter"
msgstr "Parameter"

#: newdomain.php:245 newemail.php:34
msgid "Successfully added"
msgstr "Successfully added"

#: newdomain.php:273
msgid "You are not allowed to add new domains"
msgstr "You are not allowed to add new domains"

#: newemail.php:56
msgid "New emailadress for user"
msgstr "New emailadress for user"

#: search.php:48
msgid "Total domains matching"
msgstr "Total domains matching"

#: search.php:110
msgid "Total users matching"
msgstr "Total users matching"

#: search.php:118
msgid "Displaying from position"
msgstr "Displaying from position"

#: search.php:245
msgid "Total aliases matching"
msgstr "Total aliases matching"

#: search.php:247
msgid "No aliases found"
msgstr "No aliases found"

#: setquota.php:26
msgid "Setting individual Quota for user"
msgstr "Setting individual Quota for user"

#: setquota.php:58
msgid "Submit"
msgstr "Submit"

#: setquota.php:70
msgid "Quote for user"
msgstr "Quote for user"

#: setquota.php:74
msgid "changed to"
msgstr "changed to"

#: timeout.php:33
msgid "Your session timed out"
msgstr "Your session timed out"

#: vacation.php:71
msgid "Vacation notice set"
msgstr "Vacation notice set"

#: vacation.php:73
msgid "Failed to activate vacation"
msgstr "Failed to activate vacation"

#: vacation.php:76
msgid "Failure in modifying vacation notice"
msgstr "Failure in modifying vacation notice"

#: vacation.php:95
msgid "Vacation notice unset"
msgstr "Vacation notice unset"

#: vacation.php:97
msgid "Failure in unseting vacation notice"
msgstr "Failure in unseting vacation notice"

#: vacation.php:101
msgid "Vacation notice removed"
msgstr "Vacation notice removed"

#: vacation.php:103
msgid "Failure in removing vacation notice"
msgstr "Failure in removing vacation notice"

#: vacation.php:142
msgid ""
"You can't set Vacation Message for this email address with 'Allow Free Mail "
"Addressess' set to off!"
msgstr ""
"You can't set Vacation Message for this email address with 'Allow Free Mail "
"Addressess' set to off!"

#: vacation.php:152
msgid "Vacation message for emailadress"
msgstr "Vacation message for emailadress"

#: vacation.php:174
msgid "Set vacation notice"
msgstr "Set vacation notice"

#: vacation.php:178
msgid "Remove vacation notice"
msgstr "Remove vacation notice"

#: validate.inc.php:74 validate.inc.php:87 validate.inc.php:134
#: validate.inc.php:249
msgid "Security violation detected, attempt logged"
msgstr "Security violation detected, attempt logged"

#: validate.inc.php:130
msgid "Quota exeedes the maximum allowed qutoa for this domain."
msgstr "Quota exeedes the maximum allowed quota for this domain."

#: forwardaccount.php:77
msgid "Forward for account"
msgstr "Forward for account"

#: forwardaccount.php:93
msgid "Set forwarding to (one adress per line)"
msgstr "Set forwarding to (one adress per line)"

#: delete_catchall.php:31
msgid "successfully deleted from the Database"
msgstr "successfully deleted from the Database"

#: deleteemail.php:16
msgid "Delete emailadress from the System"
msgstr "Delete emailadress from the System"

#: deleteemail.php:23
msgid "Do you really want to delete the emailadress for user"
msgstr "Do you really want to delete the emailadress for user"

#: deleteemail.php:44
msgid "Yes, delete"
msgstr "Yes, delete"

#: deleteemail.php:49
msgid "Cancel"
msgstr "Cancel"

#: deleteemail.php:70
msgid "Emailadress deleted."
msgstr "Emailadress deleted."
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Free Software Foundation, Inc.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2003-08-10 16:56+0200\n"
"PO-Revision-Date: 2003-05-19 20:17+2\n"
"Last-Translator: Rafael Santamaria <rafasg@terra.es>\n"
"Language-Team: Español <web-cyradm@web-cyradm.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"

#: CVS/Base/browseaccounts.php:22 browseaccounts.php:22
msgid "Browse accounts for domain"
msgstr "Explorar cuentas"

#: CVS/Base/browseaccounts.php:34 adminuser.php:21 browse.php:66
#: browseaccounts.php:34 catchall.php:24 catchall.php:118
#: change_password.php:19 change_password.php:32 change_password.php:42
#: deleteaccount.php:83 deleteadminuser.php:74 deletedomain.php:17
#: editaccount.php:31 editdomain.php:37 editdomain.php:67 editemail.php:15
#: editemail.php:38 forwardalias.php:16 forwardalias.php:33 newaccount.php:26
#: newadminuser.php:137 newadminuser.php:215 newalias.php:26 newdomain.php:237
#: newemail.php:15 vacation.php:15 vacation.php:30 validate.inc.php:58
#: lib/crypto.php:30 lib/crypto.php:110 lib/crypto.php:149
#: forwardaccount.php:28 delete_catchall.php:23 deleteemail.php:62
msgid "Database error"
msgstr "Error en la base de datos"

#: CVS/Base/browseaccounts.php:48 browseaccounts.php:48 newaccount.php:68
msgid "Total accounts"
msgstr "Total cuentas"

#: CVS/Base/browseaccounts.php:49 adminuser.php:36 browseaccounts.php:49
msgid "Displaying from position:"
msgstr "Visualizando desde la posición"

#: CVS/Base/browseaccounts.php:55 CVS/Base/browseaccounts.php:242
#: browseaccounts.php:55 browseaccounts.php:242 search.php:123 search.php:239
msgid "Add new account"
msgstr "Añadir nueva cuenta"

#: CVS/Base/browseaccounts.php:78 adminuser.php:65 aliases.php:56
#: browseaccounts.php:78 editalias.php:69 search.php:131 search.php:135
msgid "Previous 10 entries"
msgstr "10 Anteriores"

#: CVS/Base/browseaccounts.php:82 adminuser.php:69 aliases.php:57
#: browseaccounts.php:82 editalias.php:70 search.php:138 search.php:142
msgid "Next 10 entries"
msgstr "10 Siguientes"

#: CVS/Base/browseaccounts.php:91 adminuser.php:78 aliases.php:64
#: browse.php:20 browseaccounts.php:91 editaccount.php:50 editalias.php:76
#: search.php:52 search.php:149 search.php:253
msgid "action"
msgstr "Acción"

#: CVS/Base/browseaccounts.php:96 aliases.php:65 browseaccounts.php:96
#: editaccount.php:54 newaccount.php:136 newalias.php:82 search.php:150
#: search.php:254
msgid "Email address"
msgstr "Email"

#: CVS/Base/browseaccounts.php:96 browseaccounts.php:96 editaccount.php:63
#: login.php:61 search.php:151
msgid "Username"
msgstr "Nombre Usuario"

#: CVS/Base/browseaccounts.php:97 browseaccounts.php:97
msgid "Last login"
msgstr "Último acceso"

#: CVS/Base/browseaccounts.php:97 browseaccounts.php:97 editaccount.php:68
#: search.php:152
msgid "Quota used"
msgstr "Cuota usada"

#: CVS/Base/browseaccounts.php:136 browseaccounts.php:136
msgid "n/a"
msgstr "n/a"

#: CVS/Base/browseaccounts.php:146 browseaccounts.php:146 search.php:171
msgid "Edit account"
msgstr "Editar cuenta"

#: CVS/Base/browseaccounts.php:151 browseaccounts.php:151
msgid "Change Password"
msgstr "Cambio de Clave"

#: CVS/Base/browseaccounts.php:155 browseaccounts.php:155 editaccount.php:58
#: editaccount.php:91
msgid "Forward"
msgstr "Reenvio"

#: CVS/Base/browseaccounts.php:159 browseaccounts.php:159 search.php:172
msgid "Delete account"
msgstr "Borrar cuenta"

#: CVS/Base/browseaccounts.php:163 browseaccounts.php:163 search.php:173
msgid "Set quota"
msgstr "Asignar cuota"

#: CVS/Base/browseaccounts.php:167 browseaccounts.php:167 search.php:174
msgid "Set catch all"
msgstr "Asignar todas"

#: CVS/Base/browseaccounts.php:181 browseaccounts.php:181 search.php:190
msgid "Forwards"
msgstr "Reenvios"

#: CVS/Base/browseaccounts.php:218 browseaccounts.php:218 editaccount.php:152
#: search.php:217
msgid "out of"
msgstr "fuera de fecha"

#: CVS/Base/browseaccounts.php:221 browseaccounts.php:221 search.php:220
msgid "Unable to retrieve quota"
msgstr "Incapaz de recuperar cuota"

#: CVS/Base/browseaccounts.php:224 browseaccounts.php:224 editaccount.php:155
#: search.php:223
msgid "Quota not set"
msgstr "Cuota no asignada"

#: CVS/Base/browseaccounts.php:236 browseaccounts.php:236 search.php:235
msgid "No accounts found"
msgstr "No existen cuentas"

#: adminuser.php:13
msgid "Browse admins"
msgstr "Examinar administradores"

#: adminuser.php:35
msgid "Total administrators"
msgstr "Total administradores"

#: adminuser.php:43
msgid "Add administator"
msgstr "Añadir administrador"

#: adminuser.php:82
msgid "Adminname"
msgstr "Nombre administrador"

#: adminuser.php:86
msgid "domain"
msgstr "Dominio"

#: adminuser.php:90
msgid "admin type"
msgstr "Tipo administrador"

#: adminuser.php:119
msgid "Edit adminuser"
msgstr "Editar administrador"

#: adminuser.php:125
msgid "Delete adminuser"
msgstr "Suprimir administrador"

#: adminuser.php:144
msgid "All domains"
msgstr "Todos los Dominios"

#: adminuser.php:148
msgid "None"
msgstr "Ninguno"

#: adminuser.php:158 editadminuser.php:65 menu.inc.php:132 newadminuser.php:57
#: newadminuser.php:207
msgid "Superuser"
msgstr "Super Usuario"

#: adminuser.php:160 editadminuser.php:76 menu.inc.php:134 newadminuser.php:61
#: newadminuser.php:209
msgid "Domain Master"
msgstr "Administrador de Dominio"

#: adminuser.php:174
msgid "No accounts fount"
msgstr "No existen cuentas"

#: adminuser.php:181
msgid "Add administrator"
msgstr "Añadir administrador"

#: aliases.php:11
msgid "Browse aliases for domain"
msgstr "Explorar alias del dominio"

#: aliases.php:50
msgid "Total aliases"
msgstr "Total alias"

#: aliases.php:55
msgid "Add new alias"
msgstr "Añadir nuevo alias"

#: aliases.php:66 editalias.php:77 editemail.php:113 newemail.php:98
#: search.php:255
msgid "Destination"
msgstr "Destino"

#: aliases.php:91 search.php:273
msgid "Edit Alias"
msgstr "Editar Alias"

#: aliases.php:92 search.php:274
msgid "Delete Alias"
msgstr "Borrar Alias"

#: auth.inc.php:70
msgid "Web-cyradm is for authorized users only."
msgstr "Solo usuarios autorizados."

#: auth.inc.php:71
msgid "Make sure you entered the right password."
msgstr "Asegurate de introducir la contraseña correcta"

#: auth.inc.php:72
msgid "Push the back button in your browser to try again."
msgstr "Pulsa el botón de atras de tu navegador e intentalo de nuevo."

#: auth.inc.php:73
msgid " Your attempt to login has been stored."
msgstr "Tu intento de acceso ha sido almacenado."

#: browse.php:13
msgid "Browse domains"
msgstr "Examinar dominios"

#: browse.php:24 search.php:53
msgid "domainname"
msgstr "Nombre de dominio"

#: browse.php:31 search.php:57
msgid "prefix"
msgstr "Prefijo"

#: browse.php:38 search.php:60
msgid "max Accounts"
msgstr "Nº Maximo de cuentas"

#: browse.php:42 search.php:61
msgid "default quota per user"
msgstr "Cuota por usuario por defecto"

#: browse.php:90 search.php:82
msgid "Edit Domain"
msgstr "Editar dominio"

#: browse.php:91 search.php:83
msgid "Delete Domain"
msgstr "Borrar dominio"

#: browse.php:92 deletedomain.php:51 menu.inc.php:59 search.php:84
msgid "accounts"
msgstr "Cuentas"

#: browse.php:93 menu.inc.php:68 search.php:85
msgid "Aliases"
msgstr "Alias"

#: catchall.php:13
msgid "Define a Account for receiving undefined adresses for domain"
msgstr "Definir una cuenta para recibir mensajes con direcciones no definidas en el dominio"

#: catchall.php:38
msgid "Do you really want to define the user"
msgstr "Desea definir el usuario"

#: catchall.php:42
msgid "to receive all undefined emailadresses"
msgstr "para recibir todos mensajes con direcciones de email no definidas"

#: catchall.php:46
msgid "The currently defined user"
msgstr "El usuario actualmente definido"

#: catchall.php:46
msgid "will not receiving any undefined emailadresses anymore"
msgstr "no se recibirá más cualquiera direccion de email sin definir"

#: catchall.php:74
msgid "The user"
msgstr "El usuario"

#: catchall.php:74
msgid "is allready defined to receive all undefined Emails."
msgstr "esta preparado para recibir todos los email sin definir."

#: catchall.php:76
msgid "Do you want to remove the function \"catch all\" for the account"
msgstr "Quieres tu borrar la función \"catch all\" para la cuenta"

#: catchall.php:127 newadminuser.php:197
msgid "successfully added to Database"
msgstr "Agregado a base de datos"

#: catchall.php:133 editdomain.php:56 editemail.php:53 newdomain.php:255
#: newemail.php:44 delete_catchall.php:37
msgid "Database error, please try again"
msgstr "Error en base de datos. Por favor reintentenlo"

#: catchall.php:140 delete_catchall.php:44
msgid "Cancelled"
msgstr "Cancelar"

#: change_password.php:53
msgid "Password changed"
msgstr "Clave de acceso"

#: change_password.php:56
msgid "Failure in changing password."
msgstr "Fallo en el cambio de clave."

#: change_password.php:59 editadminuser.php:252
msgid "New passwords are not equal. Password not changed"
msgstr "La nuevas claves no son iguales. Clave no cambiada"

#: change_password.php:72
msgid "Change password for account"
msgstr "Cambiar la clave de la cuenta"

#: change_password.php:91
msgid "New password"
msgstr "Nueva clave"

#: change_password.php:101
msgid "Confirm new password"
msgstr "Confirme la nueva clave"

#: change_password.php:121 newaccount.php:243
msgid "Passwords do not match"
msgstr "Claves no confrontan"

#: deleteaccount.php:25
msgid "Delete an Account from the System"
msgstr "Borrar una cuenta del sistema"

#: deleteaccount.php:29
msgid "Do you really want to delete the user "
msgstr "Desea borrar el usuario "

#: deleteaccount.php:33
msgid "with all its defined Emailadresses"
msgstr "Con todas las direcciones definidas"

#: deleteaccount.php:69 deleteadminuser.php:68 deletedomain.php:84
#: deleteemail.php:55
msgid "Action cancelled, nothing deleted"
msgstr "Acción cancelada, nada borrado"

#: deleteaccount.php:100
msgid "User deleted"
msgstr "Usuario borrado"

#: deleteaccount.php:111 deletedomain.php:175
msgid ""
"Security violation detected, action cancelled. Your attempt has been logged."
msgstr "Detectada violación de seguridad, acción cancelada. Se ha registrado su tentativa "

#: deleteadminuser.php:17
msgid "Delete an Admin account from the System"
msgstr "Borrar una cuenta de administrador del sistema"

#: deleteadminuser.php:21
msgid "Do you really want to delete the Domain supervisor"
msgstr "Desea borrar el administrador del dominio"

#: deleteadminuser.php:90 editadminuser.php:276
msgid "At least one Superuser is needed for Web-cyradm"
msgstr "Al menos un superusuario es necesitado para Web-cyradm"

#: deleteadminuser.php:103
msgid "Admin user deleted"
msgstr "Usuario Admin borrado"

#: deleteadminuser.php:116 editadminuser.php:299 newadminuser.php:226
msgid "Security violation detected, nothing deleted, attempt has been logged"
msgstr "Detectada violación de seguidad, nada borrado, tentativa registrada"

#: deletedomain.php:28
msgid "Delete a Domain from the System"
msgstr "Borrar dominio del sistema"

#: deletedomain.php:32
msgid "Do you really want to delete the Domain"
msgstr "Desea borrar el dominio"

#: deletedomain.php:37
msgid "with all its defined accounts, admins, and emailadresses"
msgstr "Con todas las cuentas, administradores y direcciones definidas"

#: deletedomain.php:43
msgid "This can take a while depending on how many account have to be deleted"
msgstr "Este proceso puede tardar un poco dependiendo de las cuentas borradas"

#: deletedomain.php:47
msgid "Your action will delete"
msgstr "Su acción borrará"

#: deletedomain.php:154 newadminuser.php:101
msgid "Domain"
msgstr "Dominio"

#: deletedomain.php:158
msgid "successfully deleted"
msgstr "Borrado realizado"

#: deletealias.php:28
msgid "Please confirm you want to remove"
msgstr "Por favor confirme el borrado"

#: deletealias.php:28
msgid "from the alias"
msgstr "desde el alias"

#: deletealias.php:30
msgid "Yes"
msgstr "Si"

#: deletealias.php:49
msgid "Please confirm you want to remove the alias"
msgstr "Por favor confirme el borrado del alias"

#: deletealias.php:77
msgid "Removed"
msgstr "Borrado"

#: deletealias.php:77
msgid "from"
msgstr "desde"

#: deletealias.php:85
msgid "Removed the alias"
msgstr "Alias borrado"

#: editaccount.php:21
msgid "Email adresses defined for user"
msgstr "Email definidos por el usuario"

#: editaccount.php:42
msgid "New email address"
msgstr "Nueva email"

#: editaccount.php:90
msgid "Edit Emailadress"
msgstr "Editar email"

#: editaccount.php:92
msgid "Vacation"
msgstr "Vacaciones"

#: editaccount.php:93
msgid "Delete Emailadress"
msgstr "Borrar email"

#: editadminuser.php:13
msgid "Change admin user for domain"
msgstr "Cambiar el usuario administrador para el dominio"

#: editadminuser.php:42 newaccount.php:106 newadminuser.php:36
msgid "Accountname"
msgstr "Nombre de la cuenta"

#: editadminuser.php:52 newadminuser.php:51
msgid "Admin Type"
msgstr "Tipo administrador"

#: editadminuser.php:84 login.php:71 newaccount.php:138 newadminuser.php:71
msgid "Password"
msgstr "Clave de acceso"

#: editadminuser.php:100 newaccount.php:139 newadminuser.php:86
msgid "Confirm Password"
msgstr "Confirme Clave"

#: editadminuser.php:155
msgid "No Domain assigned yet"
msgstr "Ningún dominio asignado todavía"

#: editadminuser.php:165
msgid "Add new domain to this admin"
msgstr "Añadir nuevo dominio a este administrador"

#: editadminuser.php:223
msgid "No such domain, create domain first"
msgstr "No tal dominio, crea el dominio primero"

#: editadminuser.php:231
msgid "Admin already repsonsible for the domain"
msgstr "Administrador responsable del dominio preparado"

#: editalias.php:27
msgid "There was an error adding $dest to $alias: "
msgstr "Hay un error añadiendo $dest to $alias: "

#: editalias.php:64
msgid "Editing alias"
msgstr "Editar alias"

#: editalias.php:68
msgid "Delete this alias"
msgstr "Borrar este alias"

#: editalias.php:101
msgid "Cannot remove from account"
msgstr "No se puede borrar desde la cuenta"

#: editalias.php:105 editalias.php:109
msgid "Remove destination"
msgstr "Borrar destino"

#: editalias.php:125
msgid "This alias has no destinations"
msgstr "Este alias no tiene destino"

#: editalias.php:142
msgid "New destination"
msgstr "Nuevo destino"

#: editdomain.php:46
msgid "Successfully changed domain"
msgstr "Modificación de dominio realizada"

#: editdomain.php:92 newdomain.php:39
msgid "Domainname"
msgstr "Nombre de dominio"

#: editdomain.php:106 newdomain.php:57
msgid "Prefix"
msgstr "Prefijo"

#: editdomain.php:123 newdomain.php:73
msgid "Allow Free Names"
msgstr "Permitir Nombres Libres"

#: editdomain.php:141 newdomain.php:90
msgid "Allow Free Mail Addresses"
msgstr "Permitir direcciones de email libres"

#: editdomain.php:159 newdomain.php:102
msgid "Maximum Accounts"
msgstr "Nº Maximo de cuentas"

#: editdomain.php:173 newdomain.php:117
msgid "Default Quota in Kilobytes"
msgstr "Cuota Standard en Kb."

#: editdomain.php:202
msgid "Your are not allowed to change domains!"
msgstr "No tienes permitido cambiar dominios!"

#: editemail.php:46
msgid "Successfully changed"
msgstr "Modificación realizada"

#: editemail.php:68
msgid ""
"You can't edit this email address with 'Allow Free Mail Addressess' set to off!"
msgstr "No puedes editar esta cuenta con 'Permitir dirección de email libres' desactivado!"

#: editemail.php:95 newemail.php:77
msgid "Emailadress"
msgstr "Email"

#: failed.php:66
msgid "Login failed"
msgstr "Acceso fallado"

#: failed.php:71 login.php:51
msgid "This is only for authorized users"
msgstr "Solo usuarios autorizados"

#: failed.php:76 logout.php:62 timeout.php:38
msgid "If you like to login click"
msgstr "Pulse para conectar"

#: failed.php:78 logout.php:64 timeout.php:40
msgid "here"
msgstr "aqui"

#: forwardalias.php:68 forwardaccount.php:51
msgid "Forward set"
msgstr "Cambiar reenvio"

#: forwardalias.php:70
msgid "Failure in setting forward"
msgstr "Fallo al cambiar el reenvio"

#: forwardalias.php:73
msgid "Wrong password"
msgstr "Clave errónea"

#: forwardalias.php:89 forwardalias.php:97 forwardalias.php:103
#: forwardalias.php:107 forwardaccount.php:57
msgid "Forwarding removed"
msgstr "Reenvio borrado"

#: forwardalias.php:91 forwardalias.php:99
msgid "Failure in removing forwarding"
msgstr "Fallo al borrar reenvio"

#: forwardalias.php:111 vacation.php:79 vacation.php:107
msgid "Failed to login"
msgstr "Fallo en el acceso"

#: forwardalias.php:123 vacation.php:119
msgid "Not possible"
msgstr "No es posible"

#: forwardalias.php:152
msgid ""
"You can't forward this email address with 'Allow Free Mail Addressess' set to off!"
msgstr "Tu no puedes reenviar este email con 'Permitir direcciones de correo libre' desactivado!"

#: forwardalias.php:161
msgid "Forward for emailadress"
msgstr "Reenvio para email"

#: forwardalias.php:204
msgid "Set forwarding to"
msgstr "Cambiar reenvio a"

#: forwardalias.php:204
msgid "(Seperate multiple values with ,)"
msgstr "(Separa los valores con ,)"

#: forwardalias.php:210 forwardaccount.php:125
msgid "Keep a copy in the user's mailbox"
msgstr "Mantener una copia en el buzón del usuario"

#: forwardalias.php:215 forwardaccount.php:139
msgid "Remove forwarding"
msgstr "Reenvio borrado"

#: index.php:23
msgid "migrate.php exists! please delete or rename it"
msgstr "migrate.php existe! por favor borralo o renombralo"

#: index.php:138
msgid "web-cyradm has not yet been configured"
msgstr "web-cyradm no ha sido correctamente configurado"

#: index.php:141
msgid "Configuration steps:"
msgstr "Pasos para la configuración:"

#: index.php:143
msgid "copy the config file that comes with the distribution: "
msgstr "copia el fichero de configuración que viene con la distribución: "

#: index.php:146
msgid "Edit the file config/conf.php to match your systems configuration"
msgstr "Cambia el fichero config/conf.php para confrontar la configuración de tu sistema"

#: index.php:148
msgid ""
"Further information about how to configure Web-cyradm can be found at the following website:"
msgstr "Futura información para configurar Web-cyradm será encontrada en la siguiente web:"

#: login.php:50
msgid "Welcome to Web-cyradm"
msgstr "Bienvenidos a Web-cyradm"

#: login.php:52
msgid "Please authenticate yourself"
msgstr "Por favor, autentifiquese"

#: login.php:84
msgid "Select language"
msgstr "Elige el lenguaje"

#: logout.php:52
msgid "Thank you for using Web-cyradm"
msgstr "Gracias por usar Web-cyradm"

#: logout.php:57
msgid "You are logged out"
msgstr "Sesión finalizada"

#: menu.inc.php:19
msgid "Superusers Menu"
msgstr "Menú de Super Usuario"

#: menu.inc.php:23
msgid "Domainmasters menu"
msgstr "Menu de dominios"

#: menu.inc.php:31
msgid "add new domain"
msgstr "Añadir un dominio"

#: menu.inc.php:38
msgid "browse domains"
msgstr "Explorar dominios"

#: menu.inc.php:45
msgid "adminusers"
msgstr "Administradores"

#: menu.inc.php:75
msgid "home"
msgstr "Inicio"

#: menu.inc.php:82
msgid "logout"
msgstr "Salir"

#: menu.inc.php:90
msgid "Search"
msgstr "Buscar"

#: menu.inc.php:114
msgid "Logged in as user"
msgstr "Usuario registrado"

#: menu.inc.php:126
msgid "Your role is"
msgstr "Su perfil es"

#: menu.inc.php:144
msgid "Current domain is"
msgstr "El dominio actual es"

#: menu.inc.php:150
msgid "No domain selected"
msgstr "Ninguan dominio elegido"

#: newaccount.php:13
msgid "Add new Account to domain"
msgstr "Añadir cuenta en el dominio"

#: newaccount.php:43 newalias.php:43
msgid "transport is not cyrus, unable to create account"
msgstr "el transporte no es cyrus, no es posible crear la cuenta"

#: newaccount.php:55
msgid "Sorry, no more account allowed for domain"
msgstr "Lo siento, no mas cuentas permitidas para el dominio"

#: newaccount.php:60
msgid "Maximum allowed accounts is"
msgstr "Nº Maximo de cuentas"

#: newaccount.php:137
msgid "Quota"
msgstr "Cuota"

#: newaccount.php:196
msgid "Sorry, the username already exists"
msgstr "Lo siento, el usuario ya existe"

#: newaccount.php:221
msgid "Account successfully added to the Database"
msgstr "Cuenta añadida en la base de datos"

#: newaccount.php:234
msgid "Account succesfully added to the IMAP Subsystem"
msgstr "Cuenta añadida al subsistema IMAP"

#: newadminuser.php:13
msgid "Add new administrator"
msgstr "Añadir nuevos administrador"

#: newadminuser.php:64
msgid "Select \"Superuser\" for all domains"
msgstr "Elige \"Super usuario\" para todos los dominios"

#: newadminuser.php:132
msgid "You must provide a username"
msgstr "Tu debes indicar un nombre de usuario"

#: newadminuser.php:145
msgid "Passwords are empty or not equal."
msgstr "Claves vacias o desiguales."

#: newadminuser.php:157
msgid "Username already exist"
msgstr "El nombre de usuario ya existe"

#: newalias.php:15
msgid "Add new alias to domain"
msgstr "Añadir nuevo alias al dominio"

#: newalias.php:55
msgid "Sorry, no more alias allowed for domain"
msgstr "Lo siento, no se permiten mas alias para el dominio"

#: newalias.php:60
msgid "Maximum allowed aliases is"
msgstr "Nº Maximo de alias es"

#: newdomain.php:15
msgid "Add new domain"
msgstr "Añadir nuevo dominio"

#: newdomain.php:140
msgid "Standard Mailboxes"
msgstr "Buzones standard"

#: newdomain.php:146
msgid ""
"emailadress where the default aliases should be mapped (empty means no mapping)"
msgstr "email donde el alias por defecto debería ser situado (vacio no situado)"

#: newdomain.php:163
msgid "Mail transport"
msgstr "Transporte de correo"

#: newdomain.php:166
msgid "Leave this as is, unless you know what you are doing"
msgstr "Deja esto como esta, a menos que tu sepas lo que haces"

#: newdomain.php:187
msgid "Parameter"
msgstr "Parametros"

#: newdomain.php:245 newemail.php:34
msgid "Successfully added"
msgstr "Añadido correctamente"

#: newdomain.php:273
msgid "You are not allowed to add new domains"
msgstr "No tienes permitido añadir nuevos dominios"

#: newemail.php:56
msgid "New emailadress for user"
msgstr "Nuevo email para el usuario"

#: search.php:48
msgid "Total domains matching"
msgstr "Total administradores"

#: search.php:110
msgid "Total users matching"
msgstr "Total usuarios"

#: search.php:118
msgid "Displaying from position"
msgstr "Visualizar desde la posición"

#: search.php:245
msgid "Total aliases matching"
msgstr "Total alias"

#: search.php:247
msgid "No aliases found"
msgstr "No existen alias"

#: setquota.php:26
msgid "Setting individual Quota for user"
msgstr "Asignar cuota individual por usuario"

#: setquota.php:58
msgid "Submit"
msgstr "Enviar"

#: setquota.php:70
msgid "Quote for user"
msgstr "Cuota por usuario"

#: setquota.php:74
msgid "changed to"
msgstr "cambiar a"

#: timeout.php:33
msgid "Your session timed out"
msgstr "Su sesión ha expirado"

#: vacation.php:71
msgid "Vacation notice set"
msgstr "Colocado texto de vacaciones"

#: vacation.php:73
msgid "Failed to activate vacation"
msgstr "Fallo al activar vacaciones"

#: vacation.php:76
msgid "Failure in modifying vacation notice"
msgstr "Fallo al modificar el texto de vacaciones"

#: vacation.php:95
msgid "Vacation notice unset"
msgstr "Texto de vacaciones no desactivado"

#: vacation.php:97
msgid "Failure in unseting vacation notice"
msgstr "Fallo al desactivar el texto de vacaciones"

#: vacation.php:101
msgid "Vacation notice removed"
msgstr "Texto de vacaciones borrado"

#: vacation.php:103
msgid "Failure in removing vacation notice"
msgstr "Fallo al borrar el texto de vacaciones"

#: vacation.php:142
msgid ""
"You can't set Vacation Message for this email address with 'Allow Free Mail Addressess' set to off!"
msgstr "No se puede colocar el mensaje de vacaciones con 'Permitir direcciones de correo libre' desactivado"

#: vacation.php:152
msgid "Vacation message for emailadress"
msgstr "Mensaje de vacaciones para el email"

#: vacation.php:174
msgid "Set vacation notice"
msgstr "Colocar texto de vacaciones"

#: vacation.php:178
msgid "Remove vacation notice"
msgstr "Borrar texto de vacaciones"

#: validate.inc.php:74 validate.inc.php:87 validate.inc.php:134
#: validate.inc.php:249
msgid "Security violation detected, attempt logged"
msgstr "Detectada violación de seguridad, intento almacenado"

#: validate.inc.php:130
msgid "Quota exeedes the maximum allowed qutoa for this domain."
msgstr "Cuota excede al máximo permitido para este dominio."

#: forwardaccount.php:77
msgid "Forward for account"
msgstr "Reenvio para la cuenta"

#: forwardaccount.php:93
msgid "Set forwarding to (one adress per line)"
msgstr "Colocar reenvio a (una direccion por linea)"

#: delete_catchall.php:31
msgid "successfully deleted from the Database"
msgstr "Borrado del base de datos"

#: deleteemail.php:16
msgid "Delete emailadress from the System"
msgstr "Email borrado del sistema"

#: deleteemail.php:23
msgid "Do you really want to delete the emailadress for user"
msgstr "Desea borrar el email del usuario"

#: deleteemail.php:44
msgid "Yes, delete"
msgstr "Si, borrar"

#: deleteemail.php:49
msgid "Cancel"
msgstr "Cancelar"

#: deleteemail.php:70
msgid "Emailadress deleted."
msgstr "Email borrado"

#~ msgid "successfully changed Database...."
#~ msgstr "modificado en la base de datos...."

#~ msgid "Add new admin user for domain"
#~ msgstr "Añadir nueva cuenta de administrador para el dominio"
# Copyright (C) 2003 Free Software Foundation, Inc.
# JEUDY Raphaël <raphael.jeudy@fastorama.com>, 2002,2003.
# JEUDY Raphaël <raphael.jeudy@fastorama.com>, 2003.
# 
# 
msgid ""
msgstr ""
"Project-Id-Version: web-cyradm v0.5.4-rc2\n"
"Report-Msgid-Bugs-To: <raphael.jeudy@fastorama.com>\n"
"POT-Creation-Date: 2003-08-10 16:56+0200\n"
"PO-Revision-Date: 2003-10-20 12:54+0200\n"
"Last-Translator:  <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
"Report-Msgid-Bugs-To: <raphael.jeudy@fastorama.com>\n"

#: CVS/Base/browseaccounts.php:22 browseaccounts.php:22
msgid "Browse accounts for domain"
msgstr "Parcourir les administrateurs du domaine"

#: CVS/Base/browseaccounts.php:34 adminuser.php:21 browse.php:66
#: browseaccounts.php:34 catchall.php:24 catchall.php:118
#: change_password.php:19 change_password.php:32 change_password.php:42
#: deleteaccount.php:83 deleteadminuser.php:74 deletedomain.php:17
#: editaccount.php:31 editdomain.php:37 editdomain.php:67 editemail.php:15
#: editemail.php:38 forwardalias.php:16 forwardalias.php:33 newaccount.php:26
#: newadminuser.php:137 newadminuser.php:215 newalias.php:26 newdomain.php:237
#: newemail.php:15 vacation.php:15 vacation.php:30 validate.inc.php:58
#: lib/crypto.php:30 lib/crypto.php:110 lib/crypto.php:149
#: forwardaccount.php:28 delete_catchall.php:23 deleteemail.php:62
msgid "Database error"
msgstr "Erreur avec la base de donn&eacute;es"

#: CVS/Base/browseaccounts.php:48 browseaccounts.php:48 newaccount.php:68
msgid "Total accounts"
msgstr "Comptes au total"

#: CVS/Base/browseaccounts.php:49 adminuser.php:36 browseaccounts.php:49
msgid "Displaying from position:"
msgstr "Afficher depuis la position:"

#: CVS/Base/browseaccounts.php:55 CVS/Base/browseaccounts.php:242
#: browseaccounts.php:55 browseaccounts.php:242 search.php:123 search.php:239
msgid "Add new account"
msgstr "Ajouter un nouveau compte"

#: CVS/Base/browseaccounts.php:78 adminuser.php:65 aliases.php:56
#: browseaccounts.php:78 editalias.php:69 search.php:131 search.php:135
msgid "Previous 10 entries"
msgstr "Les 10 entr&eacute;es pr&eacute;c&eacute;dentes"

#: CVS/Base/browseaccounts.php:82 adminuser.php:69 aliases.php:57
#: browseaccounts.php:82 editalias.php:70 search.php:138 search.php:142
msgid "Next 10 entries"
msgstr "Les 10 entr&eacute;es suivantes"

#: CVS/Base/browseaccounts.php:91 adminuser.php:78 aliases.php:64
#: browse.php:20 browseaccounts.php:91 editaccount.php:50 editalias.php:76
#: search.php:52 search.php:149 search.php:253
msgid "action"
msgstr "action"

#: CVS/Base/browseaccounts.php:96 aliases.php:65 browseaccounts.php:96
#: editaccount.php:54 newaccount.php:136 newalias.php:82 search.php:150
#: search.php:254
msgid "Email address"
msgstr "Adresse email"

#: CVS/Base/browseaccounts.php:96 browseaccounts.php:96 editaccount.php:63
#: login.php:61 search.php:151
msgid "Username"
msgstr "Nom d'utilisateur"

#: CVS/Base/browseaccounts.php:97 browseaccounts.php:97
msgid "Last login"
msgstr "Derni&egrave;re connexion"

#: CVS/Base/browseaccounts.php:97 browseaccounts.php:97 editaccount.php:68
#: search.php:152
msgid "Quota used"
msgstr "Quota utilis&eacute;"

#: CVS/Base/browseaccounts.php:136 browseaccounts.php:136
msgid "n/a"
msgstr "n/a"

#: CVS/Base/browseaccounts.php:146 browseaccounts.php:146 search.php:171
msgid "Edit account"
msgstr "Editer le compte"

#: CVS/Base/browseaccounts.php:151 browseaccounts.php:151
msgid "Change Password"
msgstr "Changer le mot de passe"

#: CVS/Base/browseaccounts.php:155 browseaccounts.php:155 editaccount.php:58
#: editaccount.php:91
msgid "Forward"
msgstr "Redirection"

#: CVS/Base/browseaccounts.php:159 browseaccounts.php:159 search.php:172
msgid "Delete account"
msgstr "Supprimer ce compte"

#: CVS/Base/browseaccounts.php:163 browseaccounts.php:163 search.php:173
msgid "Set quota"
msgstr "Fixer un quota"

#: CVS/Base/browseaccounts.php:167 browseaccounts.php:167 search.php:174
msgid "Set catch all"
msgstr "Tout r&eacute;cup&eacute;rer"

#: CVS/Base/browseaccounts.php:181 browseaccounts.php:181 search.php:190
msgid "Forwards"
msgstr "Redirection(s)"

#: CVS/Base/browseaccounts.php:218 browseaccounts.php:218 editaccount.php:152
#: search.php:217
msgid "out of"
msgstr "sur"

#: CVS/Base/browseaccounts.php:221 browseaccounts.php:221 search.php:220
msgid "Unable to retrieve quota"
msgstr "Impossible de r&eacute;cup&eacute;rer le quota"

#: CVS/Base/browseaccounts.php:224 browseaccounts.php:224 editaccount.php:155
#: search.php:223
msgid "Quota not set"
msgstr "Quota non fix&eacute;"

#: CVS/Base/browseaccounts.php:236 browseaccounts.php:236 search.php:235
msgid "No accounts found"
msgstr "Pas de comptes trouv&eacute;s"

#: adminuser.php:13
msgid "Browse admins"
msgstr "Parcourir la liste des administrateurs"

#: adminuser.php:35
msgid "Total administrators"
msgstr "Total des administrateurs"

#: adminuser.php:43
msgid "Add administator"
msgstr "Ajouter un administrateur"

#: adminuser.php:82
msgid "Adminname"
msgstr "Nom de l'administrateur"

#: adminuser.php:86
msgid "domain"
msgstr "domaine"

#: adminuser.php:90
msgid "admin type"
msgstr "Type de l'administrateur"

#: adminuser.php:119
msgid "Edit adminuser"
msgstr "Editer l'administrateur"

#: adminuser.php:125
msgid "Delete adminuser"
msgstr "Supprimer l'administrateur"

#: adminuser.php:144
msgid "All domains"
msgstr "Tous les domaines"

#: adminuser.php:148
msgid "None"
msgstr "Aucun"

#: adminuser.php:158 editadminuser.php:65 menu.inc.php:132 newadminuser.php:57
#: newadminuser.php:207
msgid "Superuser"
msgstr "Super utilisateur"

#: adminuser.php:160 editadminuser.php:76 menu.inc.php:134 newadminuser.php:61
#: newadminuser.php:209
msgid "Domain Master"
msgstr "Administrateur de domaine"

#: adminuser.php:174
msgid "No accounts fount"
msgstr "Pas de comptes trouv&eacute;s"

#: adminuser.php:181
msgid "Add administrator"
msgstr "Ajouter un administrateur"

#: aliases.php:11
msgid "Browse aliases for domain"
msgstr "Parcourir les alias du domaine"

#: aliases.php:50
msgid "Total aliases"
msgstr "Total des alias"

#: aliases.php:55
msgid "Add new alias"
msgstr "Ajouter un alias"

#: aliases.php:66 editalias.php:77 editemail.php:113 newemail.php:98
#: search.php:255
msgid "Destination"
msgstr "Destination"

#: aliases.php:91 search.php:273
msgid "Edit Alias"
msgstr "Editer l'alias"

#: aliases.php:92 search.php:274
msgid "Delete Alias"
msgstr "Supprimer l'alias"

#: auth.inc.php:70
msgid "Web-cyradm is for authorized users only."
msgstr "Web-cyrdam n'est que pour les utilisateur autoris&eacute;s seulement."

#: auth.inc.php:71
msgid "Make sure you entered the right password."
msgstr "Veuillez v&eacute;rifier votre mot de passe"

#: auth.inc.php:72
msgid "Push the back button in your browser to try again."
msgstr "Pressez le bouton retour de votre navigateur pour essayer Ã  nouveau"

#: auth.inc.php:73
msgid " Your attempt to login has been stored."
msgstr "Votre tentative de connexion est enregistr&eacute;e"

#: browse.php:13
msgid "Browse domains"
msgstr "Parcourir les domaines"

#: browse.php:24 search.php:53
msgid "domainname"
msgstr "nom de domaine"

#: browse.php:31 search.php:57
msgid "prefix"
msgstr "prefix"

#: browse.php:38 search.php:60
msgid "max Accounts"
msgstr "Nb max de comptes"

#: browse.php:42 search.php:61
msgid "default quota per user"
msgstr "quota par utilisateur"

#: browse.php:90 search.php:82
msgid "Edit Domain"
msgstr "Editer le domaine"

#: browse.php:91 search.php:83
msgid "Delete Domain"
msgstr "Supprimer ce domaine"

#: browse.php:92 deletedomain.php:51 menu.inc.php:59 search.php:84
msgid "accounts"
msgstr "compte(s)"

#: browse.php:93 menu.inc.php:68 search.php:85
msgid "Aliases"
msgstr "Alias"

#: catchall.php:13
msgid "Define a Account for receiving undefined adresses for domain"
msgstr ""
"Definir un compte de r&eacute;cup&eacute;ration pour les adresses inexistantes du domaine"

#: catchall.php:38
msgid "Do you really want to define the user"
msgstr "Voulez vous vraiment d&eacute;finir l'utilisateur"

#: catchall.php:42
msgid "to receive all undefined emailadresses"
msgstr "pour recevoir les mails envoy&eacute;s sur les adresses inexistantes"

#: catchall.php:46
msgid "The currently defined user"
msgstr "L'utilisateur actuel"

#: catchall.php:46
msgid "will not receiving any undefined emailadresses anymore"
msgstr "ne recevra plus les mails envoy&eacute;s sur des adresses inexistantes"

#: catchall.php:74
msgid "The user"
msgstr "L'utilisateur"

#: catchall.php:74
msgid "is allready defined to receive all undefined Emails."
msgstr "est d&eacute;j&agrave; d&eacute;fini pour recevoir les messages envoy&eacute;s sur les adresses inexistantes."

#: catchall.php:76
msgid "Do you want to remove the function \"catch all\" for the account"
msgstr "Voulez vous supprimer la fonction \"tout r&eacute;cup&eacute;rer\" pour le compte"

#: catchall.php:127 newadminuser.php:197
msgid "successfully added to Database"
msgstr "Ajout termin&eacute;"

#: catchall.php:133 editdomain.php:56 editemail.php:53 newdomain.php:255
#: newemail.php:44 delete_catchall.php:37
msgid "Database error, please try again"
msgstr "Erreur avec la base de donn&eacute;es, essayez plus tard svp"

#: catchall.php:140 delete_catchall.php:44
msgid "Cancelled"
msgstr "Annul&eacute;"

#: change_password.php:53
msgid "Password changed"
msgstr "Mot de passe chang&eacute;"

#: change_password.php:56
msgid "Failure in changing password."
msgstr "Erreur lors du changement du mot de passe."

#: change_password.php:59 editadminuser.php:252
msgid "New passwords are not equal. Password not changed"
msgstr "Les mots de passe ne correspondent pas, inchang&eacute;"

#: change_password.php:72
msgid "Change password for account"
msgstr "Changer le mot de passe du compte"

#: change_password.php:91
msgid "New password"
msgstr "Nouveau mot de passe"

#: change_password.php:101
msgid "Confirm new password"
msgstr "Confirmez le nouveau mot de passe"

#: change_password.php:121 newaccount.php:243
msgid "Passwords do not match"
msgstr "Les mots de passe ne correspondent pas"

#: deleteaccount.php:25
msgid "Delete an Account from the System"
msgstr "Supprimer un compte du syst&egrave;me"

#: deleteaccount.php:29
msgid "Do you really want to delete the user "
msgstr "Voulez vous vraiment supprimer l'utilisateur"

#: deleteaccount.php:33
msgid "with all its defined Emailadresses"
msgstr "avec toutes les adresses qui lui sont rattach&eacute;es"

#: deleteaccount.php:69 deleteadminuser.php:68 deletedomain.php:84
#: deleteemail.php:55
msgid "Action cancelled, nothing deleted"
msgstr "Op&eacute;ration annul&eacute;e, aucune suppression effectu&eacute;e"

#: deleteaccount.php:100
msgid "User deleted"
msgstr "Utilisateur supprim&eacute;"

#: deleteaccount.php:111 deletedomain.php:175
msgid ""
"Security violation detected, action cancelled. Your attempt has been logged."
msgstr ""
"Violation de s&eacute;curit&eacute; d&eacute;tect&eacute;e, action "
"annul&eacute;e. Votre tentative &agrave; &eacute;t&eacute; enregistr&eacute;e"

#: deleteadminuser.php:17
msgid "Delete an Admin account from the System"
msgstr "Supprimer un compte administrateur du syst&egrave;me"

#: deleteadminuser.php:21
msgid "Do you really want to delete the Domain supervisor"
msgstr "Voulez vous vraiment supprimer l'administrateur du domaine"

#: deleteadminuser.php:90 editadminuser.php:276
msgid "At least one Superuser is needed for Web-cyradm"
msgstr "Au moins un Super Utilisateur est requis pour Web-cyradm"

#: deleteadminuser.php:103
msgid "Admin user deleted"
msgstr "Utilisateur administrateur supprim&eacute;"

#: deleteadminuser.php:116 editadminuser.php:299 newadminuser.php:226
msgid "Security violation detected, nothing deleted, attempt has been logged"
msgstr ""
"Violation de s&eacute;curit&eacute; d&eacute;tect&eacute;e, rien de supprim&eacute;, la tentative"
"est enregistr&eacute;e"

#: deletedomain.php:28
msgid "Delete a Domain from the System"
msgstr "Supprimer un domaine du syst&egrave;me"

#: deletedomain.php:32
msgid "Do you really want to delete the Domain"
msgstr "Voulez vous vraiment supprimer le domaine"

#: deletedomain.php:37
msgid "with all its defined accounts, admins, and emailadresses"
msgstr ""
"avec tous les comptes, administrateurs et adresses emails qui lui sont "
"rattach&eacute;s"

#: deletedomain.php:43
msgid "This can take a while depending on how many account have to be deleted"
msgstr ""
"Ceci peut prendre plusieurs minutes suivant le nombre de comptes &agrave; "
"supprimer"

#: deletedomain.php:47
msgid "Your action will delete"
msgstr "Votre op&eacute;ration va supprimer"

#: deletedomain.php:154 newadminuser.php:101
msgid "Domain"
msgstr "Domaine"

#: deletedomain.php:158
msgid "successfully deleted"
msgstr "supprim&eacute; avec succ&eacute;s"

#: deletealias.php:28
msgid "Please confirm you want to remove"
msgstr "Veuillez confirmer la suppression"

#: deletealias.php:28
msgid "from the alias"
msgstr "depuis l'alias"

#: deletealias.php:30
msgid "Yes"
msgstr "Oui"

#: deletealias.php:49
msgid "Please confirm you want to remove the alias"
msgstr "Veuillez confirmer la suppression de l'alias"

#: deletealias.php:77
msgid "Removed"
msgstr "Supprim&eacute;"

#: deletealias.php:77
msgid "from"
msgstr "depuis"

#: deletealias.php:85
msgid "Removed the alias"
msgstr "Suppression de l'alias"

#: editaccount.php:21
msgid "Email adresses defined for user"
msgstr "Adresse email fix&eacute;e pour l'utilisateur"

#: editaccount.php:42
msgid "New email address"
msgstr "Nouvelle adresse email"

#: editaccount.php:90
msgid "Edit Emailadress"
msgstr "Editer l'adresse email"

#: editaccount.php:92
msgid "Vacation"
msgstr "Action"

#: editaccount.php:93
msgid "Delete Emailadress"
msgstr "Supprimer l'adresse email"

#: editadminuser.php:13
msgid "Change admin user for domain"
msgstr "Changer l'administrateur du domaine"

#: editadminuser.php:42 newaccount.php:106 newadminuser.php:36
msgid "Accountname"
msgstr "Nom du compte"

#: editadminuser.php:52 newadminuser.php:51
msgid "Admin Type"
msgstr "Type de l'administrateur"

#: editadminuser.php:84 login.php:71 newaccount.php:138 newadminuser.php:71
msgid "Password"
msgstr "Mot de passe"

#: editadminuser.php:100 newaccount.php:139 newadminuser.php:86
msgid "Confirm Password"
msgstr "Confirmez le mot de passe"

#: editadminuser.php:155
msgid "No Domain assigned yet"
msgstr "Aucun domaine assign&eacute; actuellement"

#: editadminuser.php:165
msgid "Add new domain to this admin"
msgstr "Ajouter un domaine pour cet administrateur"

#: editadminuser.php:223
msgid "No such domain, create domain first"
msgstr "Pas de domaine, veuillez en cr&eacute;er un"

#: editadminuser.php:231
msgid "Admin already repsonsible for the domain"
msgstr "Administrateur d&eacute;jÃ  responsable de ce domaine"

#: editalias.php:27
msgid "There was an error adding $dest to $alias: "
msgstr "Erreur lors de l'ajout de $dest &agrave; $alias: "

#: editalias.php:64
msgid "Editing alias"
msgstr "Editer l'alias"

#: editalias.php:68
msgid "Delete this alias"
msgstr "Supprimer cet alias"

#: editalias.php:101
msgid "Cannot remove from account"
msgstr "Ne peut supprimer depuis le compte"

#: editalias.php:105 editalias.php:109
msgid "Remove destination"
msgstr "Supprimer la destination"

#: editalias.php:125
msgid "This alias has no destinations"
msgstr "Cet alias n'a pas de destinations"

#: editalias.php:142
msgid "New destination"
msgstr "Nouvelle destination"

#: editdomain.php:46
msgid "Successfully changed domain"
msgstr "Changement de domaine effectu&eacute;"

#: editdomain.php:92 newdomain.php:39
msgid "Domainname"
msgstr "Nom du domaine"

#: editdomain.php:106 newdomain.php:57
msgid "Prefix"
msgstr "Prefix"

#: editdomain.php:123 newdomain.php:73
msgid "Allow Free Names"
msgstr "Autoriser les noms libres"

#: editdomain.php:141 newdomain.php:90
msgid "Allow Free Mail Addresses"
msgstr "Autoriser les adresses libres"

#: editdomain.php:159 newdomain.php:102
msgid "Maximum Accounts"
msgstr "Maximum de comptes"

#: editdomain.php:173 newdomain.php:117
msgid "Default Quota in Kilobytes"
msgstr "Quota par d&eacute;faut en Kilobytes"

#: editdomain.php:202
msgid "Your are not allowed to change domains!"
msgstr "Vous ne pouvez pas changer de domaine"

#: editemail.php:46
msgid "Successfully changed"
msgstr "Changement effectu&eacute;"

#: editemail.php:68
msgid ""
"You can't edit this email address with 'Allow Free Mail Addressess' set to "
"off!"
msgstr ""
"Vous ne pouvez pas &eacute;diter cette adresse mail avec 'Adresses mail libres' set to "
"off!"

#: editemail.php:95 newemail.php:77
msgid "Emailadress"
msgstr "Adresse email"

#: failed.php:66
msgid "Login failed"
msgstr "Erreur d'authentification"

#: failed.php:71 login.php:51
msgid "This is only for authorized users"
msgstr "!-! Pour les utilisateurs autoris&eacute;s seulement !-!"

#: failed.php:76 logout.php:62 timeout.php:38
msgid "If you like to login click"
msgstr "Si vous voulez vous identifier &agrave; nouveau cliquez"

#: failed.php:78 logout.php:64 timeout.php:40
msgid "here"
msgstr "ici"

#: forwardalias.php:68 forwardaccount.php:51
msgid "Forward set"
msgstr "Redirection fix&eacute;e"

#: forwardalias.php:70
msgid "Failure in setting forward"
msgstr "Impossible de faire la redirection"

#: forwardalias.php:73
msgid "Wrong password"
msgstr "Mauvais mot de passe"

#: forwardalias.php:89 forwardalias.php:97 forwardalias.php:103
#: forwardalias.php:107 forwardaccount.php:57
msgid "Forwarding removed"
msgstr "Redirection supprim&eacute;e"

#: forwardalias.php:91 forwardalias.php:99
msgid "Failure in removing forwarding"
msgstr "Impossible de supprimer la redirection"

#: forwardalias.php:111 vacation.php:79 vacation.php:107
msgid "Failed to login"
msgstr "Erreur d'authentification"

#: forwardalias.php:123 vacation.php:119
msgid "Not possible"
msgstr "Impossible"

#: forwardalias.php:152
msgid ""
"You can't forward this email address with 'Allow Free Mail Addressess' set "
"to off!"
msgstr ""
"Vous ne pouvez rediriger cette adresse email avec 'Allow Free Mail Addressess set "
"to off!"

#: forwardalias.php:161
msgid "Forward for emailadress"
msgstr "Redirection pour l'adresse email"

#: forwardalias.php:204
msgid "Set forwarding to"
msgstr "Rediriger vers"

#: forwardalias.php:204
msgid "(Seperate multiple values with ,)"
msgstr "(S&eacute;parez les valeurs avec ,)"

#: forwardalias.php:210 forwardaccount.php:125
msgid "Keep a copy in the user's mailbox"
msgstr "Garder une copie dans la boite de l'utilisateur"

#: forwardalias.php:215 forwardaccount.php:139
msgid "Remove forwarding"
msgstr "Supprimer la redirection"

#: index.php:23
msgid "migrate.php exists! please delete or rename it"
msgstr "Le fichier migrate.php existe! Veuillez le supprimer ou le renommer"

#: index.php:138
msgid "web-cyradm has not yet been configured"
msgstr "web-cyradm n'est pas encore configur&eacute;"

#: index.php:141
msgid "Configuration steps:"
msgstr "Etapes pour la configuration:"

#: index.php:143
msgid "copy the config file that comes with the distribution: "
msgstr "copiez le fichier de configuration venant avec la distribution: "

#: index.php:146
msgid "Edit the file config/conf.php to match your systems configuration"
msgstr "Editez le fichier config/conf.php en accord avec votre configuration syst&eagrave;me"

#: index.php:148
msgid ""
"Further information about how to configure Web-cyradm can be found at the "
"following website:"
msgstr ""
"Plus d'informations sur la configuration de Web-cyradm sont disponibles &agrave; "
"cette adresse:"

#: login.php:50
msgid "Welcome to Web-cyradm"
msgstr "Bienvenue &agrave; Web-cyradm"

#: login.php:52
msgid "Please authenticate yourself"
msgstr "Veuillez vous identifier"

#: login.php:84
msgid "Select language"
msgstr "Selectionnez un langage"

#: logout.php:52
msgid "Thank you for using Web-cyradm"
msgstr "Merci d'avoir utilis&eacute; Web-cyradm"

#: logout.php:57
msgid "You are logged out"
msgstr "Session termin&eacute;e"

#: menu.inc.php:19
msgid "Superusers Menu"
msgstr "Menu super utilisateurs"

#: menu.inc.php:23
msgid "Domainmasters menu"
msgstr "Menu pour les administrateurs de domaines"

#: menu.inc.php:31
msgid "add new domain"
msgstr "Ajouter un domaine"

#: menu.inc.php:38
msgid "browse domains"
msgstr "Parcourir les domaines"

#: menu.inc.php:45
msgid "adminusers"
msgstr "Administrateurs"

#: menu.inc.php:75
msgid "home"
msgstr "Accueil"

#: menu.inc.php:82
msgid "logout"
msgstr "Fin de session"

#: menu.inc.php:90
msgid "Search"
msgstr "Recherche"

#: menu.inc.php:114
msgid "Logged in as user"
msgstr "Identifi&eacute; sous"

#: menu.inc.php:126
msgid "Your role is"
msgstr "Votre fonction est"

#: menu.inc.php:144
msgid "Current domain is"
msgstr "Le domaine courant est"

#: menu.inc.php:150
msgid "No domain selected"
msgstr "Pas de domaine selectionn&eacute;"

#: newaccount.php:13
msgid "Add new Account to domain"
msgstr "Ajouter un nouveau compte au domaine"

#: newaccount.php:43 newalias.php:43
msgid "transport is not cyrus, unable to create account"
msgstr ""
"le type de transport n'est pas cyrus, impossible de cr&eacute;er le compte"

#: newaccount.php:55
msgid "Sorry, no more account allowed for domain"
msgstr "Nombre maximum de comptes pour le domaine atteint"

#: newaccount.php:60
msgid "Maximum allowed accounts is"
msgstr "Maximum de comptes autoris&eacute;s :"

#: newaccount.php:137
msgid "Quota"
msgstr "Quota"

#: newaccount.php:196
msgid "Sorry, the username already exists"
msgstr "D&eacute;sol&eacute;, ce nom d'utilisateur existe d&eacute;j&agrave;"

#: newaccount.php:221
msgid "Account successfully added to the Database"
msgstr "Compte correctement ajout&eacute;"

#: newaccount.php:234
msgid "Account succesfully added to the IMAP Subsystem"
msgstr "Compte ajout&eacute; au sous syst&egrave;me IMAP"

#: newadminuser.php:13
msgid "Add new administrator"
msgstr "Ajouter un nouveal administrateur"

#: newadminuser.php:64
msgid "Select \"Superuser\" for all domains"
msgstr "Super Administrateur pour tous les domaines"

#: newadminuser.php:132
msgid "You must provide a username"
msgstr "Vous devez fournir un nom d'utilisateur"

#: newadminuser.php:145
msgid "Passwords are empty or not equal."
msgstr "Mots de passe vides ou diff&eacute;rents."

#: newadminuser.php:157
msgid "Username already exist"
msgstr "Ce nom d'utilisateur existe d&eacute;j&eagrave;"

#: newalias.php:15
msgid "Add new alias to domain"
msgstr "Ajouter un nouvel alias au domain"

#: newalias.php:55
msgid "Sorry, no more alias allowed for domain"
msgstr "Nombre maximum d'alias pour le domaine atteint"

#: newalias.php:60
msgid "Maximum allowed aliases is"
msgstr "Le nombre maximum d'alias est"

#: newdomain.php:15
msgid "Add new domain"
msgstr "Ajouter un domaine"

#: newdomain.php:140
msgid "Standard Mailboxes"
msgstr "Boite aux lettres standard"

#: newdomain.php:146
msgid ""
"emailadress where the default aliases should be mapped (empty means no "
"mapping)"
msgstr "Adresse email pour les alias par d&eacute;faut"

#: newdomain.php:163
msgid "Mail transport"
msgstr "Type de transport mail"

#: newdomain.php:166
msgid "Leave this as is, unless you know what you are doing"
msgstr "Ne rien mettre, sauf si vous savez ce que vous faites"

#: newdomain.php:187
msgid "Parameter"
msgstr "Parametre"

#: newdomain.php:245 newemail.php:34
msgid "Successfully added"
msgstr "Correctement ajout&eacute;"

#: newdomain.php:273
msgid "You are not allowed to add new domains"
msgstr ""
"Vous n'&ecirc;tes pas autoris&eacute; &agrave; cr&eacute;er de nouveaux "
"domaines"

#: newemail.php:56
msgid "New emailadress for user"
msgstr "Nouvelle adresse email pour l'utilisateur"

#: search.php:48
msgid "Total domains matching"
msgstr "Total des domaines correspondants"

#: search.php:110
msgid "Total users matching"
msgstr "Total des utilisateurs correspondants"

#: search.php:118
msgid "Displaying from position"
msgstr "Afficher depuis la position"

#: search.php:245
msgid "Total aliases matching"
msgstr "Total des alias correspondants"

#: search.php:247
msgid "No aliases found"
msgstr "Pas d'alias trouv&eacute;s"

#: setquota.php:26
msgid "Setting individual Quota for user"
msgstr "D&eacute;finir le quota pour"

#: setquota.php:58
msgid "Submit"
msgstr "Envoyer"

#: setquota.php:70
msgid "Quote for user"
msgstr "Quota pour l'utilisateur"

#: setquota.php:74
msgid "changed to"
msgstr "fix&eacute; &agrave;"

#: timeout.php:33
msgid "Your session timed out"
msgstr "Votre session a expir&eacute;e"

#: vacation.php:71
msgid "Vacation notice set"
msgstr "Notification d'absence enregistr&eacute;e"

#: vacation.php:73
msgid "Failed to activate vacation"
msgstr "Impossible d'activer la notification d'absence"

#: vacation.php:76
msgid "Failure in modifying vacation notice"
msgstr "Impossible de modifier la notification d'absence"

#: vacation.php:95
msgid "Vacation notice unset"
msgstr "Notification d'absence non d&eacute;finie"

#: vacation.php:97
msgid "Failure in unseting vacation notice"
msgstr "Impossible de supprimer la notification d'absence"

#: vacation.php:101
msgid "Vacation notice removed"
msgstr "Notification d'absence supprim&eacute;e"

#: vacation.php:103
msgid "Failure in removing vacation notice"
msgstr "Impossible de supprimer la notification d'absence"

#: vacation.php:142
msgid ""
"You can't set Vacation Message for this email address with 'Allow Free Mail "
"Addressess' set to off!"
msgstr ""
"Vous ne pouvez d&eacute;finir de message d'absence pour cet email avec 'Allow Free Mail "
"Addressess' set to off!"

#: vacation.php:152
msgid "Vacation message for emailadress"
msgstr "Message d'absence pour l'adresse email"

#: vacation.php:174
msgid "Set vacation notice"
msgstr "Fixer la notification d'absence"

#: vacation.php:178
msgid "Remove vacation notice"
msgstr "Supprimer la notification d'absence"

#: validate.inc.php:74 validate.inc.php:87 validate.inc.php:134
#: validate.inc.php:249
msgid "Security violation detected, attempt logged"
msgstr "Violation de s&eacute;curit&eacute; detect&eacute;e, tentative enregistr&eacute;e"

#: validate.inc.php:130
msgid "Quota exeedes the maximum allowed qutoa for this domain."
msgstr "Les quotas d&eacute;passent le maximum autoris&eacute; pour ce domaine."

#: forwardaccount.php:77
msgid "Forward for account"
msgstr "Redirection pour le compte"

#: forwardaccount.php:93
msgid "Set forwarding to (one adress per line)"
msgstr "D&eacute;finir la redirection vers (une adresse par ligne)"

#: delete_catchall.php:31
msgid "successfully deleted from the Database"
msgstr "Suppression de la base de donn&eacute;es ok"

#: deleteemail.php:16
msgid "Delete emailadress from the System"
msgstr "Supprimer une adresse email du syst&eagrave;me"

#: deleteemail.php:23
msgid "Do you really want to delete the emailadress for user"
msgstr "Voulez vous vraiment supprimer l'adresse email de l'utilisateur"

#: deleteemail.php:44
msgid "Yes, delete"
msgstr "Oui, supprimer"

#: deleteemail.php:49
msgid "Cancel"
msgstr "Annuler"

#: deleteemail.php:70
msgid "Emailadress deleted."
msgstr "Adresse email supprim&eacute;e."

#~ msgid "successfully changed Database...."
#~ msgstr "Base de donn&eacute;es bien chang&eacute;e"

#~ msgid "Add new admin user for domain"
#~ msgstr "Ajouter un nouveau compte administrateur au domaine"

#~ msgid "Please select a domain first"
#~ msgstr "Veuillez d'abord s&eacute;l&eacute;ctionner un domaine"

#~ msgid "Not yet supported, change will be ignored"
#~ msgstr "Pas encore support&eacute;, les changements seront ignor&eacute;s"
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Free Software Foundation, Inc.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2003-08-10 16:56+0200\n"
"PO-Revision-Date: 2002-08-19 12:00+ZONE\n"
"Last-Translator: Zoltán Levárdy <zoltan@levardy.org>\n"
"Language-Team: HUGARIAN <zoltan@levardy.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-2\n"
"Content-Transfer-Encoding: 8bit\n"

#: CVS/Base/browseaccounts.php:22 browseaccounts.php:22
msgid "Browse accounts for domain"
msgstr "Tartomány hozzáférések böngészése"

#: CVS/Base/browseaccounts.php:34 adminuser.php:21 browse.php:66
#: browseaccounts.php:34 catchall.php:24 catchall.php:118
#: change_password.php:19 change_password.php:32 change_password.php:42
#: deleteaccount.php:83 deleteadminuser.php:74 deletedomain.php:17
#: editaccount.php:31 editdomain.php:37 editdomain.php:67 editemail.php:15
#: editemail.php:38 forwardalias.php:16 forwardalias.php:33 newaccount.php:26
#: newadminuser.php:137 newadminuser.php:215 newalias.php:26 newdomain.php:237
#: newemail.php:15 vacation.php:15 vacation.php:30 validate.inc.php:58
#: lib/crypto.php:30 lib/crypto.php:110 lib/crypto.php:149
#: forwardaccount.php:28 delete_catchall.php:23 deleteemail.php:62
msgid "Database error"
msgstr "Adatbázis hiba"

#: CVS/Base/browseaccounts.php:48 browseaccounts.php:48 newaccount.php:68
msgid "Total accounts"
msgstr "Összes hozzáférés"

#: CVS/Base/browseaccounts.php:49 adminuser.php:36 browseaccounts.php:49
msgid "Displaying from position:"
msgstr "Megjelenítés poziciótól"

#: CVS/Base/browseaccounts.php:55 CVS/Base/browseaccounts.php:242
#: browseaccounts.php:55 browseaccounts.php:242 search.php:123 search.php:239
msgid "Add new account"
msgstr "Új hozzáférés"

#: CVS/Base/browseaccounts.php:78 adminuser.php:65 aliases.php:56
#: browseaccounts.php:78 editalias.php:69 search.php:131 search.php:135
msgid "Previous 10 entries"
msgstr "Elözõ 10 bejegyzés"

#: CVS/Base/browseaccounts.php:82 adminuser.php:69 aliases.php:57
#: browseaccounts.php:82 editalias.php:70 search.php:138 search.php:142
msgid "Next 10 entries"
msgstr "Következõ 10 bejegyzés"

#: CVS/Base/browseaccounts.php:91 adminuser.php:78 aliases.php:64
#: browse.php:20 browseaccounts.php:91 editaccount.php:50 editalias.php:76
#: search.php:52 search.php:149 search.php:253
msgid "action"
msgstr "tevékenység"

#: CVS/Base/browseaccounts.php:96 aliases.php:65 browseaccounts.php:96
#: editaccount.php:54 newaccount.php:136 newalias.php:82 search.php:150
#: search.php:254
msgid "Email address"
msgstr "Email cím"

#: CVS/Base/browseaccounts.php:96 browseaccounts.php:96 editaccount.php:63
#: login.php:61 search.php:151
msgid "Username"
msgstr "Felhasználó"

#: CVS/Base/browseaccounts.php:97 browseaccounts.php:97
msgid "Last login"
msgstr "Utolsó belépés"

#: CVS/Base/browseaccounts.php:97 browseaccounts.php:97 editaccount.php:68
#: search.php:152
msgid "Quota used"
msgstr "Alkalmazott kvóta"

#: CVS/Base/browseaccounts.php:136 browseaccounts.php:136
msgid "n/a"
msgstr "n.a."

#: CVS/Base/browseaccounts.php:146 browseaccounts.php:146 search.php:171
msgid "Edit account"
msgstr "Hozzáférés szerkesztés"

#: CVS/Base/browseaccounts.php:151 browseaccounts.php:151
msgid "Change Password"
msgstr "Jelszó megváltoztatása"

#: CVS/Base/browseaccounts.php:155 browseaccounts.php:155 editaccount.php:58
#: editaccount.php:91
msgid "Forward"
msgstr "Továbbít"

#: CVS/Base/browseaccounts.php:159 browseaccounts.php:159 search.php:172
msgid "Delete account"
msgstr "Hozzáférés törlés"

#: CVS/Base/browseaccounts.php:163 browseaccounts.php:163 search.php:173
msgid "Set quota"
msgstr "Kvóta beállítás"

#: CVS/Base/browseaccounts.php:167 browseaccounts.php:167 search.php:174
msgid "Set catch all"
msgstr "Set catch all"

#: CVS/Base/browseaccounts.php:181 browseaccounts.php:181 search.php:190
msgid "Forwards"
msgstr "Továbbít"

#: CVS/Base/browseaccounts.php:218 browseaccounts.php:218 editaccount.php:152
#: search.php:217
msgid "out of"
msgstr "kívül"

#: CVS/Base/browseaccounts.php:221 browseaccounts.php:221 search.php:220
msgid "Unable to retrieve quota"
msgstr "Kvóta nem elérhetõ"

#: CVS/Base/browseaccounts.php:224 browseaccounts.php:224 editaccount.php:155
#: search.php:223
msgid "Quota not set"
msgstr "Kvóta nincs beállítva"

#: CVS/Base/browseaccounts.php:236 browseaccounts.php:236 search.php:235
msgid "No accounts found"
msgstr "Hozzáférés nem található"

#: adminuser.php:13
msgid "Browse admins"
msgstr "Admin böngészés"

#: adminuser.php:35
msgid "Total administrators"
msgstr "Összes admin"

#: adminuser.php:43
msgid "Add administator"
msgstr "Új adminisztrátor"

#: adminuser.php:82
msgid "Adminname"
msgstr "Adminneve"

#: adminuser.php:86
msgid "domain"
msgstr "tartomány"

#: adminuser.php:90
msgid "admin type"
msgstr "admin típus"

#: adminuser.php:119
msgid "Edit adminuser"
msgstr "Adminfelh. szerkesztés"

#: adminuser.php:125
msgid "Delete adminuser"
msgstr "Adminfelh. törlés"

#: adminuser.php:144
msgid "All domains"
msgstr "Összes tartomány"

#: adminuser.php:148
msgid "None"
msgstr "Nincs"

#: adminuser.php:158 editadminuser.php:65 menu.inc.php:132 newadminuser.php:57
#: newadminuser.php:207
msgid "Superuser"
msgstr "szuperuser"

#: adminuser.php:160 editadminuser.php:76 menu.inc.php:134 newadminuser.php:61
#: newadminuser.php:209
msgid "Domain Master"
msgstr "Tartomány mester"

#: adminuser.php:174
msgid "No accounts fount"
msgstr "Hozzáférés nem található"

#: adminuser.php:181
msgid "Add administrator"
msgstr "Új adminisztátor"

#: aliases.php:11
msgid "Browse aliases for domain"
msgstr "Tartomány aliaszok böngészése"

#: aliases.php:50
msgid "Total aliases"
msgstr "Összes aliasz"

#: aliases.php:55
msgid "Add new alias"
msgstr "Új aliasz hozzáadása"

#: aliases.php:66 editalias.php:77 editemail.php:113 newemail.php:98
#: search.php:255
msgid "Destination"
msgstr "Cél"

#: aliases.php:91 search.php:273
msgid "Edit Alias"
msgstr "Aliasz szerkesztése"

#: aliases.php:92 search.php:274
msgid "Delete Alias"
msgstr "Aliasz törlése"

#: auth.inc.php:70
msgid "Web-cyradm is for authorized users only."
msgstr "Csak hitelesített felhasználóknak"

#: auth.inc.php:71
msgid "Make sure you entered the right password."
msgstr "Gyõzõdj meg róla, hogy a megfelelõ jelszót vitted be."

#: auth.inc.php:72
msgid "Push the back button in your browser to try again."
msgstr "Nyomd le a vissza gombot a böngészõben és próbáld újra."

#: auth.inc.php:73
msgid " Your attempt to login has been stored."
msgstr "A bejelentkezési próbálkozás rögzítve."

#: browse.php:13
msgid "Browse domains"
msgstr "Admin böngészés"

#: browse.php:24 search.php:53
msgid "domainname"
msgstr "tartománynév"

#: browse.php:31 search.php:57
msgid "prefix"
msgstr "elõtag"

#: browse.php:38 search.php:60
msgid "max Accounts"
msgstr "max. hozzáférés"

#: browse.php:42 search.php:61
msgid "default quota per user"
msgstr "Alap felhasználói kvóta"

#: browse.php:90 search.php:82
msgid "Edit Domain"
msgstr "Tartomány szerkesztés"

#: browse.php:91 search.php:83
msgid "Delete Domain"
msgstr "Tartomány törlés"

#: browse.php:92 deletedomain.php:51 menu.inc.php:59 search.php:84
msgid "accounts"
msgstr "hozzáférések"

#: browse.php:93 menu.inc.php:68 search.php:85
msgid "Aliases"
msgstr "Aliaszok"

#: catchall.php:13
msgid "Define a Account for receiving undefined adresses for domain"
msgstr "Tartomány érvénytelen címzettjeit fogadó azonosító megadása"
"Adj meg egy hozzáférés ahova a meghatározott címek a domainben érkeznek"

#: catchall.php:38
msgid "Do you really want to define the user"
msgstr "Tényleg meg akarsz adni egy felhasználót"

#: catchall.php:42
msgid "to receive all undefined emailadresses"
msgstr "fogadni minden nem meghatározott emailcímet"

#: catchall.php:46
msgid "The currently defined user"
msgstr "A jelenleg meghatározott felhasználó"

#: catchall.php:46
msgid "will not receiving any undefined emailadresses anymore"
msgstr "nem fog fogadni semmilyen nem meghatározott emailcímet"

#: catchall.php:74
msgid "The user"
msgstr "A felhasználó"

#: catchall.php:74
msgid "is allready defined to receive all undefined Emails."
msgstr "már meghatározott, hogy fogadjon minden nemmeghatározott emailt."

#: catchall.php:76
msgid "Do you want to remove the function \"catch all\" for the account"
msgstr "El akarja távolítani a \"catch all\" funkciót az azinosítóról"

#: catchall.php:127 newadminuser.php:197
msgid "successfully added to Database"
msgstr "Adatbázishoz sikeresen hozzáadva"

#: catchall.php:133 editdomain.php:56 editemail.php:53 newdomain.php:255
#: newemail.php:44 delete_catchall.php:37
msgid "Database error, please try again"
msgstr "Adatbázis hiba, próbáld újra"

#: catchall.php:140 delete_catchall.php:44
msgid "Cancelled"
msgstr "Elvetve"

#: change_password.php:53
msgid "Password changed"
msgstr "Jelszó megváltozott"

#: change_password.php:56
msgid "Failure in changing password."
msgstr "Hiba a jelszó megváltoztatása közben."

#: change_password.php:59 editadminuser.php:252
msgid "New passwords are not equal. Password not changed"
msgstr "Az új jelszavak nem egyeznek. Jelszó nem változott meg"

#: change_password.php:72
msgid "Change password for account"
msgstr "Hozzáférés jelszavának megváltoztatása"

#: change_password.php:91
msgid "New password"
msgstr "Új Jelszó"

#: change_password.php:101
msgid "Confirm new password"
msgstr "Új jelszó megerõsítése"

#: change_password.php:121 newaccount.php:243
msgid "Passwords do not match"
msgstr "Jelszavak nem egyeznek"

#: deleteaccount.php:25
msgid "Delete an Account from the System"
msgstr "Hozzáférés törlése a rendszerbõl"

#: deleteaccount.php:29
msgid "Do you really want to delete the user "
msgstr "Tényleg törölni akarod a felhasználót"

#: deleteaccount.php:33
msgid "with all its defined Emailadresses"
msgstr "az összes emailcímmel együtt"

#: deleteaccount.php:69 deleteadminuser.php:68 deletedomain.php:84
#: deleteemail.php:55
msgid "Action cancelled, nothing deleted"
msgstr "Tevékenység megszakítva, semmit nem töröltem"

#: deleteaccount.php:100
msgid "User deleted"
msgstr "Felhasználó törölve"

#: deleteaccount.php:111 deletedomain.php:175
msgid ""
"Security violation detected, action cancelled. Your attempt has been logged."
msgstr ""
"Biztonsági ütközést érzékelt, tevékenység megszakítva. A kísérleted "
"napolózva."

#: deleteadminuser.php:17
msgid "Delete an Admin account from the System"
msgstr "Admin hozzáférés törlése a rendszerbõl"

#: deleteadminuser.php:21
msgid "Do you really want to delete the Domain supervisor"
msgstr "Tényleg törölni akarod a tartomány felügyelõt"

#: deleteadminuser.php:90 editadminuser.php:276
msgid "At least one Superuser is needed for Web-cyradm"
msgstr "Legalább egy szuperuser kell a Web-cyradm-nak"

#: deleteadminuser.php:103
msgid "Admin user deleted"
msgstr "Admin felhasználó törölve"

#: deleteadminuser.php:116 editadminuser.php:299 newadminuser.php:226
msgid "Security violation detected, nothing deleted, attempt has been logged"
msgstr ""
"Biztonsági ütközést érzékelt, semmit nem törölt. A kísérlet "
"napolózva."

#: deletedomain.php:28
msgid "Delete a Domain from the System"
msgstr "Tartomány törlése a rendszerbõl"

#: deletedomain.php:32
msgid "Do you really want to delete the Domain"
msgstr "Tényleg törölni akarod a tartományt"

#: deletedomain.php:37
msgid "with all its defined accounts, admins, and emailadresses"
msgstr "az összes hozzáféréssel, adminnal és emailcímmel együtt"

#: deletedomain.php:43
msgid "This can take a while depending on how many account have to be deleted"
msgstr "Eltrthat egy darabig a törlés (függ a hozzáférések számától)"

#: deletedomain.php:47
msgid "Your action will delete"
msgstr "Tevékenységed törlése"

#: deletedomain.php:154 newadminuser.php:101
msgid "Domain"
msgstr "Tartomány"

#: deletedomain.php:158
msgid "successfully deleted"
msgstr "Sikeresen törölve"

#: deletealias.php:28
msgid "Please confirm you want to remove"
msgstr "Kérem erõsítse meg a törlést"

#: deletealias.php:28
msgid "from the alias"
msgstr "aliaszból"

#: deletealias.php:30
msgid "Yes"
msgstr "Igen"

#: deletealias.php:49
msgid "Please confirm you want to remove the alias"
msgstr "Kérem erõsítse meg hogy törölni akarja az aliaszt"

#: deletealias.php:77
msgid "Removed"
msgstr "Törölve"

#: deletealias.php:77
msgid "from"
msgstr "tól"

#: deletealias.php:85
msgid "Removed the alias"
msgstr "Aliasz törlése"

#: editaccount.php:21
msgid "Email adresses defined for user"
msgstr "Emailcím elkészítve a felhasználónak"

#: editaccount.php:42
msgid "New email address"
msgstr "Új emailcím"

#: editaccount.php:90
msgid "Edit Emailadress"
msgstr "Emailcím szerkesztése"

#: editaccount.php:92
msgid "Vacation"
msgstr "Szabadság"

#: editaccount.php:93
msgid "Delete Emailadress"
msgstr "Emailcím törlése"

#: editadminuser.php:13
msgid "Change admin user for domain"
msgstr "Tartomány adminfelh. megválotoztatása"

#: editadminuser.php:42 newaccount.php:106 newadminuser.php:36
msgid "Accountname"
msgstr "Hozzáférés"

#: editadminuser.php:52 newadminuser.php:51
msgid "Admin Type"
msgstr "admin típus"

#: editadminuser.php:84 login.php:71 newaccount.php:138 newadminuser.php:71
msgid "Password"
msgstr "Jelszó"

#: editadminuser.php:100 newaccount.php:139 newadminuser.php:86
msgid "Confirm Password"
msgstr "Jelszó ismétlés"

#: editadminuser.php:155
msgid "No Domain assigned yet"
msgstr "Nincs tartomány hozzárendelve"

#: editadminuser.php:165
msgid "Add new domain to this admin"
msgstr "Új admin hozzáférés a tartományhoz"

#: editadminuser.php:223
msgid "No such domain, create domain first"
msgstr "Nincs ilyen tartomány, készítse el elõször"

#: editadminuser.php:231
msgid "Admin already repsonsible for the domain"
msgstr "Admi már felelõs a tartományért"

#: editalias.php:27
msgid "There was an error adding $dest to $alias: "
msgstr "Hiba lépett fel a $dest $alias -hoz adásánál"

#: editalias.php:64
msgid "Editing alias"
msgstr "Aliasz szerkesztése"

#: editalias.php:68
msgid "Delete this alias"
msgstr "Aliasz törlése"

#: editalias.php:101
msgid "Cannot remove from account"
msgstr "Nem tud rölni a Hozzáférésbõl"

#: editalias.php:105 editalias.php:109
msgid "Remove destination"
msgstr "Cél törlése"

#: editalias.php:125
msgid "This alias has no destinations"
msgstr "Nincs célja ennek az aliasznak"

#: editalias.php:142
msgid "New destination"
msgstr "Új cél"

#: editdomain.php:46
msgid "Successfully changed domain"
msgstr "Tartomány Sikeresn megváltoztatva"

#: editdomain.php:92 newdomain.php:39
msgid "Domainname"
msgstr "Tartománynév"

#: editdomain.php:106 newdomain.php:57
msgid "Prefix"
msgstr "Elõtag"

#: editdomain.php:123 newdomain.php:73
msgid "Allow Free Names"
msgstr "Szabad nevek engedélyezése"

#: editdomain.php:141 newdomain.php:90
msgid "Allow Free Mail Addresses"
msgstr "Szabad emailcímek engedélyezése"

#: editdomain.php:159 newdomain.php:102
msgid "Maximum Accounts"
msgstr "Max.hozzáférés"

#: editdomain.php:173 newdomain.php:117
msgid "Default Quota in Kilobytes"
msgstr "Alap kvóta Kbyteban"

#: editdomain.php:202
msgid "Your are not allowed to change domains!"
msgstr "Nem vagy jogosult tartományt megváltoztatni!"

#: editemail.php:46
msgid "Successfully changed"
msgstr "Sikeresn megváltoztatva"

#: editemail.php:68
msgid ""
"You can't edit this email address with 'Allow Free Mail Addressess' set to "
"off!"
msgstr ""
"Nem állíthatja ezt az email címet ('Szabad emailcímek engedélyezése') üresre!"

#: editemail.php:95 newemail.php:77
msgid "Emailadress"
msgstr "Emailcím"

#: failed.php:66
msgid "Login failed"
msgstr "Bejelentkezés sikertelen"

#: failed.php:71 login.php:51
msgid "This is only for authorized users"
msgstr "Csak hitelesített felhasználóknak"

#: failed.php:76 logout.php:62 timeout.php:38
msgid "If you like to login click"
msgstr "Ha be szeretnél jelentkezni, klikkelj"

#: failed.php:78 logout.php:64 timeout.php:40
msgid "here"
msgstr "ide"

#: forwardalias.php:68 forwardaccount.php:51
msgid "Forward set"
msgstr "Továbbítás beállítás"

#: forwardalias.php:70
msgid "Failure in setting forward"
msgstr "Hiba a továbbítás beállításában"

#: forwardalias.php:73
msgid "Wrong password"
msgstr "Helytelen jelszó"

#: forwardalias.php:89 forwardalias.php:97 forwardalias.php:103
#: forwardalias.php:107 forwardaccount.php:57
msgid "Forwarding removed"
msgstr "Tovébbítás törölve"

#: forwardalias.php:91 forwardalias.php:99
msgid "Failure in removing forwarding"
msgstr "Hiba a továbbítás törlésében"

#: forwardalias.php:111 vacation.php:79 vacation.php:107
msgid "Failed to login"
msgstr "Képtelen belépni"

#: forwardalias.php:123 vacation.php:119
msgid "Not possible"
msgstr "Nem lehetséges"

#: forwardalias.php:152
msgid ""
"You can't forward this email address with 'Allow Free Mail Addressess' set "
"to off!"
msgstr ""
"Nem továbbíthatja ezt az email címet ('Szabad emailcímek engedélyezése') üresre!"

#: forwardalias.php:161
msgid "Forward for emailadress"
msgstr "Emailcímre továbbít"

#: forwardalias.php:204
msgid "Set forwarding to"
msgstr "Továbbítás ide"

#: forwardalias.php:204
msgid "(Seperate multiple values with ,)"
msgstr "(A többszörös értékeket ,-vel válassza el)"

#: forwardalias.php:210 forwardaccount.php:125
msgid "Keep a copy in the user's mailbox"
msgstr "Tartson egy másolatot a felh. mailboxában"

#: forwardalias.php:215 forwardaccount.php:139
msgid "Remove forwarding"
msgstr "Továbbítás törlése"

#: index.php:23
msgid "migrate.php exists! please delete or rename it"
msgstr "migrate.php létezik! Kérem törölje vagy nevezze át"

#: index.php:138
msgid "web-cyradm has not yet been configured"
msgstr "web-cyradm még nincs konfigurálva"

#: index.php:141
msgid "Configuration steps:"
msgstr "Konfigurációs lépések:"

#: index.php:143
msgid "copy the config file that comes with the distribution: "
msgstr "másolja a konf.fájlt amely a terjesztéssel jött"

#: index.php:146
msgid "Edit the file config/conf.php to match your systems configuration"
msgstr "Szerkessze a config/conf.php-t a rendszere igényeihez"

#: index.php:148
msgid ""
"Further information about how to configure Web-cyradm can be found at the "
"following website:"
msgstr ""
"További információ talál a Web-cyradm konfigurálásáról a következõ web-helyen:"

#: login.php:50
msgid "Welcome to Web-cyradm"
msgstr "Web-cyradm üdvözöl"

#: login.php:52
msgid "Please authenticate yourself"
msgstr "Hitelesítsd magad"

#: login.php:84
msgid "Select language"
msgstr "Válasszon nyelvet"

#: logout.php:52
msgid "Thank you for using Web-cyradm"
msgstr "Köszönöm, hogy a Web-cyradm-t használta"

#: logout.php:57
msgid "You are logged out"
msgstr "Bejelentkeztél"

#: menu.inc.php:19
msgid "Superusers Menu"
msgstr "szuperuser menü"

#: menu.inc.php:23
msgid "Domainmasters menu"
msgstr "Tartománymester menü"

#: menu.inc.php:31
msgid "add new domain"
msgstr "Új tartomány hozzáadása"

#: menu.inc.php:38
msgid "browse domains"
msgstr "Tartomány böngészés"

#: menu.inc.php:45
msgid "adminusers"
msgstr "admin felhasználók"

#: menu.inc.php:75
msgid "home"
msgstr "saját"

#: menu.inc.php:82
msgid "logout"
msgstr "Kijelentkezés"

#: menu.inc.php:90
msgid "Search"
msgstr "Keres"

#: menu.inc.php:114
msgid "Logged in as user"
msgstr "Beléptél mint"

#: menu.inc.php:126
msgid "Your role is"
msgstr "Csoportod"

#: menu.inc.php:144
msgid "Current domain is"
msgstr "Tartomány böngészés"

#: menu.inc.php:150
msgid "No domain selected"
msgstr "Nincs tartomány választva"

#: newaccount.php:13
msgid "Add new Account to domain"
msgstr "Új hozzáférés a tartományhoz"

#: newaccount.php:43 newalias.php:43
msgid "transport is not cyrus, unable to create account"
msgstr "transport nem cyrus. Képtelen hozzáférést készíteni"

#: newaccount.php:55
msgid "Sorry, no more account allowed for domain"
msgstr "Bocs, nincs több hozzáférés a tartományhoz"

#: newaccount.php:60
msgid "Maximum allowed accounts is"
msgstr "Max.hozzáférések száma"

#: newaccount.php:137
msgid "Quota"
msgstr "Kvóta"

#: newaccount.php:196
msgid "Sorry, the username already exists"
msgstr "Sajnos a felhasználó név már létezik"

#: newaccount.php:221
msgid "Account successfully added to the Database"
msgstr "Hozzáférést sikerült eltárolni az adatbázisban"

#: newaccount.php:234
msgid "Account succesfully added to the IMAP Subsystem"
msgstr "Hozzáférést sikerült eltárolni az IMAP alrendszerbe"

#: newadminuser.php:13
msgid "Add new administrator"
msgstr "Új adminisztátor hozzáadása"

#: newadminuser.php:64
msgid "Select \"Superuser\" for all domains"
msgstr "Válassz \"Superuser\"-t minden tartományhoz"

#: newadminuser.php:132
msgid "You must provide a username"
msgstr "Meg kell adnia egy felhasználó nevet"

#: newadminuser.php:145
msgid "Passwords are empty or not equal."
msgstr "Jelszavak üresek vagy nem egyeznek"

#: newadminuser.php:157
msgid "Username already exist"
msgstr "Felhasználónév már létezik"

#: newalias.php:15
msgid "Add new alias to domain"
msgstr "Új admin hozzáférés a tartományhoz"

#: newalias.php:55
msgid "Sorry, no more alias allowed for domain"
msgstr "Sajnos nincs több aliasz a tartományhoz"

#: newalias.php:60
msgid "Maximum allowed aliases is"
msgstr "Max.hozzáférések száma"

#: newdomain.php:15
msgid "Add new domain"
msgstr "Új tartomány"

#: newdomain.php:140
msgid "Standard Mailboxes"
msgstr "Szabványos mailboxok"

#: newdomain.php:146
msgid ""
"emailadress where the default aliases should be mapped (empty means no "
"mapping)"
msgstr ""
"emailcím ahol az alapértelmezett álnevet kell leképezni (üres jelenti, hogy "
"nincs leképezés)"

#: newdomain.php:163
msgid "Mail transport"
msgstr "Levél transport"

#: newdomain.php:166
msgid "Leave this as is, unless you know what you are doing"
msgstr "Hagyd így, hacsak nem tudod mit csinálsz"

#: newdomain.php:187
msgid "Parameter"
msgstr "Paraméter"

#: newdomain.php:245 newemail.php:34
msgid "Successfully added"
msgstr "Sikeresen hozzáadva"

#: newdomain.php:273
msgid "You are not allowed to add new domains"
msgstr "Nincs jogosultságot új tartomány hozzáadni"

#: newemail.php:56
msgid "New emailadress for user"
msgstr "Új emial aliasz a felhasználónak"

#: search.php:48
msgid "Total domains matching"
msgstr "Összes egyezõ tartomány"

#: search.php:110
msgid "Total users matching"
msgstr "Összes egyezõ felhasználó"

#: search.php:118
msgid "Displaying from position"
msgstr "Megjelenítés poziciótól"

#: search.php:245
msgid "Total aliases matching"
msgstr "Összes egyezõ aliasz"

#: search.php:247
msgid "No aliases found"
msgstr "Aliasz nem található"

#: setquota.php:26
msgid "Setting individual Quota for user"
msgstr "Egyéni kvóta beállítása a felhasználónak"

#: setquota.php:58
msgid "Submit"
msgstr "Elküld"

#: setquota.php:70
msgid "Quote for user"
msgstr "Felhasználó kvótája"

#: setquota.php:74
msgid "changed to"
msgstr "változtat"

#: timeout.php:33
msgid "Your session timed out"
msgstr "Session lejárt"

#: vacation.php:71
msgid "Vacation notice set"
msgstr "Szabadság üzenet legyen"

#: vacation.php:73
msgid "Failed to activate vacation"
msgstr "Hiba a szabadság aktiválásánál"

#: vacation.php:76
msgid "Failure in modifying vacation notice"
msgstr "Hiba a szabadság üzenet módosításánál"

#: vacation.php:95
msgid "Vacation notice unset"
msgstr "Szabadság üzenet kikapcsolás"

#: vacation.php:97
msgid "Failure in unseting vacation notice"
msgstr "Hiba a szabadság üzenet kikapcsolásánál"

#: vacation.php:101
msgid "Vacation notice removed"
msgstr "Szabadság üzenet törölve"

#: vacation.php:103
msgid "Failure in removing vacation notice"
msgstr "Hiba a szabadság üzenet törlésénél"

#: vacation.php:142
msgid ""
"You can't set Vacation Message for this email address with 'Allow Free Mail "
"Addressess' set to off!"
msgstr ""
"Nem állíthatja üresre a Szabadság üzenetet erre az email címre ('Szabad mail "
"címek engedélyezése)!"

#: vacation.php:152
msgid "Vacation message for emailadress"
msgstr "Szabádság üzenet emailcímhez"

#: vacation.php:174
msgid "Set vacation notice"
msgstr "Szabadság üzenet beállítása"

#: vacation.php:178
msgid "Remove vacation notice"
msgstr "Szabadság üzenet törlése"

#: validate.inc.php:74 validate.inc.php:87 validate.inc.php:134
#: validate.inc.php:249
msgid "Security violation detected, attempt logged"
msgstr ""
"Biztonsági ütközést érzékelt, kísérlet napolózva."

#: validate.inc.php:130
msgid "Quota exeedes the maximum allowed qutoa for this domain."
msgstr "A kvóta elérte a tartományban engedélyezett maximumot"

#: forwardaccount.php:77
msgid "Forward for account"
msgstr "Továbbít hozzáféréshez"

#: forwardaccount.php:93
msgid "Set forwarding to (one adress per line)"
msgstr "Továbbítás ide (egy cím soronként)"

#: delete_catchall.php:31
msgid "successfully deleted from the Database"
msgstr "Adatbázisból sikeresen törölve"

#: deleteemail.php:16
msgid "Delete emailadress from the System"
msgstr "Emailcímek törlése a rendszerbõl"

#: deleteemail.php:23
msgid "Do you really want to delete the emailadress for user"
msgstr "Tényleg törölni akarod a felhasználó emailcímét?"

#: deleteemail.php:44
msgid "Yes, delete"
msgstr "Igen, töröld"

#: deleteemail.php:49
msgid "Cancel"
msgstr "Mégsem"

#: deleteemail.php:70
msgid "Emailadress deleted."
msgstr "Emailcím törölve."

#~ msgid "successfully changed Database...."
#~ msgstr "Adatbázishoz sikeresen megváltoztatva..."

#~ msgid "Add new admin user for domain"
#~ msgstr "Új admin hozzáférés a tartományhoz"

#~ msgid "Please select a domain first"
#~ msgstr "Tartomány válassz elõször"

#~ msgid "Not yet supported, change will be ignored"
#~ msgstr "Még nem támogatott, változtatás figyelmen kívül hagyása"
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Free Software Foundation, Inc.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
# 
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: web-cyradm-0.5.4\n"
"POT-Creation-Date: 2003-08-10 16:56+0200\n"
"PO-Revision-Date: 2004-10-10 10:30+0100\n"
"Last-Translator: Mirko Cavinato<mirko.cavinato@omitech.it>\n"
"Language-Team: italian <web-cyradm@web-cyradm.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"

#: CVS/Base/browseaccounts.php:22 browseaccounts.php:22
msgid "Browse accounts for domain"
msgstr "Mostra caselle di posta per dominio"

#: CVS/Base/browseaccounts.php:34 adminuser.php:21 browse.php:66
#: browseaccounts.php:34 catchall.php:24 catchall.php:118
#: change_password.php:19 change_password.php:32 change_password.php:42
#: deleteaccount.php:83 deleteadminuser.php:74 deletedomain.php:17
#: editaccount.php:31 editdomain.php:37 editdomain.php:67 editemail.php:15
#: editemail.php:38 forwardalias.php:16 forwardalias.php:33 newaccount.php:26
#: newadminuser.php:137 newadminuser.php:215 newalias.php:26 newdomain.php:237
#: newemail.php:15 vacation.php:15 vacation.php:30 validate.inc.php:58
#: lib/crypto.php:30 lib/crypto.php:110 lib/crypto.php:149
#: forwardaccount.php:28 delete_catchall.php:23 deleteemail.php:62
msgid "Database error"
msgstr "Errore nel database, riprova"

#: CVS/Base/browseaccounts.php:48 browseaccounts.php:48 newaccount.php:68
msgid "Total accounts"
msgstr "Totale caselle di posta"

#: CVS/Base/browseaccounts.php:49 adminuser.php:36 browseaccounts.php:49
msgid "Displaying from position:"
msgstr "Mostra dalla posizione:"

#: CVS/Base/browseaccounts.php:55 CVS/Base/browseaccounts.php:242
#: browseaccounts.php:55 browseaccounts.php:242 search.php:123 search.php:239
msgid "Add new account"
msgstr "Aggiungi nuova casella di posta"

#: CVS/Base/browseaccounts.php:78 adminuser.php:65 aliases.php:56
#: browseaccounts.php:78 editalias.php:69 search.php:131 search.php:135
msgid "Previous 10 entries"
msgstr "Pagina precedente"

#: CVS/Base/browseaccounts.php:82 adminuser.php:69 aliases.php:57
#: browseaccounts.php:82 editalias.php:70 search.php:138 search.php:142
msgid "Next 10 entries"
msgstr "Pagina successiva"

#: CVS/Base/browseaccounts.php:91 adminuser.php:78 aliases.php:64
#: browse.php:20 browseaccounts.php:91 editaccount.php:50 editalias.php:76
#: search.php:52 search.php:149 search.php:253
msgid "action"
msgstr "azione"

#: CVS/Base/browseaccounts.php:96 aliases.php:65 browseaccounts.php:96
#: editaccount.php:54 newaccount.php:136 newalias.php:82 search.php:150
#: search.php:254
msgid "Email address"
msgstr "Indirizzo email"

#: CVS/Base/browseaccounts.php:96 browseaccounts.php:96 editaccount.php:63
#: login.php:61 search.php:151
msgid "Username"
msgstr "Nome utente"

#: CVS/Base/browseaccounts.php:97 browseaccounts.php:97
msgid "Last login"
msgstr "Ultimo accesso"

#: CVS/Base/browseaccounts.php:97 browseaccounts.php:97 editaccount.php:68
#: search.php:152
msgid "Quota used"
msgstr "Quota usata"

#: CVS/Base/browseaccounts.php:136 browseaccounts.php:136
msgid "n/a"
msgstr "n/a"

#: CVS/Base/browseaccounts.php:146 browseaccounts.php:146 search.php:171
msgid "Edit account"
msgstr "Modifica casella di posta"

#: CVS/Base/browseaccounts.php:151 browseaccounts.php:151
msgid "Change Password"
msgstr "Cambia password"

#: CVS/Base/browseaccounts.php:155 browseaccounts.php:155 editaccount.php:58
#: editaccount.php:91
msgid "Forward"
msgstr "Inoltro automatico"

#: CVS/Base/browseaccounts.php:159 browseaccounts.php:159 search.php:172
msgid "Delete account"
msgstr "Elimina Casella di posta"

#: CVS/Base/browseaccounts.php:163 browseaccounts.php:163 search.php:173
msgid "Set quota"
msgstr "Imposta quota"

#: CVS/Base/browseaccounts.php:167 browseaccounts.php:167 search.php:174
msgid "Set catch all"
msgstr "Abilita questo account alla ricezione della posta "
       "di tutto il dominio"

#: CVS/Base/browseaccounts.php:181 browseaccounts.php:181 search.php:190
msgid "Forwards"
msgstr "Inoltri automatici"

#: CVS/Base/browseaccounts.php:218 browseaccounts.php:218 editaccount.php:152
#: search.php:217
msgid "out of"
msgstr "fuori di"

#: CVS/Base/browseaccounts.php:221 browseaccounts.php:221 search.php:220
msgid "Unable to retrieve quota"
msgstr "Impossibile recuperare la quota"

#: CVS/Base/browseaccounts.php:224 browseaccounts.php:224 editaccount.php:155
#: search.php:223
msgid "Quota not set"
msgstr "Quota non impostata"

#: CVS/Base/browseaccounts.php:236 browseaccounts.php:236 search.php:235
msgid "No accounts found"
msgstr "Nessuna casella di posta trovata"

#: adminuser.php:13
msgid "Browse admins"
msgstr "Mostra amministratori"

#: adminuser.php:35
msgid "Total administrators"
msgstr "Totale amministratori"

#: adminuser.php:43
msgid "Add administator"
msgstr "Aggiungi Amministratore"

#: adminuser.php:82
msgid "Adminname"
msgstr "Nome Amministratore"

#: adminuser.php:86
msgid "domain"
msgstr "Dominio"

#: adminuser.php:90
msgid "admin type"
msgstr "Tipo di amministrazione"

#: adminuser.php:119
msgid "Edit adminuser"
msgstr "Modifica Amministratore"

#: adminuser.php:125
msgid "Delete adminuser"
msgstr "Elimina Amministratore"

#: adminuser.php:144
msgid "All domains"
msgstr "Tutti i domini"

#: adminuser.php:148
msgid "None"
msgstr "Nessuno"

#: adminuser.php:158 editadminuser.php:65 menu.inc.php:132 newadminuser.php:57
#: newadminuser.php:207
msgid "Superuser"
msgstr "Superutente (amministratore generale)"

#: adminuser.php:160 editadminuser.php:76 menu.inc.php:134 newadminuser.php:61
#: newadminuser.php:209
msgid "Domain Master"
msgstr "Amministratore esclusivo del dominio"

#: adminuser.php:174
msgid "No accounts fount"
msgstr "Nessuna casella di posta trovata"

#: adminuser.php:181
msgid "Add administrator"
msgstr "Aggiungi Amministratore"

#: aliases.php:11
msgid "Browse aliases for domain"
msgstr "Mostra gli aliases per dominio"

#: aliases.php:50
msgid "Total aliases"
msgstr "Totale aliases"

#: aliases.php:55
msgid "Add new alias"
msgstr "Aggiungi nuovo alias"

#: aliases.php:66 editalias.php:77 editemail.php:113 newemail.php:98
#: search.php:255
msgid "Destination"
msgstr "Destinazione"

#: aliases.php:91 search.php:273
msgid "Edit Alias"
msgstr "Modifica Alias"

#: aliases.php:92 search.php:274
msgid "Delete Alias"
msgstr "Elimina Alias"

#: auth.inc.php:70
msgid "Web-cyradm is for authorized users only."
msgstr "Questo servizio e' solo per utenti autorizzati"

#: auth.inc.php:71
msgid "Make sure you entered the right password."
msgstr "Verificare che la password sia corretta"

#: auth.inc.php:72
msgid "Push the back button in your browser to try again."
msgstr "Premi il tasto indietro del tuo browser e riprova"

#: auth.inc.php:73
msgid " Your attempt to login has been stored."
msgstr "I tuoi tentativi di login sono stati memorizzati"

#: browse.php:13
msgid "Browse domains"
msgstr "Mostra domini"

#: browse.php:24 search.php:53
msgid "domainname"
msgstr "Nome Dominio"

#: browse.php:31 search.php:57
msgid "prefix"
msgstr "prefisso"

#: browse.php:38 search.php:60
msgid "max Accounts"
msgstr "Massimo Caselle di posta"

#: browse.php:42 search.php:61
msgid "default quota per user"
msgstr "Quota predefinita per utente"

#: browse.php:90 search.php:82
msgid "Edit Domain"
msgstr "Modifica Dominio"

#: browse.php:91 search.php:83
msgid "Delete Domain"
msgstr "Elimina Dominio"

#: browse.php:92 deletedomain.php:51 menu.inc.php:59 search.php:84
msgid "accounts"
msgstr "Caselle di posta"

#: browse.php:93 menu.inc.php:68 search.php:85
msgid "Aliases"
msgstr "Aliases"

#: catchall.php:13
msgid "Define a Account for receiving undefined adresses for domain"
msgstr ""
"Definisci una casella di posta per ricevere le email con suffisso non "
"esistente per questo dominio"

#: catchall.php:38
msgid "Do you really want to define the user"
msgstr "Vuoi veramente definire questo utente"

#: catchall.php:42
msgid "to receive all undefined emailadresses"
msgstr "per ricevere tutte le email con suffisso diverso dal dominio"

#: catchall.php:46
msgid "The currently defined user"
msgstr "L'utente attuale"

#: catchall.php:46
msgid "will not receiving any undefined emailadresses anymore"
msgstr "non riceverà pi&ugrave; le email con suffisso sbagliato"

#: catchall.php:74
msgid "The user"
msgstr "L'utente"

#: catchall.php:74
msgid "is allready defined to receive all undefined Emails."
msgstr "&egrave; gi&agrave;  definito per ricevere tutte le email con suffisso sbagliato"

#: catchall.php:76
msgid "Do you want to remove the function \"catch all\" for the account"
msgstr "Vuoi rimuovere la funzione \"raccogli tutto\" per la casella di posta"

#: catchall.php:127 newadminuser.php:197
msgid "successfully added to Database"
msgstr "Aggiunto con sucesso al database"

#: catchall.php:133 editdomain.php:56 editemail.php:53 newdomain.php:255
#: newemail.php:44 delete_catchall.php:37
msgid "Database error, please try again"
msgstr "Errore nel database, riprova"

#: catchall.php:140 delete_catchall.php:44
msgid "Cancelled"
msgstr "Eliminato"

#: change_password.php:53
msgid "Password changed"
msgstr "Password modificata"

#: change_password.php:56
msgid "Failure in changing password."
msgstr "Errore nella modifica della password"

#: change_password.php:59 editadminuser.php:252
msgid "New passwords are not equal. Password not changed"
msgstr "Le nuove password non sono uguali. Password non cambiata"

#: change_password.php:72
msgid "Change password for account"
msgstr "Modifica la password per la casella di posta"

#: change_password.php:91
msgid "New password"
msgstr "Nuova Password"

#: change_password.php:101
msgid "Confirm new password"
msgstr "Conferma la nuova password"

#: change_password.php:121 newaccount.php:243
msgid "Passwords do not match"
msgstr "Le password non coincidono"

#: deleteaccount.php:25
msgid "Delete an Account from the System"
msgstr "Elimina Casella di posta dal sistema"

#: deleteaccount.php:29
msgid "Do you really want to delete the user "
msgstr "Vuoi veramente cancellare questo utente "

#: deleteaccount.php:33
msgid "with all its defined Emailadresses"
msgstr "con tutti i suoi indirizzi email definiti"

#: deleteaccount.php:69 deleteadminuser.php:68 deletedomain.php:84
#: deleteemail.php:55
msgid "Action cancelled, nothing deleted"
msgstr "Azione cancellata non &egrave; stato eliminato nulla"

#: deleteaccount.php:100
msgid "User deleted"
msgstr "Utente eliminato"

#: deleteaccount.php:111 deletedomain.php:175
msgid ""
"Security violation detected, action cancelled. Your attempt has been logged."
msgstr ""
"Individuata violazione di sicurezza, azione cancellata. I tuoi tentativi sono stati registrati."

#: deleteadminuser.php:17
msgid "Delete an Admin account from the System"
msgstr "Elimina un Amministratore dal sistema"

#: deleteadminuser.php:21
msgid "Do you really want to delete the Domain supervisor"
msgstr "Vuoi veramente eliminare il supervisore del Dominio"

#: deleteadminuser.php:90 editadminuser.php:276
msgid "At least one Superuser is needed for Web-cyradm"
msgstr "Almeno un Superutente &egrave; necessario "

#: deleteadminuser.php:103
msgid "Admin user deleted"
msgstr "Amministratore eliminato"

#: deleteadminuser.php:116 editadminuser.php:299 newadminuser.php:226
msgid "Security violation detected, nothing deleted, attempt has been logged"
msgstr "Individuata violazione di sicurezza, niente &egrave; stato eliminato, il tentativo &egrave; stato registrato"

#: deletedomain.php:28
msgid "Delete a Domain from the System"
msgstr "Elimina un Dominio dal sistema"

#: deletedomain.php:32
msgid "Do you really want to delete the Domain"
msgstr "Vuoi veramente cancellare questo dominio"

#: deletedomain.php:37
msgid "with all its defined accounts, admins, and emailadresses"
msgstr ""
"Tutte la casella di posta sono definite tutti amministatori e indirizzi "
"email definiti"

#: deletedomain.php:43
msgid "This can take a while depending on how many account have to be deleted"
msgstr ""
"Questo pu&ograve; durare qualche  istante  dipende dalle casella di posta che hai "
"da cancellare"

#: deletedomain.php:47
msgid "Your action will delete"
msgstr "La tua azione  &egrave; stata cancellata"

#: deletedomain.php:154 newadminuser.php:101
msgid "Domain"
msgstr "Dominio"

#: deletedomain.php:158
msgid "successfully deleted"
msgstr "Eliminato con successo"

#: deletealias.php:28
msgid "Please confirm you want to remove"
msgstr "Conferma eliminazione"

#: deletealias.php:28
msgid "from the alias"
msgstr "dall'alias"

#: deletealias.php:30
msgid "Yes"
msgstr "Si"

#: deletealias.php:49
msgid "Please confirm you want to remove the alias"
msgstr "Conferma eliminazione alias"

#: deletealias.php:77
msgid "Removed"
msgstr "Rimosso"

#: deletealias.php:77
msgid "from"
msgstr "da"

#: deletealias.php:85
msgid "Removed the alias"
msgstr "Rimosso l'alias"

#: editaccount.php:21
msgid "Email adresses defined for user"
msgstr "Indirizzo email definito per utente"

#: editaccount.php:42
msgid "New email address"
msgstr "Nuovo indirizzo email"

#: editaccount.php:90
msgid "Edit Emailadress"
msgstr "Modifica indirizzo email"

#: editaccount.php:92
msgid "Vacation"
msgstr "Risposta automatica"

#: editaccount.php:93
msgid "Delete Emailadress"
msgstr "Elimina indirizzo email"

#: editadminuser.php:13
msgid "Change admin user for domain"
msgstr "Modifica l'amministratore del dominio"

#: editadminuser.php:42 newaccount.php:106 newadminuser.php:36
msgid "Accountname"
msgstr "Nome casella di posta"

#: editadminuser.php:52 newadminuser.php:51
msgid "Admin Type"
msgstr "Tipo di amministrazione"

#: editadminuser.php:84 login.php:71 newaccount.php:138 newadminuser.php:71
msgid "Password"
msgstr "Password"

#: editadminuser.php:100 newaccount.php:139 newadminuser.php:86
msgid "Confirm Password"
msgstr "Conferma password"

#: editadminuser.php:155
msgid "No Domain assigned yet"
msgstr "Ancora nessun Dominio assegnato"

#: editadminuser.php:165
msgid "Add new domain to this admin"
msgstr "Aggiungi un nuovo dominio a questo amministratore"

#: editadminuser.php:223
msgid "No such domain, create domain first"
msgstr "Nessun dominio, creare prima il dominio"

#: editadminuser.php:231
msgid "Admin already repsonsible for the domain"
msgstr "Amministratore già responsabile del dominio"

#: editalias.php:27
msgid "There was an error adding $dest to $alias: "
msgstr "Errore nell'aggiungere $dest a $alias: "

#: editalias.php:64
msgid "Editing alias"
msgstr "Modifica alias"

#: editalias.php:68
msgid "Delete this alias"
msgstr "Elimina questo alias"

#: editalias.php:101
msgid "Cannot remove from account"
msgstr "Impossibile rimuovere dalla casella di posta"

#: editalias.php:105 editalias.php:109
msgid "Remove destination"
msgstr "Rimuovi destinazione"

#: editalias.php:125
msgid "This alias has no destinations"
msgstr "Questo alias non ha destinazione"

#: editalias.php:142
msgid "New destination"
msgstr "Nuova destinazione"

#: editdomain.php:46
msgid "Successfully changed domain"
msgstr "Dominio modificato con successo"

#: editdomain.php:92 newdomain.php:39
msgid "Domainname"
msgstr "Nome dominio"

#: editdomain.php:106 newdomain.php:57
msgid "Prefix"
msgstr "Prefisso"

#: editdomain.php:123 newdomain.php:73
msgid "Allow Free Names"
msgstr "Permetti Nomi liberi"

#: editdomain.php:141 newdomain.php:90
msgid "Allow Free Mail Addresses"
msgstr "Permetti Indirizzi Email liberi"

#: editdomain.php:159 newdomain.php:102
msgid "Maximum Accounts"
msgstr "Massimo caselle di posta"

#: editdomain.php:173 newdomain.php:117
msgid "Default Quota in Kilobytes"
msgstr "Quota  predefinita  in Kilobytes valida per tutte le caselle di posta"

#: editdomain.php:202
msgid "Your are not allowed to change domains!"
msgstr "Non sei autorizzato a modificare i domini!"

#: editemail.php:46
msgid "Successfully changed"
msgstr "Modificato con successo"

#: editemail.php:68
msgid ""
"You can't edit this email address with 'Allow Free Mail Addressess' set to "
"off!"
msgstr ""
"Non puoi modificare questo indirizzo email con 'Permetti Indirizzi Email liberi' impostata a "
"off!"

#: editemail.php:95 newemail.php:77
msgid "Emailadress"
msgstr "Indirizzo email"

#: failed.php:66
msgid "Login failed"
msgstr "Login fallito"

#: failed.php:71 login.php:51
msgid "This is only for authorized users"
msgstr " "

#: failed.php:76 logout.php:62 timeout.php:38
msgid "If you like to login click"
msgstr "Se vuoi effettuare un login clicca qui"

#: failed.php:78 logout.php:64 timeout.php:40
msgid "here"
msgstr "qui"

#: forwardalias.php:68 forwardaccount.php:51
msgid "Forward set"
msgstr "Imposta l'inoltro automatico"

#: forwardalias.php:70
msgid "Failure in setting forward"
msgstr "Errore nell'impostazione dell'inoltro automatico"

#: forwardalias.php:73
msgid "Wrong password"
msgstr "Password errata"

#: forwardalias.php:89 forwardalias.php:97 forwardalias.php:103
#: forwardalias.php:107 forwardaccount.php:57
msgid "Forwarding removed"
msgstr "Inoltro automatico eliminato"

#: forwardalias.php:91 forwardalias.php:99
msgid "Failure in removing forwarding"
msgstr "Errore nella rimozione "

#: forwardalias.php:111 vacation.php:79 vacation.php:107
msgid "Failed to login"
msgstr "Login fallito"

#: forwardalias.php:123 vacation.php:119
msgid "Not possible"
msgstr "Non possibile"

#: forwardalias.php:152
msgid ""
"You can't forward this email address with 'Allow Free Mail Addressess' set "
"to off!"
msgstr ""
"Non puoi settare l'inoltro per questo indirizzo email con 'Permetti Indirizzi Email liberi' impostato "
"a off!"

#: forwardalias.php:161
msgid "Forward for emailadress"
msgstr "Inoltra all'indirizzo email"

#: forwardalias.php:204
msgid "Set forwarding to"
msgstr "Imposta inoltro automatico a"

#: forwardalias.php:204
msgid "(Seperate multiple values with ,)"
msgstr "Separa i valori multipli con ,)"

#: forwardalias.php:210 forwardaccount.php:125
msgid "Keep a copy in the user's mailbox"
msgstr "Mantieni una copia nella mailbox dell'utente"

#: forwardalias.php:215 forwardaccount.php:139
msgid "Remove forwarding"
msgstr "Rimuovi l'inoltro automatico"

#: index.php:23
msgid "migrate.php exists! please delete or rename it"
msgstr "migrate.php esiste, rinominalo o cancellalo"

#: index.php:138
msgid "web-cyradm has not yet been configured"
msgstr "Web-cyradm non &egrave: ancora stato configurato"

#: index.php:141
msgid "Configuration steps:"
msgstr "Passi configurazione:"

#: index.php:143
msgid "copy the config file that comes with the distribution: "
msgstr "copia il file di configurazione dato dalla distribuzione"

#: index.php:146
msgid "Edit the file config/conf.php to match your systems configuration"
msgstr "Modifica il file cofig/conf.php che si adatta alla tua configurazione di sistema"

#: index.php:148
msgid ""
"Further information about how to configure Web-cyradm can be found at the "
"following website:"
msgstr ""
"Ulteriori informazioni su come configurare Web-cyradm possono essere trovate al "
"seguente sito web:"

#: login.php:50
msgid "Welcome to Web-cyradm"
msgstr "Benvenuto nel tool di amministrazione Mail Server."

#: login.php:52
msgid "Please authenticate yourself"
msgstr "Per accedere alla gestione del proprio dominio, inserire la login e password:"

#: login.php:84
msgid "Select language"
msgstr "Seleziona la lingua"

#: logout.php:52
msgid "Thank you for using Web-cyradm"
msgstr "Grazie per aver usato i nostri servizi"

#: logout.php:57
msgid "You are logged out"
msgstr "Disconnessione effettuata"

#: menu.inc.php:19
msgid "Superusers Menu"
msgstr "Menu Superutente (amministratore)"

#: menu.inc.php:23
msgid "Domainmasters menu"
msgstr "Menu amministratore del dominio"

#: menu.inc.php:31
msgid "add new domain"
msgstr "Aggiungi nuovo dominio"

#: menu.inc.php:38
msgid "browse domains"
msgstr "Mostra domini"

#: menu.inc.php:45
msgid "adminusers"
msgstr "Utenti Amministratori"

#: menu.inc.php:75
msgid "home"
msgstr "Home"

#: menu.inc.php:82
msgid "logout"
msgstr "Disconnetti"

#: menu.inc.php:90
msgid "Search"
msgstr "Cerca"

#: menu.inc.php:114
msgid "Logged in as user"
msgstr "Connesso come utente"

#: menu.inc.php:126
msgid "Your role is"
msgstr "Il tuo ruolo &egrave;"

#: menu.inc.php:144
msgid "Current domain is"
msgstr "Il Dominio corrente &egrave;"

#: menu.inc.php:150
msgid "No domain selected"
msgstr "Nessun dominio selezionato"

#: newaccount.php:13
msgid "Add new Account to domain"
msgstr "Aggiungi nuova casella di posta all dominio"

#: newaccount.php:43 newalias.php:43
msgid "transport is not cyrus, unable to create account"
msgstr " il sistema di trasporto mail non &egrave; cyrus, impossibile creare caselle di posta"

#: newaccount.php:55
msgid "Sorry, no more account allowed for domain"
msgstr "Mi dispiace, non sono permesse altre caselle di posta per questo dominio"

#: newaccount.php:60
msgid "Maximum allowed accounts is"
msgstr "Il massimo numero di caselle di posta consentito &egrave;"

#: newaccount.php:137
msgid "Quota"
msgstr "Quota"

#: newaccount.php:196
msgid "Sorry, the username already exists"
msgstr "Nome utente gi&agrave; esistente"

#: newaccount.php:221
msgid "Account successfully added to the Database"
msgstr "Casella di posta aggiunta con sucesso al database"

#: newaccount.php:234
msgid "Account succesfully added to the IMAP Subsystem"
msgstr "Casella di posta aggiunta con successo al sottosistema IMAP"

#: newadminuser.php:13
msgid "Add new administrator"
msgstr "Aggiungi nuovo Amministratore"

#: newadminuser.php:64
msgid "Select \"Superuser\" for all domains"
msgstr "Seleziona\"Superutente\" per tutti i domini"

#: newadminuser.php:132
msgid "You must provide a username"
msgstr "Devi fornire un nome utente"

#: newadminuser.php:145
msgid "Passwords are empty or not equal."
msgstr "Le password sono vuote o non coincidono"

#: newadminuser.php:157
msgid "Username already exist"
msgstr "Nome utente gi&agrave; esistente"

#: newalias.php:15
msgid "Add new alias to domain"
msgstr "Aggiungi nuovo alias al dominio"

#: newalias.php:55
msgid "Sorry, no more alias allowed for domain"
msgstr "Mi dispiace, non sono permessi altri alias per dominio"

#: newalias.php:60
msgid "Maximum allowed aliases is"
msgstr "Il massimo nunero di alias permesso &egrave;"

#: newdomain.php:15
msgid "Add new domain"
msgstr "Aggiungi nuovo dominio"

#: newdomain.php:140
msgid "Standard Mailboxes"
msgstr "Standard Mailboxes"

#: newdomain.php:146
msgid ""
"emailadress where the default aliases should be mapped (empty means no "
"mapping)"
msgstr ""
" indirizzi email dove gli alias predefiniti dovrebbero essere mappati (vuoto significa nessuna "
"mappatura)"

#: newdomain.php:163
msgid "Mail transport"
msgstr "Mail transport"

#: newdomain.php:166
msgid "Leave this as is, unless you know what you are doing"
msgstr "Lascialo com'&egrave; se non sai cosa stai facendo"

#: newdomain.php:187
msgid "Parameter"
msgstr "Parametro"

#: newdomain.php:245 newemail.php:34
msgid "Successfully added"
msgstr "Aggiunto con successo"

#: newdomain.php:273
msgid "You are not allowed to add new domains"
msgstr "Non sei autorizzato ad aggiungere nuovi domini"

#: newemail.php:56
msgid "New emailadress for user"
msgstr "Nuovo indirizzo email per utente"

#: search.php:48
msgid "Total domains matching"
msgstr "Totale domini trovati"

#: search.php:110
msgid "Total users matching"
msgstr "Totale utenti trovati"

#: search.php:118
msgid "Displaying from position"
msgstr "Mostra dalla posizione"

#: search.php:245
msgid "Total aliases matching"
msgstr "Totale aliases trovati"

#: search.php:247
msgid "No aliases found"
msgstr "Nessun alias trovato"

#: setquota.php:26
msgid "Setting individual Quota for user"
msgstr "Imposta Quota individuale per utente"

#: setquota.php:58
msgid "Submit"
msgstr "Invia"

#: setquota.php:70
msgid "Quote for user"
msgstr "Quota per utente"

#: setquota.php:74
msgid "changed to"
msgstr "cambiato a"

#: timeout.php:33
msgid "Your session timed out"
msgstr "La tua sessione e' scaduta"

#: vacation.php:71
msgid "Vacation notice set"
msgstr "Setta Risposta Automatica"

#: vacation.php:73
msgid "Failed to activate vacation"
msgstr "Attivazione risposta automatica fallita"

#: vacation.php:76
msgid "Failure in modifying vacation notice"
msgstr "Errore nella modifica di attivazione risposta automatica"

#: vacation.php:95
msgid "Vacation notice unset"
msgstr "Risposta Automatica non impostata"

#: vacation.php:97
msgid "Failure in unseting vacation notice"
msgstr "Errore nella rimozione della Risposta Automatica"

#: vacation.php:101
msgid "Vacation notice removed"
msgstr "Risposta Automatica eliminata"

#: vacation.php:103
msgid "Failure in removing vacation notice"
msgstr "Errore nella rimozione della Risposta Automatica"

#: vacation.php:142
msgid ""
"You can't set Vacation Message for this email address with 'Allow Free Mail "
"Addressess' set to off!"
msgstr ""
"Non puoi impostare un Messaggio di Risposta Automatica per quegli indiizzi email con 'Permetti Indirizzi Email liberi' "
"impostati a off!"
#: vacation.php:152
msgid "Vacation message for emailadress"
msgstr "Risposta Automatica per gli indirizzi email"

#: vacation.php:174
msgid "Set vacation notice"
msgstr "Imposta Risposta Automatica"

#: vacation.php:178
msgid "Remove vacation notice"
msgstr "Rimuovi Risposta Automatica"

#: validate.inc.php:74 validate.inc.php:87 validate.inc.php:134
#: validate.inc.php:249
msgid "Security violation detected, attempt logged"
msgstr "Individuata violazione di sicurezza, tentativo registrato"

#: validate.inc.php:130
msgid "Quota exeedes the maximum allowed qutoa for this domain."
msgstr "La quota supera il massimo valore permesso per questo dominio"

#: forwardaccount.php:77
msgid "Forward for account"
msgstr "Forward per casella di posta"

#: forwardaccount.php:93
msgid "Set forwarding to (one adress per line)"
msgstr "Imposta Inoltro automatico a (un indirizzo per linea) "

#: delete_catchall.php:31
msgid "successfully deleted from the Database"
msgstr "Eliminato con sucesso dal database"

#: deleteemail.php:16
msgid "Delete emailadress from the System"
msgstr "Elimina gli indirizzi email dal sistema"

#: deleteemail.php:23
msgid "Do you really want to delete the emailadress for user"
msgstr "Vuoi davvero eliminare l'indirizzo email per questo utente"

#: deleteemail.php:44
msgid "Yes, delete"
msgstr "Si, elimina"

#: deleteemail.php:49
msgid "Cancel"
msgstr "Annulla"

#: deleteemail.php:70
msgid "Emailadress deleted."
msgstr "Indirizzo email eliminato"

#~ msgid "successfully changed Database...."
#~ msgstr "Database modificato con sucesso"

#~ msgid "Add new admin user for domain"
#~ msgstr "Aggiungi nuovo amministratore per il dominio"
# Norwegian translations for Web-Cyradm package.
# Copyright (C) 2003 Free Software Foundation, Inc.
# Dan Sveen Olsen <danso@effie.no>, 2003.
#
msgid ""
msgstr ""
"Project-Id-Version: Web-Cyradm 0.5.4\n"
"POT-Creation-Date: 2003-08-10 16:56+0200\n"
"PO-Revision-Date: 2003-11-06 13:53+0100\n"
"Last-Translator: Dan Sveen Olsen <danso@effie.no>\n"
"Language-Team: Norwegian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"

#: CVS/Base/browseaccounts.php:22 browseaccounts.php:22
msgid "Browse accounts for domain"
msgstr "List kontoer for domene"

#: CVS/Base/browseaccounts.php:34 adminuser.php:21 browse.php:66
#: browseaccounts.php:34 catchall.php:24 catchall.php:118
#: change_password.php:19 change_password.php:32 change_password.php:42
#: deleteaccount.php:83 deleteadminuser.php:74 deletedomain.php:17
#: editaccount.php:31 editdomain.php:37 editdomain.php:67 editemail.php:15
#: editemail.php:38 forwardalias.php:16 forwardalias.php:33 newaccount.php:26
#: newadminuser.php:137 newadminuser.php:215 newalias.php:26 newdomain.php:237
#: newemail.php:15 vacation.php:15 vacation.php:30 validate.inc.php:58
#: lib/crypto.php:30 lib/crypto.php:110 lib/crypto.php:149
#: forwardaccount.php:28 delete_catchall.php:23 deleteemail.php:62
msgid "Database error"
msgstr "Database feil"

#: CVS/Base/browseaccounts.php:48 browseaccounts.php:48 newaccount.php:68
msgid "Total accounts"
msgstr "Antall kontoer"

#: CVS/Base/browseaccounts.php:49 adminuser.php:36 browseaccounts.php:49
msgid "Displaying from position:"
msgstr "Viser fra posisjon:"

#: CVS/Base/browseaccounts.php:55 CVS/Base/browseaccounts.php:242
#: browseaccounts.php:55 browseaccounts.php:242 search.php:123 search.php:239
msgid "Add new account"
msgstr "Legg til konto"

#: CVS/Base/browseaccounts.php:78 adminuser.php:65 aliases.php:56
#: browseaccounts.php:78 editalias.php:69 search.php:131 search.php:135
msgid "Previous 10 entries"
msgstr "Forrige 10"

#: CVS/Base/browseaccounts.php:82 adminuser.php:69 aliases.php:57
#: browseaccounts.php:82 editalias.php:70 search.php:138 search.php:142
msgid "Next 10 entries"
msgstr "Neste 10"

#: CVS/Base/browseaccounts.php:91 adminuser.php:78 aliases.php:64
#: browse.php:20 browseaccounts.php:91 editaccount.php:50 editalias.php:76
#: search.php:52 search.php:149 search.php:253
msgid "action"
msgstr "Funksjoner"

#: CVS/Base/browseaccounts.php:96 aliases.php:65 browseaccounts.php:96
#: editaccount.php:54 newaccount.php:136 newalias.php:82 search.php:150
#: search.php:254
msgid "Email address"
msgstr "Emailadresse"

#: CVS/Base/browseaccounts.php:96 browseaccounts.php:96 editaccount.php:63
#: login.php:61 search.php:151
msgid "Username"
msgstr "Brukernavn"

#: CVS/Base/browseaccounts.php:97 browseaccounts.php:97
msgid "Last login"
msgstr "Siste pålogging"

#: CVS/Base/browseaccounts.php:97 browseaccounts.php:97 editaccount.php:68
#: search.php:152
msgid "Quota used"
msgstr "Kvote brukt"

#: CVS/Base/browseaccounts.php:136 browseaccounts.php:136
msgid "n/a"
msgstr "ikke tilgjengelig"

#: CVS/Base/browseaccounts.php:146 browseaccounts.php:146 search.php:171
msgid "Edit account"
msgstr "Rediger konto"

#: CVS/Base/browseaccounts.php:151 browseaccounts.php:151
msgid "Change Password"
msgstr "Endre Passord"

#: CVS/Base/browseaccounts.php:155 browseaccounts.php:155 editaccount.php:58
#: editaccount.php:91
msgid "Forward"
msgstr "Vidresend"

#: CVS/Base/browseaccounts.php:159 browseaccounts.php:159 search.php:172
msgid "Delete account"
msgstr "Slett konto"

#: CVS/Base/browseaccounts.php:163 browseaccounts.php:163 search.php:173
msgid "Set quota"
msgstr "Sett kvote"

#: CVS/Base/browseaccounts.php:167 browseaccounts.php:167 search.php:174
msgid "Set catch all"
msgstr "Gjør om \"catch all\""

#: CVS/Base/browseaccounts.php:181 browseaccounts.php:181 search.php:190
msgid "Forwards"
msgstr "Vidresendinger"

#: CVS/Base/browseaccounts.php:218 browseaccounts.php:218 editaccount.php:152
#: search.php:217
msgid "out of"
msgstr "ut av"

#: CVS/Base/browseaccounts.php:221 browseaccounts.php:221 search.php:220
msgid "Unable to retrieve quota"
msgstr "Kan ikke lese kvote"

#: CVS/Base/browseaccounts.php:224 browseaccounts.php:224 editaccount.php:155
#: search.php:223
msgid "Quota not set"
msgstr "Kvote ikke satt"

#: CVS/Base/browseaccounts.php:236 browseaccounts.php:236 search.php:235
msgid "No accounts found"
msgstr "Ingen kontoer funnet"

#: adminuser.php:13
msgid "Browse admins"
msgstr "List administratorer"

#: adminuser.php:35
msgid "Total administrators"
msgstr "Antall administratorer"

#: adminuser.php:43
msgid "Add administator"
msgstr "Legg til administrator"

#: adminuser.php:82
msgid "Adminname"
msgstr "Admin navn"

#: adminuser.php:86
msgid "domain"
msgstr "Domene"

#: adminuser.php:90
msgid "admin type"
msgstr "Admin type"

#: adminuser.php:119
msgid "Edit adminuser"
msgstr "Rediger admin bruker"

#: adminuser.php:125
msgid "Delete adminuser"
msgstr "Slett admin bruker"

#: adminuser.php:144
msgid "All domains"
msgstr "Alle domenene"

#: adminuser.php:148
msgid "None"
msgstr "Ingen"

#: adminuser.php:158 editadminuser.php:65 menu.inc.php:132 newadminuser.php:57
#: newadminuser.php:207
msgid "Superuser"
msgstr "Superbruker"

#: adminuser.php:160 editadminuser.php:76 menu.inc.php:134 newadminuser.php:61
#: newadminuser.php:209
msgid "Domain Master"
msgstr "Domene Administrator"

#: adminuser.php:174
msgid "No accounts fount"
msgstr "Ingen konto funnet"

#: adminuser.php:181
msgid "Add administrator"
msgstr "Legg til administrator"

#: aliases.php:11
msgid "Browse aliases for domain"
msgstr "List aliasene for domene"

#: aliases.php:50
msgid "Total aliases"
msgstr "Antall aliaser"

#: aliases.php:55
msgid "Add new alias"
msgstr "Legg til nytt alias"

#: aliases.php:66 editalias.php:77 editemail.php:113 newemail.php:98
#: search.php:255
msgid "Destination"
msgstr "Destinasjon"

#: aliases.php:91 search.php:273
msgid "Edit Alias"
msgstr "Rediger alias"

#: aliases.php:92 search.php:274
msgid "Delete Alias"
msgstr "Slett alias"

#: auth.inc.php:70
msgid "Web-cyradm is for authorized users only."
msgstr "Web-cyradm er kun for autoriserte bruker."

#: auth.inc.php:71
msgid "Make sure you entered the right password."
msgstr "Pass på at du har skrevet riktig passord."

#: auth.inc.php:72
msgid "Push the back button in your browser to try again."
msgstr "Klikk på tilbake knappen i din browser for å prøve igjen"

#: auth.inc.php:73
msgid " Your attempt to login has been stored."
msgstr "Ditt forsøk på å logge inn har blitt logget."

#: browse.php:13
msgid "Browse domains"
msgstr "List domener"

#: browse.php:24 search.php:53
msgid "domainname"
msgstr "Domenenavn"

#: browse.php:31 search.php:57
msgid "prefix"
msgstr "Prefiks"

#: browse.php:38 search.php:60
msgid "max Accounts"
msgstr "Max. antall kontoer"

#: browse.php:42 search.php:61
msgid "default quota per user"
msgstr "standard kvote per bruker"

#: browse.php:90 search.php:82
msgid "Edit Domain"
msgstr "Rediger domene"

#: browse.php:91 search.php:83
msgid "Delete Domain"
msgstr "Slett domene"

#: browse.php:92 deletedomain.php:51 menu.inc.php:59 search.php:84
msgid "accounts"
msgstr "Kontoer"

#: browse.php:93 menu.inc.php:68 search.php:85
msgid "Aliases"
msgstr "Aliaser"

#: catchall.php:13
msgid "Define a Account for receiving undefined adresses for domain"
msgstr "Definer en konto som skal ta imot ukjente adresser i domenet"

#: catchall.php:38
msgid "Do you really want to define the user"
msgstr "Vil du virkelig definere brukeren"

#: catchall.php:42
msgid "to receive all undefined emailadresses"
msgstr "til å ta i mot alle udefinerte adresser"

#: catchall.php:46
msgid "The currently defined user"
msgstr "Den nåværende definerte brukeren"

#: catchall.php:46
msgid "will not receiving any undefined emailadresses anymore"
msgstr "kommer ikke til å motta noen udefinerte mailadresser lengre"

#: catchall.php:74
msgid "The user"
msgstr "Brukeren"

#: catchall.php:74
msgid "is allready defined to receive all undefined Emails."
msgstr "er allerede definert til å motta alle udefinerte emailer."

#: catchall.php:76
msgid "Do you want to remove the function \"catch all\" for the account"
msgstr "Vil du fjerne funksjonen \"catch all\" for denne kontoen"

#: catchall.php:127 newadminuser.php:197
msgid "successfully added to Database"
msgstr "lagt til database"

#: catchall.php:133 editdomain.php:56 editemail.php:53 newdomain.php:255
#: newemail.php:44 delete_catchall.php:37
msgid "Database error, please try again"
msgstr "Database feil, prøv igjen"

#: catchall.php:140 delete_catchall.php:44
msgid "Cancelled"
msgstr "Avbrutt"

#: change_password.php:53
msgid "Password changed"
msgstr "Passord endret"

#: change_password.php:56
msgid "Failure in changing password."
msgstr "Endring av passord feilet."

#: change_password.php:59 editadminuser.php:252
msgid "New passwords are not equal. Password not changed"
msgstr "De nye passordene er ikke like. Passord ikke endret"

#: change_password.php:72
msgid "Change password for account"
msgstr "Endre passord for konto"

#: change_password.php:91
msgid "New password"
msgstr "Nytt passord"

#: change_password.php:101
msgid "Confirm new password"
msgstr "Bekreft nytt passord"

#: change_password.php:121 newaccount.php:243
msgid "Passwords do not match"
msgstr "Passordene er ikke like"

#: deleteaccount.php:25
msgid "Delete an Account from the System"
msgstr "Slett en konto fra systemet"

#: deleteaccount.php:29
msgid "Do you really want to delete the user "
msgstr "Ønsker du virkelig å slette brukeren "

#: deleteaccount.php:33
msgid "with all its defined Emailadresses"
msgstr "med tilhørende emailadresser"

#: deleteaccount.php:69 deleteadminuser.php:68 deletedomain.php:84
#: deleteemail.php:55
msgid "Action cancelled, nothing deleted"
msgstr "Sletting avbryt, ingenting slettet"

#: deleteaccount.php:100
msgid "User deleted"
msgstr "Bruker er slettet"

#: deleteaccount.php:111 deletedomain.php:175
msgid ""
"Security violation detected, action cancelled. Your attempt has been logged."
msgstr ""
"Sikkerhetsbrudd oppdaget, handling avbryt. Ditt forsøk har blitt logget."

#: deleteadminuser.php:17
msgid "Delete an Admin account from the System"
msgstr "Slett en admin konto fra systemet"

#: deleteadminuser.php:21
msgid "Do you really want to delete the Domain supervisor"
msgstr "Vil du virkelig slette domeneadministratoren"

#: deleteadminuser.php:90 editadminuser.php:276
msgid "At least one Superuser is needed for Web-cyradm"
msgstr "Minst en superbruker trengs til Web-cyradm"

#: deleteadminuser.php:103
msgid "Admin user deleted"
msgstr "Admin bruker er slettet"

#: deleteadminuser.php:116 editadminuser.php:299 newadminuser.php:226
msgid "Security violation detected, nothing deleted, attempt has been logged"
msgstr "Sikkerhetsbrudd oppdaget, intet slettet. Ditt forsøk har blitt logget"

#: deletedomain.php:28
msgid "Delete a Domain from the System"
msgstr "Slett et domene fra systemet"

#: deletedomain.php:32
msgid "Do you really want to delete the Domain"
msgstr "Vil du virkelig slette domenet"

#: deletedomain.php:37
msgid "with all its defined accounts, admins, and emailadresses"
msgstr "med tilhørende kontoer, administratorer og emailadresser"

#: deletedomain.php:43
msgid "This can take a while depending on how many account have to be deleted"
msgstr "Dette kan ta en stund, avhengig av hvor mange kontoer som skal slettes"

#: deletedomain.php:47
msgid "Your action will delete"
msgstr "Ditt valg vil slettet"

#: deletedomain.php:154 newadminuser.php:101
msgid "Domain"
msgstr "Domene"

#: deletedomain.php:158
msgid "successfully deleted"
msgstr "vellykket slettet"

#: deletealias.php:28
msgid "Please confirm you want to remove"
msgstr "Vennligst bekreft at du vil fjerne"

#: deletealias.php:28
msgid "from the alias"
msgstr "fra aliaset"

#: deletealias.php:30
msgid "Yes"
msgstr "Ja"

#: deletealias.php:49
msgid "Please confirm you want to remove the alias"
msgstr "Vennligst bekreft at du vil fjerne dette aliaset"

#: deletealias.php:77
msgid "Removed"
msgstr "Fjernet"

#: deletealias.php:77
msgid "from"
msgstr "fra"

#: deletealias.php:85
msgid "Removed the alias"
msgstr "Fjernet aliaset"

#: editaccount.php:21
msgid "Email adresses defined for user"
msgstr "Mailadresse definert for brukeren"

#: editaccount.php:42
msgid "New email address"
msgstr "Ny emailadresse"

#: editaccount.php:90
msgid "Edit Emailadress"
msgstr "Rediger emailadresse"

#: editaccount.php:92
msgid "Vacation"
msgstr "Ferie"

#: editaccount.php:93
msgid "Delete Emailadress"
msgstr "Slett emailadresse"

#: editadminuser.php:13
msgid "Change admin user for domain"
msgstr "Endre admin bruker for domenet"

#: editadminuser.php:42 newaccount.php:106 newadminuser.php:36
msgid "Accountname"
msgstr "Kontonavn"

#: editadminuser.php:52 newadminuser.php:51
msgid "Admin Type"
msgstr "Admin type"

#: editadminuser.php:84 login.php:71 newaccount.php:138 newadminuser.php:71
msgid "Password"
msgstr "Passord"

#: editadminuser.php:100 newaccount.php:139 newadminuser.php:86
msgid "Confirm Password"
msgstr "Bekreft passord"

#: editadminuser.php:155
msgid "No Domain assigned yet"
msgstr "Intet domene tildelt enda"

#: editadminuser.php:165
msgid "Add new domain to this admin"
msgstr "Legg til nytt domene til denne admin brukeren"

#: editadminuser.php:223
msgid "No such domain, create domain first"
msgstr "Domenet finnes ikke, lag det først"

#: editadminuser.php:231
msgid "Admin already repsonsible for the domain"
msgstr "Admin brukeren er allerede ansvarlig for domenet"

#: editalias.php:27
msgid "There was an error adding $dest to $alias: "
msgstr "Legge $dest til $alias feilet: "

#: editalias.php:64
msgid "Editing alias"
msgstr "Redigerer alias"

#: editalias.php:68
msgid "Delete this alias"
msgstr "Slett dette aliaset"

#: editalias.php:101
msgid "Cannot remove from account"
msgstr "Kan ikke fjerne fra konto"

#: editalias.php:105 editalias.php:109
msgid "Remove destination"
msgstr "Fjern destinatsjon"

#: editalias.php:125
msgid "This alias has no destinations"
msgstr "Dette aliaset har ingen destinasjon"

#: editalias.php:142
msgid "New destination"
msgstr "Ny destinasjon"

#: editdomain.php:46
msgid "Successfully changed domain"
msgstr "endret domene"

#: editdomain.php:92 newdomain.php:39
msgid "Domainname"
msgstr "Domenenavn"

#: editdomain.php:106 newdomain.php:57
msgid "Prefix"
msgstr "Prefiks"

#: editdomain.php:123 newdomain.php:73
msgid "Allow Free Names"
msgstr "Tillatt vilkårlige navn"

#: editdomain.php:141 newdomain.php:90
msgid "Allow Free Mail Addresses"
msgstr "Tillatt vilkårlige mailadresser"

#: editdomain.php:159 newdomain.php:102
msgid "Maximum Accounts"
msgstr "Max. antall kontoer"

#: editdomain.php:173 newdomain.php:117
msgid "Default Quota in Kilobytes"
msgstr "Standard kvote i kilobytes"

#: editdomain.php:202
msgid "Your are not allowed to change domains!"
msgstr "Du har ikke tilgang til å endre domener!"

#: editemail.php:46
msgid "Successfully changed"
msgstr "Vellykket endret"

#: editemail.php:68
msgid ""
"You can't edit this email address with 'Allow Free Mail Addressess' set to "
"off!"
msgstr ""
"Du kan ikke redigere denne mailadressen mens 'Tillatt vilkårlige mailadresser' er satt til"
"av!"

#: editemail.php:95 newemail.php:77
msgid "Emailadress"
msgstr "Emailadresse"

#: failed.php:66
msgid "Login failed"
msgstr "Pålogging feilet"

#: failed.php:71 login.php:51
msgid "This is only for authorized users"
msgstr "Kun for autoriserte brukere"

#: failed.php:76 logout.php:62 timeout.php:38
msgid "If you like to login click"
msgstr "Hvis du vil logge på, klikk"

#: failed.php:78 logout.php:64 timeout.php:40
msgid "here"
msgstr "her"

#: forwardalias.php:68 forwardaccount.php:51
msgid "Forward set"
msgstr "Videresending satt"

#: forwardalias.php:70
msgid "Failure in setting forward"
msgstr "Setting av videresending feilet"

#: forwardalias.php:73
msgid "Wrong password"
msgstr "Feil passord"

#: forwardalias.php:89 forwardalias.php:97 forwardalias.php:103
#: forwardalias.php:107 forwardaccount.php:57
msgid "Forwarding removed"
msgstr "Videresending fjernet"

#: forwardalias.php:91 forwardalias.php:99
msgid "Failure in removing forwarding"
msgstr "Fjerning av videresending feilet"

#: forwardalias.php:111 vacation.php:79 vacation.php:107
msgid "Failed to login"
msgstr "Pålogging feilet"

#: forwardalias.php:123 vacation.php:119
msgid "Not possible"
msgstr "Ikke mulig"

#: forwardalias.php:152
msgid ""
"You can't forward this email address with 'Allow Free Mail Addressess' set "
"to off!"
msgstr ""
"Du kan ikke sette på vidresending for denne mailadressen mens 'Tillatt vilkårlige mailadresser' er satt "
"til av!"

#: forwardalias.php:161
msgid "Forward for emailadress"
msgstr "Videresend for emailadresse"

#: forwardalias.php:204
msgid "Set forwarding to"
msgstr "Sett videresending til"

#: forwardalias.php:204
msgid "(Seperate multiple values with ,)"
msgstr "(Skill flere verdier med ,)"

#: forwardalias.php:210 forwardaccount.php:125
msgid "Keep a copy in the user's mailbox"
msgstr "Ta vare på en kopi i brukeren sin postkasse"

#: forwardalias.php:215 forwardaccount.php:139
msgid "Remove forwarding"
msgstr "Fjern videresending"

#: index.php:23
msgid "migrate.php exists! please delete or rename it"
msgstr "migrate.php finnes! Vennligst slett den eller gi den et nytt navn"

#: index.php:138
msgid "web-cyradm has not yet been configured"
msgstr "Web-cyradm har ikke blitt konfigurert enda"

#: index.php:141
msgid "Configuration steps:"
msgstr "Stegene for å konfigurere:"

#: index.php:143
msgid "copy the config file that comes with the distribution: "
msgstr "kopier konfigurasjonsfilen som kommer med distribusjonen: "

#: index.php:146
msgid "Edit the file config/conf.php to match your systems configuration"
msgstr "Rediger filen config/conf.php slik at den tilsvarer systemet sin konfigurasjon"

#: index.php:148
msgid ""
"Further information about how to configure Web-cyradm can be found at the "
"following website:"
msgstr ""
"Mer informasjon om hvordan man konfigurerer Web-cyradm finne på "
"følgende webside:"

#: login.php:50
msgid "Welcome to Web-cyradm"
msgstr "Velkommen til Web-cyradm"

#: login.php:52
msgid "Please authenticate yourself"
msgstr "Vennligst bevis din identitet"

#: login.php:84
msgid "Select language"
msgstr "Velg språk"

#: logout.php:52
msgid "Thank you for using Web-cyradm"
msgstr "Takk for at du brukte Web-cyradm"

#: logout.php:57
msgid "You are logged out"
msgstr "Du er logget av"

#: menu.inc.php:19
msgid "Superusers Menu"
msgstr "Superbrukers meny"

#: menu.inc.php:23
msgid "Domainmasters menu"
msgstr "Domene administratorens meny"

#: menu.inc.php:31
msgid "add new domain"
msgstr "Legg til nytt domene"

#: menu.inc.php:38
msgid "browse domains"
msgstr "List domener"

#: menu.inc.php:45
msgid "adminusers"
msgstr "admin brukere"

#: menu.inc.php:75
msgid "home"
msgstr "Hjem"

#: menu.inc.php:82
msgid "logout"
msgstr "Logg av"

#: menu.inc.php:90
msgid "Search"
msgstr "Søk"

#: menu.inc.php:114
msgid "Logged in as user"
msgstr "Logget på som bruker"

#: menu.inc.php:126
msgid "Your role is"
msgstr "Din rolle er"

#: menu.inc.php:144
msgid "Current domain is"
msgstr "Valgt domene er"

#: menu.inc.php:150
msgid "No domain selected"
msgstr "Intet domene valgt"

#: newaccount.php:13
msgid "Add new Account to domain"
msgstr "Legg til ny konto til domenet"

#: newaccount.php:43 newalias.php:43
msgid "transport is not cyrus, unable to create account"
msgstr "transport er ikke cyrus, kan ikke opprette konto"

#: newaccount.php:55
msgid "Sorry, no more account allowed for domain"
msgstr "Beklager, det er ikke mulig å opprette flere  kontoer i domenet"

#: newaccount.php:60
msgid "Maximum allowed accounts is"
msgstr "Max. antall kontoer er"

#: newaccount.php:137
msgid "Quota"
msgstr "Kvote"

#: newaccount.php:196
msgid "Sorry, the username already exists"
msgstr "Beklager, brukernavnet finnes allerede"

#: newaccount.php:221
msgid "Account successfully added to the Database"
msgstr "Konto lagt inn i database"

#: newaccount.php:234
msgid "Account succesfully added to the IMAP Subsystem"
msgstr "Konto lagt til IMAP undersystemet"

#: newadminuser.php:13
msgid "Add new administrator"
msgstr "Legg til administrator"

#: newadminuser.php:64
msgid "Select \"Superuser\" for all domains"
msgstr "Velg \"superbruker\" for alle domener"

#: newadminuser.php:132
msgid "You must provide a username"
msgstr "Du må gi et brukernavn"

#: newadminuser.php:145
msgid "Passwords are empty or not equal."
msgstr "Passordene er enten tomme eller ulike"

#: newadminuser.php:157
msgid "Username already exist"
msgstr "Brukernavnet finnes allerede"

#: newalias.php:15
msgid "Add new alias to domain"
msgstr "Legg til nytt alias til domenet"

#: newalias.php:55
msgid "Sorry, no more alias allowed for domain"
msgstr "Beklager, det er ikke mulig å opprette flere aliaser til domene"

#: newalias.php:60
msgid "Maximum allowed aliases is"
msgstr "Max. antall aliaser er"

#: newdomain.php:15
msgid "Add new domain"
msgstr "Legg til nytt domene"

#: newdomain.php:140
msgid "Standard Mailboxes"
msgstr "Standard postkasser"

#: newdomain.php:146
msgid ""
"emailadress where the default aliases should be mapped (empty means no "
"mapping)"
msgstr ""
"Emailadresse som standard aliaset skal mappes (blankt betyr ingen mapping)"

#: newdomain.php:163
msgid "Mail transport"
msgstr "Mail transport"

#: newdomain.php:166
msgid "Leave this as is, unless you know what you are doing"
msgstr "La denne være, med mindre du vet hva du gjør"

#: newdomain.php:187
msgid "Parameter"
msgstr "Parameter"

#: newdomain.php:245 newemail.php:34
msgid "Successfully added"
msgstr "Vellykket lagt til"

#: newdomain.php:273
msgid "You are not allowed to add new domains"
msgstr "Du har ikke mulighet til å legge til ny domener"

#: newemail.php:56
msgid "New emailadress for user"
msgstr "Ny emailadresse for bruker"

#: search.php:48
msgid "Total domains matching"
msgstr "Antall domener som likner"

#: search.php:110
msgid "Total users matching"
msgstr "Antall brukere som likner"

#: search.php:118
msgid "Displaying from position"
msgstr "Viser fra posisjon"

#: search.php:245
msgid "Total aliases matching"
msgstr "Antall aliaser som likner"

#: search.php:247
msgid "No aliases found"
msgstr "Ingen aliaser funnet"

#: setquota.php:26
msgid "Setting individual Quota for user"
msgstr "Setter individuel kvote for bruker"

#: setquota.php:58
msgid "Submit"
msgstr "OK"

#: setquota.php:70
msgid "Quote for user"
msgstr "Kvote for bruker"

#: setquota.php:74
msgid "changed to"
msgstr "endret til"

#: timeout.php:33
msgid "Your session timed out"
msgstr "Din session har utløpt"

#: vacation.php:71
msgid "Vacation notice set"
msgstr "Ferie beskjed satt"

#: vacation.php:73
msgid "Failed to activate vacation"
msgstr "Aktivisering av ferie feilet"

#: vacation.php:76
msgid "Failure in modifying vacation notice"
msgstr "Endring av ferie feilet"

#: vacation.php:95
msgid "Vacation notice unset"
msgstr "Ferie beskjed ikke satt"

#: vacation.php:97
msgid "Failure in unseting vacation notice"
msgstr "Deaktivisering av ferie feilet"

#: vacation.php:101
msgid "Vacation notice removed"
msgstr "Ferie beskjed fjernet"

#: vacation.php:103
msgid "Failure in removing vacation notice"
msgstr "Fjerning av ferie beskjed feilet"

#: vacation.php:142
msgid ""
"You can't set Vacation Message for this email address with 'Allow Free Mail "
"Addressess' set to off!"
msgstr ""
"Du kan ikke sette Ferie Beskjed for denne mailadressen mens 'Tillatt vilkårlige "
"mailadresser' er satt til av!"

#: vacation.php:152
msgid "Vacation message for emailadress"
msgstr "Ferie beskjed for mailadresse"

#: vacation.php:174
msgid "Set vacation notice"
msgstr "Sett ferie beskjed"

#: vacation.php:178
msgid "Remove vacation notice"
msgstr "Fjern ferie beskjed"

#: validate.inc.php:74 validate.inc.php:87 validate.inc.php:134
#: validate.inc.php:249
msgid "Security violation detected, attempt logged"
msgstr "Sikkerhetsbrudd oppdaget, forsøk har blitt logget."

#: validate.inc.php:130
msgid "Quota exeedes the maximum allowed qutoa for this domain."
msgstr "Kvote overstiger max. tillatt kvote for dette domenet."

#: forwardaccount.php:77
msgid "Forward for account"
msgstr "Videresend for konto"

#: forwardaccount.php:93
msgid "Set forwarding to (one adress per line)"
msgstr "Sett videresending til (en adresse pr. linje)"

#: delete_catchall.php:31
msgid "successfully deleted from the Database"
msgstr "vellykket fjernet fra database"

#: deleteemail.php:16
msgid "Delete emailadress from the System"
msgstr "Slett mailadresse fra systemet"

#: deleteemail.php:23
msgid "Do you really want to delete the emailadress for user"
msgstr "Vil du virkelig slette mailadressen til brukeren"

#: deleteemail.php:44
msgid "Yes, delete"
msgstr "Ja, slett"

#: deleteemail.php:49
msgid "Cancel"
msgstr "Avbryt"

#: deleteemail.php:70
msgid "Emailadress deleted."
msgstr "Emailadresse slettet."

#~ msgid "successfully changed Database...."
#~ msgstr "vellykket endring av database...."

#~ msgid "Please select a domain first"
#~ msgstr "Vennligst velg et domene først"

#~ msgid "Not yet supported, change will be ignored"
#~ msgstr "Ikke støttet enda, endring vil bli ignorert"
# translation of web-cyradm.po to Nederlands
# Copyright (C) 2003 Free Software Foundation, Inc.
# Carlo Landmeter <nrg@nethq.org>, 2003.
#
msgid ""
msgstr ""
"Project-Id-Version: web-cyradm\n"
"POT-Creation-Date: 2003-08-10 16:56+0200\n"
"PO-Revision-Date: 2003-08-20 00:18+0200\n"
"Last-Translator: Carlo Landmeter <nrg@nethq.org>\n"
"Language-Team: Nederlands <nl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.0.2\n"

#: CVS/Base/browseaccounts.php:22 browseaccounts.php:22
msgid "Browse accounts for domain"
msgstr "Browse accounts van domein"

#: CVS/Base/browseaccounts.php:34 adminuser.php:21 browse.php:66
#: browseaccounts.php:34 catchall.php:24 catchall.php:118
#: change_password.php:19 change_password.php:32 change_password.php:42
#: deleteaccount.php:83 deleteadminuser.php:74 deletedomain.php:17
#: editaccount.php:31 editdomain.php:37 editdomain.php:67 editemail.php:15
#: editemail.php:38 forwardalias.php:16 forwardalias.php:33 newaccount.php:26
#: newadminuser.php:137 newadminuser.php:215 newalias.php:26 newdomain.php:237
#: newemail.php:15 vacation.php:15 vacation.php:30 validate.inc.php:58
#: lib/crypto.php:30 lib/crypto.php:110 lib/crypto.php:149
#: forwardaccount.php:28 delete_catchall.php:23 deleteemail.php:62
msgid "Database error"
msgstr "Database fout"

#: CVS/Base/browseaccounts.php:48 browseaccounts.php:48 newaccount.php:68
msgid "Total accounts"
msgstr "Totaal aantal accounts"

#: CVS/Base/browseaccounts.php:49 adminuser.php:36 browseaccounts.php:49
msgid "Displaying from position:"
msgstr "Tonen vanaf positie"

#: CVS/Base/browseaccounts.php:55 CVS/Base/browseaccounts.php:242
#: browseaccounts.php:55 browseaccounts.php:242 search.php:123 search.php:239
msgid "Add new account"
msgstr "Voeg een nieuwe gebruiker toe"

#: CVS/Base/browseaccounts.php:78 adminuser.php:65 aliases.php:56
#: browseaccounts.php:78 editalias.php:69 search.php:131 search.php:135
msgid "Previous 10 entries"
msgstr "Vorige 10 entries"

#: CVS/Base/browseaccounts.php:82 adminuser.php:69 aliases.php:57
#: browseaccounts.php:82 editalias.php:70 search.php:138 search.php:142
msgid "Next 10 entries"
msgstr "Volgende 10 entries"

#: CVS/Base/browseaccounts.php:91 adminuser.php:78 aliases.php:64
#: browse.php:20 browseaccounts.php:91 editaccount.php:50 editalias.php:76
#: search.php:52 search.php:149 search.php:253
msgid "action"
msgstr "handeling"

#: CVS/Base/browseaccounts.php:96 aliases.php:65 browseaccounts.php:96
#: editaccount.php:54 newaccount.php:136 newalias.php:82 search.php:150
#: search.php:254
msgid "Email address"
msgstr "Email adres"

#: CVS/Base/browseaccounts.php:96 browseaccounts.php:96 editaccount.php:63
#: login.php:61 search.php:151
msgid "Username"
msgstr "Gebruikersnaam"

#: CVS/Base/browseaccounts.php:97 browseaccounts.php:97
msgid "Last login"
msgstr "Laatst ingelogd"

#: CVS/Base/browseaccounts.php:97 browseaccounts.php:97 editaccount.php:68
#: search.php:152
msgid "Quota used"
msgstr "Gebruikte Quota"

#: CVS/Base/browseaccounts.php:136 browseaccounts.php:136
msgid "n/a"
msgstr "nvt"

#: CVS/Base/browseaccounts.php:146 browseaccounts.php:146 search.php:171
msgid "Edit account"
msgstr "Bewerk account"

#: CVS/Base/browseaccounts.php:151 browseaccounts.php:151
msgid "Change Password"
msgstr "Verander wachtwoord"

#: CVS/Base/browseaccounts.php:155 browseaccounts.php:155 editaccount.php:58
#: editaccount.php:91
msgid "Forward"
msgstr "Doorsturen"

#: CVS/Base/browseaccounts.php:159 browseaccounts.php:159 search.php:172
msgid "Delete account"
msgstr "Verwijder account"

#: CVS/Base/browseaccounts.php:163 browseaccounts.php:163 search.php:173
msgid "Set quota"
msgstr "Verander quota"

#: CVS/Base/browseaccounts.php:167 browseaccounts.php:167 search.php:174
msgid "Set catch all"
msgstr "Ontvang alles"

#: CVS/Base/browseaccounts.php:181 browseaccounts.php:181 search.php:190

msgid "Forwards"
msgstr "Doorsturen"

#: CVS/Base/browseaccounts.php:218 browseaccounts.php:218 editaccount.php:152
#: search.php:217
msgid "out of"
msgstr "zonder"

#: CVS/Base/browseaccounts.php:221 browseaccounts.php:221 search.php:220
msgid "Unable to retrieve quota"
msgstr "Onmogelijk quota op te vragen"

#: CVS/Base/browseaccounts.php:224 browseaccounts.php:224 editaccount.php:155
#: search.php:223
msgid "Quota not set"
msgstr "Geen quota ingesteld"

#: CVS/Base/browseaccounts.php:236 browseaccounts.php:236 search.php:235
msgid "No accounts found"
msgstr "Geen accounts gevonden"

#: adminuser.php:13
msgid "Browse admins"
msgstr "Browse admins"

#: adminuser.php:35
msgid "Total administrators"
msgstr "Totaal aantal administrators"

#: adminuser.php:43
msgid "Add administator"
msgstr "Administrator toevoegen"

#: adminuser.php:82
msgid "Adminname"
msgstr "Admin naam"

#: adminuser.php:86
msgid "domain"
msgstr "domein"

#: adminuser.php:90
msgid "admin type"
msgstr "admin type"

#: adminuser.php:119
msgid "Edit adminuser"
msgstr "Edit admin gebruiker"

#: adminuser.php:125
msgid "Delete adminuser"
msgstr "Verwijder admin gebruiker"

#: adminuser.php:144
msgid "All domains"
msgstr "Alle domeinen"

#: adminuser.php:148
msgid "None"
msgstr "Geen"

#: adminuser.php:158 editadminuser.php:65 menu.inc.php:132 newadminuser.php:57
#: newadminuser.php:207
msgid "Superuser"
msgstr "Super gebruiker"

#: adminuser.php:160 editadminuser.php:76 menu.inc.php:134 newadminuser.php:61
#: newadminuser.php:209
msgid "Domain Master"
msgstr "Domein Master"

#: adminuser.php:174
msgid "No accounts fount"
msgstr "Geen accounts gevonden"

#: adminuser.php:181
msgid "Add administrator"
msgstr "Voeg administrator toe"

#: aliases.php:11
msgid "Browse aliases for domain"
msgstr "Browse aliases van domein"

#: aliases.php:50
msgid "Total aliases"
msgstr "Totaal aantal aliases"

#: aliases.php:55
msgid "Add new alias"
msgstr "Voeg nieuw alias toe"

#: aliases.php:66 editalias.php:77 editemail.php:113 newemail.php:98
#: search.php:255
msgid "Destination"
msgstr "Bestemming"

#: aliases.php:91 search.php:273
msgid "Edit Alias"
msgstr "Bewerkt alias"

#: aliases.php:92 search.php:274
msgid "Delete Alias"
msgstr "Verwijder alias"

#: auth.inc.php:70
msgid "Web-cyradm is for authorized users only."
msgstr "Web-cyradm is alleen toegankelijk voor geautoriseerde gebruikers."

#: auth.inc.php:71
msgid "Make sure you entered the right password."
msgstr "Weet zeker dat u het goede wachtwoord ingevuld hebt."

#: auth.inc.php:72
msgid "Push the back button in your browser to try again."
msgstr "Klik de terug knop in uw browser om nogmaals te proberen"

#: auth.inc.php:73

msgid " Your attempt to login has been stored."
msgstr "Uw poging om in te loggen is opgeslagen"

#: browse.php:13
msgid "Browse domains"
msgstr "Browse domeinen"

#: browse.php:24 search.php:53
msgid "domainname"
msgstr "Domeinnaam"

#: browse.php:31 search.php:57
msgid "prefix"
msgstr "voorvoegsel"

#: browse.php:38 search.php:60
msgid "max Accounts"
msgstr "max Accounts"

#: browse.php:42 search.php:61
msgid "default quota per user"
msgstr "standaard quota per gebruiker"

#: browse.php:90 search.php:82
msgid "Edit Domain"
msgstr "Edit Domein"

#: browse.php:91 search.php:83
msgid "Delete Domain"
msgstr "Verwijder Domein"

#: browse.php:92 deletedomain.php:51 menu.inc.php:59 search.php:84
msgid "accounts"
msgstr "accounts"

#: browse.php:93 menu.inc.php:68 search.php:85
msgid "Aliases"
msgstr "Aliases"

#: catchall.php:13
msgid "Define a Account for receiving undefined adresses for domain"
msgstr ""
"Stel een account in voor het ontvangen van alle niet bestaande email "
"adressen van het domein"

#: catchall.php:38
msgid "Do you really want to define the user"
msgstr "Weet u zeker dat u de gebruiker"

#: catchall.php:42
msgid "to receive all undefined emailadresses"
msgstr "wilt instellen om alle niet bestaande email adressen te laten ontvangen"

#: catchall.php:46
msgid "The currently defined user"
msgstr "De huidige gedefinieerde gebruiker"

#: catchall.php:46
msgid "will not receiving any undefined emailadresses anymore"
msgstr "zal geen email meer ontvangen van niet bestaande email adressen"

#: catchall.php:74
msgid "The user"
msgstr "De gebruiker"

#: catchall.php:74
msgid "is allready defined to receive all undefined Emails."
msgstr "is al ingesteld om alle email naar niet bestaande email adressen te ontvangen"

#: catchall.php:76
msgid "Do you want to remove the function \"catch all\" for the account"
msgstr "Wilt u de functie \"alles ontvangen\" van account"

#: catchall.php:127 newadminuser.php:197
msgid "successfully added to Database"
msgstr "succesvol aan database toegevoegd"

#: catchall.php:133 editdomain.php:56 editemail.php:53 newdomain.php:255
#: newemail.php:44 delete_catchall.php:37
msgid "Database error, please try again"
msgstr "Database fout, Probeer opnieuw"

#: catchall.php:140 delete_catchall.php:44
msgid "Cancelled"
msgstr "Geanuleerd"

#: change_password.php:53
msgid "Password changed"
msgstr "wachtwoord verandert"

#: change_password.php:56
msgid "Failure in changing password."
msgstr "Fout tijdens veranderen van wachtwoord"

#: change_password.php:59 editadminuser.php:252
msgid "New passwords are not equal. Password not changed"
msgstr "Nieuwe wachtwoorden zijn niet identiek. wachtwoord niet verandert"

#: change_password.php:72
msgid "Change password for account"
msgstr "Verander wachtwoord voor account"

#: change_password.php:91
msgid "New password"
msgstr "Nieuw wachtwoord"

#: change_password.php:101
msgid "Confirm new password"
msgstr "Bevestig nieuw wachtwoord"

#: change_password.php:121 newaccount.php:243
msgid "Passwords do not match"
msgstr "Wachtwoorden zijn niet het zelfde"

#: deleteaccount.php:25
msgid "Delete an Account from the System"
msgstr "Verwijder een account uit het systeem"

#: deleteaccount.php:29
msgid "Do you really want to delete the user "
msgstr "Weet u zeker dat u deze gebruiker wil verwijderen?"

#: deleteaccount.php:33
msgid "with all its defined Emailadresses"
msgstr "Met alle gedefinieerde email adressen"

#: deleteaccount.php:69 deleteadminuser.php:68 deletedomain.php:84
#: deleteemail.php:55
msgid "Action cancelled, nothing deleted"
msgstr "Actie geschrapt, niets verwijdert"

#: deleteaccount.php:100
msgid "User deleted"
msgstr "Gebruiker verwijdert"

#: deleteaccount.php:111 deletedomain.php:175
msgid "Security violation detected, action cancelled. Your attempt has been logged."
msgstr ""
"Veiligheidsovertreding gedetecteerd, handeling geannuleerd. Uw poging is "
"gelogt"

#: deleteadminuser.php:17
msgid "Delete an Admin account from the System"
msgstr "Verwijder een admin account uit het systeem"

#: deleteadminuser.php:21
msgid "Do you really want to delete the Domain supervisor"
msgstr "Weet u zeker dat u de Domein supervisor wil verwijderen"

#: deleteadminuser.php:90 editadminuser.php:276
msgid "At least one Superuser is needed for Web-cyradm"
msgstr "Minimaal een Super gebruiker nodig voor Web-cyradm"

#: deleteadminuser.php:103
msgid "Admin user deleted"
msgstr "Admin gebruiker verwijdert"

#: deleteadminuser.php:116 editadminuser.php:299 newadminuser.php:226
msgid "Security violation detected, nothing deleted, attempt has been logged"
msgstr "Veiligheidsovertreding gedetecteerd, niets verwijdert. Uw poging is gelogd"

#: deletedomain.php:28
msgid "Delete a Domain from the System"
msgstr "Verwijder een domein uit het systeem"

#: deletedomain.php:32
msgid "Do you really want to delete the Domain"
msgstr "Weet u zeker dat u het domein wil verwijderen"

#: deletedomain.php:37
msgid "with all its defined accounts, admins, and emailadresses"
msgstr "met al zijn gedefinieerde accounts, admins, en email adressen"

#: deletedomain.php:43
msgid "This can take a while depending on how many account have to be deleted"
msgstr ""
"Dit kan een tijdje duren afhankelijk van het aantal accounts dat verwijderd "
"moet worden"

#: deletedomain.php:47
msgid "Your action will delete"
msgstr "Uw actie verwijdert"

#: deletedomain.php:154 newadminuser.php:101
msgid "Domain"
msgstr "domein"

#: deletedomain.php:158
msgid "successfully deleted"
msgstr "succesvol verwijderd"

#: deletealias.php:28
msgid "Please confirm you want to remove"
msgstr "Bevestig dat u wilt verwijderen alstublieft"

#: deletealias.php:28
msgid "from the alias"
msgstr "voor de alias"

#: deletealias.php:30
msgid "Yes"
msgstr "Ja"

#: deletealias.php:49
msgid "Please confirm you want to remove the alias"
msgstr "Bevestig dat u de alias wilt verwijderen alstublieft"

#: deletealias.php:77
msgid "Removed"
msgstr "Verwijdert"

#: deletealias.php:77
msgid "from"
msgstr "van"

#: deletealias.php:85
msgid "Removed the alias"
msgstr "alias verwijdert"

#: editaccount.php:21
msgid "Email adresses defined for user"
msgstr "Email adres gedefinieerd voor gebruiker"

#: editaccount.php:42
msgid "New email address"
msgstr "Nieuw email adres"

#: editaccount.php:90
msgid "Edit Emailadress"
msgstr "Bewerkt Emailadres"

#: editaccount.php:92
msgid "Vacation"
msgstr "Vakantie"

#: editaccount.php:93
msgid "Delete Emailadress"
msgstr "Verwijder Email adres"

#: editadminuser.php:13
msgid "Change admin user for domain"
msgstr "Verander admin gebruiker voor domein"

#: editadminuser.php:42 newaccount.php:106 newadminuser.php:36
msgid "Accountname"
msgstr "Account naam"

#: editadminuser.php:52 newadminuser.php:51
msgid "Admin Type"
msgstr "Admin Type"

#: editadminuser.php:84 login.php:71 newaccount.php:138 newadminuser.php:71
msgid "Password"
msgstr "Wachtwoord"

#: editadminuser.php:100 newaccount.php:139 newadminuser.php:86
msgid "Confirm Password"
msgstr "Bevestig wachtwoord"

#: editadminuser.php:155
msgid "No Domain assigned yet"
msgstr "Nog geen domein toegewezen"

#: editadminuser.php:165
msgid "Add new domain to this admin"
msgstr "Voeg nieuwe domein toe aan admin"

#: editadminuser.php:223
msgid "No such domain, create domain first"
msgstr "Soort domein niet aanwezig, eerst domein aanmaken"

#: editadminuser.php:231
msgid "Admin already repsonsible for the domain"
msgstr "Admin al verantwoordelijk voor het domein"

#: editalias.php:27
msgid "There was an error adding $dest to $alias: "
msgstr "Er was een error tijdens het toevoegen van $dest aan $alias"

#: editalias.php:64
msgid "Editing alias"
msgstr "Bewerkt alias"

#: editalias.php:68
msgid "Delete this alias"
msgstr "Verwijder dit alias"

#: editalias.php:101
msgid "Cannot remove from account"
msgstr "Kan niet van dit account verwijderen"

#: editalias.php:105 editalias.php:109
msgid "Remove destination"
msgstr "Verwijder bestemming"

#: editalias.php:125
msgid "This alias has no destinations"
msgstr "Deze alias heeft geen bestemmingen"

#: editalias.php:142
msgid "New destination"
msgstr "Nieuwe bestemming"

#: editdomain.php:46
msgid "Successfully changed domain"
msgstr "Succesvol domein verandert"

#: editdomain.php:92 newdomain.php:39
msgid "Domainname"
msgstr "Domeinnaam"

#: editdomain.php:106 newdomain.php:57
msgid "Prefix"
msgstr "Voorvoegsel"

#: editdomain.php:123 newdomain.php:73
msgid "Allow Free Names"
msgstr "Vrije namen toestaan"

#: editdomain.php:141 newdomain.php:90
msgid "Allow Free Mail Addresses"
msgstr "Vrije email adressen toestaan"

#: editdomain.php:159 newdomain.php:102
msgid "Maximum Accounts"
msgstr "Maximum Accounts"

#: editdomain.php:173 newdomain.php:117
msgid "Default Quota in Kilobytes"
msgstr "Standaard Quota in Kilobytes"

#: editdomain.php:202
msgid "Your are not allowed to change domains!"
msgstr "U bent niet bevoegd domeinen te veranderen"

#: editemail.php:46
msgid "Successfully changed"
msgstr "Succesvol verandert"

#: editemail.php:68
msgid ""
"You can't edit this email address with 'Allow Free Mail Addressess' set to "
"off!"
msgstr "U kunt dit email adres niet bewerken met 'toestaan van vrije email adressen' op uit hebben te staan"

#: editemail.php:95 newemail.php:77
msgid "Emailadress"
msgstr "Email adres"

#: failed.php:66
msgid "Login failed"
msgstr "Inloggen mislukt"

#: failed.php:71 login.php:51
msgid "This is only for authorized users"
msgstr "Alleen voor geautoriseerde gebruikers"

#: failed.php:76 logout.php:62 timeout.php:38
msgid "If you like to login click"
msgstr "Als u wil inloggen klik"

#: failed.php:78 logout.php:64 timeout.php:40
msgid "here"
msgstr "hier"

#: forwardalias.php:68 forwardaccount.php:51
msgid "Forward set"
msgstr "Doorsturen ingesteld"

#: forwardalias.php:70
msgid "Failure in setting forward"
msgstr "Instellen van doorsturen mislukt"

#: forwardalias.php:73
msgid "Wrong password"
msgstr "Verkeerde wachtwoord"

#: forwardalias.php:89 forwardalias.php:97 forwardalias.php:103
#: forwardalias.php:107 forwardaccount.php:57
msgid "Forwarding removed"
msgstr "Doorsturen verwijderd"

#: forwardalias.php:91 forwardalias.php:99
msgid "Failure in removing forwarding"
msgstr "Fout in het verwijderen van Doorsturen"

#: forwardalias.php:111 vacation.php:79 vacation.php:107
msgid "Failed to login"
msgstr "Inloggen mislukt"

#: forwardalias.php:123 vacation.php:119
msgid "Not possible"
msgstr "Niet mogelijk"

#: forwardalias.php:152
msgid ""
"You can't forward this email address with 'Allow Free Mail Addressess' set "
"to off!"
msgstr "U kunt dit email adres niet doorsturen met 'toestaan van vrije email adressen' op uit hebben te staan"

#: forwardalias.php:161
msgid "Forward for emailadress"
msgstr "Doorsturen voor email adres"

#: forwardalias.php:204
msgid "Set forwarding to"
msgstr "Verander doorsturen naar"

#: forwardalias.php:204
msgid "(Seperate multiple values with ,)"
msgstr "(onderscheidt meerdere waardes met ,)"

#: forwardalias.php:210 forwardaccount.php:125
msgid "Keep a copy in the user's mailbox"
msgstr "Bewaar een kopie in de gebruikers postvak"

#: forwardalias.php:215 forwardaccount.php:139
msgid "Remove forwarding"
msgstr "Verwijder Doorsturen"

#: index.php:23
msgid "migrate.php exists! please delete or rename it"
msgstr "migrate.php is nog aanwezig! verwijder dit eerst AUB"

#: index.php:138
msgid "web-cyradm has not yet been configured"
msgstr "web-cyradm is nog niet geconfigureerd"

#: index.php:141
msgid "Configuration steps:"
msgstr "Configuratie stappen"

#: index.php:143
msgid "copy the config file that comes with the distribution: "
msgstr "kopieer het config bestand dat wordt geleverd met de distributie"

#: index.php:146
msgid "Edit the file config/conf.php to match your systems configuration"
msgstr "Modificeer het bestand config/conf.php volgens uw configuratie"

#: index.php:148
msgid ""
"Further information about how to configure Web-cyradm can be found at the "
"following website:"
msgstr "Meer informatie over hoe Web-cyramd te configureren kunt u vinden op de volgende website"

#: login.php:50
msgid "Welcome to Web-cyradm"
msgstr "Welkom bij Web-cyradm"

#: login.php:52
msgid "Please authenticate yourself"
msgstr "Verifieer uzelf AUB"

#: login.php:84
msgid "Select language"
msgstr "Selecteer taal"

#: logout.php:52
msgid "Thank you for using Web-cyradm"
msgstr "Bedankt voor het gebruiken van Web-cyradm"

#: logout.php:57
msgid "You are logged out"
msgstr "U bent uitgelogd"

#: menu.inc.php:19
msgid "Superusers Menu"
msgstr "Super gebruikers Menu"

#: menu.inc.php:23
msgid "Domainmasters menu"
msgstr "Domein masters menu"

#: menu.inc.php:31
msgid "add new domain"
msgstr "Voeg nieuw domein toe"

#: menu.inc.php:38
msgid "browse domains"
msgstr "browse domeinen"

#: menu.inc.php:45
msgid "adminusers"
msgstr "admin gebruiker"

#: menu.inc.php:75
msgid "home"
msgstr "home"

#: menu.inc.php:82
msgid "logout"
msgstr "uitloggen"

#: menu.inc.php:90
msgid "Search"
msgstr "Zoeken"

#: menu.inc.php:114
msgid "Logged in as user"
msgstr "ingelogd als gebruiker"

#: menu.inc.php:126
msgid "Your role is"
msgstr "Uw rol is"

#: menu.inc.php:144
msgid "Current domain is"
msgstr "Huidige domein is"

#: menu.inc.php:150
msgid "No domain selected"
msgstr "Geen domein geselecteerd"

#: newaccount.php:13
msgid "Add new Account to domain"
msgstr "Voeg nieuw Account toe aan domein"

#: newaccount.php:43 newalias.php:43
msgid "transport is not cyrus, unable to create account"
msgstr "transport is niet cyrus, onmogelijk account toe te voegen"

#: newaccount.php:55
msgid "Sorry, no more account allowed for domain"
msgstr "Sorry, niet meer accounts toegelaten voor domein"

#: newaccount.php:60
msgid "Maximum allowed accounts is"
msgstr "Maximum aantal toegelaten accounts is"

#: newaccount.php:137
msgid "Quota"
msgstr "Quota"

#: newaccount.php:196
msgid "Sorry, the username already exists"
msgstr "Sorry, deze gebruikersnaam bestaat reeds"

#: newaccount.php:221
msgid "Account successfully added to the Database"
msgstr "Account succesvol toegevoegd aan Database"

#: newaccount.php:234
msgid "Account succesfully added to the IMAP Subsystem"
msgstr "Account succesvol toegevoegd aan het IMAP subsysteem"

#: newadminuser.php:13
msgid "Add new administrator"
msgstr "Nieuwe administrator toevoegen"

#: newadminuser.php:64
msgid "Select \"Superuser\" for all domains"
msgstr "Selecteer \"Supergebruiker\" voor alle domeinen"

#: newadminuser.php:132
msgid "You must provide a username"
msgstr "U moet een gebruikersnaam aanbieden"

#: newadminuser.php:145
msgid "Passwords are empty or not equal."
msgstr "Wachtwoorden zijn niet aanwezig of niet gelijk"

#: newadminuser.php:157
msgid "Username already exist"
msgstr "Gebruikersnaam bestaat reeds"

#: newalias.php:15
msgid "Add new alias to domain"
msgstr "Voeg nieuwe alias toe aan domein"

#: newalias.php:55
msgid "Sorry, no more alias allowed for domain"
msgstr "Sorry, niet meer aliases toegelaten voor domein"

#: newalias.php:60
msgid "Maximum allowed aliases is"
msgstr "Maximum aantal toegelaten aliases is"

#: newdomain.php:15
msgid "Add new domain"
msgstr "Voeg nieuw domein toe"

#: newdomain.php:140

msgid "Standard Mailboxes"
msgstr "Standaard Postvak"

#: newdomain.php:146
msgid ""
"emailadress where the default aliases should be mapped (empty means no "
"mapping)"
msgstr ""
"emailadres waar van de standaard aliases gemapped moeten worden (leeg is "
"geen mapping)"

#: newdomain.php:163
msgid "Mail transport"
msgstr "Mail transport"

#: newdomain.php:166
msgid "Leave this as is, unless you know what you are doing"
msgstr "Laat dit zo staan, tenzij u weet wat u aan het doen bent"

#: newdomain.php:187
msgid "Parameter"
msgstr "Parameter"

#: newdomain.php:245 newemail.php:34
msgid "Successfully added"
msgstr "Succesvol toegevoegd"

#: newdomain.php:273
msgid "You are not allowed to add new domains"
msgstr "U bent niet bevoegd een domein toe te voegen"

#: newemail.php:56
msgid "New emailadress for user"
msgstr "Nieuw emailadres voor gebruiker"

#: search.php:48
msgid "Total domains matching"
msgstr "Totaal aantal passende domeinen"

#: search.php:110
msgid "Total users matching"
msgstr "Totaal aantal passende gebruikers"

#: search.php:118
msgid "Displaying from position"
msgstr "Tonen vanaf positie"

#: search.php:245
msgid "Total aliases matching"
msgstr "Totaal aantal passende aliases"

#: search.php:247
msgid "No aliases found"
msgstr "Geen aliases gevonden"

#: setquota.php:26
msgid "Setting individual Quota for user"
msgstr "Instellen van individuele Quota voor gebruiker"

#: setquota.php:58
msgid "Submit"
msgstr "Verzenden"

#: setquota.php:70
msgid "Quote for user"
msgstr "Quota van gebruiker"

#: setquota.php:74
msgid "changed to"
msgstr "gewijzigd naar"

#: timeout.php:33
msgid "Your session timed out"
msgstr "Uw sessie is verlopen"

#: vacation.php:71
msgid "Vacation notice set"
msgstr "Vakantie notificatie ingesteld"

#: vacation.php:73
msgid "Failed to activate vacation"
msgstr "Activering van vakantie notificatie mislukt"

#: vacation.php:76
msgid "Failure in modifying vacation notice"
msgstr "Fout in modificatie vakantie notificatie"

#: vacation.php:95
msgid "Vacation notice unset"
msgstr "Vakantie notificatie niet ingesteld"

#: vacation.php:97
msgid "Failure in unseting vacation notice"
msgstr "Uitzetten van vakantie notificatie mislukt"

#: vacation.php:101
msgid "Vacation notice removed"
msgstr "Vakantie notificatie verwijderd"

#: vacation.php:103
msgid "Failure in removing vacation notice"
msgstr "Verwijderen van de vakantie notificatie mislukt"

#: vacation.php:142
msgid ""
"You can't set Vacation Message for this email address with 'Allow Free Mail "
"Addressess' set to off!"
msgstr "U kunt niet het vakantie bericht van dit email adres instellen met 'toestaan van vrije email adressen' op uit hebben te staan"

#: vacation.php:152
msgid "Vacation message for emailadress"
msgstr "Vakantie boodschap voor email adres"

#: vacation.php:174
msgid "Set vacation notice"
msgstr "Stel vakantie notificatie in"

#: vacation.php:178
msgid "Remove vacation notice"
msgstr "Verwijder vakantie notificatie"

#: validate.inc.php:74 validate.inc.php:87 validate.inc.php:134
#: validate.inc.php:249
msgid "Security violation detected, attempt logged"
msgstr "Veiligheidsovertreding gedetecteerd, Uw poging is opgeslagen"

#: validate.inc.php:130
msgid "Quota exeedes the maximum allowed qutoa for this domain."
msgstr "Quota overschrijd het maximum toegestane quota van dit domein"

#: forwardaccount.php:77
msgid "Forward for account"
msgstr "Doorsturen voor account"

#: forwardaccount.php:93
msgid "Set forwarding to (one adress per line)"
msgstr "Stel doorsturen in (een adres per regel)"

#: delete_catchall.php:31
msgid "successfully deleted from the Database"
msgstr "succesvol van de database verwijderd"

#: deleteemail.php:16

msgid "Delete emailadress from the System"
msgstr "Verwijder een email adres uit het systeem"

#: deleteemail.php:23
msgid "Do you really want to delete the emailadress for user"
msgstr "Weet u zeker dat u het email adres wil verwijderen van gebruiker"

#: deleteemail.php:44
msgid "Yes, delete"
msgstr "Ja, Verwijder"

#: deleteemail.php:49
msgid "Cancel"
msgstr "Annuleren"

#: deleteemail.php:70
msgid "Emailadress deleted."
msgstr "Email adres verwijderd"

#~ msgid "successfully changed Database...."
#~ msgstr "Succesvol de database verandert...."

#~ msgid "Add new admin user for domain"
#~ msgstr "Voeg nieuwe admin toe aan domein"

#~ msgid "Please select a domain first"
#~ msgstr "Selecteer eerst een domein"

#~ msgid "Not yet supported, change will be ignored"
#~ msgstr "Nog niet ondersteunt, verandering wordt genegeerd"

# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Free Software Foundation, Inc.
# FIRST AUTHOR <primo@npl.pl>, 2002.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2003-08-10 16:56+0200\n"
"PO-Revision-Date: 2003-04-09 13:24+0200\n"
"Last-Translator: Przemyslaw Witek <primo@npl.pl>\n"
"Language-Team: Polish <pl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-2\n"
"Content-Transfer-Encoding: 8bit\n"

#: CVS/Base/browseaccounts.php:22 browseaccounts.php:22
msgid "Browse accounts for domain"
msgstr "Przegl±daj konta w domenie"

#: CVS/Base/browseaccounts.php:34 adminuser.php:21 browse.php:66
#: browseaccounts.php:34 catchall.php:24 catchall.php:118
#: change_password.php:19 change_password.php:32 change_password.php:42
#: deleteaccount.php:83 deleteadminuser.php:74 deletedomain.php:17
#: editaccount.php:31 editdomain.php:37 editdomain.php:67 editemail.php:15
#: editemail.php:38 forwardalias.php:16 forwardalias.php:33 newaccount.php:26
#: newadminuser.php:137 newadminuser.php:215 newalias.php:26 newdomain.php:237
#: newemail.php:15 vacation.php:15 vacation.php:30 validate.inc.php:58
#: lib/crypto.php:30 lib/crypto.php:110 lib/crypto.php:149
#: forwardaccount.php:28 delete_catchall.php:23 deleteemail.php:62
msgid "Database error"
msgstr "B³±d bazy danych"

#: CVS/Base/browseaccounts.php:48 browseaccounts.php:48 newaccount.php:68
msgid "Total accounts"
msgstr "Aktualna liczba kont"

#: CVS/Base/browseaccounts.php:49 adminuser.php:36 browseaccounts.php:49
msgid "Displaying from position:"
msgstr "Wy¶wietlanie z pozycji:"

#: CVS/Base/browseaccounts.php:55 CVS/Base/browseaccounts.php:242
#: browseaccounts.php:55 browseaccounts.php:242 search.php:123 search.php:239
msgid "Add new account"
msgstr "Dodaj nowe konto"

#: CVS/Base/browseaccounts.php:78 adminuser.php:65 aliases.php:56
#: browseaccounts.php:78 editalias.php:69 search.php:131 search.php:135
msgid "Previous 10 entries"
msgstr "Poprzednie 10 wpisów"

#: CVS/Base/browseaccounts.php:82 adminuser.php:69 aliases.php:57
#: browseaccounts.php:82 editalias.php:70 search.php:138 search.php:142
msgid "Next 10 entries"
msgstr "Kolejne 10 wpisów"

#: CVS/Base/browseaccounts.php:91 adminuser.php:78 aliases.php:64
#: browse.php:20 browseaccounts.php:91 editaccount.php:50 editalias.php:76
#: search.php:52 search.php:149 search.php:253
msgid "action"
msgstr "Wybierz opcjê"

#: CVS/Base/browseaccounts.php:96 aliases.php:65 browseaccounts.php:96
#: editaccount.php:54 newaccount.php:136 newalias.php:82 search.php:150
#: search.php:254
msgid "Email address"
msgstr "Adres Email"

#: CVS/Base/browseaccounts.php:96 browseaccounts.php:96 editaccount.php:63
#: login.php:61 search.php:151
msgid "Username"
msgstr "Nazwa konta"

#: CVS/Base/browseaccounts.php:97 browseaccounts.php:97
msgid "Last login"
msgstr "B³±d pologowania"

#: CVS/Base/browseaccounts.php:97 browseaccounts.php:97 editaccount.php:68
#: search.php:152
msgid "Quota used"
msgstr "U¿yta pojemno¶æ konta"

#: CVS/Base/browseaccounts.php:136 browseaccounts.php:136
msgid "n/a"
msgstr "n/a"

#: CVS/Base/browseaccounts.php:146 browseaccounts.php:146 search.php:171
msgid "Edit account"
msgstr "Edytuj konto"

#: CVS/Base/browseaccounts.php:151 browseaccounts.php:151
msgid "Change Password"
msgstr "Zmieñ has³o"

#: CVS/Base/browseaccounts.php:155 browseaccounts.php:155 editaccount.php:58
#: editaccount.php:91
msgid "Forward"
msgstr "Przeka¿"

#: CVS/Base/browseaccounts.php:159 browseaccounts.php:159 search.php:172
msgid "Delete account"
msgstr "Usuñ konto"

#: CVS/Base/browseaccounts.php:163 browseaccounts.php:163 search.php:173
msgid "Set quota"
msgstr "Ustal pojemno¶æ"

#: CVS/Base/browseaccounts.php:167 browseaccounts.php:167 search.php:174
msgid "Set catch all"
msgstr "Ustaw domy¶lne"

#: CVS/Base/browseaccounts.php:181 browseaccounts.php:181 search.php:190
msgid "Forwards"
msgstr "Przeka¿"

#: CVS/Base/browseaccounts.php:218 browseaccounts.php:218 editaccount.php:152
#: search.php:217
msgid "out of"
msgstr "z"

#: CVS/Base/browseaccounts.php:221 browseaccounts.php:221 search.php:220
msgid "Unable to retrieve quota"
msgstr "Nie mo¿liwe uzyskanie informacji o pojemno¶ci konta"

#: CVS/Base/browseaccounts.php:224 browseaccounts.php:224 editaccount.php:155
#: search.php:223
msgid "Quota not set"
msgstr "Pojemno¶æ nie ustalona"

#: CVS/Base/browseaccounts.php:236 browseaccounts.php:236 search.php:235
msgid "No accounts found"
msgstr "Nie znaleziono ¿adnych kont"

#: adminuser.php:13
msgid "Browse admins"
msgstr "Administratorzy"

#: adminuser.php:35
msgid "Total administrators"
msgstr "Liczba administratorów"

#: adminuser.php:43
msgid "Add administator"
msgstr "Dodaj konto administratora"

#: adminuser.php:82
msgid "Adminname"
msgstr "Nazwa administratora"

#: adminuser.php:86
msgid "domain"
msgstr "Domena"

#: adminuser.php:90
msgid "admin type"
msgstr "Typ konta"

#: adminuser.php:119
msgid "Edit adminuser"
msgstr "Edycja konta administratora"

#: adminuser.php:125
msgid "Delete adminuser"
msgstr "Usuniêcie konta administratora"

#: adminuser.php:144
msgid "All domains"
msgstr "Wszystkie domena"

#: adminuser.php:148
msgid "None"
msgstr "¯aden"

#: adminuser.php:158 editadminuser.php:65 menu.inc.php:132 newadminuser.php:57
#: newadminuser.php:207
msgid "Superuser"
msgstr "Administrator g³ówny"

#: adminuser.php:160 editadminuser.php:76 menu.inc.php:134 newadminuser.php:61
#: newadminuser.php:209
msgid "Domain Master"
msgstr "Administrator domeny"

#: adminuser.php:174
msgid "No accounts fount"
msgstr "Nie znaleziono ¿adnych kont"

#: adminuser.php:181
msgid "Add administrator"
msgstr "Dodaj konto administratora"

#: aliases.php:11
msgid "Browse aliases for domain"
msgstr "Przegl±daj konta w domenie"

#: aliases.php:50
msgid "Total aliases"
msgstr "Liczba aliasów"

#: aliases.php:55
msgid "Add new alias"
msgstr "Dodaj nowy alias"

#: aliases.php:66 editalias.php:77 editemail.php:113 newemail.php:98
#: search.php:255
msgid "Destination"
msgstr "Adres docelowy"

#: aliases.php:91 search.php:273
msgid "Edit Alias"
msgstr "Edytuj Alias"

#: aliases.php:92 search.php:274
msgid "Delete Alias"
msgstr "Usuñ Alias"

#: auth.inc.php:70
msgid "Web-cyradm is for authorized users only."
msgstr "Web-cyradm jest tylko dla autoryzowanych u¿tykowników."

#: auth.inc.php:71
msgid "Make sure you entered the right password."
msgstr "Upewnij siê, ¿e wprowadzi³e¶ poprawne has³o."

#: auth.inc.php:72
msgid "Push the back button in your browser to try again."
msgstr "Wci¶nij przycisk 'Wstecz' w swojej przegl±darce by spróbowaæ ponownie"

#: auth.inc.php:73
msgid " Your attempt to login has been stored."
msgstr "Twoja próba logowania zosta³a zapisana w systemie."

#: browse.php:13
msgid "Browse domains"
msgstr "Przegl±daj domeny"

#: browse.php:24 search.php:53
msgid "domainname"
msgstr "Nazwa domeny"

#: browse.php:31 search.php:57
msgid "prefix"
msgstr "Prefix"

#: browse.php:38 search.php:60
msgid "max Accounts"
msgstr "Maksymalna liczba kont"

#: browse.php:42 search.php:61
msgid "default quota per user"
msgstr "Domy¶lna pojemno¶æ skrzynki dla u¿ytkownika"

#: browse.php:90 search.php:82
msgid "Edit Domain"
msgstr "Edytuj Domenê"

#: browse.php:91 search.php:83
msgid "Delete Domain"
msgstr "Usuñ domenê"

#: browse.php:92 deletedomain.php:51 menu.inc.php:59 search.php:84
msgid "accounts"
msgstr "Konta"

#: browse.php:93 menu.inc.php:68 search.php:85
msgid "Aliases"
msgstr "Aliasy"

#: catchall.php:13
msgid "Define a Account for receiving undefined adresses for domain"
msgstr ""
"Zdefiniuj konto, na które bêd± trafiaæ wiadomo¶ci ¼le adresowane dla tej "
"domeny"

#: catchall.php:38
msgid "Do you really want to define the user"
msgstr "Czy na pewno zdefiniowaæ to konto"

#: catchall.php:42
msgid "to receive all undefined emailadresses"
msgstr "aby otrzymywa³o wszystkie ¼le zaadresowane wiadomo¶ci"

#: catchall.php:46
msgid "The currently defined user"
msgstr "Obecnie wybrany u¿ytkownik"

#: catchall.php:46
msgid "will not receiving any undefined emailadresses anymore"
msgstr "nie bêdzie odbieraæ ¿adnych wiadomo¶ci ze ¼le podanym adresem email"

#: catchall.php:74
msgid "The user"
msgstr "U¿ytkownik"

#: catchall.php:74
msgid "is allready defined to receive all undefined Emails."
msgstr "zosta³o ju¿ zdefiniowane jako domy¶lne konto dla tej domeny."

#: catchall.php:76
msgid "Do you want to remove the function \"catch all\" for the account"
msgstr "Czy chcesz usun±æ opcjê \"przejmuj wszystko\" dla konta"

#: catchall.php:127 newadminuser.php:197
msgid "successfully added to Database"
msgstr "poprawnie dodane do bazy danych"

#: catchall.php:133 editdomain.php:56 editemail.php:53 newdomain.php:255
#: newemail.php:44 delete_catchall.php:37
msgid "Database error, please try again"
msgstr "B³±d bazy danych, spróbuj ponownie"

#: catchall.php:140 delete_catchall.php:44
msgid "Cancelled"
msgstr "Anulowano"

#: change_password.php:53
msgid "Password changed"
msgstr "Has³o zmienione"

#: change_password.php:56
msgid "Failure in changing password."
msgstr "B³±d zmiany has³a."

#: change_password.php:59 editadminuser.php:252
msgid "New passwords are not equal. Password not changed"
msgstr "Wprowadzone has³a s± ró¿ne. Has³o nie zosta³o zmienione"

#: change_password.php:72
msgid "Change password for account"
msgstr "Zmiana has³a dla konta"

#: change_password.php:91
msgid "New password"
msgstr "Nowe has³o"

#: change_password.php:101
msgid "Confirm new password"
msgstr "Potwierd¼ nowe has³o"

#: change_password.php:121 newaccount.php:243
msgid "Passwords do not match"
msgstr "Has³a nie s± identyczne"

#: deleteaccount.php:25
msgid "Delete an Account from the System"
msgstr "Usuñ konto z systemu"

#: deleteaccount.php:29
msgid "Do you really want to delete the user "
msgstr "Czy chcesz usun±æ u¿ytkownika "

#: deleteaccount.php:33
msgid "with all its defined Emailadresses"
msgstr "ze wszystkimi zdefiniowanymi dla niego adresami email"

#: deleteaccount.php:69 deleteadminuser.php:68 deletedomain.php:84
#: deleteemail.php:55
msgid "Action cancelled, nothing deleted"
msgstr "Akcja przerwana, nic nie zosta³o usuniête"

#: deleteaccount.php:100
msgid "User deleted"
msgstr "U¿ytkownik usuniêty"

#: deleteaccount.php:111 deletedomain.php:175
msgid ""
"Security violation detected, action cancelled. Your attempt has been logged."
msgstr "Akcja przerwana. Twoja próba zosta³a zapisana w systemie."

#: deleteadminuser.php:17
msgid "Delete an Admin account from the System"
msgstr "Usuniêcie konta administratora z systemu"

#: deleteadminuser.php:21
msgid "Do you really want to delete the Domain supervisor"
msgstr "Czy chcesz usun±æ administratora domeny"

#: deleteadminuser.php:90 editadminuser.php:276
msgid "At least one Superuser is needed for Web-cyradm"
msgstr "Przynajmniej jeden Administrator g³ówny jest potrzebny dla Web-cyradm"

#: deleteadminuser.php:103
msgid "Admin user deleted"
msgstr "Konto administratora zosta³o usuniête"

#: deleteadminuser.php:116 editadminuser.php:299 newadminuser.php:226
msgid "Security violation detected, nothing deleted, attempt has been logged"
msgstr "Odnotowano nie legaln± próbê u¿ycia systemu, nic nie zostanie usuniête."

#: deletedomain.php:28
msgid "Delete a Domain from the System"
msgstr "Usuniêcie domeny z systemu"

#: deletedomain.php:32
msgid "Do you really want to delete the Domain"
msgstr "Czy chcesz usun±æ domenê"

#: deletedomain.php:37
msgid "with all its defined accounts, admins, and emailadresses"
msgstr ""
"ze wszystkimi zdefiniowanymi dla niej kontami, administratorami i adresami "
"email"

#: deletedomain.php:43
msgid "This can take a while depending on how many account have to be deleted"
msgstr ""
"To mo¿e chwilê potrwaæ, zale¿nie od tego jak wiele kont musi zostaæ "
"usuniêtych"

#: deletedomain.php:47
msgid "Your action will delete"
msgstr "Twoja operacja usunie"

#: deletedomain.php:154 newadminuser.php:101
msgid "Domain"
msgstr "Domena"

#: deletedomain.php:158
msgid "successfully deleted"
msgstr "prawid³owo usuniête"

#: deletealias.php:28
msgid "Please confirm you want to remove"
msgstr "Potwierd¼ chêæ usuniêcia"

#: deletealias.php:28
msgid "from the alias"
msgstr "z aliasu"

#: deletealias.php:30
msgid "Yes"
msgstr "Tak"

#: deletealias.php:49
msgid "Please confirm you want to remove the alias"
msgstr "Potwierd¼ chêæ usuniêcia aliasu"

#: deletealias.php:77
msgid "Removed"
msgstr "Usuniête"

#: deletealias.php:77
msgid "from"
msgstr "z"

#: deletealias.php:85
msgid "Removed the alias"
msgstr "Usuniêto alias"

#: editaccount.php:21
msgid "Email adresses defined for user"
msgstr "Adres email poprawnie ustawiony dla u¿ytkownika"

#: editaccount.php:42
msgid "New email address"
msgstr "Nowy adres email"

#: editaccount.php:90
msgid "Edit Emailadress"
msgstr "Edytuj adres"

#: editaccount.php:92
msgid "Vacation"
msgstr "Wakacje"

#: editaccount.php:93
msgid "Delete Emailadress"
msgstr "Usuñ adres"

#: editadminuser.php:13
msgid "Change admin user for domain"
msgstr "Zmieñ administratora dla domeny"

#: editadminuser.php:42 newaccount.php:106 newadminuser.php:36
msgid "Accountname"
msgstr "Nazwa konta"

#: editadminuser.php:52 newadminuser.php:51
msgid "Admin Type"
msgstr "Typ konta administratora"

#: editadminuser.php:84 login.php:71 newaccount.php:138 newadminuser.php:71
msgid "Password"
msgstr "Has³o"

#: editadminuser.php:100 newaccount.php:139 newadminuser.php:86
msgid "Confirm Password"
msgstr "Potwierd¼ has³o"

#: editadminuser.php:155
msgid "No Domain assigned yet"
msgstr "Nie przypisano jak dot±d ¿adnej domeny"

#: editadminuser.php:165
msgid "Add new domain to this admin"
msgstr "Dodaj now± domenê dla tego administratora"

#: editadminuser.php:223
msgid "No such domain, create domain first"
msgstr "Brak domeny, utwórz najpierw domenê"

#: editadminuser.php:231
msgid "Admin already repsonsible for the domain"
msgstr "Administrator zosta³ ju¿ przypisany dla tej domeny"

#: editalias.php:27
msgid "There was an error adding $dest to $alias: "
msgstr "Wyst±pi³ b³±d podczas dodawania $dest do $alias: "

#: editalias.php:64
msgid "Editing alias"
msgstr "Edytuj alias"

#: editalias.php:68
msgid "Delete this alias"
msgstr "Usuñ ten alias"

#: editalias.php:101
msgid "Cannot remove from account"
msgstr "Nie mo¿na usun±æ z konta"

#: editalias.php:105 editalias.php:109
msgid "Remove destination"
msgstr "Usuñ adres docelowy"

#: editalias.php:125
msgid "This alias has no destinations"
msgstr "Alias nie posiada miejsca docelowego"

#: editalias.php:142
msgid "New destination"
msgstr "Adres docelowy"

#: editdomain.php:46
msgid "Successfully changed domain"
msgstr "Poprawnie zmienione"

#: editdomain.php:92 newdomain.php:39
msgid "Domainname"
msgstr "Nazwa domeny"

#: editdomain.php:106 newdomain.php:57
msgid "Prefix"
msgstr "Prefix"

#: editdomain.php:123 newdomain.php:73
msgid "Allow Free Names"
msgstr "Zezwalaj na dowolne nazwy"

#: editdomain.php:141 newdomain.php:90
msgid "Allow Free Mail Addresses"
msgstr "Zezwalaj na Dowolny Adres Email"

#: editdomain.php:159 newdomain.php:102
msgid "Maximum Accounts"
msgstr "Maksymalna liczba kont"

#: editdomain.php:173 newdomain.php:117
msgid "Default Quota in Kilobytes"
msgstr "Domy¶lna pojemno¶æ w kiloBajtach"

#: editdomain.php:202
msgid "Your are not allowed to change domains!"
msgstr "Nie masz uprawnieñ do zmiany domen!"

#: editemail.php:46
msgid "Successfully changed"
msgstr "Poprawnie zmienione"

#: editemail.php:68
msgid ""
"You can't edit this email address with 'Allow Free Mail Addressess' set to "
"off!"
msgstr "Nie mo¿esz edytowaæ adresu email bez aktywnej opcji 'Zezwalaj na dowolne "
"adresy email'"

#: editemail.php:95 newemail.php:77
msgid "Emailadress"
msgstr "Adres email"

#: failed.php:66
msgid "Login failed"
msgstr "Logowanie nie powiod³o siê"

#: failed.php:71 login.php:51
msgid "This is only for authorized users"
msgstr "Tylko dla autoryzowanych u¿ytkowników"

#: failed.php:76 logout.php:62 timeout.php:38
msgid "If you like to login click"
msgstr "Je¶li chcesz siê zalogowaæ kliknij"

#: failed.php:78 logout.php:64 timeout.php:40
msgid "here"
msgstr "tutaj"

#: forwardalias.php:68 forwardaccount.php:51
msgid "Forward set"
msgstr "Przekaz ustawiony"

#: forwardalias.php:70
msgid "Failure in setting forward"
msgstr "B³±d ustawienia przekazu"

#: forwardalias.php:73
msgid "Wrong password"
msgstr "Z³e has³o"

#: forwardalias.php:89 forwardalias.php:97 forwardalias.php:103
#: forwardalias.php:107 forwardaccount.php:57
msgid "Forwarding removed"
msgstr "Przekazanie usuniête"

#: forwardalias.php:91 forwardalias.php:99
msgid "Failure in removing forwarding"
msgstr "B³±d usuniêcia przekazu"

#: forwardalias.php:111 vacation.php:79 vacation.php:107
msgid "Failed to login"
msgstr "B³±d podczas logowania"

#: forwardalias.php:123 vacation.php:119
msgid "Not possible"
msgstr "Nie mo¿liwe"

#: forwardalias.php:152
msgid ""
"You can't forward this email address with 'Allow Free Mail Addressess' set "
"to off!"
msgstr "Nie mo¿esz ustawiæ przekierowania adresu bez opcji 'Zezwalaj na dowolne "
"adresy email'"

#: forwardalias.php:161
msgid "Forward for emailadress"
msgstr "Przekaz dla adresu email"

#: forwardalias.php:204
msgid "Set forwarding to"
msgstr "Ustaw przekaz na"

#: forwardalias.php:204
msgid "(Seperate multiple values with ,)"
msgstr "(Rozdzielaj warto¶ci znakiem ,)"

#: forwardalias.php:210 forwardaccount.php:125
msgid "Keep a copy in the user's mailbox"
msgstr "Trzymaj kopie wiadomo¶ci na koncie u¿ytkownika"

#: forwardalias.php:215 forwardaccount.php:139
msgid "Remove forwarding"
msgstr "Usuñ przekaz"

#: index.php:23
msgid "migrate.php exists! please delete or rename it"
msgstr "migrate.php istnieje! usuñ go lub zmieñ nazwê"

#: index.php:138
msgid "web-cyradm has not yet been configured"
msgstr "web-cyradm nie zosta³ "

#: index.php:141
msgid "Configuration steps:"
msgstr "Etapy konfiguracji:"

#: index.php:143
msgid "copy the config file that comes with the distribution: "
msgstr "skopiuj plik konfiguracyjny za³±czony do dystrybucji: "

#: index.php:146
msgid "Edit the file config/conf.php to match your systems configuration"
msgstr "W celu dopasowania konfiguracji swojego systemu edytuj plik config/conf.php"

#: index.php:148
msgid ""
"Further information about how to configure Web-cyradm can be found at the "
"following website:"
msgstr "Wiêcej informacji na temat konfiguracji Web-cyradm mo¿na znale¼æ "
"na stronie:"

#: login.php:50
msgid "Welcome to Web-cyradm"
msgstr "Witamy w panelu administracyjnym Web-cyradm"

#: login.php:52
msgid "Please authenticate yourself"
msgstr "Wprowad¼ dane swojego konta"

#: login.php:84
msgid "Select language"
msgstr "Wybierz jêzyk"

#: logout.php:52
msgid "Thank you for using Web-cyradm"
msgstr "Dziêkujemy za skorzystanie z panelu Web-cyradm"

#: logout.php:57
msgid "You are logged out"
msgstr "Zosta³e¶ wylogowany"

#: menu.inc.php:19
msgid "Superusers Menu"
msgstr "Menu Administratorów g³ównych"

#: menu.inc.php:23
msgid "Domainmasters menu"
msgstr "Menu dla administratorów domen"

#: menu.inc.php:31
msgid "add new domain"
msgstr "dodaj now± domenê"

#: menu.inc.php:38
msgid "browse domains"
msgstr "przegl±daj domeny"

#: menu.inc.php:45
msgid "adminusers"
msgstr "administratorzy"

#: menu.inc.php:75
msgid "home"
msgstr "menu g³ówne"

#: menu.inc.php:82
msgid "logout"
msgstr "wyloguj"

#: menu.inc.php:90
msgid "Search"
msgstr "Szukaj"

#: menu.inc.php:114
msgid "Logged in as user"
msgstr "Obecnie zalogowany"

#: menu.inc.php:126
msgid "Your role is"
msgstr "jako"

#: menu.inc.php:144
msgid "Current domain is"
msgstr "Wybrana domena"

#: menu.inc.php:150
msgid "No domain selected"
msgstr "Nie wybrano ¿adnej domeny"

#: newaccount.php:13
msgid "Add new Account to domain"
msgstr "Dodaj nowe konto dla domeny"

#: newaccount.php:43 newalias.php:43
msgid "transport is not cyrus, unable to create account"
msgstr "przeniesienie nie zgodne z cyrus, nie mo¿liwe utworzenie konta"

#: newaccount.php:55
msgid "Sorry, no more account allowed for domain"
msgstr ""
"Przepraszamy, nie ma mo¿liwo¶ci utworzenia kolejnych kont dla tej domeny"

#: newaccount.php:60
msgid "Maximum allowed accounts is"
msgstr "Maksymalna liczba kont"

#: newaccount.php:137
msgid "Quota"
msgstr "Pojemno¶æ"

#: newaccount.php:196
msgid "Sorry, the username already exists"
msgstr "Taki u¿ytkownik ju¿ istnieje"

#: newaccount.php:221
msgid "Account successfully added to the Database"
msgstr "Konto poprawnie dodane do bazy danych"

#: newaccount.php:234
msgid "Account succesfully added to the IMAP Subsystem"
msgstr "Konto poprawnie dodane do subsystemu IMAP"

#: newadminuser.php:13
msgid "Add new administrator"
msgstr "Dodaj konto administratora"

#: newadminuser.php:64
msgid "Select \"Superuser\" for all domains"
msgstr "Wybierz \"Administrator g³ówny\" dla wszystkich domen"

#: newadminuser.php:132
msgid "You must provide a username"
msgstr "Musisz wprowadziæ nazwê u¿ytkownika"

#: newadminuser.php:145
msgid "Passwords are empty or not equal."
msgstr "Pola has³a s± puste lub nie pasuj± do siebie."

#: newadminuser.php:157
msgid "Username already exist"
msgstr "Nazwa u¿ytkownika ju¿ istnieje"

#: newalias.php:15
msgid "Add new alias to domain"
msgstr "Dodaj nowy alias dla domeny"

#: newalias.php:55
msgid "Sorry, no more alias allowed for domain"
msgstr ""
"Przepraszamy, nie ma mo¿liwo¶ci utworzenia kolejnych aliasów dla tej domeny"

#: newalias.php:60
msgid "Maximum allowed aliases is"
msgstr "Maksymalna dopuszczalna liczba aliasów wynosi"

#: newdomain.php:15
msgid "Add new domain"
msgstr "Dodaj now± domenê"

#: newdomain.php:140
msgid "Standard Mailboxes"
msgstr "Standardowe Skrzynki"

#: newdomain.php:146
msgid ""
"emailadress where the default aliases should be mapped (empty means no "
"mapping)"
msgstr ""
"adres email, do którego domy¶lnie bêd± mapowane aliasy (puste oznacza brak "
"mapowania)"

#: newdomain.php:163
msgid "Mail transport"
msgstr "Demon poczty"

#: newdomain.php:166
msgid "Leave this as is, unless you know what you are doing"
msgstr "Nie zmieniaj tego dopóki nie wiesz do czego to s³u¿y"

#: newdomain.php:187
msgid "Parameter"
msgstr "Parametr"

#: newdomain.php:245 newemail.php:34
msgid "Successfully added"
msgstr "Prawid³owo dodane"

#: newdomain.php:273
msgid "You are not allowed to add new domains"
msgstr "Nie masz uprawnieñ do tworzenia nowych domen"

#: newemail.php:56
msgid "New emailadress for user"
msgstr "Nowy adres email dla u¿ytkownika"

#: search.php:48
msgid "Total domains matching"
msgstr "Wynik odpowiadaj±cych domen"

#: search.php:110
msgid "Total users matching"
msgstr "Wynik odpowiadaj±cych u¿ytkowników"

#: search.php:118
msgid "Displaying from position"
msgstr "Wy¶wietlanie z pozycji"

#: search.php:245
msgid "Total aliases matching"
msgstr "Wynik odpowiadaj±cych aliasów"

#: search.php:247
msgid "No aliases found"
msgstr "Nie znaleziono ¿adnych aliasów"

#: setquota.php:26
msgid "Setting individual Quota for user"
msgstr "Ustawienie osobistej pojemno¶ci dla konta"

#: setquota.php:58
msgid "Submit"
msgstr "Zatwierd¼"

#: setquota.php:70
msgid "Quote for user"
msgstr "Pojemno¶æ konta dla u¿ytkownika"

#: setquota.php:74
msgid "changed to"
msgstr "zmieniono na"

#: timeout.php:33
msgid "Your session timed out"
msgstr "Twoja sesja wygas³a"

#: vacation.php:71
msgid "Vacation notice set"
msgstr "Nota wakacyjna ustawiona"

#: vacation.php:73
msgid "Failed to activate vacation"
msgstr "B³±d aktywowania noty wakacyjnej"

#: vacation.php:76
msgid "Failure in modifying vacation notice"
msgstr "B³±d modyfikacji noty wakacyjnej"

#: vacation.php:95
msgid "Vacation notice unset"
msgstr "Nota wakacyjna nie ustawiona"

#: vacation.php:97
msgid "Failure in unseting vacation notice"
msgstr "B³±d usuniêcia noty wakacyjnej"

#: vacation.php:101
msgid "Vacation notice removed"
msgstr "Nota wakacyjna usuniêta"

#: vacation.php:103
msgid "Failure in removing vacation notice"
msgstr "B³±d usuniêcia noty wakacyjnej"

#: vacation.php:142
msgid ""
"You can't set Vacation Message for this email address with 'Allow Free Mail "
"Addressess' set to off!"
msgstr ""
"Nie mo¿esz ustaliæ Noty Wakacyjnej dla tego adresu email bez opcji 'Zezwalaj na "
"dowolne adresy email'"

#: vacation.php:152
msgid "Vacation message for emailadress"
msgstr "Nota wakacyjna dla adresu email"

#: vacation.php:174
msgid "Set vacation notice"
msgstr "Ustaw nowê wakacyjn±"

#: vacation.php:178
msgid "Remove vacation notice"
msgstr "Usuñ notê wakacyjn±"

#: validate.inc.php:74 validate.inc.php:87 validate.inc.php:134
#: validate.inc.php:249
msgid "Security violation detected, attempt logged"
msgstr "Akcja przerwana, Twoja próba zosta³a zapisana w systemie."

#: validate.inc.php:130
msgid "Quota exeedes the maximum allowed qutoa for this domain."
msgstr "Osi±gniêto maksymaln± dopuszczaln± liczbê kont dla tej domeny."

#: forwardaccount.php:77
msgid "Forward for account"
msgstr "Przekaz dla konta"

#: forwardaccount.php:93
msgid "Set forwarding to (one adress per line)"
msgstr "Ustaw przekaz na (poszczególne adresy w odrêbnych liniach)"

#: delete_catchall.php:31
msgid "successfully deleted from the Database"
msgstr "poprawnie usuniête z bazy danych"

#: deleteemail.php:16
msgid "Delete emailadress from the System"
msgstr "Usuñ adres email z systemu"

#: deleteemail.php:23
msgid "Do you really want to delete the emailadress for user"
msgstr "Czy usun±æ adres email dla tego u¿ytkownika"

#: deleteemail.php:44
msgid "Yes, delete"
msgstr "Tak, usun±æ"

#: deleteemail.php:49
msgid "Cancel"
msgstr "Anuluj"

#: deleteemail.php:70
msgid "Emailadress deleted."
msgstr "Adres email usuniêty."

#~ msgid "successfully changed Database...."
#~ msgstr "zmiany wprowadzone poprawnie do bazy danych...."

#~ msgid "Add new admin user for domain"
#~ msgstr "Dodaj nowego administratora dla domeny"

#~ msgid "Please select a domain first"
#~ msgstr "Proszê najpierw wybraæ domenê"

#~ msgid "Not yet supported, change will be ignored"
#~ msgstr "Ta komenda nie jest jeszcze obs³ugiwana, zmiany zostan± zignorowane"
# michelle <michelle@cipsga.org.br>, 2003.
# 
msgid ""
msgstr ""
"Project-Id-Version: web-cyradm 0.5.3-1\n"
"POT-Creation-Date: 2003-08-10 16:56+0200\n"
"PO-Revision-Date: 2003-08-26 16:41+0000\n"
"Last-Translator: Michelle Ribeiro <michelle@cipsga.org.br>\n"
"Language-Team: Portuguese/Brazil\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"

#: CVS/Base/browseaccounts.php:22 browseaccounts.php:22
msgid "Browse accounts for domain"
msgstr "Procurar contas no domínio"

#: CVS/Base/browseaccounts.php:34 adminuser.php:21 browse.php:66
#: browseaccounts.php:34 catchall.php:24 catchall.php:118
#: change_password.php:19 change_password.php:32 change_password.php:42
#: deleteaccount.php:83 deleteadminuser.php:74 deletedomain.php:17
#: editaccount.php:31 editdomain.php:37 editdomain.php:67 editemail.php:15
#: editemail.php:38 forwardalias.php:16 forwardalias.php:33 newaccount.php:26
#: newadminuser.php:137 newadminuser.php:215 newalias.php:26 newdomain.php:237
#: newemail.php:15 vacation.php:15 vacation.php:30 validate.inc.php:58
#: lib/crypto.php:30 lib/crypto.php:110 lib/crypto.php:149
#: forwardaccount.php:28 delete_catchall.php:23 deleteemail.php:62
msgid "Database error"
msgstr "Erro na base de dados"

#: CVS/Base/browseaccounts.php:48 browseaccounts.php:48 newaccount.php:68
msgid "Total accounts"
msgstr "Total de contas"

#: CVS/Base/browseaccounts.php:49 adminuser.php:36 browseaccounts.php:49
msgid "Displaying from position:"
msgstr "Exibindo a partir da posição"

#: CVS/Base/browseaccounts.php:55 CVS/Base/browseaccounts.php:242
#: browseaccounts.php:55 browseaccounts.php:242 search.php:123 search.php:239
msgid "Add new account"
msgstr "Adicionar nova conta"

#: CVS/Base/browseaccounts.php:78 adminuser.php:65 aliases.php:56
#: browseaccounts.php:78 editalias.php:69 search.php:131 search.php:135
msgid "Previous 10 entries"
msgstr "Últimas 10 entradas"

#: CVS/Base/browseaccounts.php:82 adminuser.php:69 aliases.php:57
#: browseaccounts.php:82 editalias.php:70 search.php:138 search.php:142
msgid "Next 10 entries"
msgstr "Próximas 10 entradas"

#: CVS/Base/browseaccounts.php:91 adminuser.php:78 aliases.php:64
#: browse.php:20 browseaccounts.php:91 editaccount.php:50 editalias.php:76
#: search.php:52 search.php:149 search.php:253
msgid "action"
msgstr "ação"

#: CVS/Base/browseaccounts.php:96 aliases.php:65 browseaccounts.php:96
#: editaccount.php:54 newaccount.php:136 newalias.php:82 search.php:150
#: search.php:254
msgid "Email address"
msgstr "Endereço de e-mail"

#: CVS/Base/browseaccounts.php:96 browseaccounts.php:96 editaccount.php:63
#: login.php:61 search.php:151
msgid "Username"
msgstr "Nome do usuário"

#: CVS/Base/browseaccounts.php:97 browseaccounts.php:97
msgid "Last login"
msgstr "Último login"

#: CVS/Base/browseaccounts.php:97 browseaccounts.php:97 editaccount.php:68
#: search.php:152
msgid "Quota used"
msgstr "Quota usada"

#: CVS/Base/browseaccounts.php:136 browseaccounts.php:136
msgid "n/a"
msgstr "n/a"

#: CVS/Base/browseaccounts.php:146 browseaccounts.php:146 search.php:171
msgid "Edit account"
msgstr "Editar conta"

#: CVS/Base/browseaccounts.php:151 browseaccounts.php:151
msgid "Change Password"
msgstr "Alterar senha"

#: CVS/Base/browseaccounts.php:155 browseaccounts.php:155 editaccount.php:58
#: editaccount.php:91
msgid "Forward"
msgstr "Redirecionamento"

#: CVS/Base/browseaccounts.php:159 browseaccounts.php:159 search.php:172
msgid "Delete account"
msgstr "Remover conta"

#: CVS/Base/browseaccounts.php:163 browseaccounts.php:163 search.php:173
msgid "Set quota"
msgstr "Definir quota"

#: CVS/Base/browseaccounts.php:167 browseaccounts.php:167 search.php:174
msgid "Set catch all"
msgstr "Configurar para receber todas"

#: CVS/Base/browseaccounts.php:181 browseaccounts.php:181 search.php:190
msgid "Forwards"
msgstr "Redirecionamentos"

#: CVS/Base/browseaccounts.php:218 browseaccounts.php:218 editaccount.php:152
#: search.php:217
msgid "out of"
msgstr "fora de"

#: CVS/Base/browseaccounts.php:221 browseaccounts.php:221 search.php:220
msgid "Unable to retrieve quota"
msgstr "Não pode obter os valores de quota"

#: CVS/Base/browseaccounts.php:224 browseaccounts.php:224 editaccount.php:155
#: search.php:223
msgid "Quota not set"
msgstr "Quota não definida"

#: CVS/Base/browseaccounts.php:236 browseaccounts.php:236 search.php:235
msgid "No accounts found"
msgstr "Nenhuma conta encontrada"

#: adminuser.php:13
msgid "Browse admins"
msgstr "Administradores"

#: adminuser.php:35
msgid "Total administrators"
msgstr "Total de administradores"

#: adminuser.php:43
msgid "Add administator"
msgstr "Adicionar administrador"

#: adminuser.php:82
msgid "Adminname"
msgstr "Nome do administrador"

#: adminuser.php:86
msgid "domain"
msgstr "domínio"

#: adminuser.php:90
msgid "admin type"
msgstr "tipo de administrador"

#: adminuser.php:119
msgid "Edit adminuser"
msgstr "Editar usuário administrador"

#: adminuser.php:125
msgid "Delete adminuser"
msgstr "Remover usuário administrador"

#: adminuser.php:144
msgid "All domains"
msgstr "Todos os domínios"

#: adminuser.php:148
msgid "None"
msgstr "Nenhum"

#: adminuser.php:158 editadminuser.php:65 menu.inc.php:132 newadminuser.php:57
#: newadminuser.php:207
msgid "Superuser"
msgstr "Super usuário"

#: adminuser.php:160 editadminuser.php:76 menu.inc.php:134 newadminuser.php:61
#: newadminuser.php:209
msgid "Domain Master"
msgstr "Usuário master do domínio"

#: adminuser.php:174
msgid "No accounts fount"
msgstr "Nenhuma conta encontrada"

#: adminuser.php:181
msgid "Add administrator"
msgstr "Adicionar administrador"

#: aliases.php:11
msgid "Browse aliases for domain"
msgstr "Procurar alias no domínio"

#: aliases.php:50
msgid "Total aliases"
msgstr "Total de alias"

#: aliases.php:55
msgid "Add new alias"
msgstr "Adicionar novo alias"

#: aliases.php:66 editalias.php:77 editemail.php:113 newemail.php:98
#: search.php:255
msgid "Destination"
msgstr "Destino"

#: aliases.php:91 search.php:273
msgid "Edit Alias"
msgstr "Editar alias"

#: aliases.php:92 search.php:274
msgid "Delete Alias"
msgstr "Remover alias"

#: auth.inc.php:70
msgid "Web-cyradm is for authorized users only."
msgstr "Web-cyradm - somente para usuários autorizados "

#: auth.inc.php:71
msgid "Make sure you entered the right password."
msgstr "Certifique-se de que informou a senha correta."

#: auth.inc.php:72
msgid "Push the back button in your browser to try again."
msgstr "Pressione o botão Voltar em seu navegador para tentar novamente."

#: auth.inc.php:73
msgid " Your attempt to login has been stored."
msgstr "Sua tentativa de login foi registrada."

#: browse.php:13
msgid "Browse domains"
msgstr "Domínios"

#: browse.php:24 search.php:53
msgid "domainname"
msgstr "nome do domínio"

#: browse.php:31 search.php:57
msgid "prefix"
msgstr "prefixo"

#: browse.php:38 search.php:60
msgid "max Accounts"
msgstr "máximo de contas"

#: browse.php:42 search.php:61
msgid "default quota per user"
msgstr "quota padrão por usuário"

#: browse.php:90 search.php:82
msgid "Edit Domain"
msgstr "Editar domínio"

#: browse.php:91 search.php:83
msgid "Delete Domain"
msgstr "Remover domínio"

#: browse.php:92 deletedomain.php:51 menu.inc.php:59 search.php:84
msgid "accounts"
msgstr "contas"

#: browse.php:93 menu.inc.php:68 search.php:85
msgid "Aliases"
msgstr "Alias"

#: catchall.php:13
msgid "Define a Account for receiving undefined adresses for domain"
msgstr ""
"Define uma conta para receber mensagens enviadas para endereços não "
"existentes no domínio"

#: catchall.php:38
msgid "Do you really want to define the user"
msgstr "Você realmente quer definir que este usuário "

#: catchall.php:42
msgid "to receive all undefined emailadresses"
msgstr "receber todas as mensagens para endereços de e-mail não definidos ?"

#: catchall.php:46
msgid "The currently defined user"
msgstr "O usuário definido atualmente"

#: catchall.php:46
msgid "will not receiving any undefined emailadresses anymore"
msgstr "não irá receber e-mails com endereços indefinidos mais"

#: catchall.php:74
msgid "The user"
msgstr "O usuário"

#: catchall.php:74
msgid "is allready defined to receive all undefined Emails."
msgstr ""
"já está definido para receber todas os e-mails com endereços inexistentes."

#: catchall.php:76
msgid "Do you want to remove the function \"catch all\" for the account"
msgstr "Você deseja remover a função \"receber todas\" da conta"

#: catchall.php:127 newadminuser.php:197
msgid "successfully added to Database"
msgstr "adicionado a base de dados com sucesso"

#: catchall.php:133 editdomain.php:56 editemail.php:53 newdomain.php:255
#: newemail.php:44 delete_catchall.php:37
msgid "Database error, please try again"
msgstr "Erro na base de dados. Por favor, tente novamente"

#: catchall.php:140 delete_catchall.php:44
msgid "Cancelled"
msgstr "Cancelado"

#: change_password.php:53
msgid "Password changed"
msgstr "Senha alterada"

#: change_password.php:56
msgid "Failure in changing password."
msgstr "Falha na alteração de senha."

#: change_password.php:59 editadminuser.php:252
msgid "New passwords are not equal. Password not changed"
msgstr "As senhas não conferem. Senha não alterada"

#: change_password.php:72
msgid "Change password for account"
msgstr "Alterar senha da conta"

#: change_password.php:91
msgid "New password"
msgstr "Nova senha"

#: change_password.php:101
msgid "Confirm new password"
msgstr "Confirmar nova senha"

#: change_password.php:121 newaccount.php:243
msgid "Passwords do not match"
msgstr "Senhas não conferem"

#: deleteaccount.php:25
msgid "Delete an Account from the System"
msgstr "Remove uma conta do sistema"

#: deleteaccount.php:29
msgid "Do you really want to delete the user "
msgstr "Você quer realmente remover o usuário"

#: deleteaccount.php:33
msgid "with all its defined Emailadresses"
msgstr "com todos os seus endereços de e-mail"

#: deleteaccount.php:69 deleteadminuser.php:68 deletedomain.php:84
#: deleteemail.php:55
msgid "Action cancelled, nothing deleted"
msgstr "Ação cancelada, nada apagado"

#: deleteaccount.php:100
msgid "User deleted"
msgstr "Usuário removido"

#: deleteaccount.php:111 deletedomain.php:175
msgid ""
"Security violation detected, action cancelled. Your attempt has been logged."
msgstr ""
"Violação de segurança detectada, ação cancela. Sua tentativa foi registrada."

#: deleteadminuser.php:17
msgid "Delete an Admin account from the System"
msgstr "Remove uma conta de administrador do sistema"

#: deleteadminuser.php:21
msgid "Do you really want to delete the Domain supervisor"
msgstr "Você quer realmente remover o supervisor do domínio"

#: deleteadminuser.php:90 editadminuser.php:276
msgid "At least one Superuser is needed for Web-cyradm"
msgstr "Ao menos um super usuário é necessário para o web-cyradm"

#: deleteadminuser.php:103
msgid "Admin user deleted"
msgstr "Usuário administrador removido"

#: deleteadminuser.php:116 editadminuser.php:299 newadminuser.php:226
msgid "Security violation detected, nothing deleted, attempt has been logged"
msgstr ""
"Violação de segurança detectada, nada apagado. Sua tentativa foi registrada."

#: deletedomain.php:28
msgid "Delete a Domain from the System"
msgstr "Apaga um domínio do sistema"

#: deletedomain.php:32
msgid "Do you really want to delete the Domain"
msgstr "Você realmente quer remover o domínio"

#: deletedomain.php:37
msgid "with all its defined accounts, admins, and emailadresses"
msgstr "com todas suas contas, administradores e endereços de e-mails"

#: deletedomain.php:43
msgid "This can take a while depending on how many account have to be deleted"
msgstr ""
"Isto pode demorar um pouco dependendo de quantidade de contas a serem "
"apagadas"

#: deletedomain.php:47
msgid "Your action will delete"
msgstr "Sua ação vai remover"

#: deletedomain.php:154 newadminuser.php:101
msgid "Domain"
msgstr "Domínio"

#: deletedomain.php:158
msgid "successfully deleted"
msgstr "apagado com sucesso"

#: deletealias.php:28
msgid "Please confirm you want to remove"
msgstr "Por favor, confirme a remoção"

#: deletealias.php:28
msgid "from the alias"
msgstr "do alias"

#: deletealias.php:30
msgid "Yes"
msgstr "Sim"

#: deletealias.php:49
msgid "Please confirm you want to remove the alias"
msgstr "Por favor, confirme a remoção do alias"

#: deletealias.php:77
msgid "Removed"
msgstr "Removido"

#: deletealias.php:77
msgid "from"
msgstr "de"

#: deletealias.php:85
msgid "Removed the alias"
msgstr "Alias removido"

#: editaccount.php:21
msgid "Email adresses defined for user"
msgstr "E-mails definidos para o usuário"

#: editaccount.php:42
msgid "New email address"
msgstr "Novo e-mail"

#: editaccount.php:90
msgid "Edit Emailadress"
msgstr "Editar e-mail"

#: editaccount.php:92
msgid "Vacation"
msgstr "Auto-resposta"

#: editaccount.php:93
msgid "Delete Emailadress"
msgstr "Remover e-mail"

#: editadminuser.php:13
msgid "Change admin user for domain"
msgstr "Altera o usuário administrador do domínio"

#: editadminuser.php:42 newaccount.php:106 newadminuser.php:36
msgid "Accountname"
msgstr "Nome da conta"

#: editadminuser.php:52 newadminuser.php:51
msgid "Admin Type"
msgstr "Tipo de administrador"

#: editadminuser.php:84 login.php:71 newaccount.php:138 newadminuser.php:71
msgid "Password"
msgstr "Senha"

#: editadminuser.php:100 newaccount.php:139 newadminuser.php:86
msgid "Confirm Password"
msgstr "Confirmar senha"

#: editadminuser.php:155
msgid "No Domain assigned yet"
msgstr "Nenhum domínio selecionado ainda"

#: editadminuser.php:165
msgid "Add new domain to this admin"
msgstr "Adicionar novo domínio para este administrador"

#: editadminuser.php:223
msgid "No such domain, create domain first"
msgstr "Domínio não existente. Crie o domínio primeiro"

#: editadminuser.php:231
msgid "Admin already repsonsible for the domain"
msgstr "Administrador já é responsável por este domínio"

#: editalias.php:27
msgid "There was an error adding $dest to $alias: "
msgstr "Houve um erro ao adicionar $dest to $alias: "

#: editalias.php:64
msgid "Editing alias"
msgstr "Editar alias"

#: editalias.php:68
msgid "Delete this alias"
msgstr "Remover este alias"

#: editalias.php:101
msgid "Cannot remove from account"
msgstr "Não foi possível remover da conta"

#: editalias.php:105 editalias.php:109
msgid "Remove destination"
msgstr "Remover destino"

#: editalias.php:125
msgid "This alias has no destinations"
msgstr "Este alias não tem destino"

#: editalias.php:142
msgid "New destination"
msgstr "Novo destino"

#: editdomain.php:46
msgid "Successfully changed domain"
msgstr "Domínio alterado com sucesso"

#: editdomain.php:92 newdomain.php:39
msgid "Domainname"
msgstr "Nome do domínio"

#: editdomain.php:106 newdomain.php:57
msgid "Prefix"
msgstr "Prefixo"

#: editdomain.php:123 newdomain.php:73
msgid "Allow Free Names"
msgstr "Não restringir nomes "

#: editdomain.php:141 newdomain.php:90
msgid "Allow Free Mail Addresses"
msgstr "Não restringir endereços de e-mail"

#: editdomain.php:159 newdomain.php:102
msgid "Maximum Accounts"
msgstr "Máximo de Contas"

#: editdomain.php:173 newdomain.php:117
msgid "Default Quota in Kilobytes"
msgstr "Quota padrão em Kb"

#: editdomain.php:202
msgid "Your are not allowed to change domains!"
msgstr "Você não tem permissão para alterar domínios!"

#: editemail.php:46
msgid "Successfully changed"
msgstr "Alterado com sucesso"

#: editemail.php:68
msgid ""
"You can't edit this email address with 'Allow Free Mail Addressess' set to "
"off!"
msgstr ""
"Você não pode editar este endereço de e-mail com a opção `Não restringir "
"endereços de e-mail` desabilitada!"

#: editemail.php:95 newemail.php:77
msgid "Emailadress"
msgstr "E-mail"

#: failed.php:66
msgid "Login failed"
msgstr "Logon falhou"

#: failed.php:71 login.php:51
msgid "This is only for authorized users"
msgstr "Somente para usuários autorizados"

#: failed.php:76 logout.php:62 timeout.php:38
msgid "If you like to login click"
msgstr "Para logar-se novamente clique"

#: failed.php:78 logout.php:64 timeout.php:40
msgid "here"
msgstr "aqui"

#: forwardalias.php:68 forwardaccount.php:51
msgid "Forward set"
msgstr "Configuração de redirecionamento"

#: forwardalias.php:70
msgid "Failure in setting forward"
msgstr "Falha na configuração de redirecionamento"

#: forwardalias.php:73
msgid "Wrong password"
msgstr "Senha incorreta"

#: forwardalias.php:89 forwardalias.php:97 forwardalias.php:103
#: forwardalias.php:107 forwardaccount.php:57
msgid "Forwarding removed"
msgstr "Redirecionamento removido"

#: forwardalias.php:91 forwardalias.php:99
msgid "Failure in removing forwarding"
msgstr "Falha na remoção do redirecionamento"

#: forwardalias.php:111 vacation.php:79 vacation.php:107
msgid "Failed to login"
msgstr "Falha no login"

#: forwardalias.php:123 vacation.php:119
msgid "Not possible"
msgstr "Impossível"

#: forwardalias.php:152
msgid ""
"You can't forward this email address with 'Allow Free Mail Addressess' set to "
"off!"
msgstr ""
"Você não pode redirecionar este e-mail com a opção `Não restringir endereços "
"de e-mail`desabilitada!"

#: forwardalias.php:161
msgid "Forward for emailadress"
msgstr "Redirecionamento de e-mail"

#: forwardalias.php:204
msgid "Set forwarding to"
msgstr "Configurar redirecionamento para"

#: forwardalias.php:204
msgid "(Seperate multiple values with ,)"
msgstr "(Múltiplos valores separados com ,)"

#: forwardalias.php:210 forwardaccount.php:125
msgid "Keep a copy in the user's mailbox"
msgstr "Manter uma cópia na caixa postal do usuário"

#: forwardalias.php:215 forwardaccount.php:139
msgid "Remove forwarding"
msgstr "Remover redirecionamento"

#: index.php:23
msgid "migrate.php exists! please delete or rename it"
msgstr "migrate.php já existe! Por favor, remova ou renomeio-o"

#: index.php:138
msgid "web-cyradm has not yet been configured"
msgstr "O web-cyradm ainda não foi configurado"

#: index.php:141
msgid "Configuration steps:"
msgstr "Procedimentos de configuração:"

#: index.php:143
msgid "copy the config file that comes with the distribution: "
msgstr "copie o arquivo de configuração que vem junto com o web-cyradm: "

#: index.php:146
msgid "Edit the file config/conf.php to match your systems configuration"
msgstr ""
"Edite o arquivo de configuração conf.php para adequar a configuração do seu "
"sistema"

#: index.php:148
msgid ""
"Further information about how to configure Web-cyradm can be found at the "
"following website:"
msgstr ""
"Maiores informações sobre como configurar o web-cyradm podem ser encontradas "
"no seuinte web site:"

#: login.php:50
msgid "Welcome to Web-cyradm"
msgstr "Bem-vindo ao web-cyradm"

#: login.php:52
msgid "Please authenticate yourself"
msgstr "Por favor, autentique-se."

#: login.php:84
msgid "Select language"
msgstr "Selecionar idioma"

#: logout.php:52
msgid "Thank you for using Web-cyradm"
msgstr "Obrigado por usar o web-cyradm"

#: logout.php:57
msgid "You are logged out"
msgstr "Você não está mais logado"

#: menu.inc.php:19
msgid "Superusers Menu"
msgstr "Menu do Super Usuário"

#: menu.inc.php:23
msgid "Domainmasters menu"
msgstr "Menu Domínios Master"

#: menu.inc.php:31
msgid "add new domain"
msgstr "Adicionar novo domínio"

#: menu.inc.php:38
msgid "browse domains"
msgstr "domínios"

#: menu.inc.php:45
msgid "adminusers"
msgstr "administradores"

#: menu.inc.php:75
msgid "home"
msgstr "home"

#: menu.inc.php:82
msgid "logout"
msgstr "sair"

#: menu.inc.php:90
msgid "Search"
msgstr "Procurar"

#: menu.inc.php:114
msgid "Logged in as user"
msgstr "Logado como usuário"

#: menu.inc.php:126
msgid "Your role is"
msgstr "Perfil"

#: menu.inc.php:144
msgid "Current domain is"
msgstr "Domínio atual é"

#: menu.inc.php:150
msgid "No domain selected"
msgstr "Nenhum domínio selecionado"

#: newaccount.php:13
msgid "Add new Account to domain"
msgstr "Adicionar nova conta no domínio"

#: newaccount.php:43 newalias.php:43
msgid "transport is not cyrus, unable to create account"
msgstr "cyrus não é o transporte, não foi possível criar a conta"

#: newaccount.php:55
msgid "Sorry, no more account allowed for domain"
msgstr "Desculpe, não é permitido mais contas neste domínio"

#: newaccount.php:60
msgid "Maximum allowed accounts is"
msgstr "O número máximo de contas permitido é"

#: newaccount.php:137
msgid "Quota"
msgstr "Quota"

#: newaccount.php:196
msgid "Sorry, the username already exists"
msgstr "O nome de usuário já existe"

#: newaccount.php:221
msgid "Account successfully added to the Database"
msgstr "Conta adicionada com sucesso a base de dados"

#: newaccount.php:234
msgid "Account succesfully added to the IMAP Subsystem"
msgstr "Conta adicionada com sucesso ao subsistema IMAP"

#: newadminuser.php:13
msgid "Add new administrator"
msgstr "Adicionar novo administrador"

#: newadminuser.php:64
msgid "Select \"Superuser\" for all domains"
msgstr "Selecione \"Superuser\" para todos os domínios"

#: newadminuser.php:132
msgid "You must provide a username"
msgstr "Você deve fornecer um nome de usuário"

#: newadminuser.php:145
msgid "Passwords are empty or not equal."
msgstr "Senhas vazias ou não conferem"

#: newadminuser.php:157
msgid "Username already exist"
msgstr "O nome de usuário já existe"

#: newalias.php:15
msgid "Add new alias to domain"
msgstr "Adicionar novo alias no domínio"

#: newalias.php:55
msgid "Sorry, no more alias allowed for domain"
msgstr "Desculpe, não é permitido mais alias neste domínio"

#: newalias.php:60
msgid "Maximum allowed aliases is"
msgstr "O número máximo de alias permitido é"

#: newdomain.php:15
msgid "Add new domain"
msgstr "Adicionar novo domínio"

#: newdomain.php:140
msgid "Standard Mailboxes"
msgstr "Caixas postais padrões"

#: newdomain.php:146
msgid ""
"emailadress where the default aliases should be mapped (empty means no "
"mapping)"
msgstr ""
"endereço de e-mail para o qual o alias padrão deve ser mapeado (se deixar em "
"branco, não será mapeado)"

#: newdomain.php:163
msgid "Mail transport"
msgstr "Transporte"

#: newdomain.php:166
msgid "Leave this as is, unless you know what you are doing"
msgstr "Deixe isto como está, a menos que saiba o que está fazendo"

#: newdomain.php:187
msgid "Parameter"
msgstr "Parâmetro"

#: newdomain.php:245 newemail.php:34
msgid "Successfully added"
msgstr "Adicionado com sucesso"

#: newdomain.php:273
msgid "You are not allowed to add new domains"
msgstr "Você não está autorizado a adicionar novos domínios"

#: newemail.php:56
msgid "New emailadress for user"
msgstr "Novo e-mail para usuário"

#: search.php:48
msgid "Total domains matching"
msgstr "Total de administradores encontrados"

#: search.php:110
msgid "Total users matching"
msgstr "Total de usuário encontrados"

#: search.php:118
msgid "Displaying from position"
msgstr "Exibindo a partir da posição"

#: search.php:245
msgid "Total aliases matching"
msgstr "Total de alias encontrados"

#: search.php:247
msgid "No aliases found"
msgstr "Nenhum alias encontrado"

#: setquota.php:26
msgid "Setting individual Quota for user"
msgstr "Definir quota individual para usuário"

#: setquota.php:58
msgid "Submit"
msgstr "Enviar"

#: setquota.php:70
msgid "Quote for user"
msgstr "Quota para usuário"

#: setquota.php:74
msgid "changed to"
msgstr "alterado para"

#: timeout.php:33
msgid "Your session timed out"
msgstr "Sua seção expirou"

#: vacation.php:71
msgid "Vacation notice set"
msgstr "Configuração de auto-resposta"

#: vacation.php:73
msgid "Failed to activate vacation"
msgstr "Falha ao ativar auto-resposta"

#: vacation.php:76
msgid "Failure in modifying vacation notice"
msgstr "Falha na modificação da auto-resposta"

#: vacation.php:95
msgid "Vacation notice unset"
msgstr "Remoção de auto-resposta"

#: vacation.php:97
msgid "Failure in unseting vacation notice"
msgstr "Falha na remoção da auto-resposta"

#: vacation.php:101
msgid "Vacation notice removed"
msgstr "Auto-resposta removida"

#: vacation.php:103
msgid "Failure in removing vacation notice"
msgstr "Falha na remoção da auto-resposta"

#: vacation.php:142
msgid ""
"You can't set Vacation Message for this email address with 'Allow Free Mail "
"Addressess' set to off!"
msgstr ""
"Você não pode configurar a auto-resposta para este e-mail com a opção `Não "
"restringir endereços de e-mails` desabilitada!"

#: vacation.php:152
msgid "Vacation message for emailadress"
msgstr "Mensagem de auto- resposta para o e-mail"

#: vacation.php:174
msgid "Set vacation notice"
msgstr "Configurar auto-resposta"

#: vacation.php:178
msgid "Remove vacation notice"
msgstr "Remover auto-resposta"

#: validate.inc.php:74 validate.inc.php:87 validate.inc.php:134
#: validate.inc.php:249
msgid "Security violation detected, attempt logged"
msgstr "Violação de segurança detectada. Sua tentativa foi registrada."

#: validate.inc.php:130
msgid "Quota exeedes the maximum allowed qutoa for this domain."
msgstr "A quota excede a quota máxima permitida neste domínio"

#: forwardaccount.php:77
msgid "Forward for account"
msgstr "Redirecionamento de conta"

#: forwardaccount.php:93
msgid "Set forwarding to (one adress per line)"
msgstr "Configurar redirecionamento para(um endereço por linha)"

#: delete_catchall.php:31
msgid "successfully deleted from the Database"
msgstr "removido da base de dados com sucesso"

#: deleteemail.php:16
msgid "Delete emailadress from the System"
msgstr "Remover endereço de e-mail do sistema"

#: deleteemail.php:23
msgid "Do you really want to delete the emailadress for user"
msgstr "Você realmente quer remover o e-mail do usuário"

#: deleteemail.php:44
msgid "Yes, delete"
msgstr "Sim, remover"

#: deleteemail.php:49
msgid "Cancel"
msgstr "Cancelar"

#: deleteemail.php:70
msgid "Emailadress deleted."
msgstr "E-mail removido"

#~ msgid "successfully changed Database...."
#~ msgstr "Base de dados alteradas com sucesso..."

#~ msgid "Add new admin user for domain"
#~ msgstr "Adicionar nova conta de administrador no domínio"

#~ msgid "Please select a domain first"
#~ msgstr "Por favor, selecione um domínio primeiro"

#~ msgid "Not yet supported, change will be ignored"
#~ msgstr "Não suportado ainda, mudanças serão ignoradas"
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Free Software Foundation, Inc.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2003-08-10 16:56+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Catalin Boiangiu  <catalinboiangiu@softhome.net>\n"
"Language-Team: ROMANIAN <catalinboiangiu@softhome.net>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: CVS/Base/browseaccounts.php:22 browseaccounts.php:22
msgid "Browse accounts for domain"
msgstr "Rasfoieste Conturile dupa Domeniu"

#: CVS/Base/browseaccounts.php:34 adminuser.php:21 browse.php:66
#: browseaccounts.php:34 catchall.php:24 catchall.php:118
#: change_password.php:19 change_password.php:32 change_password.php:42
#: deleteaccount.php:83 deleteadminuser.php:74 deletedomain.php:17
#: editaccount.php:31 editdomain.php:37 editdomain.php:67 editemail.php:15
#: editemail.php:38 forwardalias.php:16 forwardalias.php:33 newaccount.php:26
#: newadminuser.php:137 newadminuser.php:215 newalias.php:26 newdomain.php:237
#: newemail.php:15 vacation.php:15 vacation.php:30 validate.inc.php:58
#: lib/crypto.php:30 lib/crypto.php:110 lib/crypto.php:149
#: forwardaccount.php:28 delete_catchall.php:23 deleteemail.php:62
msgid "Database error"
msgstr "Eroare in Baza de date, va rog incercati din nou"

#: CVS/Base/browseaccounts.php:48 browseaccounts.php:48 newaccount.php:68
msgid "Total accounts"
msgstr "Total conturi"

#: CVS/Base/browseaccounts.php:49 adminuser.php:36 browseaccounts.php:49
msgid "Displaying from position:"
msgstr ""

#: CVS/Base/browseaccounts.php:55 CVS/Base/browseaccounts.php:242
#: browseaccounts.php:55 browseaccounts.php:242 search.php:123 search.php:239
msgid "Add new account"
msgstr "Adauga un nou cont"

#: CVS/Base/browseaccounts.php:78 adminuser.php:65 aliases.php:56
#: browseaccounts.php:78 editalias.php:69 search.php:131 search.php:135
msgid "Previous 10 entries"
msgstr "Precedentele 10 intrari"

#: CVS/Base/browseaccounts.php:82 adminuser.php:69 aliases.php:57
#: browseaccounts.php:82 editalias.php:70 search.php:138 search.php:142
msgid "Next 10 entries"
msgstr "Urmatoarele 10 intrari"

#: CVS/Base/browseaccounts.php:91 adminuser.php:78 aliases.php:64
#: browse.php:20 browseaccounts.php:91 editaccount.php:50 editalias.php:76
#: search.php:52 search.php:149 search.php:253
msgid "action"
msgstr "actiunea"

#: CVS/Base/browseaccounts.php:96 aliases.php:65 browseaccounts.php:96
#: editaccount.php:54 newaccount.php:136 newalias.php:82 search.php:150
#: search.php:254
msgid "Email address"
msgstr "Adresa de email"

#: CVS/Base/browseaccounts.php:96 browseaccounts.php:96 editaccount.php:63
#: login.php:61 search.php:151
msgid "Username"
msgstr "Numele Utilizatorului"

#: CVS/Base/browseaccounts.php:97 browseaccounts.php:97
#, fuzzy
msgid "Last login"
msgstr "NU v-ati putut loga"

#: CVS/Base/browseaccounts.php:97 browseaccounts.php:97 editaccount.php:68
#: search.php:152
msgid "Quota used"
msgstr "Cota utilizata"

#: CVS/Base/browseaccounts.php:136 browseaccounts.php:136
msgid "n/a"
msgstr ""

#: CVS/Base/browseaccounts.php:146 browseaccounts.php:146 search.php:171
msgid "Edit account"
msgstr "Editeaza contul"

#: CVS/Base/browseaccounts.php:151 browseaccounts.php:151
msgid "Change Password"
msgstr "Confirma Parola"

#: CVS/Base/browseaccounts.php:155 browseaccounts.php:155 editaccount.php:58
#: editaccount.php:91
msgid "Forward"
msgstr "Forward"

#: CVS/Base/browseaccounts.php:159 browseaccounts.php:159 search.php:172
msgid "Delete account"
msgstr "Sterge contul"

#: CVS/Base/browseaccounts.php:163 browseaccounts.php:163 search.php:173
msgid "Set quota"
msgstr "Defineste cota"

#: CVS/Base/browseaccounts.php:167 browseaccounts.php:167 search.php:174
msgid "Set catch all"
msgstr "Defineste catch all"

#: CVS/Base/browseaccounts.php:181 browseaccounts.php:181 search.php:190
#, fuzzy
msgid "Forwards"
msgstr "Forward"

#: CVS/Base/browseaccounts.php:218 browseaccounts.php:218 editaccount.php:152
#: search.php:217
msgid "out of"
msgstr "din cei"

#: CVS/Base/browseaccounts.php:221 browseaccounts.php:221 search.php:220
msgid "Unable to retrieve quota"
msgstr ""

#: CVS/Base/browseaccounts.php:224 browseaccounts.php:224 editaccount.php:155
#: search.php:223
msgid "Quota not set"
msgstr "Cota nu este stabilita"

#: CVS/Base/browseaccounts.php:236 browseaccounts.php:236 search.php:235
msgid "No accounts found"
msgstr "Nu a fost gasit nici un cont"

#: adminuser.php:13
msgid "Browse admins"
msgstr "Rasfoieste Administratorii"

#: adminuser.php:35
msgid "Total administrators"
msgstr "Total Administratori"

#: adminuser.php:43
msgid "Add administator"
msgstr "Adauga administrator"

#: adminuser.php:82
msgid "Adminname"
msgstr "Numele Admin-ului"

#: adminuser.php:86
msgid "domain"
msgstr "domeniu"

#: adminuser.php:90
msgid "admin type"
msgstr "Tipul de administrator"

#: adminuser.php:119
msgid "Edit adminuser"
msgstr "Editeaza Administrator"

#: adminuser.php:125
msgid "Delete adminuser"
msgstr "Sterge Administrator"

#: adminuser.php:144
#, fuzzy
msgid "All domains"
msgstr "domeniu"

#: adminuser.php:148
msgid "None"
msgstr ""

#: adminuser.php:158 editadminuser.php:65 menu.inc.php:132 newadminuser.php:57
#: newadminuser.php:207
msgid "Superuser"
msgstr "Superutilizator"

#: adminuser.php:160 editadminuser.php:76 menu.inc.php:134 newadminuser.php:61
#: newadminuser.php:209
msgid "Domain Master"
msgstr "Administratorul Domeniului"

#: adminuser.php:174
msgid "No accounts fount"
msgstr "Nu a fost gasit nici un cont"

#: adminuser.php:181
msgid "Add administrator"
msgstr "Adauga administrator"

#: aliases.php:11
#, fuzzy
msgid "Browse aliases for domain"
msgstr "Rasfoieste Conturile dupa Domeniu"

#: aliases.php:50
#, fuzzy
msgid "Total aliases"
msgstr "Total Administratori"

#: aliases.php:55
#, fuzzy
msgid "Add new alias"
msgstr "Adauga un nou domeniu"

#: aliases.php:66 editalias.php:77 editemail.php:113 newemail.php:98
#: search.php:255
msgid "Destination"
msgstr "Destinatie"

#: aliases.php:91 search.php:273
#, fuzzy
msgid "Edit Alias"
msgstr "Editeaza adresa de email"

#: aliases.php:92 search.php:274
#, fuzzy
msgid "Delete Alias"
msgstr "Sterge adresa de email"

#: auth.inc.php:70
msgid "Web-cyradm is for authorized users only."
msgstr "Accesul permis numai utilizatorilor autorizati"

#: auth.inc.php:71
msgid "Make sure you entered the right password."
msgstr "Asigurati-va ca ati introdus parola corecta"

#: auth.inc.php:72
msgid "Push the back button in your browser to try again."
msgstr ""
"Apasati butonul Inapoi in web browser-ul dumneavoatra si incercati din nou"

#: auth.inc.php:73
#, fuzzy
msgid " Your attempt to login has been stored."
msgstr "Incercarea dumneavoastra de a va loga a fost inregistrata"

#: browse.php:13
msgid "Browse domains"
msgstr "Rasfoieste Domeniile"

#: browse.php:24 search.php:53
msgid "domainname"
msgstr "Numele Domeniului"

#: browse.php:31 search.php:57
msgid "prefix"
msgstr "prefix"

#: browse.php:38 search.php:60
msgid "max Accounts"
msgstr "Nr. Maxim de conturi"

#: browse.php:42 search.php:61
msgid "default quota per user"
msgstr "Cota prestabilita per utlizator"

#: browse.php:90 search.php:82
msgid "Edit Domain"
msgstr "Editeaza Domeniul"

#: browse.php:91 search.php:83
msgid "Delete Domain"
msgstr "Sterge Domeniu"

#: browse.php:92 deletedomain.php:51 menu.inc.php:59 search.php:84
msgid "accounts"
msgstr "conturi"

#: browse.php:93 menu.inc.php:68 search.php:85
msgid "Aliases"
msgstr ""

#: catchall.php:13
msgid "Define a Account for receiving undefined adresses for domain"
msgstr "Definiti un Cont pt primirea adreselor nedefinite ale domeniului"

#: catchall.php:38
msgid "Do you really want to define the user"
msgstr "Sinteti sigur ca doriti sa definiti utilizatorul"

#: catchall.php:42
msgid "to receive all undefined emailadresses"
msgstr "sa primeasca mesajele destinate adreselor de email nedefinite"

#: catchall.php:46
msgid "The currently defined user"
msgstr ""

#: catchall.php:46
#, fuzzy
msgid "will not receiving any undefined emailadresses anymore"
msgstr "sa primeasca mesajele destinate adreselor de email nedefinite"

#: catchall.php:74
msgid "The user"
msgstr ""

#: catchall.php:74
#, fuzzy
msgid "is allready defined to receive all undefined Emails."
msgstr "sa primeasca mesajele destinate adreselor de email nedefinite"

#: catchall.php:76
msgid "Do you want to remove the function \"catch all\" for the account"
msgstr ""

#: catchall.php:127 newadminuser.php:197
msgid "successfully added to Database"
msgstr "Adaugat cu succes Bazei de date"

#: catchall.php:133 editdomain.php:56 editemail.php:53 newdomain.php:255
#: newemail.php:44 delete_catchall.php:37
msgid "Database error, please try again"
msgstr "Eroare in Baza de date, va rog incercati din nou"

#: catchall.php:140 delete_catchall.php:44
#, fuzzy
msgid "Cancelled"
msgstr "Anuleaza"

#: change_password.php:53
msgid "Password changed"
msgstr "Parola a fost schimbata"

#: change_password.php:56
msgid "Failure in changing password."
msgstr "Parola nu a putut fi schimbata"

#: change_password.php:59 editadminuser.php:252
msgid "New passwords are not equal. Password not changed"
msgstr "Noile parole nu sint egale. Parola nu a fost schimbata"

#: change_password.php:72
msgid "Change password for account"
msgstr "Schimbati parola pt contul dumnneavoastra"

#: change_password.php:91
msgid "New password"
msgstr "Noua Parola"

#: change_password.php:101
msgid "Confirm new password"
msgstr "Confirmati Noua Parola"

#: change_password.php:121 newaccount.php:243
msgid "Passwords do not match"
msgstr ""

#: deleteaccount.php:25
msgid "Delete an Account from the System"
msgstr "Sterge un Cont din Sistem"

#: deleteaccount.php:29
msgid "Do you really want to delete the user "
msgstr "Sinteti sigur ca doriti sa stergeti utilizatorul"

#: deleteaccount.php:33
msgid "with all its defined Emailadresses"
msgstr "cu toate adresele lui de email definite"

#: deleteaccount.php:69 deleteadminuser.php:68 deletedomain.php:84
#: deleteemail.php:55
msgid "Action cancelled, nothing deleted"
msgstr "Actiunea a fost anulata, nu a fost sters nimic"

#: deleteaccount.php:100
#, fuzzy
msgid "User deleted"
msgstr "Da, sterge"

#: deleteaccount.php:111 deletedomain.php:175
msgid ""
"Security violation detected, action cancelled. Your attempt has been logged."
msgstr ""
"A fost detectata o violare a securitatii, actiunea a fost anulata. Incercare "
"dumneavoatra a fost inregistrata"

#: deleteadminuser.php:17
msgid "Delete an Admin account from the System"
msgstr "Sterge un Cont de Admin din Sistem"

#: deleteadminuser.php:21
msgid "Do you really want to delete the Domain supervisor"
msgstr "Sinteti sigur ca doriti sa stergeti Domeniul"

#: deleteadminuser.php:90 editadminuser.php:276
msgid "At least one Superuser is needed for Web-cyradm"
msgstr ""

#: deleteadminuser.php:103
msgid "Admin user deleted"
msgstr ""

#: deleteadminuser.php:116 editadminuser.php:299 newadminuser.php:226
#, fuzzy
msgid "Security violation detected, nothing deleted, attempt has been logged"
msgstr ""
"A fost detectata o violare a securitatii, actiunea a fost anulata. Incercare "
"dumneavoatra a fost inregistrata"

#: deletedomain.php:28
msgid "Delete a Domain from the System"
msgstr "Sterge un Domeniu din Sistem"

#: deletedomain.php:32
msgid "Do you really want to delete the Domain"
msgstr "Sinteti sigur ca doriti sa stergeti Domeniul"

#: deletedomain.php:37
msgid "with all its defined accounts, admins, and emailadresses"
msgstr "cu toate conturile definite, administratori si adrese de email"

#: deletedomain.php:43
msgid "This can take a while depending on how many account have to be deleted"
msgstr ""
"Aceasta actiune poate dura mai mult (depinzind de nr de conturi care vor "
"trebui sterse)"

#: deletedomain.php:47
msgid "Your action will delete"
msgstr "Actiunea d-voastra va sterge"

#: deletedomain.php:154 newadminuser.php:101
msgid "Domain"
msgstr "Domeniul"

#: deletedomain.php:158
msgid "successfully deleted"
msgstr "Sters cu succes"

#: deletealias.php:28
msgid "Please confirm you want to remove"
msgstr ""

#: deletealias.php:28
msgid "from the alias"
msgstr ""

#: deletealias.php:30
msgid "Yes"
msgstr "Da"

#: deletealias.php:49
msgid "Please confirm you want to remove the alias"
msgstr ""

#: deletealias.php:77
msgid "Removed"
msgstr ""

#: deletealias.php:77
msgid "from"
msgstr ""

#: deletealias.php:85
msgid "Removed the alias"
msgstr ""

#: editaccount.php:21
msgid "Email adresses defined for user"
msgstr "Adresa de email definita pt utilizator"

#: editaccount.php:42
msgid "New email address"
msgstr "Noua adresa de email"

#: editaccount.php:90
msgid "Edit Emailadress"
msgstr "Editeaza adresa de email"

#: editaccount.php:92
msgid "Vacation"
msgstr "Vacanta"

#: editaccount.php:93
msgid "Delete Emailadress"
msgstr "Sterge adresa de email"

#: editadminuser.php:13
msgid "Change admin user for domain"
msgstr "Schimba Admin User-ul pt Domeniu"

#: editadminuser.php:42 newaccount.php:106 newadminuser.php:36
msgid "Accountname"
msgstr "Numele contului"

#: editadminuser.php:52 newadminuser.php:51
msgid "Admin Type"
msgstr "Tipul de administrator"

#: editadminuser.php:84 login.php:71 newaccount.php:138 newadminuser.php:71
msgid "Password"
msgstr "Parola"

#: editadminuser.php:100 newaccount.php:139 newadminuser.php:86
msgid "Confirm Password"
msgstr "Confirma Parola"

#: editadminuser.php:155
msgid "No Domain assigned yet"
msgstr ""

#: editadminuser.php:165
#, fuzzy
msgid "Add new domain to this admin"
msgstr "Adauga un cont nou domeniului"

#: editadminuser.php:223
msgid "No such domain, create domain first"
msgstr ""

#: editadminuser.php:231
msgid "Admin already repsonsible for the domain"
msgstr ""

#: editalias.php:27
msgid "There was an error adding $dest to $alias: "
msgstr ""

#: editalias.php:64
#, fuzzy
msgid "Editing alias"
msgstr "Editeaza adresa de email"

#: editalias.php:68
#, fuzzy
msgid "Delete this alias"
msgstr "Sterge adresa de email"

#: editalias.php:101
#, fuzzy
msgid "Cannot remove from account"
msgstr "Schimbati parola pt contul dumnneavoastra"

#: editalias.php:105 editalias.php:109
#, fuzzy
msgid "Remove destination"
msgstr "Destinatie"

#: editalias.php:125
msgid "This alias has no destinations"
msgstr ""

#: editalias.php:142
#, fuzzy
msgid "New destination"
msgstr "Destinatie"

#: editdomain.php:46
#, fuzzy
msgid "Successfully changed domain"
msgstr "A fost schimbata cu succes"

#: editdomain.php:92 newdomain.php:39
msgid "Domainname"
msgstr "Numele Domeniului"

#: editdomain.php:106 newdomain.php:57
msgid "Prefix"
msgstr "Prefix"

#: editdomain.php:123 newdomain.php:73
msgid "Allow Free Names"
msgstr ""

#: editdomain.php:141 newdomain.php:90
#, fuzzy
msgid "Allow Free Mail Addresses"
msgstr "Noua adresa de email"

#: editdomain.php:159 newdomain.php:102
msgid "Maximum Accounts"
msgstr "Nr Maxim de conturi"

#: editdomain.php:173 newdomain.php:117
msgid "Default Quota in Kilobytes"
msgstr "Cota prestabilita in KB"

#: editdomain.php:202
msgid "Your are not allowed to change domains!"
msgstr "NU sinteti autorizat sa faceti schimbari in domenii"

#: editemail.php:46
msgid "Successfully changed"
msgstr "A fost schimbata cu succes"

#: editemail.php:68
msgid ""
"You can't edit this email address with 'Allow Free Mail Addressess' set to "
"off!"
msgstr ""

#: editemail.php:95 newemail.php:77
msgid "Emailadress"
msgstr "Adresa de email"

#: failed.php:66
msgid "Login failed"
msgstr "Nu ati reusit sa va logati"

#: failed.php:71 login.php:51
msgid "This is only for authorized users"
msgstr "Accesul permis numai utilizatorilor autorizati"

#: failed.php:76 logout.php:62 timeout.php:38
msgid "If you like to login click"
msgstr "Daca doriti sa va logati click"

#: failed.php:78 logout.php:64 timeout.php:40
msgid "here"
msgstr "aici"

#: forwardalias.php:68 forwardaccount.php:51
msgid "Forward set"
msgstr "Forwad-ul este setat"

#: forwardalias.php:70
msgid "Failure in setting forward"
msgstr "Forwad-ul nu a putut fi setat"

#: forwardalias.php:73
msgid "Wrong password"
msgstr "Parola Gresita"

#: forwardalias.php:89 forwardalias.php:97 forwardalias.php:103
#: forwardalias.php:107 forwardaccount.php:57
msgid "Forwarding removed"
msgstr "Forwarding-ul a fost sters"

#: forwardalias.php:91 forwardalias.php:99
msgid "Failure in removing forwarding"
msgstr "Nu a putut fi sters forwarding-ul"

#: forwardalias.php:111 vacation.php:79 vacation.php:107
msgid "Failed to login"
msgstr "NU v-ati putut loga"

#: forwardalias.php:123 vacation.php:119
msgid "Not possible"
msgstr "nu este posibil"

#: forwardalias.php:152
msgid ""
"You can't forward this email address with 'Allow Free Mail Addressess' set "
"to off!"
msgstr ""

#: forwardalias.php:161
msgid "Forward for emailadress"
msgstr "Forward pt adresa de email"

#: forwardalias.php:204
msgid "Set forwarding to"
msgstr "Seteaza forwarding-ul catre"

#: forwardalias.php:204
msgid "(Seperate multiple values with ,)"
msgstr ""

#: forwardalias.php:210 forwardaccount.php:125
msgid "Keep a copy in the user's mailbox"
msgstr "Pastreaza o copie in casuta utilizatorului"

#: forwardalias.php:215 forwardaccount.php:139
msgid "Remove forwarding"
msgstr "Sterge forwarding-ul"

#: index.php:23
msgid "migrate.php exists! please delete or rename it"
msgstr ""

#: index.php:138
msgid "web-cyradm has not yet been configured"
msgstr ""

#: index.php:141
msgid "Configuration steps:"
msgstr ""

#: index.php:143
msgid "copy the config file that comes with the distribution: "
msgstr ""

#: index.php:146
msgid "Edit the file config/conf.php to match your systems configuration"
msgstr ""

#: index.php:148
msgid ""
"Further information about how to configure Web-cyradm can be found at the "
"following website:"
msgstr ""

#: login.php:50
msgid "Welcome to Web-cyradm"
msgstr "Bun venit in pagina Web-cyradm"

#: login.php:52
msgid "Please authenticate yourself"
msgstr "Va rog autentificati-va"

#: login.php:84
msgid "Select language"
msgstr ""

#: logout.php:52
msgid "Thank you for using Web-cyradm"
msgstr "Va multumim ca ati utilizat Web-cyradm"

#: logout.php:57
msgid "You are logged out"
msgstr "Ati iesit"

#: menu.inc.php:19
#, fuzzy
msgid "Superusers Menu"
msgstr "Superutilizator"

#: menu.inc.php:23
msgid "Domainmasters menu"
msgstr "Meniul Administratorulului de Domeniu"

#: menu.inc.php:31
msgid "add new domain"
msgstr "Adauga un nou domeniu"

#: menu.inc.php:38
msgid "browse domains"
msgstr "Rasfoieste domeniile"

#: menu.inc.php:45
msgid "adminusers"
msgstr "Administratori"

#: menu.inc.php:75
msgid "home"
msgstr "Home"

#: menu.inc.php:82
msgid "logout"
msgstr "Logout"

#: menu.inc.php:90
msgid "Search"
msgstr "Cauta"

#: menu.inc.php:114
msgid "Logged in as user"
msgstr "Logat ca utilizator"

#: menu.inc.php:126
msgid "Your role is"
msgstr "Statutul d-voastra este"

#: menu.inc.php:144
#, fuzzy
msgid "Current domain is"
msgstr "Rasfoieste domeniile"

#: menu.inc.php:150
msgid "No domain selected"
msgstr ""

#: newaccount.php:13
msgid "Add new Account to domain"
msgstr "Adauga un cont nou domeniului"

#: newaccount.php:43 newalias.php:43
msgid "transport is not cyrus, unable to create account"
msgstr "agentul de transport al mail-ului nu este Cyrus, nu pot crea contul"

#: newaccount.php:55
msgid "Sorry, no more account allowed for domain"
msgstr "Imi pare rau, nr maxim de conturi a fost atins pt acest domeniu"

#: newaccount.php:60
msgid "Maximum allowed accounts is"
msgstr "Nr Maxim de conturi"

#: newaccount.php:137
msgid "Quota"
msgstr "Cota (in KB)"

#: newaccount.php:196
msgid "Sorry, the username already exists"
msgstr ""

#: newaccount.php:221
msgid "Account successfully added to the Database"
msgstr "Cont adaugat cu succes bazei de date"

#: newaccount.php:234
msgid "Account succesfully added to the IMAP Subsystem"
msgstr "Cont adaugat cu succes Subsistemului IMAP"

#: newadminuser.php:13
#, fuzzy
msgid "Add new administrator"
msgstr "Adauga administrator"

#: newadminuser.php:64
msgid "Select \"Superuser\" for all domains"
msgstr "Selectati \"Superutilizator\" pt toate domeniile"

#: newadminuser.php:132
msgid "You must provide a username"
msgstr ""

#: newadminuser.php:145
msgid "Passwords are empty or not equal."
msgstr ""

#: newadminuser.php:157
msgid "Username already exist"
msgstr ""

#: newalias.php:15
#, fuzzy
msgid "Add new alias to domain"
msgstr "Adauga un cont nou domeniului"

#: newalias.php:55
#, fuzzy
msgid "Sorry, no more alias allowed for domain"
msgstr "Imi pare rau, nr maxim de conturi a fost atins pt acest domeniu"

#: newalias.php:60
#, fuzzy
msgid "Maximum allowed aliases is"
msgstr "Nr Maxim de conturi"

#: newdomain.php:15
msgid "Add new domain"
msgstr "Adauga un nou domeniu"

#: newdomain.php:140
#, fuzzy
msgid "Standard Mailboxes"
msgstr "Casute Postale Standard"

#: newdomain.php:146
msgid ""
"emailadress where the default aliases should be mapped (empty means no "
"mapping)"
msgstr ""
"adresa de email catre care vor fi mapate aliasurile predefinite (gol "
"inseamna nici o mapare)"

#: newdomain.php:163
msgid "Mail transport"
msgstr "Agentul de transport al mail-ului"

#: newdomain.php:166
msgid "Leave this as is, unless you know what you are doing"
msgstr ""
"Lasati aceasta setare asa, modificati-o numai daca stiti exact ce faceti"

#: newdomain.php:187
msgid "Parameter"
msgstr ""

#: newdomain.php:245 newemail.php:34
msgid "Successfully added"
msgstr "Adaugata cu succes"

#: newdomain.php:273
msgid "You are not allowed to add new domains"
msgstr "Nu sinteti autorizat sa adaugati domenii"

#: newemail.php:56
msgid "New emailadress for user"
msgstr "Noua adresa de email a utilizatorului"

#: search.php:48
#, fuzzy
msgid "Total domains matching"
msgstr "Total Administratori"

#: search.php:110
msgid "Total users matching"
msgstr ""

#: search.php:118
msgid "Displaying from position"
msgstr ""

#: search.php:245
msgid "Total aliases matching"
msgstr ""

#: search.php:247
#, fuzzy
msgid "No aliases found"
msgstr "Nu a fost gasit nici un cont"

#: setquota.php:26
msgid "Setting individual Quota for user"
msgstr "stabilirea cotei individuale pt. utilizatorul"

#: setquota.php:58
msgid "Submit"
msgstr "Trimite"

#: setquota.php:70
#, fuzzy
msgid "Quote for user"
msgstr "Cota nu este stabilita"

#: setquota.php:74
msgid "changed to"
msgstr ""

#: timeout.php:33
msgid "Your session timed out"
msgstr "Sesiunea d-voastra a expirat"

#: vacation.php:71
msgid "Vacation notice set"
msgstr "Mesajul de vacanta a fost setat"

#: vacation.php:73
msgid "Failed to activate vacation"
msgstr "Nu a putut fi activat mesajul de vacanta"

#: vacation.php:76
msgid "Failure in modifying vacation notice"
msgstr "Mesajul de vacanta nu a putut fi modificat"

#: vacation.php:95
#, fuzzy
msgid "Vacation notice unset"
msgstr "Mesajul de vacanta a fost setat"

#: vacation.php:97
msgid "Failure in unseting vacation notice"
msgstr "Mesajul de vacanta nu a putut fi setat"

#: vacation.php:101
msgid "Vacation notice removed"
msgstr "Mesajul de vacanta a fost stres"

#: vacation.php:103
msgid "Failure in removing vacation notice"
msgstr "Mesajul de vacanta nu a putut fi sters"

#: vacation.php:142
msgid ""
"You can't set Vacation Message for this email address with 'Allow Free Mail "
"Addressess' set to off!"
msgstr ""

#: vacation.php:152
msgid "Vacation message for emailadress"
msgstr "Mesaj de vacanta pt adresa de email"

#: vacation.php:174
msgid "Set vacation notice"
msgstr "Seteaza notificare de vacanta"

#: vacation.php:178
msgid "Remove vacation notice"
msgstr "Sterge mesajul de vacanta"

#: validate.inc.php:74 validate.inc.php:87 validate.inc.php:134
#: validate.inc.php:249
#, fuzzy
msgid "Security violation detected, attempt logged"
msgstr ""
"A fost detectata o violare a securitatii, actiunea a fost anulata. Incercare "
"dumneavoatra a fost inregistrata"

#: validate.inc.php:130
msgid "Quota exeedes the maximum allowed qutoa for this domain."
msgstr ""

#: forwardaccount.php:77
msgid "Forward for account"
msgstr "Forward pt contul"

#: forwardaccount.php:93
#, fuzzy
msgid "Set forwarding to (one adress per line)"
msgstr "Seteaza forwarding-ul catre"

#: delete_catchall.php:31
#, fuzzy
msgid "successfully deleted from the Database"
msgstr "Adaugat cu succes Bazei de date"

#: deleteemail.php:16
#, fuzzy
msgid "Delete emailadress from the System"
msgstr "Sterge adresa de email din Sistem"

#: deleteemail.php:23
msgid "Do you really want to delete the emailadress for user"
msgstr ""
"Sinteti sigur ca doriti sa stergeti adresa de email a acestui utilizator?"

#: deleteemail.php:44
msgid "Yes, delete"
msgstr "Da, sterge"

#: deleteemail.php:49
msgid "Cancel"
msgstr "Anuleaza"

#: deleteemail.php:70
#, fuzzy
msgid "Emailadress deleted."
msgstr "Adresa de email"

#~ msgid "successfully changed Database...."
#~ msgstr "Adaugat cu succes Bazei de date"

#~ msgid "Add new admin user for domain"
#~ msgstr "Adauga un cont nou domeniului"

#~ msgid "Please select a domain first"
#~ msgstr "Selectati va rog mai inti un domeniu"

#~ msgid "Not yet supported, change will be ignored"
#~ msgstr "Nu este inca implementata, schimbarile vor fi ignorate"
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Free Software Foundation, Inc.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Web-cyradm\n"
"POT-Creation-Date: 2003-08-10 16:56+0200\n"
"PO-Revision-Date: 2003-10-08 20:59+0300\n"
"Last-Translator: Andrey Kolbasenko <egde@@gts.smtn.stavropol.ru>\n"
"Language-Team: Russian <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=koi8-r\n"
"Content-Transfer-Encoding: 8bit\n"

#: CVS/Base/browseaccounts.php:22 browseaccounts.php:22
msgid "Browse accounts for domain"
msgstr "ðÒÏÓÍÏÔÒ ÓÞÅÔÏ× ÄÌÑ ÄÏÍÅÎÁ"

#: CVS/Base/browseaccounts.php:34 adminuser.php:21 browse.php:66
#: browseaccounts.php:34 catchall.php:24 catchall.php:118
#: change_password.php:19 change_password.php:32 change_password.php:42
#: deleteaccount.php:83 deleteadminuser.php:74 deletedomain.php:17
#: editaccount.php:31 editdomain.php:37 editdomain.php:67 editemail.php:15
#: editemail.php:38 forwardalias.php:16 forwardalias.php:33 newaccount.php:26
#: newadminuser.php:137 newadminuser.php:215 newalias.php:26 newdomain.php:237
#: newemail.php:15 vacation.php:15 vacation.php:30 validate.inc.php:58
#: lib/crypto.php:30 lib/crypto.php:110 lib/crypto.php:149
#: forwardaccount.php:28 delete_catchall.php:23 deleteemail.php:62
msgid "Database error"
msgstr "ïÛÉÂËÁ ÂÁÚÙ ÄÁÎÎÙÈ"

#: CVS/Base/browseaccounts.php:48 browseaccounts.php:48 newaccount.php:68
msgid "Total accounts"
msgstr "÷ÓÅÇÏ ÓÞÅÔÏ×"

#: CVS/Base/browseaccounts.php:49 adminuser.php:36 browseaccounts.php:49
msgid "Displaying from position:"
msgstr "ðÏËÁÚ Ó ÐÏÚÉÃÉÉ:"

#: CVS/Base/browseaccounts.php:55 CVS/Base/browseaccounts.php:242
#: browseaccounts.php:55 browseaccounts.php:242 search.php:123 search.php:239
msgid "Add new account"
msgstr "äÏÂÁ×ÉÔØ ÎÏ×ÙÊ ÓÞÅÔ"

#: CVS/Base/browseaccounts.php:78 adminuser.php:65 aliases.php:56
#: browseaccounts.php:78 editalias.php:69 search.php:131 search.php:135
msgid "Previous 10 entries"
msgstr "ðÒÅÄÙÄÕÝÉÅ 10"

#: CVS/Base/browseaccounts.php:82 adminuser.php:69 aliases.php:57
#: browseaccounts.php:82 editalias.php:70 search.php:138 search.php:142
msgid "Next 10 entries"
msgstr "óÌÅÄÕÀÝÉÅ 10"

#: CVS/Base/browseaccounts.php:91 adminuser.php:78 aliases.php:64
#: browse.php:20 browseaccounts.php:91 editaccount.php:50 editalias.php:76
#: search.php:52 search.php:149 search.php:253
msgid "action"
msgstr "ÄÅÊÓÔ×ÉÑ"

#: CVS/Base/browseaccounts.php:96 aliases.php:65 browseaccounts.php:96
#: editaccount.php:54 newaccount.php:136 newalias.php:82 search.php:150
#: search.php:254
msgid "Email address"
msgstr "E-Mail ÁÄÒÅÓ"

#: CVS/Base/browseaccounts.php:96 browseaccounts.php:96 editaccount.php:63
#: login.php:61 search.php:151
msgid "Username"
msgstr "éÍÑ ÐÏÌØÚÏ×ÁÔÅÌÑ"

#: CVS/Base/browseaccounts.php:97 browseaccounts.php:97
msgid "Last login"
msgstr "ðÏÓÌÅÄÎÉÊ ×ÈÏÄ"

#: CVS/Base/browseaccounts.php:97 browseaccounts.php:97 editaccount.php:68
#: search.php:152
msgid "Quota used"
msgstr "ë×ÏÔÁ ÎÁ ÑÝÉË"

#: CVS/Base/browseaccounts.php:136 browseaccounts.php:136
msgid "n/a"
msgstr "n/a"

#: CVS/Base/browseaccounts.php:146 browseaccounts.php:146 search.php:171
msgid "Edit account"
msgstr "òÅÄÁËÔÉÒÏ×ÁÔØ ÓÞÅÔ"

#: CVS/Base/browseaccounts.php:151 browseaccounts.php:151
msgid "Change Password"
msgstr "ðÏÄÔ×ÅÒÄÉÔØ ÐÁÒÏÌØ"

#: CVS/Base/browseaccounts.php:155 browseaccounts.php:155 editaccount.php:58
#: editaccount.php:91
msgid "Forward"
msgstr "ðÅÒÅÓÌÁÔØ"

#: CVS/Base/browseaccounts.php:159 browseaccounts.php:159 search.php:172
msgid "Delete account"
msgstr "õÄÁÌÉÔØ ÓÞÅÔ"

#: CVS/Base/browseaccounts.php:163 browseaccounts.php:163 search.php:173
msgid "Set quota"
msgstr "õÓÔÁÎÏ×ÉÔØ Ë×ÏÔÕ"

#: CVS/Base/browseaccounts.php:167 browseaccounts.php:167 search.php:174
msgid "Set catch all"
msgstr "íÕÓÏÒ ÅÍÕ"

#: CVS/Base/browseaccounts.php:181 browseaccounts.php:181 search.php:190
msgid "Forwards"
msgstr "ðÅÒÅÎÁÐÒÁ×ÌÅÎÉÊ"

#: CVS/Base/browseaccounts.php:218 browseaccounts.php:218 editaccount.php:152
#: search.php:217
msgid "out of"
msgstr "ÉÚ"

#: CVS/Base/browseaccounts.php:221 browseaccounts.php:221 search.php:220
msgid "Unable to retrieve quota"
msgstr "îÅ×ÏÚÍÏÖÎÏ ×ÙÑÓÎÉÔØ Ë×ÏÔÕ"

#: CVS/Base/browseaccounts.php:224 browseaccounts.php:224 editaccount.php:155
#: search.php:223
msgid "Quota not set"
msgstr "ë×ÏÔÁ ÎÅ ÕÓÔÁÎÏ×ÌÅÎÁ"

#: CVS/Base/browseaccounts.php:236 browseaccounts.php:236 search.php:235
msgid "No accounts found"
msgstr "óÞÅÔÏ× ÎÅ ÎÁÊÄÅÎÏ"

#: adminuser.php:13
msgid "Browse admins"
msgstr "ðÒÏÓÍÏÔÒ ÁÄÍÉÎÏ×"

#: adminuser.php:35
msgid "Total administrators"
msgstr "÷ÓÅÇÏ ÁÄÍÉÎÉÓÔÒÁÔÏÒÏ×"

#: adminuser.php:43
msgid "Add administator"
msgstr "äÏÂÁ×ÉÔØ ÁÄÍÉÎÁ"

#: adminuser.php:82
msgid "Adminname"
msgstr "éÍÑ ÁÄÍÉÎÁ"

#: adminuser.php:86
msgid "domain"
msgstr "ÄÏÍÅÎ"

#: adminuser.php:90
msgid "admin type"
msgstr "ÔÉÐ ÁÄÍÉÎÁ"

#: adminuser.php:119
msgid "Edit adminuser"
msgstr "òÅÄÁËÔÉÒÏ×ÁÔØ ÁÄÍÉÎÁ"

#: adminuser.php:125
msgid "Delete adminuser"
msgstr "õÄÁÌÉÔØ ÁÄÍÉÎÁ"

#: adminuser.php:144
msgid "All domains"
msgstr "÷ÓÅ ÄÏÍÅÎÙ"

#: adminuser.php:148
msgid "None"
msgstr "îÉ ÏÄÎÏÇÏ"

#: adminuser.php:158 editadminuser.php:65 menu.inc.php:132 newadminuser.php:57
#: newadminuser.php:207
msgid "Superuser"
msgstr "óÕÐÅÒÐÏÌØÚÏ×ÁÔÅÌØ"

#: adminuser.php:160 editadminuser.php:76 menu.inc.php:134 newadminuser.php:61
#: newadminuser.php:209
msgid "Domain Master"
msgstr "íÁÓÔÅÒ äÏÍÅÎÁ"

#: adminuser.php:174
msgid "No accounts fount"
msgstr "óÞÅÔÏ× ÎÅ ÎÁÊÄÅÎÏ"

#: adminuser.php:181
msgid "Add administrator"
msgstr "äÏÂÁ×ÉÔØ ÁÄÍÉÎÁ"

#: aliases.php:11
msgid "Browse aliases for domain"
msgstr "ðÒÏÓÍÏÔÒ ÐÓÅ×ÄÏÎÉÍÏ× ÄÌÑ ÄÏÍÅÎÁ"

#: aliases.php:50
msgid "Total aliases"
msgstr "÷ÓÅÇÏ ÐÓÅ×ÄÏÎÉÍÏ×"

#: aliases.php:55
msgid "Add new alias"
msgstr "äÏÂÁ×ÉÔØ ÎÏ×ÙÊ ÐÓÅ×ÄÏÎÉÍ"

#: aliases.php:66 editalias.php:77 editemail.php:113 newemail.php:98
#: search.php:255
msgid "Destination"
msgstr "îÁÚÎÁÞÅÎÉÅ"

#: aliases.php:91 search.php:273
msgid "Edit Alias"
msgstr "òÅÄÁËÔÉÒÏ×ÁÎÉÅ ÐÓÅ×ÄÏÎÉÍÁ"

#: aliases.php:92 search.php:274
msgid "Delete Alias"
msgstr "õÄÁÌÅÎÉÅ ÐÓÅ×ÄÏÎÉÍÁ"

#: auth.inc.php:70
msgid "Web-cyradm is for authorized users only."
msgstr "ôÏÌØËÏ ÄÌÑ ÚÁÒÅÇÉÓÔÒÉÒÏ×ÁÎÎÙÈ ÐÏÌØÚÏ×ÁÔÅÌÅÊ"

#: auth.inc.php:71
msgid "Make sure you entered the right password."
msgstr "õÂÅÄÉÔÅÓØ, ÞÔÏ ×Ù ××ÅÌÉ ×ÅÒÎÙÊ ÐÁÒÏÌØ"

#: auth.inc.php:72
msgid "Push the back button in your browser to try again."
msgstr "äÌÑ ÔÏÇÏ ÞÔÏÂÙ ÐÏÐÙÔÁÔØÓÑ ÓÎÏ×Á, ÎÁÖÍÉÔÅ ËÎÏÐËÕ ×ÏÚ×ÒÁÔÁ × ×ÁÛÅÍ ÂÒÁÕÚÅÒÅ"

#: auth.inc.php:73
msgid " Your attempt to login has been stored."
msgstr "÷ÁÛÁ ÐÏÐÙÔËÁ ×ÈÏÄÁ ÂÙÌÁ ÚÁÆÉËÓÉÒÏ×ÁÎÁ"

#: browse.php:13
msgid "Browse domains"
msgstr "ðÒÏÓÍÏÔÒ ÄÏÍÅÎÏ×"

#: browse.php:24 search.php:53
msgid "domainname"
msgstr "éÍÑ ÄÏÍÅÎÁ"

#: browse.php:31 search.php:57
msgid "prefix"
msgstr "ÐÒÅÆÉËÓ"

#: browse.php:38 search.php:60
msgid "max Accounts"
msgstr "ÍÁËÓ. óÞÅÔÏ×"

#: browse.php:42 search.php:61
msgid "default quota per user"
msgstr "Ë×ÏÔÁ ÐÏ-ÕÍÏÌÞÁÎÉÀ"

#: browse.php:90 search.php:82
msgid "Edit Domain"
msgstr "òÅÄÁËÔÉÒÏ×ÁÔØ äÏÍÅÎ"

#: browse.php:91 search.php:83
msgid "Delete Domain"
msgstr "õÄÁÌÉÔØ äÏÍÅÎ"

#: browse.php:92 deletedomain.php:51 menu.inc.php:59 search.php:84
msgid "accounts"
msgstr "ÓÞÅÔÁ"

#: browse.php:93 menu.inc.php:68 search.php:85
msgid "Aliases"
msgstr "ðÓÅ×ÄÏÎÉÍÏ×"

#: catchall.php:13
msgid "Define a Account for receiving undefined addresses for domain"
msgstr "ïÐÒÅÄÅÌÉÔØ ÓÞÅÔ ÄÌÑ ÐÒÉÅÍÁ ÎÅÒÁÓÐÏÚÎÁÎÎÙÈ ÁÄÒÅÓÏ× ÄÌÑ ÄÏÍÅÎÁ"

#: catchall.php:38
msgid "Do you really want to define the user"
msgstr "÷Ù ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÈÏÔÉÔÅ ÏÐÒÅÄÅÌÉÔØ ÐÏÌØÚÏ×ÁÔÅÌÑ"

#: catchall.php:42
msgid "to receive all undefined emailaddresses"
msgstr "ÄÌÑ ÐÒÉÅÍÁ ×ÓÅÊ ÐÏÞÔÙ, ÐÒÉÛÅÄÛÅÊ ÎÁ ÎÅÓÕÝÅÓÔ×ÕÀÝÉÊ ÁÄÒÅÓ"

#: catchall.php:46
msgid "The currently defined user"
msgstr "ôÅËÕÝÉÊ ÐÏÌØÚÏ×ÁÔÅÌØ"

#: catchall.php:46
msgid "will not receiving any undefined emailaddresses anymore"
msgstr "ÎÅ ÂÕÄÅÔ ÂÏÌÅÅ ÐÏÌÕÞÁÔØ ×ÓÀ ÐÏÞÔÕ, ÐÒÉÛÅÄÛÕÀ ÎÁ ÎÅÓÕÝÅÓÔ×ÕÀÝÉÅ ÁÄÒÅÓÁ"

#: catchall.php:74
msgid "The user"
msgstr "ðÏÌØÚÏ×ÁÔÅÌØ"

#: catchall.php:74
msgid "is already defined to receive all undefined Emails."
msgstr "ÄÌÑ ÐÒÉÅÍÁ ÐÏÞÔÙ, ÐÒÉÛÅÄÛÅÊ ÎÁ ÎÅÓÕÝÅÓÔ×ÕÀÝÉÅ ÁÄÒÅÓÁ, ÕÖÅ ÏÐÒÅÄÅÌÅÎ"

#: catchall.php:76
msgid "Do you want to remove the function \"catch all\" for the account"
msgstr "÷Ù ÈÏÔÉÔÅ ÕÄÁÌÉÔØ ÆÕÎËÃÉÀ \"ÍÕÓÏÒ ÅÍÕ\" ÄÌÑ ÜÔÏÇÏ ÓÞÅÔÁ"

#: catchall.php:127 newadminuser.php:197
msgid "successfully added to Database"
msgstr "ÕÓÐÅÛÎÏ ÄÏÂÁ×ÌÅÎ × ÂÁÚÕ"

#: catchall.php:133 editdomain.php:56 editemail.php:53 newdomain.php:255
#: newemail.php:44 delete_catchall.php:37
msgid "Database error, please try again"
msgstr "ïÛÉÂËÁ ÂÁÚÙ ÄÁÎÎÙÈ, ÐÏÐÒÏÂÕÊÔÅ ÅÝÅ ÒÁÚ"

#: catchall.php:140 delete_catchall.php:44
msgid "Cancelled"
msgstr "ïÔÍÅÎÅÎÏ"

#: change_password.php:53
msgid "Password changed"
msgstr "ðÁÒÏÌØ ÉÚÍÅÎÅÎ "

#: change_password.php:56
msgid "Failure in changing password."
msgstr "îÅ ÐÏÌÕÞÉÌÏÓØ ÉÚÍÅÎÉÔØ ÐÁÒÏÌØ"

#: change_password.php:59 editadminuser.php:252
msgid "New passwords are not equal. Password not changed"
msgstr "îÏ×ÙÅ ÐÁÒÏÌÉ ÎÅ ÉÄÅÎÔÉÞÎÙ. óÍÅÎÁ ÐÁÒÏÌÅÊ ÎÅ ÐÒÏÉÚ×ÅÄÅÎÁ"

#: change_password.php:72
msgid "Change password for account"
msgstr "óÍÅÎÉÔØ ÐÁÒÏÌØ ÄÌÑ ÓÞÅÔÁ"

#: change_password.php:91
msgid "New password"
msgstr "îÏ×ÙÊ ÐÁÒÏÌØ"

#: change_password.php:101
msgid "Confirm new password"
msgstr "ðÏÄÔ×ÅÒÄÉÔÅ ÎÏ×ÙÊ ÐÁÒÏÌØ"

#: change_password.php:121 newaccount.php:243
msgid "Passwords do not match"
msgstr "ðÁÒÏÌÉ ÎÅ ÉÄÅÎÔÉÞÎÙ"

#: deleteaccount.php:25
msgid "Delete an Account from the System"
msgstr "õÄÁÌÉÔØ ÓÞÅÔ ÉÚ ÓÉÓÔÅÍÙ"

#: deleteaccount.php:29
msgid "Do you really want to delete the user "
msgstr "÷Ù ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÈÏÔÉÔÅ ÕÄÁÌÉÔØ ÐÏÌØÚÏ×ÁÔÅÌÑ"

#: deleteaccount.php:33
msgid "with all its defined Emailaddresses"
msgstr "ÓÏ ×ÓÅÍÉ ÅÇÏ E-Mail ÁÄÒÅÓÁÍÉ?"

#: deleteaccount.php:69 deleteadminuser.php:68 deletedomain.php:84
#: deleteemail.php:55
msgid "Action cancelled, nothing deleted"
msgstr "äÅÊÓÔ×ÉÅ ÏÔÍÅÎÅÎÏ, ÎÉÞÅÇÏ ÎÅ ÕÄÁÌÉÌÉ"

# Submit and cancel buttons
#: deleteaccount.php:100
msgid "User deleted"
msgstr "ðÏÌØÚÏ×ÁÔÅÌØ ÕÄÁÌÅÎ"

#: deleteaccount.php:111 deletedomain.php:175
msgid ""
"Security violation detected, action cancelled. Your attempt has been logged."
msgstr ""
"ïÂÎÁÒÕÖÅÎÏ ÎÁÒÕÛÅÎÉÅ ÚÁÝÉÔÙ, ÄÅÊÓÔ×ÉÅ ÏÔÍÅÎÅÎÏ. ÷ÁÛÁ ÐÏÐÙÔËÁ ÂÙÌÁ ÚÁÆÉËÓÉÒÏ×ÁÎÁ"

#: deleteadminuser.php:17
msgid "Delete an Admin account from the System"
msgstr "õÄÁÌÉÔØ áÄÍÉÎÉÓÔÒÁÔÏÒÁ ÉÚ ÓÉÓÔÅÍÙ"

#: deleteadminuser.php:21
msgid "Do you really want to delete the Domain supervisor"
msgstr "÷Ù ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÈÏÔÉÔÅ ÕÄÁÌÉÔØ íÁÓÔÅÒÁ äÏÍÅÎÁ"

#: deleteadminuser.php:90 editadminuser.php:276
msgid "At least one Superuser is needed for Web-cyradm"
msgstr "èÏÔÑ ÂÙ ÏÄÉÎ óÕÐÅÒÐÏÌØÚÏ×ÁÔÅÌØ ÎÅÏÂÈÏÄÉÍ ÄÌÑ Web-cyradm"

#: deleteadminuser.php:103
msgid "Admin user deleted"
msgstr "áÄÍÉÎÉÓÔÒÁÔÏÒ ÕÄÁÌÅÎ"

#: deleteadminuser.php:116 editadminuser.php:299 newadminuser.php:226
msgid "Security violation detected, nothing deleted, attempt has been logged"
msgstr ""
"ïÂÎÁÒÕÖÅÎÏ ÎÁÒÕÛÅÎÉÅ ÚÁÝÉÔÙ, ÎÉÞÅÇÏ ÎÅ ÕÄÁÌÅÎÏ. ÷ÁÛÁ ÐÏÐÙÔËÁ ÂÙÌÁ ÚÁÆÉËÓÉÒÏ×ÁÎÁ"

#: deletedomain.php:28
msgid "Delete a Domain from the System"
msgstr "õÄÁÌÉÔØ äÏÍÅÎ ÉÚ ÓÉÓÔÅÍÙ"

#: deletedomain.php:32
msgid "Do you really want to delete the Domain"
msgstr "÷Ù ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÈÏÔÉÔÅ ÕÄÁÌÉÔØ äÏÍÅÎ"

#: deletedomain.php:37
msgid "with all its defined accounts, admins, and emailaddresses"
msgstr "ÓÏ ×ÓÅÍÉ ÅÇÏ ÓÞÅÔÁÍÉ, ÁÄÍÉÎÁÍÉ É E-Mail ÁÄÒÅÓÁÍÉ"

#: deletedomain.php:43
msgid "This can take a while depending on how many account have to be deleted"
msgstr "üÔÏ ÚÁÊÍÅÔ ÎÅËÏÔÏÒÏÅ ×ÒÅÍÑ, × ÚÁ×ÉÓÉÍÏÓÔÉ ÏÔ ËÏÌÉÞÅÓÔ×Á ÓÞÅÔÏ×"

#: deletedomain.php:47
msgid "Your action will delete"
msgstr "÷ÁÛÅ ÄÅÊÓÔ×ÉÅ - ÕÄÁÌÉÔØ"

#: deletedomain.php:154 newadminuser.php:101
msgid "Domain"
msgstr "äÏÍÅÎ"

#: deletedomain.php:158
msgid "successfully deleted"
msgstr "ÕÓÐÅÛÎÏ ÕÄÁÌÅÎ"

#: deletealias.php:28
msgid "Please confirm you want to remove"
msgstr "ðÏÖÁÌÕÊÓÔÁ, ÐÏÄÔ×ÅÒÄÉÔÅ ÕÄÁÌÅÎÉÅ"

#: deletealias.php:28
msgid "from the alias"
msgstr "ÉÚ ÐÓÅ×ÄÏÎÉÍÏ×"

#: deletealias.php:30
msgid "Yes"
msgstr "äÁ"

#: deletealias.php:49
msgid "Please confirm you want to remove the alias"
msgstr "ðÏÖÁÌÕÊÓÔÁ, ÐÏÄÔ×ÅÒÄÉÔÅ ÕÄÁÌÅÎÉÅ ÐÓÅ×ÄÏÎÉÍÁ"

#: deletealias.php:77
msgid "Removed"
msgstr "õÄÁÌÅÎ"

#: deletealias.php:77
msgid "from"
msgstr "ÉÚ"

#: deletealias.php:85
msgid "Removed the alias"
msgstr "õÄÁÌÅÎ ÐÓÅ×ÄÏÎÉÍ"

#: editaccount.php:21
msgid "Email addresses defined for user"
msgstr "áÄÒÅÓÁ E-Mail, ËÏÔÏÒÙÅ ÉÍÅÅÔ ÐÏÌØÚÏ×ÁÔÅÌØ"

#: editaccount.php:42
msgid "New email address"
msgstr "îÏ×ÙÊ ÁÄÒÅÓ E-Mail"

#: editaccount.php:90
msgid "Edit Emailaddress"
msgstr "òÅÄÁËÔÉÒÏ×ÁÎÉÅ E-Mail ÁÄÒÅÓÁ"

#: editaccount.php:92
msgid "Vacation"
msgstr "CÏÏÂÝÅÎÉÅ Ï ËÁÎÉËÕÌÁÈ/ÏÔÐÕÓËÅ"

#: editaccount.php:93
msgid "Delete Emailaddress"
msgstr "õÄÁÌÅÎÉÅ E-Mail ÁÄÒÅÓÁ"

#: editadminuser.php:13
msgid "Change admin user for domain"
msgstr "óÍÅÎÉÔØ ÁÄÍÉÎÉÓÔÒÁÔÏÒÁ ÄÌÑ ÄÏÍÅÎÁ"

#: editadminuser.php:42 newaccount.php:106 newadminuser.php:36
msgid "Accountname"
msgstr "ðÏÌØÚÏ×ÁÔÅÌØ"

#: editadminuser.php:52 newadminuser.php:51
msgid "Admin Type"
msgstr "ôÉÐ ÁÄÍÉÎÉÓÔÒÁÔÏÒÁ"

#: editadminuser.php:84 login.php:71 newaccount.php:138 newadminuser.php:71
msgid "Password"
msgstr "ðÁÒÏÌØ"

#: editadminuser.php:100 newaccount.php:139 newadminuser.php:86
msgid "Confirm Password"
msgstr "ðÏÄÔ×ÅÒÄÉÔÅ ÐÁÒÏÌØ"

#: editadminuser.php:155
msgid "No Domain assigned yet"
msgstr "äÏÍÅÎ ÎÅ ÚÁËÒÅÐÌÅÎ"

#: editadminuser.php:165
msgid "Add new domain to this admin"
msgstr "äÏÂÁ×ÉÔØ ÎÏ×ÙÊ ÄÏÍÅÎ ÜÔÏÍÕ ÁÄÍÉÎÕ"

#: editadminuser.php:223
msgid "No such domain, create domain first"
msgstr "îÅÔ ÔÁËÏÇÏ ÄÏÍÅÎÁ, ÓÐÅÒ×Á ÅÇÏ ÎÅÏÂÈÏÄÉÍÏ ÓÏÚÄÁÔØ"

#: editadminuser.php:231
msgid "Admin already repsonsible for the domain"
msgstr "áÄÍÉÎ ÕÖÅ ÏÔ×ÅÞÁÅÔ ÚÁ ÄÏÍÅÎ"

#: editalias.php:27
msgid "There was an error adding $dest to $alias: "
msgstr "ïÛÉÂËÁ ÄÏÂÁ×ÌÅÎÉÑ $dest × $alias:"

#: editalias.php:64
msgid "Editing alias"
msgstr "òÅÄÁËÔÉÒÏ×ÁÎÉÅ ÐÓÅ×ÄÏÎÉÍÁ"

#: editalias.php:68
msgid "Delete this alias"
msgstr "õÄÁÌÅÎÉÅ ÐÓÅ×ÄÏÎÉÍÁ"

#: editalias.php:101
msgid "Cannot remove from account"
msgstr "îÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ ÉÚ ÓÞÅÔÁ"

#: editalias.php:105 editalias.php:109
msgid "Remove destination"
msgstr "õÄÁÌÉÔØ ÎÁÚÎÁÞÅÎÉÅ"

#: editalias.php:125
msgid "This alias has no destinations"
msgstr "ðÓÅ×ÄÏÎÉÍ ÎÅ ÉÍÅÅÔ ÎÁÚÎÁÞÅÎÉÊ"

#: editalias.php:142
msgid "New destination"
msgstr "îÏ×ÏÅ ÎÁÚÎÁÞÅÎÉÅ"

#: editdomain.php:46
msgid "Successfully changed domain"
msgstr "äÏÍÅÎ ÕÓÐÅÛÎÏ ÉÚÍÅÎÅÎ"

#: editdomain.php:92 newdomain.php:39
msgid "Domainname"
msgstr "éÍÑ ÄÏÍÅÎÁ"

#: editdomain.php:106 newdomain.php:57
msgid "Prefix"
msgstr "ðÒÅÆÉËÓ"

#: editdomain.php:123 newdomain.php:73
msgid "Allow Free Names"
msgstr "òÁÚÒÅÛÉÔØ ó×ÏÂÏÄÎÙÅ éÍÅÎÁ"

#: editdomain.php:141 newdomain.php:90
msgid "Allow Free Mail Addresses"
msgstr "òÁÚÒÅÛÉÔØ ó×ÏÂÏÄÎÙÅ E-Mail áÄÒÅÓÁ"

#: editdomain.php:159 newdomain.php:102
msgid "Maximum Accounts"
msgstr "íÁËÓÉÍÁÌØÎÏÅ ËÏÌ-×Ï ÓÞÅÔÏ×"

#: editdomain.php:173 newdomain.php:117
msgid "Default Quota in Kilobytes"
msgstr "ë×ÏÔÁ ÐÏ-ÕÍÏÌÞÁÎÉÀ × ëÂ"

#: editdomain.php:202
msgid "Your are not allowed to change domains!"
msgstr "÷ÁÍ ÚÁÐÒÅÝÅÎÏ ÉÚÍÅÎÑÔØ ÄÏÍÅÎÙ!"

#: editemail.php:46
msgid "Successfully changed"
msgstr "õÓÐÅÛÎÏ ÉÚÍÅÎÅÎ"

#: editemail.php:68
msgid ""
"You can't edit this email address with 'Allow Free Mail Addressess' set to "
"off!"
msgstr "÷Ù ÎÅ ÓÍÏÖÅÔÅ ÉÓÐÒÁ×ÉÔØ ÜÔÏÔ ÁÄÒÅÓ Ó ÏÔËÌÀÞÅÎÎÏÊ ÏÐÃÉÅÊ 'òÁÚÒÅÛÉÔØ "
"ó×ÏÂÏÄÎÙÅ éÍÅÎÁ!"

#: editemail.php:95 newemail.php:77
msgid "Emailaddress"
msgstr "E-Mail ÁÄÒÅÓ"

#: failed.php:66
msgid "Login failed"
msgstr "ïÛÉÂËÁ ×ÈÏÄÁ"

#: failed.php:71 login.php:51
msgid "This is only for authorized users"
msgstr "ôÏÌØËÏ ÄÌÑ ÚÁÒÅÇÉÓÔÒÉÒÏ×ÁÎÎÙÈ ÐÏÌØÚÏ×ÁÔÅÌÅÊ"

#: failed.php:76 logout.php:62 timeout.php:38
msgid "If you like to login click"
msgstr "åÓÌÉ ÈÏÔÉÔÅ ×ÏÊÔÉ - ÎÁÖÍÉÔÅ"

#: failed.php:78 logout.php:64 timeout.php:40
msgid "here"
msgstr "ÚÄÅÓØ"

#: forwardalias.php:68 forwardaccount.php:51
msgid "Forward set"
msgstr "ðÅÒÅÓÙÌËÁ ÕÓÔÁÎÏ×ÌÅÎÁ"

#: forwardalias.php:70
msgid "Failure in setting forward"
msgstr "îÅÕÄÁÞÁ ÐÒÉ ÕÓÔÁÎÏ×ËÅ ÁÄÒÅÓÁ ÐÅÒÅÓÙÌËÉ"

#: forwardalias.php:73
msgid "Wrong password"
msgstr "ðÏÄÔ×ÅÒÄÉÔØ ÐÁÒÏÌØ"

#: forwardalias.php:89 forwardalias.php:97 forwardalias.php:103
#: forwardalias.php:107 forwardaccount.php:57
msgid "Forwarding removed"
msgstr "ðÅÒÅÓÙÌËÁ ÕÄÁÌÅÎÁ"

#: forwardalias.php:91 forwardalias.php:99
msgid "Failure in removing forwarding"
msgstr "îÅ×ÏÚÍÏÖÎÏ ÕÄÁÌÉÔØ ÐÅÒÅÓÙÌËÕ"

#: forwardalias.php:111 vacation.php:79 vacation.php:107
msgid "Failed to login"
msgstr "îÅ ÕÄÁÌÏÓØ ×ÏÊÔÉ × ÓÉÓÔÅÍÕ"

#: forwardalias.php:123 vacation.php:119
msgid "Not possible"
msgstr "îÅ ×ÏÚÍÏÖÎÏ"

#: forwardalias.php:152
msgid ""
"You can't forward this email address with 'Allow Free Mail Addressess' set "
"to off!"
msgstr "÷Ù ÎÅ ÓÍÏÖÅÔÅ ÓÄÅÌÁÔØ ÐÅÒÅÎÁÐÒÁ×ÌÅÎÉÅ ÜÔÏÇÏ ÁÄÒÅÓÁ Ó ×ÙËÌÀÞÅÎÎÏÊ "
"ÏÐÃÉÅÊ 'òÁÚÒÅÛÉÔØ ó×ÏÂÏÄÎÙÅ E-Mail áÄÒÅÓÁ'!"

#: forwardalias.php:161
msgid "Forward for emailaddress"
msgstr "ðÅÒÅÓÙÌÁÔØ ÎÁ ÁÄÒÅÓ E-Mail"

#: forwardalias.php:204
msgid "Set forwarding to"
msgstr "õÓÔÁÎÏ×ÉÔØ ÐÅÒÅÓÙÌËÕ ÎÁ"

#: forwardalias.php:204
msgid "(Seperate multiple values with ,)"
msgstr "(òÁÚÄÅÌÉÔÅ ÎÅÓËÏÌØËÏ ÚÎÁÞÅÎÉÊ ÚÎÁËÏÍ ,)"

#: forwardalias.php:210 forwardaccount.php:125
msgid "Keep a copy in the user's mailbox"
msgstr "ïÓÔÁ×ÌÑÔØ ËÏÐÉÀ × ÐÏÞÔÏ×ÏÍ ÑÝÉËÅ ÐÏÌØÚÏ×ÁÔÅÌÑ"

#: forwardalias.php:215 forwardaccount.php:139
msgid "Remove forwarding"
msgstr "õÄÁÌÉÔØ ÐÅÒÅÎÁÐÒÁ×ÌÅÎÉÅ"

#: index.php:23
msgid "migrate.php exists! please delete or rename it"
msgstr "migrate.php ÓÕÝÅÓÔ×ÕÅÔ! ðÏÖÁÌÕÊÓÔÁ, ÕÄÁÌÉÔÅ ÉÌÉ ÐÅÒÅÉÍÅÎÕÊÔÅ ÅÇÏ"

#: index.php:138
msgid "web-cyradm has not yet been configured"
msgstr "web-cyradm ÎÅ ÏÔËÏÎÆÉÇÕÒÉÒÏ×ÁÎ"

#: index.php:141
msgid "Configuration steps:"
msgstr "ûÁÇÉ ËÏÎÆÉÇÕÒÁÃÉÉ:"

#: index.php:143
msgid "copy the config file that comes with the distribution: "
msgstr "ÓËÏÐÉÒÕÊÔÅ ÆÁÊÌ ËÏÎÆÉÇÕÒÁÃÉÉ, ËÏÔÏÒÙÊ ÉÄÅÔ Ó ÐÒÏÇÒÁÍÍÏÊ"

#: index.php:146
msgid "Edit the file config/conf.php to match your systems configuration"
msgstr "ïÔÒÅÄÁËÔÉÒÕÊÔÅ ÆÁÊÌ config/conf.php × ÓÏÏÔ×ÅÔÓ×ÉÉ Ó ×ÁÛÅÊ ÓÉÓÔÅÍÏÊ"

#: index.php:148
msgid ""
"Further information about how to configure Web-cyradm can be found at the "
"following website:"
msgstr "äÏÐÏÌÎÉÔÅÌØÎÁÑ ÉÎÆÏÒÍÁÃÉÑ Ï ËÏÎÆÉÇÕÒÁÃÉÉ Web-cyradm ÍÏÖÅÔ ÂÙÔØ "
"ÎÁÊÄÅÎÁ ÎÁ ÓÌÅÄÕÀÝÅÍ ×ÅÂÓÁÊÔÅ:"

#: login.php:50
msgid "Welcome to Web-cyradm"
msgstr "äÏÂÒÏ ÐÏÖÁÌÏ×ÁÔØ × Web-cyradm"

#: login.php:52
msgid "Please authenticate yourself"
msgstr "ðÏÖÁÌÕÊÓÔÁ ÐÒÅÄÓÔÁ×ØÔÅÓØ"

#: login.php:84
msgid "Select language"
msgstr "÷ÙÂÅÒÉÔÅ ÑÚÙË"

#: logout.php:52
msgid "Thank you for using Web-cyradm"
msgstr "óÐÁÓÉÂÏ ÚÁ ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÐÒÏÇÒÁÍÍÙ Web-cyradm"

#: logout.php:57
msgid "You are logged out"
msgstr "÷Ù ÐÏËÉÎÕÌÉ ÓÉÓÔÅÍÕ"

#: menu.inc.php:19
msgid "Superusers Menu"
msgstr "íÅÎÀ óÕÐÅÒÐÏÌØÚÏ×ÁÔÅÌÑ"

#: menu.inc.php:23
msgid "Domainmasters menu"
msgstr "íÅÎÀ ÁÄÍÉÎÉÓÔÒÁÔÏÒÁ ÄÏÍÅÎÁ"

#: menu.inc.php:31
msgid "add new domain"
msgstr "ÄÏÂÁ×ÉÔØ ÎÏ×ÙÊ ÄÏÍÅÎ"

#: menu.inc.php:38
msgid "browse domains"
msgstr "ÐÒÏÓÍÏÔÒ ÄÏÍÅÎÏ×"

#: menu.inc.php:45
msgid "adminusers"
msgstr "ÁÄÍÉÎÉÓÔÒÁÔÏÒÙ"

#: menu.inc.php:75
msgid "home"
msgstr "ÎÁ ÇÌÁ×ÎÕÀ"

#: menu.inc.php:82
msgid "logout"
msgstr "×ÙÊÔÉ"

#: menu.inc.php:90
msgid "Search"
msgstr "ðÏÉÓË"

#: menu.inc.php:114
msgid "Logged in as user"
msgstr "÷ÏÛÅÌ ËÁË ÐÏÌØÚÏ×ÁÔÅÌØ"

#: menu.inc.php:126
msgid "Your role is"
msgstr "÷ÁÛÉ ÐÒÁ×Á × ÓÉÓÔÅÍÅ"

#: menu.inc.php:144
msgid "Current domain is"
msgstr "ôÅËÕÝÉÊ ÄÏÍÅÎ"

#: menu.inc.php:150
msgid "No domain selected"
msgstr "äÏÍÅÎ ÎÅ ×ÙÂÒÁÎ"

#: newaccount.php:13
msgid "Add new Account to domain"
msgstr "úÁÒÅÇÉÓÔÒÉÒÏ×ÁÔØ ÎÏ×ÙÊ ÓÞÅÔ × ÄÏÍÅÎÅ"

#: newaccount.php:43 newalias.php:43
msgid "transport is not cyrus, unable to create account"
msgstr "ÔÒÁÎÓÐÏÒÔ ÎÅ cyrus, ÎÅ ÍÏÇÕ ÓÏÚÄÁÔØ ÓÞÅÔ "

#: newaccount.php:55
msgid "Sorry, no more account allowed for domain"
msgstr "ðÒÏÓÍÏÔÒ ÓÞÅÔÏ× ÄÌÑ ÄÏÍÅÎÁ"

#: newaccount.php:60
msgid "Maximum allowed accounts is"
msgstr "íÁËÓÉÍÁÌØÎÏÅ ËÏÌ-×Ï ÓÞÅÔÏ×"

#: newaccount.php:137
msgid "Quota"
msgstr "ë×ÏÔÁ"

#: newaccount.php:196
msgid "Sorry, the username already exists"
msgstr "éÚ×ÉÎÉÔÅ, ÐÏÌØÚÏ×ÁÔÅÌØ ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔ"

#: newaccount.php:221
msgid "Account successfully added to the Database"
msgstr "óÞÅÔ ÕÓÐÅÛÎÏ ÄÏÂÁ×ÌÅÎ × ÂÁÚÕ"

#: newaccount.php:234
msgid "Account succesfully added to the IMAP Subsystem"
msgstr "óÞÅÔ ÕÓÐÅÛÎÏ ÄÏÂÁ×ÌÅÎ × IMAP ÐÏÄÓÉÓÔÅÍÕ"

#: newadminuser.php:13
msgid "Add new administrator"
msgstr "äÏÂÁ×ÉÔØ ÎÏ×ÏÇÏ ÁÄÍÉÎÁ"

#: newadminuser.php:64
msgid "Select \"Superuser\" for all domains"
msgstr "÷ÙÂÅÒÉÔÅ \"óÕÐÅÒÐÏÌØÚÏ×ÁÔÅÌÑ\" ÄÌÑ ×ÓÅÈ ÄÏÍÅÎÏ×"

#: newadminuser.php:132
msgid "You must provide a username"
msgstr "÷Ù ÄÏÌÖÎÙ ÕËÁÚÁÔØ ÉÍÑ ÐÏÌØÚÏ×ÁÔÅÌÑ"

#: newadminuser.php:145
msgid "Passwords are empty or not equal."
msgstr "ðÁÒÏÌØ ÐÕÓÔ ÉÌÉ ÎÅ ÓÏ×ÐÁÄÁÅÔ"

#: newadminuser.php:157
msgid "Username already exist"
msgstr "éÍÑ ÐÏÌØÚÏ×ÁÔÅÌÑ ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔ"

#: newalias.php:15
msgid "Add new alias to domain"
msgstr "úÁÒÅÇÉÓÔÒÉÒÏ×ÁÔØ ÎÏ×ÙÊ ÐÓÅ×ÄÏÎÉÍ ÄÌÑ ÄÏÍÅÎÁ"

#: newalias.php:55
msgid "Sorry, no more alias allowed for domain"
msgstr "éÚ×ÉÎÉÔÅ, ÎÅÌØÚÑ ÎÁÚÎÁÞÉÔØ ÂÏÌØÛÅÅ ËÏÌÉÞÅÓÔ×Ï ÐÓÅ×ÄÏÎÉÍÏ× ÄÌÑ ÄÏÍÅÎÁ"

#: newalias.php:60
msgid "Maximum allowed aliases is"
msgstr "íÁËÓÉÍÁÌØÎÏÅ ËÏÌ-×Ï ÐÓÅ×ÄÏÎÉÍÏ×"

#: newdomain.php:15
msgid "Add new domain"
msgstr "äÏÂÁ×ÉÔØ ÎÏ×ÙÊ ÄÏÍÅÎ"

#: newdomain.php:140
msgid "Standard Mailboxes"
msgstr "ðÏÞÔÏ×ÙÅ ÑÝÉËÉ"

#: newdomain.php:146
msgid ""
"emailaddress where the default aliases should be mapped (empty means no "
"mapping)"
msgstr ""
"ðÏÞÔÏ×ÙÊ ÁÄÒÅÓ ËÕÄÁ ÄÏÌÖÎÙ ÕËÁÚÙ×ÁÔØ ÐÓÅ×ÄÏÎÉÍÙ ÐÏ ÕÍÏÌÞÁÎÉÀ (ÐÕÓÔÏ - ÎÅ "
"ÕËÁÚÙ×ÁÔØ ÎÉËÕÄÁ)"

#: newdomain.php:163
msgid "Mail transport"
msgstr "ðÏÞÔÏ×ÙÊ ÔÒÁÎÓÐÏÒÔ"

#: newdomain.php:166
msgid "Leave this as is, unless you know what you are doing"
msgstr ""
"ïÓÔÁ×ØÔÅ ÜÔÏ ËÁË ÅÓÔØ, ÉÚÍÅÎÑÊÔÅ ÅÓÌÉ ×Ù ÈÏÒÏÛÏ ÐÏÎÉÍÁÅÔÅ, ÞÔÏ ×Ù ÄÅÌÁÅÔÅ."

#: newdomain.php:187
msgid "Parameter"
msgstr "ðÁÒÁÍÅÔÒ"

#: newdomain.php:245 newemail.php:34
msgid "Successfully added"
msgstr "õÓÐÅÛÎÏ ÄÏÂÁ×ÌÅÎ"

#: newdomain.php:273
msgid "You are not allowed to add new domains"
msgstr "÷ÁÍ ÎÅÌØÚÑ ÚÁ×ÏÄÉÔØ ÎÏ×ÙÅ ÄÏÍÅÎÙ"

#: newemail.php:56
msgid "New emailaddress for user"
msgstr "îÏ×ÙÊ E-Mail ÁÄÒÅÓ ÄÌÑ ÐÏÌØÚÏ×ÁÔÅÌÑ"

#: search.php:48
msgid "Total domains matching"
msgstr "÷ÓÅÇÏ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÈ ÄÏÍÅÎÏ×"

#: search.php:110
msgid "Total users matching"
msgstr "÷ÓÅÇÏ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÈ ÐÏÌØÚÏ×ÁÔÅÌÅÊ"

#: search.php:118
msgid "Displaying from position"
msgstr "ðÏËÁÚ Ó ÐÏÚÉÃÉÉ"

#: search.php:245
msgid "Total aliases matching"
msgstr "÷ÓÅÇÏ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÉÈ ÐÓÅ×ÄÏÎÉÍÏ× "

#: search.php:247
msgid "No aliases found"
msgstr "ðÓÅ×ÄÏÎÉÍÏ× ÎÅ ÎÁÊÄÅÎÏ"

#: setquota.php:26
msgid "Setting individual Quota for user"
msgstr "õÓÔÁÎÏ×ËÁ ÉÎÄÉ×ÉÄÕÁÌØÎÏÊ Ë×ÏÔÙ"

#: setquota.php:58
msgid "Submit"
msgstr "ðÏÄÔ×ÅÒÄÉÔØ"

#: setquota.php:70
msgid "Quote for user"
msgstr "ë×ÏÔÁ ÄÌÑ ÐÏÌØÚÏ×ÁÔÅÌÑ"

#: setquota.php:74
msgid "changed to"
msgstr "ÉÍÅÎÅÎÁ ÎÁ"

#: timeout.php:33
msgid "Your session timed out"
msgstr "÷ÁÛÁ ÓÅÓÓÉÑ ÏÔËÌÀÞÅÎÁ ÐÏ ÔÁÊÍ-ÁÕÔÕ"

#: vacation.php:71
msgid "Vacation notice set"
msgstr "óÏÏÂÝÅÎÉÅ Ï ËÁÎÉËÕÌÁÈ/ÏÔÐÕÓËÅ ÕÓÔÁÎÏ×ÌÅÎÏ"

#: vacation.php:73
msgid "Failed to activate vacation"
msgstr "îÅ ÕÄÁÌÏÓØ ÁËÔÉ×ÉÚÉÒÏ×ÁÔØ  ÓÏÏÂÝÅÎÉÅ Ï ËÁÎÉËÕÌÁÈ/ÏÔÐÕÓËÅ"

#: vacation.php:76
msgid "Failure in modifying vacation notice"
msgstr "îÅ ÕÄÁÌÏÓØ ÍÏÄÉÆÉÃÉÒÏ×ÁÔØ ÓÏÏÂÝÅÎÉÅ Ï ËÁÎÉËÕÌÁÈ/ÏÔÐÕÓËÅ "

#: vacation.php:95
msgid "Vacation notice unset"
msgstr "óÏÏÂÝÅÎÉÅ Ï ËÁÎÉËÕÌÁÈ/ÏÔÐÕÓËÅ ×ÙËÌÀÞÅÎÏ"

#: vacation.php:97
msgid "Failure in unseting vacation notice"
msgstr "îÅ ÕÄÁÌÏÓØ ×ÙËÌÀÞÉÔØ ÓÏÏÂÝÅÎÉÅ Ï ËÁÎÉËÕÌÁÈ/ÏÔÐÕÓËÅ"

#: vacation.php:101
msgid "Vacation notice removed"
msgstr "óÏÏÂÝÅÎÉÅ Ï ËÁÎÉËÕÌÁÈ/ÏÔÐÕÓËÅ ÕÄÁÌÅÎÏ"

#: vacation.php:103
msgid "Failure in removing vacation notice"
msgstr "îÅ ÕÄÁÌÏÓØ ÕÄÁÌÉÔØ ÓÏÏÂÝÅÎÉÅ Ï ËÁÎÉËÕÌÁÈ/ÏÔÐÕÓËÅ "

#: vacation.php:142
msgid ""
"You can't set Vacation Message for this email address with 'Allow Free Mail "
"Addressess' set to off!"
msgstr "÷Ù ÎÅ ÓÍÏÖÅÔÅ ÕÓÔÁÎÏ×ÉÔØ ÓÏÏÂÝÅÎÉÅ Ï ËÁÎÉËÕÌÁÈ/ÏÔÐÕÓËÅ ÄÌÑ ÜÔÏÇÏ "
"e-mail ÁÄÒÅÓÁ c ÏÔËÌÀÞÅÎÎÏÊ ÏÐÃÉÅÊ 'òÁÚÒÅÛÉÔØ ó×ÏÂÏÄÎÙÅ áÄÒÅÓÁ E-Mail'!"

#: vacation.php:152
msgid "Vacation message for emailaddress"
msgstr "óÏÏÂÝÅÎÉÅ Ï ËÁÎÉËÕÌÁÈ/ÏÔÐÕÓËÅ ÄÌÑ ÄÁÎÎÏÇÏ e-mail"

#: vacation.php:174
msgid "Set vacation notice"
msgstr "õÓÔÁÎÏ×ÉÔØ ÓÏÏÂÝÅÎÉÅ Ï ËÁÎÉËÕÌÁÈ/ÏÔÐÕÓËÅ"

#: vacation.php:178
msgid "Remove vacation notice"
msgstr "õÄÁÌÉÔØ ÓÏÏÂÝÅÎÉÅ Ï ËÁÎÉËÕÌÁÈ/ÏÔÐÕÓËÅ"

#: validate.inc.php:74 validate.inc.php:87 validate.inc.php:134
#: validate.inc.php:249
msgid "Security violation detected, attempt logged"
msgstr "ïÂÎÁÒÕÖÅÎÏ ÎÁÒÕÛÅÎÉÅ ÚÁÝÉÔÙ. ÷ÁÛÁ ÐÏÐÙÔËÁ ÂÙÌÁ "
"ÚÁÐÒÏÔÏËÏÌÉÒÏ×ÁÎÁ"

#: validate.inc.php:130
msgid "Quota exeedes the maximum allowed quota for this domain."
msgstr "ë×ÏÔÁ ÐÒÅ×ÙÛÁÅÔ ÍÁËÓÉÍÁÌØÎÏ ÄÏÐÕÓÔÉÍÕÀ Ë×ÏÔÕ ÄÌÑ ÜÔÏÇÏ ÄÏÍÅÎÁ."

#: forwardaccount.php:77
msgid "Forward for account"
msgstr "÷ÓÅÇÏ ÓÞÅÔÏ×"

#: forwardaccount.php:93
msgid "Set forwarding to (one address per line)"
msgstr "õÓÔÁÎÏ×ÉÔØ ÐÅÒÅÓÙÌËÕ ÎÁ (ÏÄÉÎ ÁÄÒÅÓ ÎÁ ÓÔÒÏËÕ)"

#: delete_catchall.php:31
msgid "successfully deleted from the Database"
msgstr "ÕÓÐÅÛÎÏ ÕÄÁÌÅÎ ÉÚ ÂÁÚÙ ÄÁÎÎÙÈ"

#: deleteemail.php:16
msgid "Delete emailaddress from the System"
msgstr "õÄÁÌÉÔØ E-Mail ÁÄÒÅÓ ÉÚ ÓÉÓÔÅÍÙ"

#: deleteemail.php:23
msgid "Do you really want to delete the emailaddress for user"
msgstr "÷Ù ÄÅÊÓÔ×ÉÔÅÌØÎÏ ÈÏÔÉÔÅ ÕÄÁÌÉÔØ E-Mail ÁÄÒÅÓ ÐÏÌØÚÏ×ÁÔÅÌÑ"

# Submit and cancel buttons
#: deleteemail.php:44
msgid "Yes, delete"
msgstr "äÁ, ÕÄÁÌÉÔØ"

#: deleteemail.php:49
msgid "Cancel"
msgstr "ïÔÍÅÎÁ"

#: deleteemail.php:70
msgid "Emailaddress deleted."
msgstr "E-Mail ÁÄÒÅÓ ÕÄÁÌÅÎ"

#~ msgid "successfully changed Database...."
#~ msgstr "ÕÓÐÅÛÎÏ ÄÏÂÁ×ÌÅÎ × ÂÁÚÕ"

#~ msgid "Add new admin user for domain"
#~ msgstr "úÁÒÅÇÉÓÔÒÉÒÏ×ÁÔØ ÎÏ×ÙÊ ÓÞÅÔ × ÄÏÍÅÎÅ"

#~ msgid "Please select a domain first"
#~ msgstr "ÐÏÖÁÌÕÊÓÔÁ ×ÙÂÅÒÉÔÅ ÓÎÁÞÁÌÁ ÄÏÍÅÎ"

# Error messages
#~ msgid "Not yet supported, change will be ignored"
#~ msgstr "åÝÅ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ, ÉÚÍÅÎÅÎÉÑ ÂÕÄÕÔ ÐÒÏÉÇÎÏÒÉÒÏ×ÁÎÙ"
# translation of web-cyradm.po to Slovenian
# Copyright (C) 2003 Free Software Foundation, Inc.
# Gregor Odlazek <gregor@yellowtooth.com> 2003
# 
msgid ""
msgstr ""
"Project-Id-Version: web-cyradm\n"
"POT-Creation-Date: 2003-08-10 16:56+0200\n"
"PO-Revision-Date: 2003-10-08 00:54+0100\n"
"Last-Translator: Gregor Odlazek <gregor@yellowtooth.com>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-2\n"
"Content-Transfer-Encoding: 8bit\n"

#: CVS/Base/browseaccounts.php:22 browseaccounts.php:22
msgid "Browse accounts for domain"
msgstr "Seznam predalov za domeno"

#: CVS/Base/browseaccounts.php:34 adminuser.php:21 browse.php:66
#: browseaccounts.php:34 catchall.php:24 catchall.php:118
#: change_password.php:19 change_password.php:32 change_password.php:42
#: deleteaccount.php:83 deleteadminuser.php:74 deletedomain.php:17
#: editaccount.php:31 editdomain.php:37 editdomain.php:67 editemail.php:15
#: editemail.php:38 forwardalias.php:16 forwardalias.php:33 newaccount.php:26
#: newadminuser.php:137 newadminuser.php:215 newalias.php:26 newdomain.php:237
#: newemail.php:15 vacation.php:15 vacation.php:30 validate.inc.php:58
#: lib/crypto.php:30 lib/crypto.php:110 lib/crypto.php:149
#: forwardaccount.php:28 delete_catchall.php:23 deleteemail.php:62
msgid "Database error"
msgstr "Napaka z bazo podatkov"

#: CVS/Base/browseaccounts.php:48 browseaccounts.php:48 newaccount.php:68
msgid "Total accounts"
msgstr "©tevilo predalov"

#: CVS/Base/browseaccounts.php:49 adminuser.php:36 browseaccounts.php:49
msgid "Displaying from position:"
msgstr "Prikaz od ¹tevilke:"

#: CVS/Base/browseaccounts.php:55 CVS/Base/browseaccounts.php:242
#: browseaccounts.php:55 browseaccounts.php:242 search.php:123 search.php:239
msgid "Add new account"
msgstr "Dodaj predal"

#: CVS/Base/browseaccounts.php:78 adminuser.php:65 aliases.php:56
#: browseaccounts.php:78 editalias.php:69 search.php:131 search.php:135
msgid "Previous 10 entries"
msgstr "Prej¹njih 10"

#: CVS/Base/browseaccounts.php:82 adminuser.php:69 aliases.php:57
#: browseaccounts.php:82 editalias.php:70 search.php:138 search.php:142
msgid "Next 10 entries"
msgstr "Naslednjih 10"

#: CVS/Base/browseaccounts.php:91 adminuser.php:78 aliases.php:64
#: browse.php:20 browseaccounts.php:91 editaccount.php:50 editalias.php:76
#: search.php:52 search.php:149 search.php:253
msgid "action"
msgstr "ukaz"

#: CVS/Base/browseaccounts.php:96 aliases.php:65 browseaccounts.php:96
#: editaccount.php:54 newaccount.php:136 newalias.php:82 search.php:150
#: search.php:254
msgid "Email address"
msgstr "E-mail naslov"

#: CVS/Base/browseaccounts.php:96 browseaccounts.php:96 editaccount.php:63
#: login.php:61 search.php:151
msgid "Username"
msgstr "Uporabni¹ko ime"

#: CVS/Base/browseaccounts.php:97 browseaccounts.php:97
msgid "Last login"
msgstr "Zadnja prijava"

#: CVS/Base/browseaccounts.php:97 browseaccounts.php:97 editaccount.php:68
#: search.php:152
msgid "Quota used"
msgstr "Uporabljena kvota"

#: CVS/Base/browseaccounts.php:136 browseaccounts.php:136
msgid "n/a"
msgstr "n/p"

#: CVS/Base/browseaccounts.php:146 browseaccounts.php:146 search.php:171
msgid "Edit account"
msgstr "Uredi predal"

#: CVS/Base/browseaccounts.php:151 browseaccounts.php:151
msgid "Change Password"
msgstr "Spremeni geslo"

#: CVS/Base/browseaccounts.php:155 browseaccounts.php:155 editaccount.php:58
#: editaccount.php:91
msgid "Forward"
msgstr "Posredovanje (forward)"

#: CVS/Base/browseaccounts.php:159 browseaccounts.php:159 search.php:172
msgid "Delete account"
msgstr "Izbri¹i predal"

#: CVS/Base/browseaccounts.php:163 browseaccounts.php:163 search.php:173
msgid "Set quota"
msgstr "Nastavi kvoto"

#: CVS/Base/browseaccounts.php:167 browseaccounts.php:167 search.php:174
msgid "Set catch all"
msgstr "Nastavi lovljenje"

#: CVS/Base/browseaccounts.php:181 browseaccounts.php:181 search.php:190
#, fuzzy
msgid "Forwards"
msgstr "Posredovanje"

#: CVS/Base/browseaccounts.php:218 browseaccounts.php:218 editaccount.php:152
#: search.php:217
msgid "out of"
msgstr "od"

#: CVS/Base/browseaccounts.php:221 browseaccounts.php:221 search.php:220
msgid "Unable to retrieve quota"
msgstr "Kvote ni mo¾no ugotoviti"

#: CVS/Base/browseaccounts.php:224 browseaccounts.php:224 editaccount.php:155
#: search.php:223
msgid "Quota not set"
msgstr "Kvota ni nastavljena"

#: CVS/Base/browseaccounts.php:236 browseaccounts.php:236 search.php:235
msgid "No accounts found"
msgstr "Ni predalov"

#: adminuser.php:13
msgid "Browse admins"
msgstr "Seznam administratorjev"

#: adminuser.php:35
msgid "Total administrators"
msgstr "©tevilo administratorjev"

#: adminuser.php:43
msgid "Add administator"
msgstr "Dodaj administratorja"

#: adminuser.php:82
msgid "Adminname"
msgstr "Adminname"

#: adminuser.php:86
msgid "domain"
msgstr "domena"

#: adminuser.php:90
msgid "admin type"
msgstr "tip administratorja"

#: adminuser.php:119
msgid "Edit adminuser"
msgstr "Uredi administratorja"

#: adminuser.php:125
msgid "Delete adminuser"
msgstr "Izbri¹i administratorja"

#: adminuser.php:144
#, fuzzy
msgid "All domains"
msgstr "Vse domene"

#: adminuser.php:148
msgid "None"
msgstr "Nobeno"

#: adminuser.php:158 editadminuser.php:65 menu.inc.php:132 newadminuser.php:57
#: newadminuser.php:207
msgid "Superuser"
msgstr "Upravitelj sistema"

#: adminuser.php:160 editadminuser.php:76 menu.inc.php:134 newadminuser.php:61
#: newadminuser.php:209
msgid "Domain Master"
msgstr "Upravitelj domene"

#: adminuser.php:174
msgid "No accounts fount"
msgstr "Ni predalov"

#: adminuser.php:181
msgid "Add administrator"
msgstr "Dodaj administratorja"

#: aliases.php:11
msgid "Browse aliases for domain"
msgstr "Seznam aliasov za domeno"

#: aliases.php:50
msgid "Total aliases"
msgstr "©tevilo aliasov"

#: aliases.php:55
msgid "Add new alias"
msgstr "Dodaj alias"

#: aliases.php:66 editalias.php:77 editemail.php:113 newemail.php:98
#: search.php:255
msgid "Destination"
msgstr "Cilj"

#: aliases.php:91 search.php:273
msgid "Edit Alias"
msgstr "Uredi alias"

#: aliases.php:92 search.php:274
msgid "Delete Alias"
msgstr "Izbri¹i alias"

#: auth.inc.php:70
msgid "Web-cyradm is for authorized users only."
msgstr "Dostop le za uporabnike."

#: auth.inc.php:71
msgid "Make sure you entered the right password."
msgstr "Preprièajte se, da ste pravilno vnesli geslo."

#: auth.inc.php:72
msgid "Push the back button in your browser to try again."
msgstr "Kliknite gumb za nazaj in poskusite ponovno."

#: auth.inc.php:73
msgid " Your attempt to login has been stored."
msgstr "Va¹ poskus prijave je zabele¾en."

#: browse.php:13
msgid "Browse domains"
msgstr "Seznam domen"

#: browse.php:24 search.php:53
msgid "domainname"
msgstr "naziv domene"

#: browse.php:31 search.php:57
msgid "prefix"
msgstr "predpona (prefix)"

#: browse.php:38 search.php:60
msgid "max Accounts"
msgstr "max. ¹tevilo predalov"

#: browse.php:42 search.php:61
msgid "default quota per user"
msgstr "privzeta kvota na uporabnika"

#: browse.php:90 search.php:82
msgid "Edit Domain"
msgstr "Uredi domeno"

#: browse.php:91 search.php:83
msgid "Delete Domain"
msgstr "Izbri¹i domeno"

#: browse.php:92 deletedomain.php:51 menu.inc.php:59 search.php:84
msgid "accounts"
msgstr "predali"

#: browse.php:93 menu.inc.php:68 search.php:85
msgid "Aliases"
msgstr "Aliasi"

#: catchall.php:13
msgid "Define a Account for receiving undefined adresses for domain"
msgstr "Doloèi predal za lovljenje neobstojeèih naslovov za domeno"

#: catchall.php:38
msgid "Do you really want to define the user"
msgstr "Res ¾elite nastaviti uporabnika"

#: catchall.php:42
msgid "to receive all undefined emailadresses"
msgstr "za lovljenje vseh neobstojeèih e-mail naslovov"

#: catchall.php:46
msgid "The currently defined user"
msgstr "Trenutno izbrani uporabnik"

#: catchall.php:46
msgid "will not receiving any undefined emailadresses anymore"
msgstr "ne bo veè prejemal po¹te za neobstojeèe naslove"

#: catchall.php:74
msgid "The user"
msgstr "Uporabnik"

#: catchall.php:74
msgid "is allready defined to receive all undefined Emails."
msgstr "je ¾e izbran za prejemanje po¹te za neobstojeèe naslove."

#: catchall.php:76
msgid "Do you want to remove the function \"catch all\" for the account"
msgstr "Res ¾elite odstraniti fukcijo 'lovljenje' za predal"

#: catchall.php:127 newadminuser.php:197
msgid "successfully added to Database"
msgstr "uspe¹no dodan v bazo"

#: catchall.php:133 editdomain.php:56 editemail.php:53 newdomain.php:255
#: newemail.php:44 delete_catchall.php:37
msgid "Database error, please try again"
msgstr "Napaka z bazo podatkov, poskusite ponovno"

#: catchall.php:140 delete_catchall.php:44
msgid "Cancelled"
msgstr "Opu¹èeno"

#: change_password.php:53
msgid "Password changed"
msgstr "Geslo spremenjeno"

#: change_password.php:56
msgid "Failure in changing password."
msgstr "Napaka pri spreminjanju gesla."

#: change_password.php:59 editadminuser.php:252
msgid "New passwords are not equal. Password not changed"
msgstr "Novi gesli se ne ujemata. Geslo ni spremenjeno"

#: change_password.php:72
msgid "Change password for account"
msgstr "Spremeni geslo za predal"

#: change_password.php:91
msgid "New password"
msgstr "Novo geslo"

#: change_password.php:101
msgid "Confirm new password"
msgstr "Potrdi novo geslo"

#: change_password.php:121 newaccount.php:243
msgid "Passwords do not match"
msgstr "Gesli se ne ujemata"

#: deleteaccount.php:25
msgid "Delete an Account from the System"
msgstr "Izbri¹i predal iz sistema"

#: deleteaccount.php:29
msgid "Do you really want to delete the user "
msgstr "Res ¾elite izbrisati uporabnika "

#: deleteaccount.php:33
msgid "with all its defined Emailadresses"
msgstr "z vsemi njegovimi e-mail naslovi"

#: deleteaccount.php:69 deleteadminuser.php:68 deletedomain.php:84
#: deleteemail.php:55
msgid "Action cancelled, nothing deleted"
msgstr "Ukaz prekinjen, niè ni izbrisano"

#: deleteaccount.php:100
msgid "User deleted"
msgstr "Uporabnik izbrisan"

#: deleteaccount.php:111 deletedomain.php:175
msgid ""
"Security violation detected, action cancelled. Your attempt has been logged."
msgstr "Zaznana kr¹itev varnosti; ukaz prekinjen. Poskus je zabele¾en."

#: deleteadminuser.php:17
msgid "Delete an Admin account from the System"
msgstr "Izbri¹i aministratorski predal iz sistema"

#: deleteadminuser.php:21
msgid "Do you really want to delete the Domain supervisor"
msgstr "Res ¾elite izbrisati upravitelja domene"

#: deleteadminuser.php:90 editadminuser.php:276
msgid "At least one Superuser is needed for Web-cyradm"
msgstr "Web-cyradm potrebuje vsaj enenega upravitelja sistema"

#: deleteadminuser.php:103
msgid "Admin user deleted"
msgstr "Administrator izbrisan"

#: deleteadminuser.php:116 editadminuser.php:299 newadminuser.php:226
msgid "Security violation detected, nothing deleted, attempt has been logged"
msgstr "Zaznana kr¹itev varnosti; ukaz prekinjen. Poskus je zabele¾en."

#: deletedomain.php:28
msgid "Delete a Domain from the System"
msgstr "Izbri¹i domeno iz sistema"

#: deletedomain.php:32
msgid "Do you really want to delete the Domain"
msgstr "Res ¾elite izbrisati domeno"

#: deletedomain.php:37
msgid "with all its defined accounts, admins, and emailadresses"
msgstr "z vsemi predali, administratorji in e-mail naslovi"

#: deletedomain.php:43
msgid "This can take a while depending on how many account have to be deleted"
msgstr "Postopek lahko traja nekaj èasa; odvisno od ¹tevila predalov, "
"ki bodo izbrisani"

#: deletedomain.php:47
msgid "Your action will delete"
msgstr "Va¹ ukaz bo izbrisal"

#: deletedomain.php:154 newadminuser.php:101
msgid "Domain"
msgstr "Domena"

#: deletedomain.php:158
msgid "successfully deleted"
msgstr "uspe¹no izbrisana"

#: deletealias.php:28
msgid "Please confirm you want to remove"
msgstr "Prosim potrdite, da ¾elite odstraniti"

#: deletealias.php:28
msgid "from the alias"
msgstr "iz aliasov"

#: deletealias.php:30
msgid "Yes"
msgstr "Da"

#: deletealias.php:49
msgid "Please confirm you want to remove the alias"
msgstr "Res ¾elite odstraniti alias"

#: deletealias.php:77
msgid "Removed"
msgstr "Odstranjen"

#: deletealias.php:77
msgid "from"
msgstr "iz"

#: deletealias.php:85
msgid "Removed the alias"
msgstr "Odstranjen alias"

#: editaccount.php:21
msgid "Email adresses defined for user"
msgstr "E-mail naslovi za uporabnika"

#: editaccount.php:42
msgid "New email address"
msgstr "Nov e-mail naslov"

#: editaccount.php:90
msgid "Edit Emailadress"
msgstr "Uredi e-mail naslov"

#: editaccount.php:92
msgid "Vacation"
msgstr "Odsotnost"

#: editaccount.php:93
msgid "Delete Emailadress"
msgstr "Izbri¹i e-mail naslov"

#: editadminuser.php:13
msgid "Change admin user for domain"
msgstr "Spremeni administratorja domene"

#: editadminuser.php:42 newaccount.php:106 newadminuser.php:36
msgid "Accountname"
msgstr "Naziv predala"

#: editadminuser.php:52 newadminuser.php:51
msgid "Admin Type"
msgstr "Tip administratorja"

#: editadminuser.php:84 login.php:71 newaccount.php:138 newadminuser.php:71
msgid "Password"
msgstr "Geslo"

#: editadminuser.php:100 newaccount.php:139 newadminuser.php:86
msgid "Confirm Password"
msgstr "Potrdi geslo"

#: editadminuser.php:155
msgid "No Domain assigned yet"
msgstr "Izbrana ni nobena domena"

#: editadminuser.php:165
msgid "Add new domain to this admin"
msgstr "Dodaj novo domeno temu administratorju"

#: editadminuser.php:223
msgid "No such domain, create domain first"
msgstr "Domena ne obstaja, najprej kreirajte domeno"

#: editadminuser.php:231
msgid "Admin already repsonsible for the domain"
msgstr "Administrator je ¾e odgovoren za domeno"

#: editalias.php:27
msgid "There was an error adding $dest to $alias: "
msgstr "Napaka pri dodajanju $dest za $alias: "

#: editalias.php:64
msgid "Editing alias"
msgstr "Urejanje aliasa"

#: editalias.php:68
msgid "Delete this alias"
msgstr "Izbri¹i ta alias"

#: editalias.php:101
msgid "Cannot remove from account"
msgstr "Ni mo¾no odstraniti iz predala"

#: editalias.php:105 editalias.php:109
msgid "Remove destination"
msgstr "Odstrani cilj"

#: editalias.php:125
msgid "This alias has no destinations"
msgstr "Ta alias nima doloèenega cilja"

#: editalias.php:142
msgid "New destination"
msgstr "Nov cilj"

#: editdomain.php:46
msgid "Successfully changed domain"
msgstr "Uspe¹no spremenjena domena"

#: editdomain.php:92 newdomain.php:39
msgid "Domainname"
msgstr "Naziv domene"

#: editdomain.php:106 newdomain.php:57
msgid "Prefix"
msgstr "Predpona (prefix)"

#: editdomain.php:123 newdomain.php:73
msgid "Allow Free Names"
msgstr "Dovoli prosta imena"

#: editdomain.php:141 newdomain.php:90
msgid "Allow Free Mail Addresses"
msgstr "Dovoli proste e-mail naslove"

#: editdomain.php:159 newdomain.php:102
msgid "Maximum Accounts"
msgstr "Max. ¹tevilo predalov"

#: editdomain.php:173 newdomain.php:117
msgid "Default Quota in Kilobytes"
msgstr "Privzeta kvota v kB"

#: editdomain.php:202
msgid "Your are not allowed to change domains!"
msgstr "Nimate dovoljenja spreminjati domen!"

#: editemail.php:46
msgid "Successfully changed"
msgstr "Uspe¹no spremenjen"

#: editemail.php:68
msgid ""
"You can't edit this email address with 'Allow Free Mail Addressess' set to "
"off!"
msgstr "Ne morete spreminjati tega email naslova, "
"ker je opcija 'Dovoli proste e-mail naslove' izkljuèena!"

#: editemail.php:95 newemail.php:77
msgid "Emailadress"
msgstr "E-mail naslov"

#: failed.php:66
msgid "Login failed"
msgstr "Prijava ni uspela"

#: failed.php:71 login.php:51
msgid "This is only for authorized users"
msgstr "Dostop le za poobla¹èene uporabnike"

#: failed.php:76 logout.php:62 timeout.php:38
msgid "If you like to login click"
msgstr "Èe se ¾elite prijaviti, kliknite"

#: failed.php:78 logout.php:64 timeout.php:40
msgid "here"
msgstr "tukaj"

#: forwardalias.php:68 forwardaccount.php:51
msgid "Forward set"
msgstr "Posredovanje (forward) nastavljeno"

#: forwardalias.php:70
msgid "Failure in setting forward"
msgstr "Napaka pri nastavljanju posredovanja (forward)"

#: forwardalias.php:73
msgid "Wrong password"
msgstr "Napaèno geslo"

#: forwardalias.php:89 forwardalias.php:97 forwardalias.php:103
#: forwardalias.php:107 forwardaccount.php:57
msgid "Forwarding removed"
msgstr "Posredovanje (forward) odstranjeno"

#: forwardalias.php:91 forwardalias.php:99
msgid "Failure in removing forwarding"
msgstr "Napaka pri odstranjevanju posredovanja (forward)"

#: forwardalias.php:111 vacation.php:79 vacation.php:107
msgid "Failed to login"
msgstr "Prijava ni uspela"

#: forwardalias.php:123 vacation.php:119
msgid "Not possible"
msgstr "Ni mo¾no"

#: forwardalias.php:152
msgid ""
"You can't forward this email address with 'Allow Free Mail Addressess' set "
"to off!"
msgstr "Ne morete nastaviti posredovanja tega email naslova, "
"ker je opcija 'Dovoli proste e-mail naslove' izkljuèena!"

#: forwardalias.php:161
msgid "Forward for emailadress"
msgstr "Posredovanje (forward) za e-mail naslov"

#: forwardalias.php:204
msgid "Set forwarding to"
msgstr "Nastavi posredovanje (forward) do"

#: forwardalias.php:204
msgid "(Seperate multiple values with ,)"
msgstr "(loèite posamezne vrednosti z vejico)"

#: forwardalias.php:210 forwardaccount.php:125
msgid "Keep a copy in the user's mailbox"
msgstr "Hrani kopije v uporabnikovem predalu"

#: forwardalias.php:215 forwardaccount.php:139
msgid "Remove forwarding"
msgstr "Odstrani posredovanje (forward)"

#: index.php:23
msgid "migrate.php exists! please delete or rename it"
msgstr "migrate.php obstaja; izbri¹ite jo ali jo primenujte"

#: index.php:138
msgid "web-cyradm has not yet been configured"
msgstr "web-cyradm ¹e ni konfiguriran"

#: index.php:141
msgid "Configuration steps:"
msgstr "Koraki za konfiguracijo:"

#: index.php:143
msgid "copy the config file that comes with the distribution: "
msgstr "skopirajte konfiguracijsko datoteko (del distribucije):"

#: index.php:146
msgid "Edit the file config/conf.php to match your systems configuration"
msgstr "Spremenite datoteko config/conf.php, "
"da bo ustrezala kofiguraciji va¹ega sistema"

#: index.php:148
msgid ""
"Further information about how to configure Web-cyradm can be found at the "
"following website:"
msgstr "Nadaljnje informacije glede konfiguracije Web-cyradm lahko poi¹èete"
"na strani:"


#: login.php:50
msgid "Welcome to Web-cyradm"
msgstr "Dobrodo¹li v Web-cyradm"

#: login.php:52
msgid "Please authenticate yourself"
msgstr "Prosim, prijavite se"

#: login.php:84
msgid "Select language"
msgstr "Izberite jezik"

#: logout.php:52
msgid "Thank you for using Web-cyradm"
msgstr "Hvala, ker ste uporabili Web-cyradm"

#: logout.php:57
msgid "You are logged out"
msgstr "Odjavljeni ste"

#: menu.inc.php:19
msgid "Superusers Menu"
msgstr "Menu upravitelja sistema"

#: menu.inc.php:23
msgid "Domainmasters menu"
msgstr "Menu upravitelja domene"

#: menu.inc.php:31
msgid "add new domain"
msgstr "dodaj domeno"

#: menu.inc.php:38
msgid "browse domains"
msgstr "seznam domen"

#: menu.inc.php:45
msgid "adminusers"
msgstr "administratorji"

#: menu.inc.php:75
msgid "home"
msgstr "na zaèetek"

#: menu.inc.php:82
msgid "logout"
msgstr "odjava"

#: menu.inc.php:90
msgid "Search"
msgstr "I¹èi"

#: menu.inc.php:114
msgid "Logged in as user"
msgstr "Prijavljeni ste kot"

#: menu.inc.php:126
msgid "Your role is"
msgstr "Ste"

#: menu.inc.php:144
msgid "Current domain is"
msgstr "Trenutna domena je"

#: menu.inc.php:150
msgid "No domain selected"
msgstr "Izbrana ni nobena domena"

#: newaccount.php:13
msgid "Add new Account to domain"
msgstr "Dodaj nov predal za domeno"

#: newaccount.php:43 newalias.php:43
msgid "transport is not cyrus, unable to create account"
msgstr "transport ni cyrus, kreiranje predala ni mo¾no"

#: newaccount.php:55
msgid "Sorry, no more account allowed for domain"
msgstr "®al ni veè mo¾no dodati predala za domeno"

#: newaccount.php:60
msgid "Maximum allowed accounts is"
msgstr "Najveèje ¹tevilo dovoljenih predalov je"

#: newaccount.php:137
msgid "Quota"
msgstr "Kvota"

#: newaccount.php:196
msgid "Sorry, the username already exists"
msgstr "Uporabni¹ko ime ¾al ¾e obstaja"

#: newaccount.php:221
msgid "Account successfully added to the Database"
msgstr "Predal uspe¹no dodan v bazo"

#: newaccount.php:234
msgid "Account succesfully added to the IMAP Subsystem"
msgstr "Predal uspe¹no dodan v IMAP podsistem"

#: newadminuser.php:13
msgid "Add new administrator"
msgstr "Dodaj administratorja"

#: newadminuser.php:64
msgid "Select \"Superuser\" for all domains"
msgstr "Izberi \"upravitelja sistema\" za vse domene"

#: newadminuser.php:132
msgid "You must provide a username"
msgstr "Potreben je uporabni¹kega imena"

#: newadminuser.php:145
msgid "Passwords are empty or not equal."
msgstr "Gesli sta prazni ali pa se ne ujemata"

#: newadminuser.php:157
msgid "Username already exist"
msgstr "Uporabni¹ko ime ¾e obstaja"

#: newalias.php:15
msgid "Add new alias to domain"
msgstr "Dodaj nov alias za domeno"

#: newalias.php:55
msgid "Sorry, no more alias allowed for domain"
msgstr "®al ni veè mo¾no dodati aliasa za domeno"

#: newalias.php:60
msgid "Maximum allowed aliases is"
msgstr "Najve?je ¹tevilo dovoljenih aliasov je"

#: newdomain.php:15
msgid "Add new domain"
msgstr "Dodaj domeno"

#: newdomain.php:140
msgid "Standard Mailboxes"
msgstr "Standardni predali"

#: newdomain.php:146
msgid ""
"emailadress where the default aliases should be mapped (empty means no "
"mapping)"
msgstr ""
"e-mail naslov, kamor se preslikajo privzeti aliasi (pusti prazno, èe ni "
"preslikave)"

#: newdomain.php:163
msgid "Mail transport"
msgstr "Mail transport"

#: newdomain.php:166
msgid "Leave this as is, unless you know what you are doing"
msgstr "Pusti pri miru, razen èe ve¹, kaj dela¹"

#: newdomain.php:187
msgid "Parameter"
msgstr "Parameter"

#: newdomain.php:245 newemail.php:34
msgid "Successfully added"
msgstr "Uspe¹no dodan"

#: newdomain.php:273
msgid "You are not allowed to add new domains"
msgstr "Nimate dovoljenja dodajati domen"

#: newemail.php:56
msgid "New emailadress for user"
msgstr "Nov e-mail naslov za uporabnika"

#: search.php:48
msgid "Total domains matching"
msgstr "©tevilo ustreznih domen"

#: search.php:110
msgid "Total users matching"
msgstr "©tevilo ustreznih uporabnikov"

#: search.php:118
msgid "Displaying from position"
msgstr "Prikaz od ¹tevilke"

#: search.php:245
msgid "Total aliases matching"
msgstr "©tevilo ustreznih aliasov"

#: search.php:247
msgid "No aliases found"
msgstr "Ni aliasov"

#: setquota.php:26
msgid "Setting individual Quota for user"
msgstr "Nastavitev individualne kvote za uporabnika"

#: setquota.php:58
msgid "Submit"
msgstr "OK"

#: setquota.php:70
msgid "Quote for user"
msgstr "Kvota za uporabnika"

#: setquota.php:74
msgid "changed to"
msgstr "spremenjena v"

#: timeout.php:33
msgid "Your session timed out"
msgstr "Va¹a seja (session) je potekla"

#: vacation.php:71
msgid "Vacation notice set"
msgstr "Sporoèilo za odsotnost nastavljeno"

#: vacation.php:73
msgid "Failed to activate vacation"
msgstr "Aktiviranje odsotnosti ni uspelo"

#: vacation.php:76
msgid "Failure in modifying vacation notice"
msgstr "Sprememba sporoèila za odsotnost ni uspela"

#: vacation.php:95
msgid "Vacation notice unset"
msgstr "Sporoèilo za odsotnost odnastavljeno"

#: vacation.php:97
msgid "Failure in unseting vacation notice"
msgstr "Odnastavitev sporoèila za odsotnost ni uspela"

#: vacation.php:101
msgid "Vacation notice removed"
msgstr "Sporoèilo za odsotnost odstranjeno"

#: vacation.php:103
msgid "Failure in removing vacation notice"
msgstr "Odstranjevanje sporoèila za odsotnost ni uspelo"

#: vacation.php:142
msgid ""
"You can't set Vacation Message for this email address with 'Allow Free Mail "
"Addressess' set to off!"
msgstr "Temu e-mail naslovu ne morete nastaviti sporoèila za odsotnost, "
"ker je opcija 'Dovoli proste e-mail naslove' izkljuèena!"

#: vacation.php:152
msgid "Vacation message for emailadress"
msgstr "Sporoèilo za odsotnost za e-mail naslov"

#: vacation.php:174
msgid "Set vacation notice"
msgstr "Nastavi sporoèilo za odsotnost"

#: vacation.php:178
msgid "Remove vacation notice"
msgstr "Odstrani sporoèilo za odsotnost"

#: validate.inc.php:74 validate.inc.php:87 validate.inc.php:134
#: validate.inc.php:249
msgid "Security violation detected, attempt logged"
msgstr "Zaznana kr¹itev varnosti. Poskus je zabele¾en."

#: validate.inc.php:130
msgid "Quota exeedes the maximum allowed qutoa for this domain."
msgstr "Kvota presega max. dovoljeno kvoto za to domeno."

#: forwardaccount.php:77
msgid "Forward for account"
msgstr "Posredovanje (forward) za predal"

#: forwardaccount.php:93
msgid "Set forwarding to (one adress per line)"
msgstr "Nastavi posredovanje (forward) do (vsak naslov v svojo vrstico)"

#: delete_catchall.php:31
msgid "successfully deleted from the Database"
msgstr "uspe¹no izbrisan iz baze"

#: deleteemail.php:16
msgid "Delete emailadress from the System"
msgstr "Izbri¹i e-mail naslov iz sistema"

#: deleteemail.php:23
msgid "Do you really want to delete the emailadress for user"
msgstr "Res ¾elite izbrisati e-mail naslov za uporabnika"

#: deleteemail.php:44
msgid "Yes, delete"
msgstr "Da, izbri¹i"

#: deleteemail.php:49
msgid "Cancel"
msgstr "Opusti"

#: deleteemail.php:70
msgid "Emailadress deleted."
msgstr "E-mail naslov izbrisan"

#~ msgid "successfully changed Database...."
#~ msgstr "Baza podatkov uspe¹no spremenjena...."

#~ msgid "Please select a domain first"
#~ msgstr "Prosim, najprej izberite domeno"

#~ msgid "Not yet supported, change will be ignored"
#~ msgstr "Trenutno ni podprto, sprememba bo prezrta"

# Swedish translation of web-cyradm
# Copyright (C) 2003 Free Software Foundation, Inc.
# Anders Norrbring <anders@norrbring.se>, 2007.
#
msgid ""
msgstr ""
"Project-Id-Version: web-cyradm 0.5.5-svn\n"
"POT-Creation-Date: 2003-08-10 16:56+0200\n"
"PO-Revision-Date: 2007-01-08 20:31+0100\n"
"Last-Translator: Anders Norrbring <anders@norrbring.se>\n"
"Language-Team: Swedish <anders@norrbring.se>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Poedit-SourceCharset: iso-8859-1\n"

#: adminuser.php:15
msgid "Browse admins"
msgstr "Lista administrat&ouml;rer"

#: adminuser.php:33
msgid "Total administrators"
msgstr "Administrat&ouml;rer"

#: adminuser.php:34
#: browse.php:56
#: browseaccounts.php:42
msgid "Displaying from position:"
msgstr "Visar fr&aring;n position:"

#: adminuser.php:41
msgid "Add administator"
msgstr "Ny administrat&ouml;r"

#: adminuser.php:60
#: aliases.php:42
#: editalias.php:72
#: search.php:132
#: search.php:136
msgid "Previous 10 entries"
msgstr "F&ouml;reg&aring;ende 10 poster"

#: adminuser.php:64
#: aliases.php:43
#: editalias.php:73
#: search.php:139
#: search.php:143
msgid "Next 10 entries"
msgstr "N&auml;sta 10 poster"

#: adminuser.php:73
#: aliases.php:50
#: browse.php:103
#: browseaccounts.php:82
#: editaccount.php:52
#: editalias.php:79
#: search.php:53
#: search.php:150
#: search.php:261
msgid "action"
msgstr "&aring;tg&auml;rd"

#: adminuser.php:77
msgid "Adminname"
msgstr "Admin-namn"

#: adminuser.php:81
msgid "domain"
msgstr "dom&auml;n"

#: adminuser.php:85
msgid "admin type"
msgstr "admin-typ"

#: adminuser.php:112
msgid "Edit adminuser"
msgstr "Redigera admin"

#: adminuser.php:118
msgid "Delete adminuser"
msgstr "Ta bort admin"

#: adminuser.php:137
msgid "All domains"
msgstr "Alla dom&auml;ner"

#: adminuser.php:141
msgid "None"
msgstr "Ingen"

#: adminuser.php:151
#: editadminuser.php:61
#: menu.inc.php:143
#: newadminuser.php:60
#: newadminuser.php:174
msgid "Superuser"
msgstr "Superanv&auml;ndare"

#: adminuser.php:153
#: editadminuser.php:71
#: menu.inc.php:145
#: newadminuser.php:64
#: newadminuser.php:176
msgid "Domain Master"
msgstr "Dom&auml;nadmin"

#: aliases.php:13
msgid "Browse aliases for domain"
msgstr "Bl&auml;ddra bland alias efter dom&auml;n"

#: aliases.php:36
msgid "Total aliases"
msgstr "Totalt antal alias"

#: aliases.php:41
msgid "Add new alias"
msgstr "Nytt alias"

#: aliases.php:51
#: browseaccounts.php:86
#: editaccount.php:56
#: newaccount.php:194
#: newalias.php:84
#: search.php:151
#: search.php:262
msgid "Email address"
msgstr "E-postadress"

#: aliases.php:52
#: editalias.php:80
#: editemail.php:115
#: newemail.php:93
#: search.php:263
msgid "Destination"
msgstr "Destination"

#: aliases.php:70
#: search.php:281
msgid "Edit Alias"
msgstr "Redigera alias"

#: aliases.php:71
#: search.php:282
msgid "Delete Alias"
msgstr "Ta bort alias"

#: auth.inc.php:49
msgid "Web-cyradm is for authorized users only."
msgstr "Web-cyradm &auml;r endast till f&ouml;r auktoriserade anv&auml;ndare."

#: auth.inc.php:50
msgid "Make sure you entered the right password."
msgstr "F&ouml;rs&auml;kra dig om att du matat in r&auml;tt l&ouml;senord."

#: auth.inc.php:51
msgid "Push the back button in your browser to try again."
msgstr "Anv&auml;nd bak&aring;t-knappen i din webbl&auml;sare och f&ouml;rs&ouml;k igen."

#: auth.inc.php:52
msgid " Your attempt to login has been stored."
msgstr "Ditt inloggningsf&ouml;rs&ouml;k har lagrats."

#: browse.php:15
msgid "Browse domains"
msgstr "Bl&auml;ddra bland dom&auml;ner"

#: browse.php:50
#: browseaccounts.php:36
#: browseaccounts.php:121
#: browseaccounts.php:186
#: catchall.php:108
#: change_password.php:21
#: change_password.php:32
#: changeadminpasswd.php:97
#: delete_catchall.php:20
#: deleteaccount.php:82
#: deleteaccount.php:88
#: deleteaccount.php:94
#: deleteadminuser.php:70
#: deleteadminuser.php:77
#: deleteadminuser.php:84
#: deletedomain.php:19
#: deleteemail.php:58
#: editaccount.php:33
#: editadminuser.php:20
#: editadminuser.php:123
#: editadminuser.php:185
#: editadminuser.php:195
#: editadminuser.php:205
#: editadminuser.php:213
#: editadminuser.php:225
#: editadminuser.php:235
#: editadminuser.php:248
#: editdomain.php:44
#: editdomain.php:84
#: editemail.php:17
#: editemail.php:40
#: editservices.php:26
#: editservices.php:34
#: forwardaccount.php:30
#: forwardalias.php:18
#: forwardalias.php:35
#: init.php:12
#: newaccount.php:23
#: newaccount.php:53
#: newaccount.php:281
#: newaccount.php:287
#: newadminuser.php:137
#: newadminuser.php:143
#: newadminuser.php:151
#: newadminuser.php:158
#: newalias.php:28
#: newdomain.php:254
#: newemail.php:19
#: setquota.php:80
#: setquota.php:94
#: vacation.php:17
#: vacation.php:32
#: validate.inc.php:119
#: validate.inc.php:126
#: validate.inc.php:234
#: validate.inc.php:250
#: validate.inc.php:294
#: validate.inc.php:308
#: validate.inc.php:334
#: validate.inc.php:343
#: validate.inc.php:384
#: validate.inc.php:393
#: validate.inc.php:454
#: validate.inc.php:466
#: validate.inc.php:505
#: validate.inc.php:525
#: validate.inc.php:541
#: validate.inc.php:550
#: validate.inc.php:580
#: validate.inc.php:591
#: validate.inc.php:704
#: validate.inc.php:721
#: lib/crypto.php:30
#: lib/crypto.php:110
#: lib/crypto.php:160
msgid "Database error"
msgstr "Databasfel"

#: browse.php:55
msgid "Total Domains:"
msgstr "Antal dom&auml;ner:"

#: browse.php:66
#: newdomain.php:17
msgid "Add new domain"
msgstr "Ny dom&auml;n"

#: browse.php:78
#: browse.php:81
#: browseaccounts.php:60
#: browseaccounts.php:63
msgid "First entry"
msgstr "F&ouml;rsta post"

#: browse.php:79
#: browse.php:82
#: browseaccounts.php:61
#: browseaccounts.php:64
msgid "Previous entries"
msgstr "F&ouml;reg&aring;ende poster"

#: browse.php:86
#: browse.php:89
#: browseaccounts.php:68
#: browseaccounts.php:71
msgid "Next entries"
msgstr "N&auml;sta poster"

#: browse.php:87
#: browse.php:90
#: browseaccounts.php:69
#: browseaccounts.php:72
msgid "Last entry"
msgstr "Sista post"

#: browse.php:108
#: browse.php:109
#: search.php:54
msgid "domainname"
msgstr "dom&auml;nnamn"

#: browse.php:116
#: search.php:58
msgid "prefix"
msgstr "prefix"

#: browse.php:123
#: search.php:61
msgid "max Accounts"
msgstr "max konton"

#: browse.php:127
#: browse.php:128
msgid "Domain quota"
msgstr "Dom&auml;nkvot"

#: browse.php:132
#: browse.php:133
#: search.php:62
msgid "default quota per user"
msgstr "standardkvot per anv&auml;ndare"

#: browse.php:155
#: search.php:83
msgid "Edit Domain"
msgstr "Redigera dom&auml;n"

#: browse.php:156
#: search.php:84
msgid "Delete Domain"
msgstr "Ta bort dom&auml;n"

#: browse.php:174
#: browse.php:177
#: deletedomain.php:53
#: menu.inc.php:64
#: search.php:85
msgid "accounts"
msgstr "konton"

#: browse.php:186
#: browse.php:189
#: search.php:86
msgid "Aliases"
msgstr "Alias"

#: browse.php:219
#: browseaccounts.php:242
#: editaccount.php:157
#: editdomain.php:214
#: newdomain.php:143
#: search.php:231
msgid "Quota not set"
msgstr "Ingen kvot satt"

#: browseaccounts.php:25
msgid "Browse accounts for domain"
msgstr "Bl&auml;ddra bland konton efter dom&auml;n"

#: browseaccounts.php:41
#: newaccount.php:128
msgid "Total accounts"
msgstr "Konton"

#: browseaccounts.php:48
#: browseaccounts.php:302
#: search.php:124
#: search.php:247
msgid "Add new account"
msgstr "Nytt konto"

#: browseaccounts.php:90
#: editaccount.php:65
#: login.php:72
#: search.php:152
msgid "Username"
msgstr "Anv&auml;ndarnamn"

#: browseaccounts.php:94
msgid "Last login"
msgstr "F&ouml;reg&aring;ende inloggning"

#: browseaccounts.php:94
#: editaccount.php:70
#: search.php:153
msgid "Quota used"
msgstr "Anv&auml;nd kvot"

#: browseaccounts.php:101
msgid "services"
msgstr "tj&auml;nster"

#: browseaccounts.php:137
msgid "n/a"
msgstr "ej tillg."

#: browseaccounts.php:147
#: search.php:176
msgid "Edit account"
msgstr "Redigera konto"

#: browseaccounts.php:152
msgid "Services"
msgstr "Tj&auml;nster"

#: browseaccounts.php:157
#: search.php:177
msgid "Change Password"
msgstr "&Auml;ndra l&ouml;senord"

#: browseaccounts.php:161
#: editaccount.php:60
#: editaccount.php:93
#: search.php:179
msgid "Forward"
msgstr "Vidarbefodran"

#: browseaccounts.php:165
#: search.php:180
msgid "Delete account"
msgstr "Ta bort konto"

#: browseaccounts.php:169
#: search.php:181
msgid "Set quota"
msgstr "S&auml;tt kvot"

#: browseaccounts.php:173
#: search.php:182
msgid "Set catch all"
msgstr "S&auml;tt f&aring;nga-allt"

#: browseaccounts.php:191
#: search.php:198
msgid "Forwards"
msgstr "Vidarbefodran"

#: browseaccounts.php:233
#: editaccount.php:154
#: search.php:225
msgid "out of"
msgstr "av"

#: browseaccounts.php:239
#: search.php:228
msgid "Unable to retrieve quota"
msgstr "Kunde inte l&auml;sa kvot"

#: browseaccounts.php:296
#: search.php:243
msgid "No accounts found"
msgstr "Inga konton funna"

#: browseaccounts.php:314
#: catchall.php:130
#: delete_catchall.php:42
#: deleteaccount.php:117
#: deleteadminuser.php:103
#: newaccount.php:42
#: newaccount.php:102
#: newaccount.php:117
#: newaccount.php:317
#: newemail.php:122
#: setquota.php:170
msgid "Back"
msgstr "Tillbaka"

#: catchall.php:15
msgid "Define a Account for receiving undefined adresses for domain"
msgstr "Definiera ett konto f&ouml;r mottagning av odefinierade adresser i dom&auml;nen"

#: catchall.php:32
msgid "Do you really want to define the user"
msgstr "Vill du verkligen skapa anv&auml;ndaren"

#: catchall.php:36
msgid "to receive all undefined emailadresses"
msgstr "att ta emot alla odefinierade e-postadresser"

#: catchall.php:40
msgid "The currently defined user"
msgstr "Den nuvarande definierade anv&auml;ndaren"

#: catchall.php:40
msgid "will not receiving any undefined emailadresses anymore"
msgstr "kommer inte att ta emot n&aring;gra odefinierade e-postadresser mer"

#: catchall.php:68
msgid "The user"
msgstr "Anv&auml;ndaren"

#: catchall.php:68
msgid "is allready defined to receive all undefined Emails."
msgstr "&auml;r redan uppsatt att ta emot odefinierad e-post."

#: catchall.php:70
msgid "Do you want to remove the function \"catch all\" for the account"
msgstr "Vill du ta bort funktionen \"f&aring;nga allt\" fr&aring;n kontot"

#: catchall.php:112
#: newadminuser.php:164
msgid "successfully added to Database"
msgstr "till&auml;gg i databasen lyckades"

#: catchall.php:120
#: delete_catchall.php:32
msgid "Cancelled"
msgstr "Avbruten"

#: change_password.php:37
#: change_password.php:46
msgid "Password changed"
msgstr "L&ouml;senord &auml;ndrat"

#: change_password.php:40
msgid "Unknown error"
msgstr "Ok&auml;nt fel"

#: change_password.php:49
msgid "Failure in changing password."
msgstr "Kunde inte &auml;ndra l&ouml;senord."

#: change_password.php:59
#: changeadminpasswd.php:17
msgid "Change password for account"
msgstr "&Auml;ndra kontots l&ouml;senord"

#: change_password.php:76
msgid "New password"
msgstr "Nytt l&ouml;senord"

#: change_password.php:86
msgid "Confirm new password"
msgstr "Bekr&auml;fta nytt l&ouml;senord"

#: changeadminpasswd.php:28
msgid "Old Password"
msgstr "Gammalt l&ouml;senord"

#: changeadminpasswd.php:43
msgid "New Password"
msgstr "Nytt l&ouml;senord"

#: changeadminpasswd.php:59
#: editadminuser.php:95
#: newaccount.php:197
#: newadminuser.php:89
msgid "Confirm Password"
msgstr "Bekr&auml;fta l&ouml;senord"

#: changeadminpasswd.php:99
msgid "Password not changed"
msgstr "L&ouml;senord &auml;ndrades ej"

#: changeadminpasswd.php:101
msgid "Password successfully changed"
msgstr "L&ouml;senordet &auml;ndrat"

#: delete_catchall.php:24
msgid "successfully deleted from the Database"
msgstr "radering fr&aring;n databasen lyckades"

#: deleteaccount.php:20
msgid "Delete an Account from the System"
msgstr "Ta bort ett konto fr&aring;n systemet"

#: deleteaccount.php:24
msgid "Do you really want to delete the user "
msgstr "Vill du verkligen ta bort anv&auml;ndaren "

#: deleteaccount.php:28
msgid "with all its defined Emailadresses"
msgstr "med alla dess definierade e-postadresser"

#: deleteaccount.php:65
#: deleteadminuser.php:62
#: deletedomain.php:86
#: deleteemail.php:51
msgid "Action cancelled, nothing deleted"
msgstr "&Aring;tg&auml;rd avbruten, inget raderat"

#: deleteaccount.php:104
msgid "User deleted"
msgstr "Anv&auml;ndare raderad"

#: deleteadminuser.php:19
msgid "Delete an Admin account from the System"
msgstr "Ta bort ett admin-konto fr&aring;n systemet"

#: deleteadminuser.php:23
msgid "Do you really want to delete the Domain supervisor"
msgstr "Vill du verkligen radera dom&auml;nens administrat&ouml;r"

#: deleteadminuser.php:89
msgid "Admin user deleted"
msgstr "Administrat&ouml;r raderad"

#: deletealias.php:30
msgid "Please confirm you want to remove"
msgstr "Bekr&auml;fta att du vill ta bort"

#: deletealias.php:30
msgid "from the alias"
msgstr "fr&aring;n alias"

#: deletealias.php:49
msgid "Please confirm you want to remove the alias"
msgstr "Bekr&auml;fta att du vill ta bort aliaset"

#: deletealias.php:77
msgid "Removed"
msgstr "Borttaget"

#: deletealias.php:77
msgid "from"
msgstr "fr&aring;n"

#: deletealias.php:85
msgid "Removed the alias"
msgstr "Alias borttaget"

#: deletedomain.php:30
msgid "Delete a Domain from the System"
msgstr "Ta bort en dom&auml;n fr&aring;n systemet"

#: deletedomain.php:34
msgid "Do you really want to delete the Domain"
msgstr "Vill du verkligen radera dom&auml;nen"

#: deletedomain.php:39
msgid "with all its defined accounts, admins, and emailadresses"
msgstr "med alla dess konton, administrat&ouml;rer och e-postadresser"

#: deletedomain.php:45
msgid "This can take a while depending on how many account have to be deleted"
msgstr "Detta kan ta en stund beroende p&aring; hur m&aring;nga konton som m&aring;ste raderas"

#: deletedomain.php:49
msgid "Your action will delete"
msgstr "Ditt &aring;tg&auml;rd kommer att radera"

#: deletedomain.php:156
#: newadminuser.php:104
msgid "Domain"
msgstr "Dom&auml;nen"

#: deletedomain.php:160
msgid "successfully deleted"
msgstr "har raderats"

#: deletedomain.php:177
#: validate.inc.php:175
#: validate.inc.php:212
#: validate.inc.php:219
#: validate.inc.php:270
#: validate.inc.php:280
#: validate.inc.php:363
#: validate.inc.php:366
#: validate.inc.php:375
#: validate.inc.php:378
#: validate.inc.php:413
#: validate.inc.php:420
#: validate.inc.php:425
#: validate.inc.php:495
#: validate.inc.php:499
#: validate.inc.php:510
#: validate.inc.php:520
#: validate.inc.php:530
#: validate.inc.php:536
#: validate.inc.php:562
#: validate.inc.php:575
#: validate.inc.php:585
msgid "Security violation detected, action cancelled. Your attempt has been logged."
msgstr "S&auml;kerhetsbrott uppt&auml;ckt, &aring;tg&auml;rden avbruten. Ditt f&ouml;rs&ouml;k har loggats"

#: deleteemail.php:18
msgid "Delete emailadress from the System"
msgstr "Radera e-postadress fr&aring;n systemet"

#: deleteemail.php:25
msgid "Do you really want to delete the emailadress for user"
msgstr "Vill du verkligen ta bort e-postadressen fr&aring;n anv&auml;ndaren"

#: deleteemail.php:66
msgid "Emailadress deleted."
msgstr "E-postadress raderad."

#: display.php:17
msgid "Display preferences for"
msgstr "Visa inst&auml;llningar f&ouml;r"

#: display.php:26
msgid "No template definitions found, please check your config file"
msgstr "Inga malldefinitioner hittades, kontrollera din konfigurationsfil"

#: display.php:36
msgid "Color scheme"
msgstr "F&auml;rgschema"

#: display.php:58
msgid "Number of domains displayed on page"
msgstr "Antal dom&auml;ner att visa per sida"

#: display.php:74
msgid "Number of accounts displayed on page"
msgstr "Antal konton att visa per sida"

#: display.php:90
msgid "Quota usage warn level"
msgstr "Niv&aring; f&ouml;r kvotvarning"

#: display.php:121
msgid "Reload page"
msgstr "Ladda om sidan"

#: editaccount.php:23
msgid "Email addresses defined for user"
msgstr "E-postadresser definierade f&ouml;r anv&auml;ndare"

#: editaccount.php:44
msgid "New email address"
msgstr "Ny e-postadress"

#: editaccount.php:92
msgid "Edit Emailadress"
msgstr "Redigera e-postadress"

#: editaccount.php:94
msgid "Vacation"
msgstr "Semester"

#: editaccount.php:95
msgid "Delete Emailadress"
msgstr "Ta bort e-postadress"

#: editadminuser.php:26
msgid "Change admin user for domain"
msgstr "&Auml;ndra admin-anv&auml;ndare f&ouml;r dom&auml;nen"

#: editadminuser.php:39
#: newaccount.php:164
#: newadminuser.php:39
msgid "Accountname"
msgstr "Kontonamn"

#: editadminuser.php:49
#: newadminuser.php:54
msgid "Admin Type"
msgstr "Admintyp"

#: editadminuser.php:79
#: login.php:82
#: newaccount.php:196
#: newadminuser.php:74
msgid "Password"
msgstr "L&ouml;senord"

#: editadminuser.php:116
msgid "Responsible for all domains"
msgstr "Ansvarig f&ouml;r alla dom&auml;ner"

#: editadminuser.php:130
msgid "Responsible for the following domains:"
msgstr "Ansvarig f&ouml;r f&ouml;ljande dom&auml;ner:"

#: editadminuser.php:146
msgid "No Domain assigned yet"
msgstr "Ingen dom&auml;n tilldelad &auml;nnu"

#: editadminuser.php:153
msgid "Add new domain to this admin"
msgstr "L&auml;gg till ny dom&auml;n till denna administrat&ouml;r"

#: editalias.php:29
msgid "There was an error adding $dest to $alias: "
msgstr "Det gick inte att l&auml;gga till $dest till $alias: "

#: editalias.php:66
msgid "Editing alias"
msgstr "Redigerar alias"

#: editalias.php:70
msgid "Delete this alias"
msgstr "Ta bort detta alias"

#: editalias.php:71
msgid "Back to aliases"
msgstr "Tillbaka till alias"

#: editalias.php:104
msgid "Cannot remove from account"
msgstr "Kan inte ta bort fr&aring;n konto"

#: editalias.php:108
#: editalias.php:112
msgid "Remove destination"
msgstr "Ta bort destination"

#: editalias.php:128
msgid "This alias has no destinations"
msgstr "Detta alias har inga destinationer"

#: editalias.php:145
msgid "New destination"
msgstr "Ny destination"

#: editdomain.php:55
msgid "Successfully changed domain"
msgstr "Dom&auml;nen &auml;ndrad"

#: editdomain.php:65
#: editemail.php:55
#: newdomain.php:272
#: newemail.php:45
msgid "Database error, please try again"
msgstr "Databasfel, prova igen"

#: editdomain.php:111
#: newdomain.php:41
msgid "Domainname"
msgstr "Dom&auml;nnamn"

#: editdomain.php:125
#: newdomain.php:59
msgid "Prefix"
msgstr "Prefix"

#: editdomain.php:142
#: newdomain.php:75
msgid "Allow Free Names"
msgstr "Till&aring;t fria namn"

#: editdomain.php:160
#: newdomain.php:92
msgid "Allow Free Mail Addresses"
msgstr "Till&aring;t fria e-postadresser"

#: editdomain.php:178
#: newdomain.php:104
msgid "Maximum Accounts"
msgstr "Maximalt antal konton"

#: editdomain.php:192
#: newdomain.php:119
msgid "Default Quota in Kilobytes"
msgstr "Standardkvot i kilobytes"

#: editdomain.php:206
#: newdomain.php:134
msgid "Quota for Domain in Kilobytes"
msgstr "Kvot f&ouml;r dom&auml;n i kilobytes"

#: editdomain.php:236
msgid "Your are not allowed to change domains!"
msgstr "Du f&aring;r inte &auml;ndra dom&auml;ner!"

#: editemail.php:48
msgid "Successfully changed"
msgstr "&Auml;ndrad"

#: editemail.php:70
msgid "You can't edit this email address with 'Allow Free Mail Addressess' set to off!"
msgstr "Du kan inte &auml;ndra denna e-postadress med 'Till&aring;t fria adresser' avst&auml;ngt!"

#: editemail.php:97
#: newemail.php:77
msgid "Emailadress"
msgstr "E-postadress"

#: editservices.php:16
msgid "Edit services for user"
msgstr "Redigera tj&auml;nster f&ouml;r anv&auml;ndare"

#: editservices.php:68
msgid "Service"
msgstr "Tj&auml;nst"

#: editservices.php:69
msgid "Status"
msgstr "Status"

#: editservices.php:72
msgid "Fetch mail via IMAP client"
msgstr "H&auml;mta e-post via IMAP-klient"

#: editservices.php:76
msgid "Fetch mail via POP client"
msgstr "H&auml;mta e-post via POP-klient"

#: editservices.php:80
msgid "Set vacation message and filter rules with sieve"
msgstr "S&auml;tta semester- och filterregler via sieve"

#: editservices.php:85
msgid "Send E-Mails via smtp authentication"
msgstr "Skicka e-post via autentiserad SMTP"

#: editservices.php:90
msgid "Receive E-Mails via smtp"
msgstr "Ta emot e-post via SMTP"

#: editservices.php:109
msgid "Services successfully changed"
msgstr "Tj&auml;nster &auml;ndrades"

#: editservices.php:112
msgid "Back to accounts"
msgstr "Tillbaka till konton"

#: failed.php:61
msgid "Login failed"
msgstr "Kunde inte logga in"

#: failed.php:66
#: login.php:62
msgid "This is only for authorized users"
msgstr "Detta &auml;r bara till f&ouml;r auktoriserade anv&auml;ndare"

#: failed.php:71
#: logout.php:64
#: timeout.php:69
msgid "If you like to login click"
msgstr "Om du vill logga in, klicka"

#: failed.php:73
#: logout.php:66
#: timeout.php:71
msgid "here"
msgstr "h&auml;r"

#: forwardaccount.php:53
#: forwardalias.php:70
msgid "Forward set"
msgstr "Vidarbefodran satt"

#: forwardaccount.php:57
#: forwardalias.php:91
#: forwardalias.php:99
#: forwardalias.php:105
#: forwardalias.php:109
msgid "Forwarding removed"
msgstr "Vidarbefodran borttagen"

#: forwardaccount.php:77
msgid "Forward for account"
msgstr "Vidarbefodran f&ouml;r konto"

#: forwardaccount.php:93
msgid "Set forwarding to (one adress per line)"
msgstr "S&auml;tt vidarbefodran till (en adress per rad)"

#: forwardaccount.php:125
#: forwardalias.php:212
msgid "Keep a copy in the user's mailbox"
msgstr "Beh&aring;ll en kopia i anv&auml;ndarens brevl&aring;da"

#: forwardaccount.php:139
#: forwardalias.php:217
msgid "Remove forwarding"
msgstr "Ta bort vidarbefodran"

#: forwardalias.php:72
msgid "Failure in setting forward"
msgstr "Kunde inte s&auml;tta vidarbefodran"

#: forwardalias.php:75
msgid "Wrong password"
msgstr "Fel l&ouml;senord"

#: forwardalias.php:93
#: forwardalias.php:101
msgid "Failure in removing forwarding"
msgstr "Kunde inte ta bort vidarbefodran"

#: forwardalias.php:113
#: vacation.php:81
#: vacation.php:109
msgid "Failed to login"
msgstr "Kunde inte logga in"

#: forwardalias.php:125
#: vacation.php:121
msgid "Not possible"
msgstr "Ej m&ouml;jlig"

#: forwardalias.php:154
msgid "You can't forward this email address with 'Allow Free Mail Addressess' set to off!"
msgstr "Du kan inte vidarebefodra denna e-postadress med 'Till&aring;t fria adresser' avst&auml;ngd!"

#: forwardalias.php:163
msgid "Forward for emailadress"
msgstr "Vidarbefodran f&ouml;r e-postadress"

#: forwardalias.php:206
msgid "Set forwarding to"
msgstr "S&auml;tt vidarbefodran till"

#: forwardalias.php:206
msgid "(Seperate multiple values with ,)"
msgstr "(Separera flera v&auml;rden med ,)"

#: index.php:23
msgid "migrate.php exists! please delete or rename it"
msgstr "migrate.php existerar! Radera eller d&ouml;p om den"

#: index.php:152
msgid "web-cyradm has not yet been configured"
msgstr "web-cyradm har inte blivit konfigurerad &auml;n"

#: index.php:155
msgid "Configuration steps:"
msgstr "Konfigurationssteg:"

#: index.php:157
msgid "copy the config file that comes with the distribution: "
msgstr "kopiera konfigurationsfilen som kommer med distributionen: "

#: index.php:160
msgid "Edit the file config/conf.php to match your systems configuration"
msgstr "Redigera filen config/conf.php f&ouml;r att passa ditt systems konfiguration"

#: index.php:162
msgid "Further information about how to configure Web-cyradm can be found at the following website:"
msgstr "Ytterligare information om hur du konfigurerar Web-cyradm hittar du p&aring; f&ouml;ljande webbsajt:"

#: init.php:38
#: init.php:61
#: validate.inc.php:131
#: validate.inc.php:148
#: validate.inc.php:837
msgid "Security violation detected, attempt logged"
msgstr "S&auml;kerhetsbrott uppt&auml;ckt. Ditt f&ouml;rs&ouml;k har loggats"

#: login.php:61
msgid "Welcome to Web-cyradm"
msgstr "V&auml;lkommen till Web-cyradm"

#: login.php:63
msgid "Please authenticate yourself"
msgstr "Var v&auml;nlig att identifiera dig"

#: login.php:95
msgid "Select language"
msgstr "V&auml;lj spr&aring;k"

#: logout.php:54
msgid "Thank you for using Web-cyradm"
msgstr "Tack f&ouml;r att du anv&auml;nder Web-cyradm"

#: logout.php:59
msgid "You are logged out"
msgstr "Du &auml;r nu utloggad"

#: menu.inc.php:21
msgid "Superusers Menu"
msgstr "Superanv&auml;ndares meny"

#: menu.inc.php:25
msgid "Domainmasters menu"
msgstr "Dom&auml;nadmins meny"

#: menu.inc.php:28
#: menu.inc.php:101
msgid "Search"
msgstr "S&ouml;k"

#: menu.inc.php:36
msgid "add new domain"
msgstr "ny dom&auml;n"

#: menu.inc.php:43
msgid "browse domains"
msgstr "bl&auml;ddra dom&auml;ner"

#: menu.inc.php:50
msgid "adminusers"
msgstr "admin-anv&auml;ndare"

#: menu.inc.php:73
msgid "aliases"
msgstr "aliases"

#: menu.inc.php:80
msgid "home"
msgstr "hem"

#: menu.inc.php:86
msgid "settings"
msgstr "inst&auml;llningar"

#: menu.inc.php:93
msgid "logout"
msgstr "logga ut"

#: menu.inc.php:125
msgid "Logged in as user"
msgstr "Inloggad som anv&auml;ndare"

#: menu.inc.php:137
msgid "Your role is"
msgstr "Din roll &auml;r"

#: menu.inc.php:155
msgid "Current domain is"
msgstr "Nuvarande dom&auml;n &auml;r"

#: menu.inc.php:161
msgid "No domain selected"
msgstr "Ingen dom&auml;n vald"

#: newaccount.php:39
#: newalias.php:45
msgid "transport is not cyrus, unable to create account"
msgstr "Kan inte skapa kontot med annan transport &auml;n Cyrus"

#: newaccount.php:92
msgid "Sorry, no more account allowed for domain"
msgstr "Tyv&auml;rr, fler konton till&aring;ts inte f&ouml;r dom&auml;nen"

#: newaccount.php:97
msgid "Maximum allowed accounts is"
msgstr "Maximalt antal konton &auml;r"

#: newaccount.php:107
msgid "Sorry, no more disk space left for domain"
msgstr "Tyv&auml;rr, det finns inte mer diskutrymmer f&ouml;r dom&auml;nen"

#: newaccount.php:112
msgid "Quota is"
msgstr "Kvoten &auml;r"

#: newaccount.php:122
msgid "Add new Account to domain"
msgstr "Nytt konto i dom&auml;nen"

#: newaccount.php:195
msgid "Quota"
msgstr "Kvot"

#: newaccount.php:256
#: setquota.php:114
#: setquota.php:141
msgid "Quota exeeded"
msgstr "Kvoten &ouml;verskriden"

#: newaccount.php:258
#: setquota.php:116
msgid "New quota is"
msgstr "Ny kvot &auml;r"

#: newaccount.php:291
msgid "Account successfully added to the Database"
msgstr "Kontot har lagts till i databas"

#: newaccount.php:303
msgid "Account succesfully added to the IMAP Subsystem"
msgstr "Kontot har lagts till i IMAP servern"

#: newadminuser.php:19
msgid "Add new administrator"
msgstr "Ny administrat&ouml;r"

#: newadminuser.php:67
msgid "Select \"Superuser\" for all domains"
msgstr "V&auml;lj \"Superanv&auml;ndare\" f&ouml;r alla dom&auml;ner"

#: newalias.php:17
msgid "Add new alias to domain"
msgstr "Nytt alias f&ouml;r dom&auml;n"

#: newalias.php:57
msgid "Sorry, no more alias allowed for domain"
msgstr "Tyv&auml;rr, fler alias till&aring;ts inte f&ouml;r dom&auml;nen"

#: newalias.php:62
msgid "Maximum allowed aliases is"
msgstr "Maximalt antal alias &auml;r"

#: newdomain.php:157
msgid "Standard Mailboxes"
msgstr "Standardbrevl&aring;dor"

#: newdomain.php:163
msgid "emailadress where the default aliases should be mapped (empty means no mapping)"
msgstr "e-postadress dit standardalias ska mappas (tomt betyder ingen mappning)"

#: newdomain.php:181
msgid "Mail transport"
msgstr "E-post transport"

#: newdomain.php:184
msgid "Leave this as is, unless you know what you are doing"
msgstr "L&auml;mna detta som det &auml;r, s&aring;vida du inte vet vad du g&ouml;r"

#: newdomain.php:205
msgid "Parameter"
msgstr "Parameter"

#: newdomain.php:262
#: newemail.php:35
msgid "Successfully added"
msgstr "Tillagd"

#: newdomain.php:290
msgid "You are not allowed to add new domains"
msgstr "Du f&aring;r inte skapa nya dom&auml;ner"

#: newemail.php:56
msgid "New emailadress for user"
msgstr "Ny e-postadress f&ouml;r anv&auml;ndare"

#: search.php:49
msgid "Total domains matching"
msgstr "Antal matchande dom&auml;ner"

#: search.php:111
msgid "Total users matching"
msgstr "Antal matchande anv&auml;ndare"

#: search.php:119
msgid "Displaying from position"
msgstr "Visar fr&aring;n position"

#: search.php:253
msgid "Total aliases matching"
msgstr "Antal matchande alias"

#: search.php:255
msgid "No aliases found"
msgstr "Inga alias funna"

#: setquota.php:32
msgid "Setting individual Quota for user"
msgstr "S&auml;tter individuell kvot f&ouml;r anv&auml;ndare"

#: setquota.php:64
msgid "Submit"
msgstr "Skicka"

#: setquota.php:127
#: setquota.php:152
msgid "Quote for user"
msgstr "Kvot f&ouml;r anv&auml;ndare"

#: setquota.php:131
#: setquota.php:156
msgid "changed to"
msgstr "&auml;ndrad till"

#: setquota.php:143
msgid "Quota NOT changed"
msgstr "Kvoten INTE &auml;ndrad"

#: settings.php:17
msgid "Administration Settings"
msgstr "Administrationsinst&auml;llningar"

#: settings.php:23
msgid "Display Preferences"
msgstr "Visningsinst&auml;llningar"

#: settings.php:30
msgid "You can set all administrative settings."
msgstr "H&auml;r &auml;ndrar du de administrativa inst&auml;llningarna."

#: settings.php:34
msgid "You can change the way that Web-cyradm displays information to you."
msgstr "H&auml;r &auml;ndrar du utseendet p&aring; Web-cyradms visning"

#: settings.php:43
msgid "Change password"
msgstr "&Auml;ndra l&ouml;senord"

#: settings.php:53
msgid "Use this to change your admin password."
msgstr "Anv&auml;nd detta f&ouml;r att &auml;ndra ditt admin l&ouml;senord."

#: timeout.php:64
msgid "Your session timed out"
msgstr "Din session har g&aring;tt ut"

#: vacation.php:73
msgid "Vacation notice set"
msgstr "Semestermeddelande satt"

#: vacation.php:75
msgid "Failed to activate vacation"
msgstr "Kunde inte aktivera semester"

#: vacation.php:78
msgid "Failure in modifying vacation notice"
msgstr "Kunde inte &auml;ndra semestermeddelande"

#: vacation.php:97
msgid "Vacation notice unset"
msgstr "Semestermeddelande ej satt"

#: vacation.php:99
msgid "Failure in unseting vacation notice"
msgstr "Kunde inte deaktivera semestermeddelande"

#: vacation.php:103
msgid "Vacation notice removed"
msgstr "Semestermeddelande borttaget"

#: vacation.php:105
msgid "Failure in removing vacation notice"
msgstr "Kunde inte ta bort semestermeddelande"

#: vacation.php:144
msgid "You can't set Vacation Message for this email address with 'Allow Free Mail Addressess' set to off!"
msgstr "Du kan inte s&auml;tta semestermeddelande f&ouml;r denna e-postadress med 'Till&aring;t fria adresser' avst&auml;ngt!"

#: vacation.php:154
msgid "Vacation message for emailadress"
msgstr "Semestermeddelande f&ouml;r e-postadress"

#: vacation.php:176
msgid "Set vacation notice"
msgstr "S&auml;tt semestermeddelande"

#: vacation.php:180
msgid "Remove vacation notice"
msgstr "Ta bort semestermeddelande"

#: validate.inc.php:190
#: validate.inc.php:208
#: validate.inc.php:266
#: validate.inc.php:359
#: validate.inc.php:783
#: validate.inc.php:786
#: validate.inc.php:795
#: validate.inc.php:798
#: validate.inc.php:807
msgid "Security violation detected, nothing deleted, attempt has been logged"
msgstr "S&auml;kerhetsbrott uppt&auml;ckt, ingenting raderat. Ditt f&ouml;rs&ouml;k har loggats"

#: validate.inc.php:222
#: validate.inc.php:273
#: validate.inc.php:283
msgid "You must provide a username"
msgstr "Du m&aring;ste ange ett anv&auml;ndarnamn"

#: validate.inc.php:225
#: validate.inc.php:286
#: validate.inc.php:430
#: validate.inc.php:638
msgid "Password incorrect"
msgstr "Felaktigt l&ouml;senord"

#: validate.inc.php:228
#: validate.inc.php:289
#: validate.inc.php:641
#: validate.inc.php:739
msgid "New passwords are not equal. Password not changed"
msgstr "De nya l&ouml;senorden &auml;r inte lika. L&ouml;senordet of&ouml;r&auml;ndrat"

#: validate.inc.php:238
msgid "Username already exist"
msgstr "Anv&auml;ndarnamnet finns redan"

#: validate.inc.php:244
#: validate.inc.php:328
msgid "Invalid domain name"
msgstr "Ogiltigt dom&auml;nnamn"

#: validate.inc.php:254
#: validate.inc.php:338
msgid "No such domain"
msgstr "Ingen s&aring;dan dom&auml;n"

#: validate.inc.php:316
#: validate.inc.php:401
msgid "At least one Superuser is needed for Web-cyradm"
msgstr "&Aring;tminstonne en superanv&auml;ndare beh&ouml;vs f&ouml;r Web-cyradm"

#: validate.inc.php:346
msgid "Admin already repsonsible for the domain"
msgstr "Administrat&ouml;ren &auml;r redan ansvarig f&ouml;r dom&auml;nen"

#: validate.inc.php:433
msgid "Passwords do not match"
msgstr "L&ouml;senorden matchar ej"

#: validate.inc.php:436
#: validate.inc.php:609
msgid "Invalid email adress"
msgstr "Ogiltig e-postadress"

#: validate.inc.php:439
msgid "Invalid username"
msgstr "Ogiltigt anv&auml;ndarnamn"

#: validate.inc.php:459
msgid "Sorry, the username already exists"
msgstr "Tyv&auml;rr, anv&auml;ndarnamnet finns redan"

#: validate.inc.php:471
msgid "Sorry, the emailadress already exists"
msgstr "Tyv&auml;rr, e-postadressen finns redan"

#: validate.inc.php:486
#: validate.inc.php:556
msgid "Quota exeedes the maximum allowed quota for this domain."
msgstr "Kvoten &ouml;verstiger h&ouml;gsta till&aring;tna kvot f&ouml;r denna dom&auml;n."

#: validate.inc.php:605
msgid "Invalid destination"
msgstr "Ogiltig destination"

msgid "No accounts fount"
msgstr "Inga konton funna"

msgid "Add administrator"
msgstr "Ny administrat&ouml;r"

msgid "Yes"
msgstr "Ja"

msgid "Email adresses defined for user"
msgstr "E-postadress skapad f&ouml;r anv&auml;ndare"

msgid "No such domain, create domain first"
msgstr "En s&aring;dan dom&auml;n finns inte, skapa den f&ouml;rst"

msgid "Passwords are empty or not equal."
msgstr "L&ouml;senorden &auml;r tomma eller ej lika."

msgid "Yes, delete"
msgstr "Ja, radera"

msgid "Cancel"
msgstr "Avbryt"

msgid "Change"
msgstr "&Auml;ndra"

cs=Czech
da=Danish
de=German
es=Spanish
fr=French
hu=Hungarian
no=Norwegian
nl=Dutch
it=Italian
pl=Polish
pt=Portuguese
ro=Romanian
ru=Russian
sl=Slovenian
sv=Swedish
tr=Turkish
zh_CN=Chinese Simplified

# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2003-08-10 16:56+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"

#: CVS/Base/browseaccounts.php:22 browseaccounts.php:22
msgid "Browse accounts for domain"
msgstr ""

#: CVS/Base/browseaccounts.php:34 adminuser.php:21 browse.php:66
#: browseaccounts.php:34 catchall.php:24 catchall.php:118
#: change_password.php:19 change_password.php:32 change_password.php:42
#: deleteaccount.php:83 deleteadminuser.php:74 deletedomain.php:17
#: editaccount.php:31 editdomain.php:37 editdomain.php:67 editemail.php:15
#: editemail.php:38 forwardalias.php:16 forwardalias.php:33 newaccount.php:26
#: newadminuser.php:137 newadminuser.php:215 newalias.php:26 newdomain.php:237
#: newemail.php:15 vacation.php:15 vacation.php:30 validate.inc.php:58
#: lib/crypto.php:30 lib/crypto.php:110 lib/crypto.php:149
#: forwardaccount.php:28 delete_catchall.php:23 deleteemail.php:62
msgid "Database error"
msgstr ""

#: CVS/Base/browseaccounts.php:48 browseaccounts.php:48 newaccount.php:68
msgid "Total accounts"
msgstr ""

#: CVS/Base/browseaccounts.php:49 adminuser.php:36 browseaccounts.php:49
msgid "Displaying from position:"
msgstr ""

#: CVS/Base/browseaccounts.php:55 CVS/Base/browseaccounts.php:242
#: browseaccounts.php:55 browseaccounts.php:242 search.php:123 search.php:239
msgid "Add new account"
msgstr ""

#: CVS/Base/browseaccounts.php:78 adminuser.php:65 aliases.php:56
#: browseaccounts.php:78 editalias.php:69 search.php:131 search.php:135
msgid "Previous 10 entries"
msgstr ""

#: CVS/Base/browseaccounts.php:82 adminuser.php:69 aliases.php:57
#: browseaccounts.php:82 editalias.php:70 search.php:138 search.php:142
msgid "Next 10 entries"
msgstr ""

#: CVS/Base/browseaccounts.php:91 adminuser.php:78 aliases.php:64
#: browse.php:20 browseaccounts.php:91 editaccount.php:50 editalias.php:76
#: search.php:52 search.php:149 search.php:253
msgid "action"
msgstr ""

#: CVS/Base/browseaccounts.php:96 aliases.php:65 browseaccounts.php:96
#: editaccount.php:54 newaccount.php:136 newalias.php:82 search.php:150
#: search.php:254
msgid "Email address"
msgstr ""

#: CVS/Base/browseaccounts.php:96 browseaccounts.php:96 editaccount.php:63
#: login.php:61 search.php:151
msgid "Username"
msgstr ""

#: CVS/Base/browseaccounts.php:97 browseaccounts.php:97
msgid "Last login"
msgstr ""

#: CVS/Base/browseaccounts.php:97 browseaccounts.php:97 editaccount.php:68
#: search.php:152
msgid "Quota used"
msgstr ""

#: CVS/Base/browseaccounts.php:136 browseaccounts.php:136
msgid "n/a"
msgstr ""

#: CVS/Base/browseaccounts.php:146 browseaccounts.php:146 search.php:171
msgid "Edit account"
msgstr ""

#: CVS/Base/browseaccounts.php:151 browseaccounts.php:151
msgid "Change Password"
msgstr ""

#: CVS/Base/browseaccounts.php:155 browseaccounts.php:155 editaccount.php:58
#: editaccount.php:91
msgid "Forward"
msgstr ""

#: CVS/Base/browseaccounts.php:159 browseaccounts.php:159 search.php:172
msgid "Delete account"
msgstr ""

#: CVS/Base/browseaccounts.php:163 browseaccounts.php:163 search.php:173
msgid "Set quota"
msgstr ""

#: CVS/Base/browseaccounts.php:167 browseaccounts.php:167 search.php:174
msgid "Set catch all"
msgstr ""

#: CVS/Base/browseaccounts.php:181 browseaccounts.php:181 search.php:190
msgid "Forwards"
msgstr ""

#: CVS/Base/browseaccounts.php:218 browseaccounts.php:218 editaccount.php:152
#: search.php:217
msgid "out of"
msgstr ""

#: CVS/Base/browseaccounts.php:221 browseaccounts.php:221 search.php:220
msgid "Unable to retrieve quota"
msgstr ""

#: CVS/Base/browseaccounts.php:224 browseaccounts.php:224 editaccount.php:155
#: search.php:223
msgid "Quota not set"
msgstr ""

#: CVS/Base/browseaccounts.php:236 browseaccounts.php:236 search.php:235
msgid "No accounts found"
msgstr ""

#: adminuser.php:13
msgid "Browse admins"
msgstr ""

#: adminuser.php:35
msgid "Total administrators"
msgstr ""

#: adminuser.php:43
msgid "Add administator"
msgstr ""

#: adminuser.php:82
msgid "Adminname"
msgstr ""

#: adminuser.php:86
msgid "domain"
msgstr ""

#: adminuser.php:90
msgid "admin type"
msgstr ""

#: adminuser.php:119
msgid "Edit adminuser"
msgstr ""

#: adminuser.php:125
msgid "Delete adminuser"
msgstr ""

#: adminuser.php:144
msgid "All domains"
msgstr ""

#: adminuser.php:148
msgid "None"
msgstr ""

#: adminuser.php:158 editadminuser.php:65 menu.inc.php:132 newadminuser.php:57
#: newadminuser.php:207
msgid "Superuser"
msgstr ""

#: adminuser.php:160 editadminuser.php:76 menu.inc.php:134 newadminuser.php:61
#: newadminuser.php:209
msgid "Domain Master"
msgstr ""

#: adminuser.php:174
msgid "No accounts fount"
msgstr ""

#: adminuser.php:181
msgid "Add administrator"
msgstr ""

#: aliases.php:11
msgid "Browse aliases for domain"
msgstr ""

#: aliases.php:50
msgid "Total aliases"
msgstr ""

#: aliases.php:55
msgid "Add new alias"
msgstr ""

#: aliases.php:66 editalias.php:77 editemail.php:113 newemail.php:98
#: search.php:255
msgid "Destination"
msgstr ""

#: aliases.php:91 search.php:273
msgid "Edit Alias"
msgstr ""

#: aliases.php:92 search.php:274
msgid "Delete Alias"
msgstr ""

#: auth.inc.php:70
msgid "Web-cyradm is for authorized users only."
msgstr ""

#: auth.inc.php:71
msgid "Make sure you entered the right password."
msgstr ""

#: auth.inc.php:72
msgid "Push the back button in your browser to try again."
msgstr ""

#: auth.inc.php:73
msgid " Your attempt to login has been stored."
msgstr ""

#: browse.php:13
msgid "Browse domains"
msgstr ""

#: browse.php:24 search.php:53
msgid "domainname"
msgstr ""

#: browse.php:31 search.php:57
msgid "prefix"
msgstr ""

#: browse.php:38 search.php:60
msgid "max Accounts"
msgstr ""

#: browse.php:42 search.php:61
msgid "default quota per user"
msgstr ""

#: browse.php:90 search.php:82
msgid "Edit Domain"
msgstr ""

#: browse.php:91 search.php:83
msgid "Delete Domain"
msgstr ""

#: browse.php:92 deletedomain.php:51 menu.inc.php:59 search.php:84
msgid "accounts"
msgstr ""

#: browse.php:93 menu.inc.php:68 search.php:85
msgid "Aliases"
msgstr ""

#: catchall.php:13
msgid "Define a Account for receiving undefined adresses for domain"
msgstr ""

#: catchall.php:38
msgid "Do you really want to define the user"
msgstr ""

#: catchall.php:42
msgid "to receive all undefined emailadresses"
msgstr ""

#: catchall.php:46
msgid "The currently defined user"
msgstr ""

#: catchall.php:46
msgid "will not receiving any undefined emailadresses anymore"
msgstr ""

#: catchall.php:74
msgid "The user"
msgstr ""

#: catchall.php:74
msgid "is allready defined to receive all undefined Emails."
msgstr ""

#: catchall.php:76
msgid "Do you want to remove the function \"catch all\" for the account"
msgstr ""

#: catchall.php:127 newadminuser.php:197
msgid "successfully added to Database"
msgstr ""

#: catchall.php:133 editdomain.php:56 editemail.php:53 newdomain.php:255
#: newemail.php:44 delete_catchall.php:37
msgid "Database error, please try again"
msgstr ""

#: catchall.php:140 delete_catchall.php:44
msgid "Cancelled"
msgstr ""

#: change_password.php:53
msgid "Password changed"
msgstr ""

#: change_password.php:56
msgid "Failure in changing password."
msgstr ""

#: change_password.php:59 editadminuser.php:252
msgid "New passwords are not equal. Password not changed"
msgstr ""

#: change_password.php:72
msgid "Change password for account"
msgstr ""

#: change_password.php:91
msgid "New password"
msgstr ""

#: change_password.php:101
msgid "Confirm new password"
msgstr ""

#: change_password.php:121 newaccount.php:243
msgid "Passwords do not match"
msgstr ""

#: deleteaccount.php:25
msgid "Delete an Account from the System"
msgstr ""

#: deleteaccount.php:29
msgid "Do you really want to delete the user "
msgstr ""

#: deleteaccount.php:33
msgid "with all its defined Emailadresses"
msgstr ""

#: deleteaccount.php:69 deleteadminuser.php:68 deletedomain.php:84
#: deleteemail.php:55
msgid "Action cancelled, nothing deleted"
msgstr ""

#: deleteaccount.php:100
msgid "User deleted"
msgstr ""

#: deleteaccount.php:111 deletedomain.php:175
msgid ""
"Security violation detected, action cancelled. Your attempt has been logged."
msgstr ""

#: deleteadminuser.php:17
msgid "Delete an Admin account from the System"
msgstr ""

#: deleteadminuser.php:21
msgid "Do you really want to delete the Domain supervisor"
msgstr ""

#: deleteadminuser.php:90 editadminuser.php:276
msgid "At least one Superuser is needed for Web-cyradm"
msgstr ""

#: deleteadminuser.php:103
msgid "Admin user deleted"
msgstr ""

#: deleteadminuser.php:116 editadminuser.php:299 newadminuser.php:226
msgid "Security violation detected, nothing deleted, attempt has been logged"
msgstr ""

#: deletedomain.php:28
msgid "Delete a Domain from the System"
msgstr ""

#: deletedomain.php:32
msgid "Do you really want to delete the Domain"
msgstr ""

#: deletedomain.php:37
msgid "with all its defined accounts, admins, and emailadresses"
msgstr ""

#: deletedomain.php:43
msgid "This can take a while depending on how many account have to be deleted"
msgstr ""

#: deletedomain.php:47
msgid "Your action will delete"
msgstr ""

#: deletedomain.php:154 newadminuser.php:101
msgid "Domain"
msgstr ""

#: deletedomain.php:158
msgid "successfully deleted"
msgstr ""

#: deletealias.php:28
msgid "Please confirm you want to remove"
msgstr ""

#: deletealias.php:28
msgid "from the alias"
msgstr ""

#: deletealias.php:30
msgid "Yes"
msgstr ""

#: deletealias.php:49
msgid "Please confirm you want to remove the alias"
msgstr ""

#: deletealias.php:77
msgid "Removed"
msgstr ""

#: deletealias.php:77
msgid "from"
msgstr ""

#: deletealias.php:85
msgid "Removed the alias"
msgstr ""

#: editaccount.php:21
msgid "Email adresses defined for user"
msgstr ""

#: editaccount.php:42
msgid "New email address"
msgstr ""

#: editaccount.php:90
msgid "Edit Emailadress"
msgstr ""

#: editaccount.php:92
msgid "Vacation"
msgstr ""

#: editaccount.php:93
msgid "Delete Emailadress"
msgstr ""

#: editadminuser.php:13
msgid "Change admin user for domain"
msgstr ""

#: editadminuser.php:42 newaccount.php:106 newadminuser.php:36
msgid "Accountname"
msgstr ""

#: editadminuser.php:52 newadminuser.php:51
msgid "Admin Type"
msgstr ""

#: editadminuser.php:84 login.php:71 newaccount.php:138 newadminuser.php:71
msgid "Password"
msgstr ""

#: editadminuser.php:100 newaccount.php:139 newadminuser.php:86
msgid "Confirm Password"
msgstr ""

#: editadminuser.php:155
msgid "No Domain assigned yet"
msgstr ""

#: editadminuser.php:165
msgid "Add new domain to this admin"
msgstr ""

#: editadminuser.php:223
msgid "No such domain, create domain first"
msgstr ""

#: editadminuser.php:231
msgid "Admin already repsonsible for the domain"
msgstr ""

#: editalias.php:27
msgid "There was an error adding $dest to $alias: "
msgstr ""

#: editalias.php:64
msgid "Editing alias"
msgstr ""

#: editalias.php:68
msgid "Delete this alias"
msgstr ""

#: editalias.php:101
msgid "Cannot remove from account"
msgstr ""

#: editalias.php:105 editalias.php:109
msgid "Remove destination"
msgstr ""

#: editalias.php:125
msgid "This alias has no destinations"
msgstr ""

#: editalias.php:142
msgid "New destination"
msgstr ""

#: editdomain.php:46
msgid "Successfully changed domain"
msgstr ""

#: editdomain.php:92 newdomain.php:39
msgid "Domainname"
msgstr ""

#: editdomain.php:106 newdomain.php:57
msgid "Prefix"
msgstr ""

#: editdomain.php:123 newdomain.php:73
msgid "Allow Free Names"
msgstr ""

#: editdomain.php:141 newdomain.php:90
msgid "Allow Free Mail Addresses"
msgstr ""

#: editdomain.php:159 newdomain.php:102
msgid "Maximum Accounts"
msgstr ""

#: editdomain.php:173 newdomain.php:117
msgid "Default Quota in Kilobytes"
msgstr ""

#: editdomain.php:202
msgid "Your are not allowed to change domains!"
msgstr ""

#: editemail.php:46
msgid "Successfully changed"
msgstr ""

#: editemail.php:68
msgid ""
"You can't edit this email address with 'Allow Free Mail Addressess' set to "
"off!"
msgstr ""

#: editemail.php:95 newemail.php:77
msgid "Emailadress"
msgstr ""

#: failed.php:66
msgid "Login failed"
msgstr ""

#: failed.php:71 login.php:51
msgid "This is only for authorized users"
msgstr ""

#: failed.php:76 logout.php:62 timeout.php:38
msgid "If you like to login click"
msgstr ""

#: failed.php:78 logout.php:64 timeout.php:40
msgid "here"
msgstr ""

#: forwardalias.php:68 forwardaccount.php:51
msgid "Forward set"
msgstr ""

#: forwardalias.php:70
msgid "Failure in setting forward"
msgstr ""

#: forwardalias.php:73
msgid "Wrong password"
msgstr ""

#: forwardalias.php:89 forwardalias.php:97 forwardalias.php:103
#: forwardalias.php:107 forwardaccount.php:57
msgid "Forwarding removed"
msgstr ""

#: forwardalias.php:91 forwardalias.php:99
msgid "Failure in removing forwarding"
msgstr ""

#: forwardalias.php:111 vacation.php:79 vacation.php:107
msgid "Failed to login"
msgstr ""

#: forwardalias.php:123 vacation.php:119
msgid "Not possible"
msgstr ""

#: forwardalias.php:152
msgid ""
"You can't forward this email address with 'Allow Free Mail Addressess' set "
"to off!"
msgstr ""

#: forwardalias.php:161
msgid "Forward for emailadress"
msgstr ""

#: forwardalias.php:204
msgid "Set forwarding to"
msgstr ""

#: forwardalias.php:204
msgid "(Seperate multiple values with ,)"
msgstr ""

#: forwardalias.php:210 forwardaccount.php:125
msgid "Keep a copy in the user's mailbox"
msgstr ""

#: forwardalias.php:215 forwardaccount.php:139
msgid "Remove forwarding"
msgstr ""

#: index.php:23
msgid "migrate.php exists! please delete or rename it"
msgstr ""

#: index.php:138
msgid "web-cyradm has not yet been configured"
msgstr ""

#: index.php:141
msgid "Configuration steps:"
msgstr ""

#: index.php:143
msgid "copy the config file that comes with the distribution: "
msgstr ""

#: index.php:146
msgid "Edit the file config/conf.php to match your systems configuration"
msgstr ""

#: index.php:148
msgid ""
"Further information about how to configure Web-cyradm can be found at the "
"following website:"
msgstr ""

#: login.php:50
msgid "Welcome to Web-cyradm"
msgstr ""

#: login.php:52
msgid "Please authenticate yourself"
msgstr ""

#: login.php:84
msgid "Select language"
msgstr ""

#: logout.php:52
msgid "Thank you for using Web-cyradm"
msgstr ""

#: logout.php:57
msgid "You are logged out"
msgstr ""

#: menu.inc.php:19
msgid "Superusers Menu"
msgstr ""

#: menu.inc.php:23
msgid "Domainmasters menu"
msgstr ""

#: menu.inc.php:31
msgid "add new domain"
msgstr ""

#: menu.inc.php:38
msgid "browse domains"
msgstr ""

#: menu.inc.php:45
msgid "adminusers"
msgstr ""

#: menu.inc.php:75
msgid "home"
msgstr ""

#: menu.inc.php:82
msgid "logout"
msgstr ""

#: menu.inc.php:90
msgid "Search"
msgstr ""

#: menu.inc.php:114
msgid "Logged in as user"
msgstr ""

#: menu.inc.php:126
msgid "Your role is"
msgstr ""

#: menu.inc.php:144
msgid "Current domain is"
msgstr ""

#: menu.inc.php:150
msgid "No domain selected"
msgstr ""

#: newaccount.php:13
msgid "Add new Account to domain"
msgstr ""

#: newaccount.php:43 newalias.php:43
msgid "transport is not cyrus, unable to create account"
msgstr ""

#: newaccount.php:55
msgid "Sorry, no more account allowed for domain"
msgstr ""

#: newaccount.php:60
msgid "Maximum allowed accounts is"
msgstr ""

#: newaccount.php:137
msgid "Quota"
msgstr ""

#: newaccount.php:196
msgid "Sorry, the username already exists"
msgstr ""

#: newaccount.php:221
msgid "Account successfully added to the Database"
msgstr ""

#: newaccount.php:234
msgid "Account succesfully added to the IMAP Subsystem"
msgstr ""

#: newadminuser.php:13
msgid "Add new administrator"
msgstr ""

#: newadminuser.php:64
msgid "Select \"Superuser\" for all domains"
msgstr ""

#: newadminuser.php:132
msgid "You must provide a username"
msgstr ""

#: newadminuser.php:145
msgid "Passwords are empty or not equal."
msgstr ""

#: newadminuser.php:157
msgid "Username already exist"
msgstr ""

#: newalias.php:15
msgid "Add new alias to domain"
msgstr ""

#: newalias.php:55
msgid "Sorry, no more alias allowed for domain"
msgstr ""

#: newalias.php:60
msgid "Maximum allowed aliases is"
msgstr ""

#: newdomain.php:15
msgid "Add new domain"
msgstr ""

#: newdomain.php:140
msgid "Standard Mailboxes"
msgstr ""

#: newdomain.php:146
msgid ""
"emailadress where the default aliases should be mapped (empty means no "
"mapping)"
msgstr ""

#: newdomain.php:163
msgid "Mail transport"
msgstr ""

#: newdomain.php:166
msgid "Leave this as is, unless you know what you are doing"
msgstr ""

#: newdomain.php:187
msgid "Parameter"
msgstr ""

#: newdomain.php:245 newemail.php:34
msgid "Successfully added"
msgstr ""

#: newdomain.php:273
msgid "You are not allowed to add new domains"
msgstr ""

#: newemail.php:56
msgid "New emailadress for user"
msgstr ""

#: search.php:48
msgid "Total domains matching"
msgstr ""

#: search.php:110
msgid "Total users matching"
msgstr ""

#: search.php:118
msgid "Displaying from position"
msgstr ""

#: search.php:245
msgid "Total aliases matching"
msgstr ""

#: search.php:247
msgid "No aliases found"
msgstr ""

#: setquota.php:26
msgid "Setting individual Quota for user"
msgstr ""

#: setquota.php:58
msgid "Submit"
msgstr ""

#: setquota.php:70
msgid "Quote for user"
msgstr ""

#: setquota.php:74
msgid "changed to"
msgstr ""

#: timeout.php:33
msgid "Your session timed out"
msgstr ""

#: vacation.php:71
msgid "Vacation notice set"
msgstr ""

#: vacation.php:73
msgid "Failed to activate vacation"
msgstr ""

#: vacation.php:76
msgid "Failure in modifying vacation notice"
msgstr ""

#: vacation.php:95
msgid "Vacation notice unset"
msgstr ""

#: vacation.php:97
msgid "Failure in unseting vacation notice"
msgstr ""

#: vacation.php:101
msgid "Vacation notice removed"
msgstr ""

#: vacation.php:103
msgid "Failure in removing vacation notice"
msgstr ""

#: vacation.php:142
msgid ""
"You can't set Vacation Message for this email address with 'Allow Free Mail "
"Addressess' set to off!"
msgstr ""

#: vacation.php:152
msgid "Vacation message for emailadress"
msgstr ""

#: vacation.php:174
msgid "Set vacation notice"
msgstr ""

#: vacation.php:178
msgid "Remove vacation notice"
msgstr ""

#: validate.inc.php:74 validate.inc.php:87 validate.inc.php:134
#: validate.inc.php:249
msgid "Security violation detected, attempt logged"
msgstr ""

#: validate.inc.php:130
msgid "Quota exeedes the maximum allowed qutoa for this domain."
msgstr ""

#: forwardaccount.php:77
msgid "Forward for account"
msgstr ""

#: forwardaccount.php:93
msgid "Set forwarding to (one adress per line)"
msgstr ""

#: delete_catchall.php:31
msgid "successfully deleted from the Database"
msgstr ""

#: deleteemail.php:16
msgid "Delete emailadress from the System"
msgstr ""

#: deleteemail.php:23
msgid "Do you really want to delete the emailadress for user"
msgstr ""

#: deleteemail.php:44
msgid "Yes, delete"
msgstr ""

#: deleteemail.php:49
msgid "Cancel"
msgstr ""

#: deleteemail.php:70
msgid "Emailadress deleted."
msgstr ""
# Turkish translation of PACKAGE.
# Copyright (C) 2003 Free Software Foundation, Inc.
# SÃ¼leyman Kuran <suleymankuran@yahoo.com>, 2003.
# 
# 
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2003-08-10 16:56+0200\n"
"PO-Revision-Date: 2003-08-25 02:07+0200\n"
"Last-Translator: SÃ¼leyman Kuran <suleymankuran@yahoo.com>\n"
"Language-Team: Turkish <en@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: CVS/Base/browseaccounts.php:22
#: browseaccounts.php:22
msgid "Browse accounts for domain"
msgstr "Etki alanÄ±ndaki hesaplara gÃ¶zat"

#: CVS/Base/browseaccounts.php:34
#: adminuser.php:21
#: browse.php:66
#: browseaccounts.php:34
#: catchall.php:24
#: catchall.php:118
#: change_password.php:19
#: change_password.php:32
#: change_password.php:42
#: deleteaccount.php:83
#: deleteadminuser.php:74
#: deletedomain.php:17
#: editaccount.php:31
#: editdomain.php:37
#: editdomain.php:67
#: editemail.php:15
#: editemail.php:38
#: forwardalias.php:16
#: forwardalias.php:33
#: newaccount.php:26
#: newadminuser.php:137
#: newadminuser.php:215
#: newalias.php:26
#: newdomain.php:237
#: newemail.php:15
#: vacation.php:15
#: vacation.php:30
#: validate.inc.php:58
#: lib/crypto.php:30
#: lib/crypto.php:110
#: lib/crypto.php:149
#: forwardaccount.php:28
#: delete_catchall.php:23
#: deleteemail.php:62
msgid "Database error"
msgstr "VeritabanÄ± hatasÄ±"

#: CVS/Base/browseaccounts.php:48
#: browseaccounts.php:48
#: newaccount.php:68
msgid "Total accounts"
msgstr "Toplam hesap sayÄ±sÄ±"

#: CVS/Base/browseaccounts.php:49
#: adminuser.php:36
#: browseaccounts.php:49
msgid "Displaying from position:"
msgstr "ListelemeÂ·Konumu:"

#: CVS/Base/browseaccounts.php:55
#: CVS/Base/browseaccounts.php:242
#: browseaccounts.php:55
#: browseaccounts.php:242
#: search.php:123
#: search.php:239
msgid "Add new account"
msgstr "Yeni hesap ekle"

#: CVS/Base/browseaccounts.php:78
#: adminuser.php:65
#: aliases.php:56
#: browseaccounts.php:78
#: editalias.php:69
#: search.php:131
#: search.php:135
msgid "Previous 10 entries"
msgstr "Ãnceki 10 kayÄ±t"

#: CVS/Base/browseaccounts.php:82
#: adminuser.php:69
#: aliases.php:57
#: browseaccounts.php:82
#: editalias.php:70
#: search.php:138
#: search.php:142
msgid "Next 10 entries"
msgstr "Sonraki 10 kayÄ±t"

#: CVS/Base/browseaccounts.php:91
#: adminuser.php:78
#: aliases.php:64
#: browse.php:20
#: browseaccounts.php:91
#: editaccount.php:50
#: editalias.php:76
#: search.php:52
#: search.php:149
#: search.php:253
msgid "action"
msgstr "iÅlem"

#: CVS/Base/browseaccounts.php:96
#: aliases.php:65
#: browseaccounts.php:96
#: editaccount.php:54
#: newaccount.php:136
#: newalias.php:82
#: search.php:150
#: search.php:254
msgid "Email address"
msgstr "Eposta adresi"

#: CVS/Base/browseaccounts.php:96
#: browseaccounts.php:96
#: editaccount.php:63
#: login.php:61
#: search.php:151
msgid "Username"
msgstr "KullanÄ±cÄ± adÄ±"

#: CVS/Base/browseaccounts.php:97
#: browseaccounts.php:97
msgid "Last login"
msgstr "SonÂ·giriÅ"

#: CVS/Base/browseaccounts.php:97
#: browseaccounts.php:97
#: editaccount.php:68
#: search.php:152
msgid "Quota used"
msgstr "Kota kullanÄ±mÄ±"

#: CVS/Base/browseaccounts.php:136
#: browseaccounts.php:136
msgid "n/a"
msgstr "n/a"

#: CVS/Base/browseaccounts.php:146
#: browseaccounts.php:146
#: search.php:171
msgid "Edit account"
msgstr "Hesap dÃ¼zenle"

#: CVS/Base/browseaccounts.php:151
#: browseaccounts.php:151
msgid "Change Password"
msgstr "Åifre DeÄiÅtir"

#: CVS/Base/browseaccounts.php:155
#: browseaccounts.php:155
#: editaccount.php:58
#: editaccount.php:91
msgid "Forward"
msgstr "YÃ¶nlendir"

#: CVS/Base/browseaccounts.php:159
#: browseaccounts.php:159
#: search.php:172
msgid "Delete account"
msgstr "Hesap Sil"

#: CVS/Base/browseaccounts.php:163
#: browseaccounts.php:163
#: search.php:173
msgid "Set quota"
msgstr "Kota belirle"

#: CVS/Base/browseaccounts.php:167
#: browseaccounts.php:167
#: search.php:174
msgid "Set catch all"
msgstr "TÃ¼mÃ¼nÃ¼ yakala"

#: CVS/Base/browseaccounts.php:181
#: browseaccounts.php:181
#: search.php:190
msgid "Forwards"
msgstr "YÃ¶nlendir"

#: CVS/Base/browseaccounts.php:218
#: browseaccounts.php:218
#: editaccount.php:152
#: search.php:217
msgid "out of"
msgstr ", Toplam:"

#: CVS/Base/browseaccounts.php:221
#: browseaccounts.php:221
#: search.php:220
msgid "Unable to retrieve quota"
msgstr "KotaÂ·deÄeriÂ·belirlenemedi"

#: CVS/Base/browseaccounts.php:224
#: browseaccounts.php:224
#: editaccount.php:155
#: search.php:223
msgid "Quota not set"
msgstr "Kota ayarlanmadÄ±"

#: CVS/Base/browseaccounts.php:236
#: browseaccounts.php:236
#: search.php:235
msgid "No accounts found"
msgstr "Hesap bulunamadÄ±"

#: adminuser.php:13
msgid "Browse admins"
msgstr "YÃ¶neticilere GÃ¶zat"

#: adminuser.php:35
msgid "Total administrators"
msgstr "Toplam yÃ¶netici sayÄ±sÄ±:"

#: adminuser.php:43
msgid "Add administator"
msgstr "YÃ¶netici ekle"

#: adminuser.php:82
msgid "Adminname"
msgstr "YÃ¶neticiadÄ±"

#: adminuser.php:86
msgid "domain"
msgstr "etki alanÄ±"

#: adminuser.php:90
msgid "admin type"
msgstr "yÃ¶netici tipi"

#: adminuser.php:119
msgid "Edit adminuser"
msgstr "YÃ¶netici dÃ¼zenle"

#: adminuser.php:125
msgid "Delete adminuser"
msgstr "YÃ¶netici sil"

#: adminuser.php:144
msgid "All domains"
msgstr "TÃ¼m etki alanlarÄ±"

#: adminuser.php:148
msgid "None"
msgstr "HiÃ§biri"

#: adminuser.php:158
#: editadminuser.php:65
#: menu.inc.php:132
#: newadminuser.php:57
#: newadminuser.php:207
msgid "Superuser"
msgstr "SÃ¼per kullanÄ±cÄ±"

#: adminuser.php:160
#: editadminuser.php:76
#: menu.inc.php:134
#: newadminuser.php:61
#: newadminuser.php:209
msgid "Domain Master"
msgstr "Etki alanÄ± yÃ¶neticisi"

#: adminuser.php:174
msgid "No accounts fount"
msgstr "Hesap bulunamadÄ±"

#: adminuser.php:181
msgid "Add administrator"
msgstr "YÃ¶netici ekle"

#: aliases.php:11
msgid "Browse aliases for domain"
msgstr "Etki alanÄ±ndaki hesaplara gÃ¶zat"

#: aliases.php:50
msgid "Total aliases"
msgstr "Toplam hesap sayÄ±sÄ±:"

#: aliases.php:55
msgid "Add new alias"
msgstr "Yeni hesap ekle"

#: aliases.php:66
#: editalias.php:77
#: editemail.php:113
#: newemail.php:98
#: search.php:255
msgid "Destination"
msgstr "Hedef"

#: aliases.php:91
#: search.php:273
msgid "Edit Alias"
msgstr "Eposta adresi dÃ¼zenle"

#: aliases.php:92
#: search.php:274
msgid "Delete Alias"
msgstr "Eposta adresi sil"

#: auth.inc.php:70
msgid "Web-cyradm is for authorized users only."
msgstr "Web-cyradm sadece yetkili kullanÄ±cÄ±lar iÃ§indir."

#: auth.inc.php:71
msgid "Make sure you entered the right password."
msgstr "DoÄru parolayÄ± girdiÄinizden emin olun."

#: auth.inc.php:72
msgid "Push the back button in your browser to try again."
msgstr "Tekrar denemek iÃ§in tarayÄ±cÄ±nÄ±zÄ±n geri dÃ¼Ämesine basÄ±n."

#: auth.inc.php:73
msgid " Your attempt to login has been stored."
msgstr "GiriÅ denemeniz kaydedildi."

#: browse.php:13
msgid "Browse domains"
msgstr "Etki alanlarÄ±na gÃ¶zat"

#: browse.php:24
#: search.php:53
msgid "domainname"
msgstr "Etki alanÄ±"

#: browse.php:31
#: search.php:57
msgid "prefix"
msgstr "Ãnek"

#: browse.php:38
#: search.php:60
msgid "max Accounts"
msgstr "max Hesap"

#: browse.php:42
#: search.php:61
msgid "default quota per user"
msgstr "varsayÄ±lan kullanÄ±cÄ± kotasÄ±"

#: browse.php:90
#: search.php:82
msgid "Edit Domain"
msgstr "Etki alanÄ± DÃ¼zenle"

#: browse.php:91
#: search.php:83
msgid "Delete Domain"
msgstr "Etki alanÄ± Sil"

#: browse.php:92
#: deletedomain.php:51
#: menu.inc.php:59
#: search.php:84
msgid "accounts"
msgstr "hesaplar"

#: browse.php:93
#: menu.inc.php:68
#: search.php:85
msgid "Aliases"
msgstr "Hesaplar"

#: catchall.php:13
msgid "Define a Account for receiving undefined adresses for domain"
msgstr "TanÄ±msÄ±z hesaplarÄ±n postalarÄ±nÄ± yakalamasÄ± iÃ§in bir hesap belirleyin. Etki alanÄ±:"

#: catchall.php:38
msgid "Do you really want to define the user"
msgstr "TanÄ±msÄ±z tÃ¼m hesaplarÄ± yakalamasÄ± iÃ§in "

#: catchall.php:42
msgid "to receive all undefined emailadresses"
msgstr "kullanÄ±cÄ±sÄ±nÄ± tanÄ±mlamak istediÄinizden emin misiniz?"

#: catchall.php:46
msgid "The currently defined user"
msgstr "Åu an tanÄ±mlÄ± kullanÄ±cÄ±"

#: catchall.php:46
msgid "will not receiving any undefined emailadresses anymore"
msgstr "bundan sonra tanÄ±msÄ±z epostalarÄ± almayacak"

#: catchall.php:74
msgid "The user"
msgstr "KullanÄ±cÄ±"

#: catchall.php:74
msgid "is allready defined to receive all undefined Emails."
msgstr "TÃ¼m tanÄ±msÄ±z epostalarÄ± almak iÃ§in zaten ayarlandÄ±"

#: catchall.php:76
msgid "Do you want to remove the function \"catch all\" for the account"
msgstr "BuÂ·hesapÂ·iÃ§inÂ·\"tÃ¼mÃ¼nÃ¼Â·yakala\"Â·fonksiyonunuÂ·kaldÄ±rmakÂ·istiyorÂ·musunuz"

#: catchall.php:127
#: newadminuser.php:197
msgid "successfully added to Database"
msgstr "Veri tabanÄ±na baÅarÄ±yla eklendi"

#: catchall.php:133
#: editdomain.php:56
#: editemail.php:53
#: newdomain.php:255
#: newemail.php:44
#: delete_catchall.php:37
msgid "Database error, please try again"
msgstr "Veri tabanÄ± hatasÄ±, lÃ¼tfen tekrar deneyin"

#: catchall.php:140
#: delete_catchall.php:44
msgid "Cancelled"
msgstr "Ä°ptalÂ·edildi"

#: change_password.php:53
msgid "Password changed"
msgstr "Åifre deÄiÅtirildi"

#: change_password.php:56
msgid "Failure in changing password."
msgstr "Åifre deÄiÅtirme baÅarÄ±sÄ±z."

#: change_password.php:59
#: editadminuser.php:252
msgid "New passwords are not equal. Password not changed"
msgstr "Yeni Åifreler aynÄ± deÄil. Åifre deÄiÅtirilmedi"

#: change_password.php:72
msgid "Change password for account"
msgstr "Hesap Åifresini deÄiÅtir"

#: change_password.php:91
msgid "New password"
msgstr "Yeni Åifre"

#: change_password.php:101
msgid "Confirm new password"
msgstr "Yeni Åifreyi onayla"

#: change_password.php:121
#: newaccount.php:243
msgid "Passwords do not match"
msgstr "ÅifrelerÂ·aynÄ±Â·deÄil"

#: deleteaccount.php:25
msgid "Delete an Account from the System"
msgstr "Sistemden hesap sil"

#: deleteaccount.php:29
msgid "Do you really want to delete the user "
msgstr "TanÄ±mlÄ± tÃ¼m eposta adresleriyle birlikte bu kullanÄ±cÄ±yÄ±"

#: deleteaccount.php:33
msgid "with all its defined Emailadresses"
msgstr "silmek istediÄinizden emin misiniz"

#: deleteaccount.php:69
#: deleteadminuser.php:68
#: deletedomain.php:84
#: deleteemail.php:55
msgid "Action cancelled, nothing deleted"
msgstr "Ä°Ålem iptal edildi, hesap silinmedi"

#: deleteaccount.php:100
msgid "User deleted"
msgstr "KullanÄ±cÄ±Â·silindi"

#: deleteaccount.php:111
#: deletedomain.php:175
msgid "Security violation detected, action cancelled. Your attempt has been logged."
msgstr " GÃ¼venlik ihlali belirlendi, iÅlem iptal edildi. Denemeniz gÃ¼nlÃ¼k dosyasÄ±na kaydedildi."

#: deleteadminuser.php:17
msgid "Delete an Admin account from the System"
msgstr "Sistemden yÃ¶netici hesabÄ± sil"

#: deleteadminuser.php:21
msgid "Do you really want to delete the Domain supervisor"
msgstr "Etki alanÄ± yÃ¶neticisini silmek istediÄinizden emin misiniz? YÃ¶netici:"

#: deleteadminuser.php:90
#: editadminuser.php:276
msgid "At least one Superuser is needed for Web-cyradm"
msgstr "Web-cyradmÂ·iÃ§inÂ·enÂ·azÂ·birÂ·SuperkullanÄ±cÄ±Â·gereklidir"

#: deleteadminuser.php:103
msgid "Admin user deleted"
msgstr "YÃ¶neticiÂ·hesabÄ±Â·silindi"

#: deleteadminuser.php:116
#: editadminuser.php:299
#: newadminuser.php:226
msgid "Security violation detected, nothing deleted, attempt has been logged"
msgstr "GÃ¼venlik ihlali belirlendi, iÅlem iptal edildi. Denemeniz gÃ¼nlÃ¼k dosyasÄ±na kaydedildi."

#: deletedomain.php:28
msgid "Delete a Domain from the System"
msgstr "Sistemden Etki alanÄ± sil"

#: deletedomain.php:32
msgid "Do you really want to delete the Domain"
msgstr "TÃ¼m tanÄ±mlÄ± hesaplarÄ±, yÃ¶neticileri, ve eposta adresleriyle birlikte"

#: deletedomain.php:37
msgid "with all its defined accounts, admins, and emailadresses"
msgstr "etki alanÄ±nÄ± silmek istediÄinizden emin misiniz"

#: deletedomain.php:43
msgid "This can take a while depending on how many account have to be deleted"
msgstr "Silinecek hesap sayÄ±sÄ±na baÄlÄ± olarak bu iÅlem uzun sÃ¼rebilir"

#: deletedomain.php:47
msgid "Your action will delete"
msgstr "Silinecek hesap sayÄ±sÄ±"

#: deletedomain.php:154
#: newadminuser.php:101
msgid "Domain"
msgstr "Etki alanÄ±"

#: deletedomain.php:158
msgid "successfully deleted"
msgstr "baÅarÄ±yla silindi"

#: deletealias.php:28
msgid "Please confirm you want to remove"
msgstr "SilmeÂ·iÅleminiÂ·onaylayÄ±n"

#: deletealias.php:28
msgid "from the alias"
msgstr ""

#: deletealias.php:30
msgid "Yes"
msgstr "Evet"

#: deletealias.php:49
msgid "Please confirm you want to remove the alias"
msgstr "Bu hesabÄ±n silinmesini onaylayÄ±n"

#: deletealias.php:77
msgid "Removed"
msgstr "Silindi"

#: deletealias.php:77
msgid "from"
msgstr ""

#: deletealias.php:85
msgid "Removed the alias"
msgstr "Hesap silindi"

#: editaccount.php:21
msgid "Email adresses defined for user"
msgstr "KullanÄ±cÄ± adÄ±na tanÄ±mlÄ± eposta adresleri"

#: editaccount.php:42
msgid "New email address"
msgstr "Yeni eposta adresi"

#: editaccount.php:90
msgid "Edit Emailadress"
msgstr "Eposta adresi dÃ¼zenle"

#: editaccount.php:92
msgid "Vacation"
msgstr "Tatil"

#: editaccount.php:93
msgid "Delete Emailadress"
msgstr "Eposta adresi sil"

#: editadminuser.php:13
msgid "Change admin user for domain"
msgstr "Etki alanÄ±nÄ±n yÃ¶netici kullanÄ±cÄ±sÄ±nÄ± deÄiÅtir"

#: editadminuser.php:42
#: newaccount.php:106
#: newadminuser.php:36
msgid "Accountname"
msgstr "Hesap AdÄ±"

#: editadminuser.php:52
#: newadminuser.php:51
msgid "Admin Type"
msgstr "YÃ¶netici Tipi"

#: editadminuser.php:84
#: login.php:71
#: newaccount.php:138
#: newadminuser.php:71
msgid "Password"
msgstr "Åifre"

#: editadminuser.php:100
#: newaccount.php:139
#: newadminuser.php:86
msgid "Confirm Password"
msgstr "Åifreyi doÄrula"

#: editadminuser.php:155
msgid "No Domain assigned yet"
msgstr "HenÃ¼zÂ·etkiÂ·alanÄ±Â·atanmadÄ±"

#: editadminuser.php:165
msgid "Add new domain to this admin"
msgstr "Bu yÃ¶neticiye yeni etki alanÄ± ekle"

#: editadminuser.php:223
msgid "No such domain, create domain first"
msgstr "EtkiÂ·alanÄ±Â·bulunamadÄ±,Â·Ã¶nceÂ·etkiÂ·alanÄ±nÄ±Â·yaratÄ±n"

#: editadminuser.php:231
msgid "Admin already repsonsible for the domain"
msgstr "YÃ¶neticiÂ·zatenÂ·etkiÂ·alanÄ±nÄ±nÂ·sorumlusu"

#: editalias.php:27
msgid "There was an error adding $dest to $alias: "
msgstr "$destÂ·'iÂ·$aliasÂ·'aÂ·eklerkenÂ·hataÂ·oluÅtu:"

#: editalias.php:64
msgid "Editing alias"
msgstr "Eposta adresi dÃ¼zenle"

#: editalias.php:68
msgid "Delete this alias"
msgstr "Eposta adresi sil"

#: editalias.php:101
msgid "Cannot remove from account"
msgstr "Hesaptan silinemedi"

#: editalias.php:105
#: editalias.php:109
msgid "Remove destination"
msgstr "HedefiÂ·sil"

#: editalias.php:125
msgid "This alias has no destinations"
msgstr "BuÂ·hesabÄ±nÂ·hedefiÂ·yok"

#: editalias.php:142
msgid "New destination"
msgstr "YeniÂ·Hedef"

#: editdomain.php:46
msgid "Successfully changed domain"
msgstr "Etki alanÄ± baÅarÄ±yla deÄiÅtirildi"

#: editdomain.php:92
#: newdomain.php:39
msgid "Domainname"
msgstr "Etki alanÄ± adÄ±"

#: editdomain.php:106
#: newdomain.php:57
msgid "Prefix"
msgstr "Ãnek"

#: editdomain.php:123
#: newdomain.php:73
msgid "Allow Free Names"
msgstr "SerbestÂ·isimlereÂ·izinÂ·ver"

#: editdomain.php:141
#: newdomain.php:90
msgid "Allow Free Mail Addresses"
msgstr "SerbestÂ·EpostaÂ·adreslerineÂ·izinÂ·ver"

#: editdomain.php:159
#: newdomain.php:102
msgid "Maximum Accounts"
msgstr "Maksimum hesap sayÄ±sÄ±"

#: editdomain.php:173
#: newdomain.php:117
msgid "Default Quota in Kilobytes"
msgstr "VarsayÄ±lan kota (KB)"

#: editdomain.php:202
msgid "Your are not allowed to change domains!"
msgstr "Etki alanlarÄ±nÄ± deÄiÅtirmeye yetkiniz yok!"

#: editemail.php:46
msgid "Successfully changed"
msgstr "BaÅarÄ±yla deÄiÅtirildi"

#: editemail.php:68
msgid "You can't edit this email address with 'Allow Free Mail Addressess' set to off!"
msgstr "'SerbestÂ·EpostaÂ·adreslerineÂ·izinÂ·ver'Â·seÃ§eneÄiÂ·etkinÂ·olmadanÂ·buÂ·epostaÂ·adresiniÂ·dÃ¼zenleyemezsiniz"

#: editemail.php:95
#: newemail.php:77
msgid "Emailadress"
msgstr "Eposta adresi"

#: failed.php:66
msgid "Login failed"
msgstr "GiriÅ baÅarÄ±sÄ±z"

#: failed.php:71
#: login.php:51
msgid "This is only for authorized users"
msgstr "Bu sistem sadece yetkili kullanÄ±cÄ±lar iÃ§indir"

#: failed.php:76
#: logout.php:62
#: timeout.php:38
msgid "If you like to login click"
msgstr "Tekrar giriÅ yapmak iÃ§in yandaki dÃ¼Ämeyi tÄ±klayÄ±n"

#: failed.php:78
#: logout.php:64
#: timeout.php:40
msgid "here"
msgstr "GiriÅ"

#: forwardalias.php:68
#: forwardaccount.php:51
msgid "Forward set"
msgstr "YÃ¶nlendirme belirle"

#: forwardalias.php:70
msgid "Failure in setting forward"
msgstr "YÃ¶nlendirme yapÄ±lÄ±rken hata oluÅtu"

#: forwardalias.php:73
msgid "Wrong password"
msgstr "Åifre geÃ§ersiz"

#: forwardalias.php:89
#: forwardalias.php:97
#: forwardalias.php:103
#: forwardalias.php:107
#: forwardaccount.php:57
msgid "Forwarding removed"
msgstr "YÃ¶nlendirme kaldÄ±rÄ±ldÄ±"

#: forwardalias.php:91
#: forwardalias.php:99
msgid "Failure in removing forwarding"
msgstr "YÃ¶nlendirme kaldÄ±rÄ±lÄ±rken hata oluÅtu"

#: forwardalias.php:111
#: vacation.php:79
#: vacation.php:107
msgid "Failed to login"
msgstr "GiriÅ baÅarÄ±sÄ±z"

#: forwardalias.php:123
#: vacation.php:119
msgid "Not possible"
msgstr "KullanÄ±lamaz "

#: forwardalias.php:152
msgid "You can't forward this email address with 'Allow Free Mail Addressess' set to off!"
msgstr "'SerbestÂ·EpostaÂ·adresilerineÂ·izinÂ·ver'Â·seÃ§eneÄiÂ·etkinÂ·deÄilkenÂ·buÂ·epostaÂ·adresiniÂ·yÃ¶nlendiremezsiniz"

#: forwardalias.php:161
msgid "Forward for emailadress"
msgstr "Eposta adresi yÃ¶nlendir"

#: forwardalias.php:204
msgid "Set forwarding to"
msgstr "YÃ¶nlendirme ayarla"

#: forwardalias.php:204
msgid "(Seperate multiple values with ,)"
msgstr "BirdenÂ·fazlaÂ·deÄerÂ·girmekÂ·istiyorsanÄ±zÂ·virgÃ¼l(,)Â·kullanÄ±n"

#: forwardalias.php:210
#: forwardaccount.php:125
msgid "Keep a copy in the user's mailbox"
msgstr "Bir kopyasÄ±nÄ± kullanÄ±cÄ±nÄ±n posta kutusunda bÄ±rak"

#: forwardalias.php:215
#: forwardaccount.php:139
msgid "Remove forwarding"
msgstr "YÃ¶nlendirmeyi kaldÄ±r"

#: index.php:23
msgid "migrate.php exists! please delete or rename it"
msgstr "migrate.phpÂ·dosyasÄ±Â·zatenÂ·var!Â·lÃ¼tfenÂ·Ã¶nceÂ·dosyayÄ±Â·silinÂ·yaÂ·daÂ·isminiÂ·deÄiÅtirin"

#: index.php:138
msgid "web-cyradm has not yet been configured"
msgstr "web-cyradmÂ·henÃ¼zÂ·yapÄ±landÄ±rÄ±lmadÄ±"

#: index.php:141
msgid "Configuration steps:"
msgstr "YapÄ±landÄ±rmaÂ·adÄ±mlarÄ±:"

#: index.php:143
msgid "copy the config file that comes with the distribution: "
msgstr "daÄÄ±tÄ±mlaÂ·birlikteÂ·gelenÂ·yapÄ±landÄ±rmaÂ·dosyasÄ±nÄ±Â·kopyalayÄ±n:"

#: index.php:146
msgid "Edit the file config/conf.php to match your systems configuration"
msgstr "config/conf.phpÂ·dosyasÄ±nÄ±Â·sistemÂ·ayarlarÄ±nÄ±zaÂ·gÃ¶reÂ·dÃ¼zenleyin"

#: index.php:148
msgid "Further information about how to configure Web-cyradm can be found at the following website:"
msgstr "Web-cyradmÂ·yapÄ±landÄ±rÄ±lmasÄ±Â·hakkÄ±ndaÂ·dahaÂ·fazlaÂ·bilgiyiÂ·buÂ·webÂ·sitesindeÂ·bulabilirsiniz:"

#: login.php:50
msgid "Welcome to Web-cyradm"
msgstr "Web-cyradm HoÅgeldiniz"

#: login.php:52
msgid "Please authenticate yourself"
msgstr "LÃ¼tfen giriÅ yapÄ±nÄ±z"

#: login.php:84
msgid "Select language"
msgstr "Dil seÃ§imi"

#: logout.php:52
msgid "Thank you for using Web-cyradm"
msgstr "Web-cyradm kullandÄ±ÄÄ±nÄ±z iÃ§in teÅekkÃ¼rler"

#: logout.php:57
msgid "You are logged out"
msgstr "Sistemden Ã§Ä±kÄ±Å yapÄ±ldÄ±"

#: menu.inc.php:19
msgid "Superusers Menu"
msgstr "SÃ¼per kullanÄ±cÄ± MenÃ¼sÃ¼"

#: menu.inc.php:23
msgid "Domainmasters menu"
msgstr "Etki alanÄ± yÃ¶neticileri menÃ¼sÃ¼"

#: menu.inc.php:31
msgid "add new domain"
msgstr "yeni etki alanÄ± ekle"

#: menu.inc.php:38
msgid "browse domains"
msgstr "etki alanlarÄ±na gÃ¶zat"

#: menu.inc.php:45
msgid "adminusers"
msgstr "yÃ¶neticiler"

#: menu.inc.php:75
msgid "home"
msgstr "ana sayfa"

#: menu.inc.php:82
msgid "logout"
msgstr "Ã§Ä±kÄ±Å"

#: menu.inc.php:90
msgid "Search"
msgstr "Ara"

#: menu.inc.php:114
msgid "Logged in as user"
msgstr "GiriÅ yapan kullanÄ±cÄ±"

#: menu.inc.php:126
msgid "Your role is"
msgstr "Yetki tanÄ±mÄ±"

#: menu.inc.php:144
msgid "Current domain is"
msgstr "Aktif etki alanÄ±"

#: menu.inc.php:150
msgid "No domain selected"
msgstr "Etki alanÄ± seÃ§ilmedi"

#: newaccount.php:13
msgid "Add new Account to domain"
msgstr "Etki alanÄ±na yeni hesap ekle"

#: newaccount.php:43
#: newalias.php:43
msgid "transport is not cyrus, unable to create account"
msgstr "aktarÄ±m cyrus deÄil, hesap oluÅturulamadÄ±"

#: newaccount.php:55
msgid "Sorry, no more account allowed for domain"
msgstr "ÃzgÃ¼nÃ¼m, bu alan iÃ§in daha fazla hesap tanÄ±mlanamaz"

#: newaccount.php:60
msgid "Maximum allowed accounts is"
msgstr "Maksimum hesap sayÄ±sÄ±"

#: newaccount.php:137
msgid "Quota"
msgstr "Kota"

#: newaccount.php:196
msgid "Sorry, the username already exists"
msgstr "ÃzgÃ¼nÃ¼m, bu kullanÄ±cÄ± adÄ± zaten var"

#: newaccount.php:221
msgid "Account successfully added to the Database"
msgstr "Hesap veri tabanÄ±na baÅarÄ±yla eklendi"

#: newaccount.php:234
msgid "Account succesfully added to the IMAP Subsystem"
msgstr "Hesap IMAP altsistemine baÅarÄ±yla eklendi"

#: newadminuser.php:13
msgid "Add new administrator"
msgstr "Yeni YÃ¶netici ekle"

#: newadminuser.php:64
msgid "Select \"Superuser\" for all domains"
msgstr "TÃ¼m etki alanlarÄ± iÃ§in \"SuperkullanÄ±cÄ±\" seÃ§in"

#: newadminuser.php:132
msgid "You must provide a username"
msgstr "Bir kullanÄ±cÄ± adÄ± bliertmelisiniz"

#: newadminuser.php:145
msgid "Passwords are empty or not equal."
msgstr "Åifreler aynÄ± deÄil ya da boÅ"

#: newadminuser.php:157
msgid "Username already exist"
msgstr "KullanÄ±cÄ± adÄ± zaten var"

#: newalias.php:15
msgid "Add new alias to domain"
msgstr "Etki alanÄ±na yeni hesab ekle"

#: newalias.php:55
msgid "Sorry, no more alias allowed for domain"
msgstr "ÃzgÃ¼nÃ¼m, bu alan iÃ§in daha fazla hesap tanÄ±mlanamaz"

#: newalias.php:60
msgid "Maximum allowed aliases is"
msgstr "Maksimum hesap sayÄ±sÄ±"

#: newdomain.php:15
msgid "Add new domain"
msgstr "Yeni etki alanÄ± ekle"

#: newdomain.php:140
msgid "Standard Mailboxes"
msgstr "Standart Postakutusu"

#: newdomain.php:146
msgid "emailadress where the default aliases should be mapped (empty means no mapping)"
msgstr "VarsayÄ±lan LakabÄ±n eÅleÅtirileceÄi eposta adresi (boÅ bÄ±rakÄ±lÄ±rsa eÅleÅtirme yapÄ±lmayacak)"

#: newdomain.php:163
msgid "Mail transport"
msgstr "Posta aktarÄ±mÄ±"

#: newdomain.php:166
msgid "Leave this as is, unless you know what you are doing"
msgstr "Ne yaptÄ±ÄÄ±nÄ±zÄ± bilmiyorsanÄ±z, bunu deÄiÅtirmeyin"

#: newdomain.php:187
msgid "Parameter"
msgstr "Parametre"

#: newdomain.php:245
#: newemail.php:34
msgid "Successfully added"
msgstr "BaÅarÄ±yla eklendi"

#: newdomain.php:273
msgid "You are not allowed to add new domains"
msgstr "Yeni etki alanÄ± ekleme yetkiniz yok"

#: newemail.php:56
msgid "New emailadress for user"
msgstr "KullanÄ±cÄ±ya yeni eposta adresi oluÅtur"

#: search.php:48
msgid "Total domains matching"
msgstr "EÅlenen etki alanÄ± sayÄ±sÄ±"

#: search.php:110
msgid "Total users matching"
msgstr "EÅlenen kullanÄ±cÄ± sayÄ±sÄ±"

#: search.php:118
msgid "Displaying from position"
msgstr "Listeleme konumu"

#: search.php:245
msgid "Total aliases matching"
msgstr "EÅlenen hesap sayÄ±sÄ±"

#: search.php:247
msgid "No aliases found"
msgstr "Hesap bulunamadÄ±"

#: setquota.php:26
msgid "Setting individual Quota for user"
msgstr "KullanÄ±cÄ± iÃ§in kiÅisel kota belirle"

#: setquota.php:58
msgid "Submit"
msgstr "GÃ¶nder"

#: setquota.php:70
msgid "Quote for user"
msgstr "KullanÄ±cÄ± kotasÄ±"

#: setquota.php:74
msgid "changed to"
msgstr "deÄiÅtirildi"

#: timeout.php:33
msgid "Your session timed out"
msgstr "Oturum sÃ¼resi aÅÄ±ldÄ±"

#: vacation.php:71
msgid "Vacation notice set"
msgstr "Tatil mesajÄ± ayarlandÄ±"

#: vacation.php:73
msgid "Failed to activate vacation"
msgstr "Tatil mesajÄ± ayarlanÄ±rken hata oluÅtu"

#: vacation.php:76
msgid "Failure in modifying vacation notice"
msgstr "Tatil mesajÄ± deÄiÅtirilirken hata oluÅtu"

#: vacation.php:95
msgid "Vacation notice unset"
msgstr "Tatil mesajÄ± kaldÄ±rÄ±ldÄ±"

#: vacation.php:97
msgid "Failure in unseting vacation notice"
msgstr "Tatil mesajÄ± kaldÄ±rÄ±lÄ±rken hata oluÅtu"

#: vacation.php:101
msgid "Vacation notice removed"
msgstr "Tatil mesajÄ± kaldÄ±rÄ±ldÄ±"

#: vacation.php:103
msgid "Failure in removing vacation notice"
msgstr "Tatil mesajÄ± kaldÄ±rÄ±lÄ±rken hata oluÅtu"

#: vacation.php:142
msgid "You can't set Vacation Message for this email address with 'Allow Free Mail Addressess' set to off!"
msgstr "'Serbest eposta adreslerine izin ver' seÃ§eneÄi etkin olmadan bu eposta adresi iÃ§in tatil mesajÄ± ayarlayamazsÄ±nÄ±z"

#: vacation.php:152
msgid "Vacation message for emailadress"
msgstr "Eposta adresi iÃ§in Tatil mesajÄ±"

#: vacation.php:174
msgid "Set vacation notice"
msgstr "Tatil mesajÄ± belirle"

#: vacation.php:178
msgid "Remove vacation notice"
msgstr "Tatil mesajÄ±nÄ± kaldÄ±r"

#: validate.inc.php:74
#: validate.inc.php:87
#: validate.inc.php:134
#: validate.inc.php:249
msgid "Security violation detected, attempt logged"
msgstr "GÃ¼venlik ihlali belirlendi, iÅlem iptal edildi. Denemeniz gÃ¼nlÃ¼k dosyasÄ±na kaydedildi."

#: validate.inc.php:130
msgid "Quota exeedes the maximum allowed qutoa for this domain."
msgstr "Kota deÄeri bu etki alanÄ± iÃ§in belirlenmiÅ sÄ±nÄ±rÄ± aÅÄ±yor"

#: forwardaccount.php:77
msgid "Forward for account"
msgstr "Hesap yÃ¶nlendir"

#: forwardaccount.php:93
msgid "Set forwarding to (one adress per line)"
msgstr "YÃ¶nlendirme ayarla (her satÄ±rda bir adres)"

#: delete_catchall.php:31
msgid "successfully deleted from the Database"
msgstr "Veri tabanÄ±ndan baÅarÄ±yla silindi"

#: deleteemail.php:16
msgid "Delete emailadress from the System"
msgstr "Sistemden eposta adresi sil"

#: deleteemail.php:23
msgid "Do you really want to delete the emailadress for user"
msgstr "Eposta adresini silmek isteÄinizden emin misiniz? KullanÄ±cÄ±:"

#: deleteemail.php:44
msgid "Yes, delete"
msgstr "Evet, sil"

#: deleteemail.php:49
msgid "Cancel"
msgstr "Ä°ptal"

#: deleteemail.php:70
msgid "Emailadress deleted."
msgstr "Eposta adresi silindi"

# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Free Software Foundation, Inc.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Web-cyradm\n"
"POT-Creation-Date: 2003-08-10 16:56+0200\n"
"PO-Revision-Date: 2003-10-08 20:59+0300\n"
"Last-Translator: Ruslan Firsov <firsov@filart.com.ua>\n"
"Language-Team: Ukrainian <info@newsite.com.ua>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=koi8-u\n"
"Content-Transfer-Encoding: 8bit\n"

#: CVS/Base/browseaccounts.php:22 browseaccounts.php:22
msgid "Browse accounts for domain"
msgstr "Ïðåãëÿä àêàóíò³â äîìåíó"

#: CVS/Base/browseaccounts.php:34 adminuser.php:21 browse.php:66
#: browseaccounts.php:34 catchall.php:24 catchall.php:118
#: change_password.php:19 change_password.php:32 change_password.php:42
#: deleteaccount.php:83 deleteadminuser.php:74 deletedomain.php:17
#: editaccount.php:31 editdomain.php:37 editdomain.php:67 editemail.php:15
#: editemail.php:38 forwardalias.php:16 forwardalias.php:33 newaccount.php:26
#: newadminuser.php:137 newadminuser.php:215 newalias.php:26 newdomain.php:237
#: newemail.php:15 vacation.php:15 vacation.php:30 validate.inc.php:58
#: lib/crypto.php:30 lib/crypto.php:110 lib/crypto.php:149
#: forwardaccount.php:28 delete_catchall.php:23 deleteemail.php:62
msgid "Database error"
msgstr "Ïîìèëêà áàçè äàíèõ"

#: CVS/Base/browseaccounts.php:48 browseaccounts.php:48 newaccount.php:68
msgid "Total accounts"
msgstr "Âñüîãî àêàóíò³â"

#: CVS/Base/browseaccounts.php:49 adminuser.php:36 browseaccounts.php:49
msgid "Displaying from position:"
msgstr "Ïîêàç ç ïîçèö³¿:"

#: CVS/Base/browseaccounts.php:55 CVS/Base/browseaccounts.php:242
#: browseaccounts.php:55 browseaccounts.php:242 search.php:123 search.php:239
msgid "Add new account"
msgstr "Äîäàòè íîâèé àêàóíò"

#: CVS/Base/browseaccounts.php:78 adminuser.php:65 aliases.php:56
#: browseaccounts.php:78 editalias.php:69 search.php:131 search.php:135
msgid "Previous 10 entries"
msgstr "Ïîïåðåäí³õ 10"

#: CVS/Base/browseaccounts.php:82 adminuser.php:69 aliases.php:57
#: browseaccounts.php:82 editalias.php:70 search.php:138 search.php:142
msgid "Next 10 entries"
msgstr "Íàñòóïíèõ 10"

#: CVS/Base/browseaccounts.php:91 adminuser.php:78 aliases.php:64
#: browse.php:20 browseaccounts.php:91 editaccount.php:50 editalias.php:76
#: search.php:52 search.php:149 search.php:253
msgid "action"
msgstr "ä³ÿ"

#: CVS/Base/browseaccounts.php:96 aliases.php:65 browseaccounts.php:96
#: editaccount.php:54 newaccount.php:136 newalias.php:82 search.php:150
#: search.php:254
msgid "Email address"
msgstr "Åëåêòðîííà àäðåñà"

#: CVS/Base/browseaccounts.php:96 browseaccounts.php:96 editaccount.php:63
#: login.php:61 search.php:151
msgid "Username"
msgstr "²ìÿ êîðèñòóâà÷à"

#: CVS/Base/browseaccounts.php:97 browseaccounts.php:97
msgid "Last login"
msgstr "×àñ àâòîðèçàö³¿"

#: CVS/Base/browseaccounts.php:97 browseaccounts.php:97 editaccount.php:68
#: search.php:152
msgid "Quota used"
msgstr "Âèêîðèñòàíà êâîòà"

#: CVS/Base/browseaccounts.php:136 browseaccounts.php:136
msgid "n/a"
msgstr "n/a"

#: CVS/Base/browseaccounts.php:146 browseaccounts.php:146 search.php:171
msgid "Edit account"
msgstr "Ðåäàãóâàòè àêàóíò"

#: CVS/Base/browseaccounts.php:151 browseaccounts.php:151
msgid "Change Password"
msgstr "Çì³íèòè ïàðîëü"

#: CVS/Base/browseaccounts.php:155 browseaccounts.php:155 editaccount.php:58
#: editaccount.php:91
msgid "Forward"
msgstr "Ïåðåñëàòè"

#: CVS/Base/browseaccounts.php:159 browseaccounts.php:159 search.php:172
msgid "Delete account"
msgstr "Âèäàëèòè àêàóíò"

#: CVS/Base/browseaccounts.php:163 browseaccounts.php:163 search.php:173
msgid "Set quota"
msgstr "Âñòàíîâèòè êâîòó"

#: CVS/Base/browseaccounts.php:167 browseaccounts.php:167 search.php:174
msgid "Set catch all"
msgstr "Âñòàíîâèòè ïðèéìàòè âñå"

#: CVS/Base/browseaccounts.php:181 browseaccounts.php:181 search.php:190
msgid "Forwards"
msgstr "Ïåðåñëàí³"

#: CVS/Base/browseaccounts.php:218 browseaccounts.php:218 editaccount.php:152
#: search.php:217
msgid "out of"
msgstr "ç"

#: CVS/Base/browseaccounts.php:221 browseaccounts.php:221 search.php:220
msgid "Unable to retrieve quota"
msgstr "Íåìîæëèâî âñòàíîâèòè êâîòó"

#: CVS/Base/browseaccounts.php:224 browseaccounts.php:224 editaccount.php:155
#: search.php:223
msgid "Quota not set"
msgstr "Êâîòó íå âñòàíîâëåíî"

#: CVS/Base/browseaccounts.php:236 browseaccounts.php:236 search.php:235
msgid "No accounts found"
msgstr "Íå çíàéäåíî æîäíîãî àêàóíòó"

#: adminuser.php:13
msgid "Browse admins"
msgstr "Ïåðåãëÿíóòè àäì³í³â"

#: adminuser.php:35
msgid "Total administrators"
msgstr "Âñüîãî àäì³í³ñòðàòîð³â"

#: adminuser.php:43
msgid "Add administator"
msgstr "Äîäàòè àäì³íà"

#: adminuser.php:82
msgid "Adminname"
msgstr "²ìÿ àäì³íà"

#: adminuser.php:86
msgid "domain"
msgstr "äîìåí"

#: adminuser.php:90
msgid "admin type"
msgstr "òèï àäì³íà"

#: adminuser.php:119
msgid "Edit adminuser"
msgstr "Ðåäàãóâàòè àäì³íà"

#: adminuser.php:125
msgid "Delete adminuser"
msgstr "Âèäàëèòè àäì³íà"

#: adminuser.php:144
msgid "All domains"
msgstr "Âñ³ äîìåíè"

#: adminuser.php:148
msgid "None"
msgstr "Æîäíîãî"

#: adminuser.php:158 editadminuser.php:65 menu.inc.php:132 newadminuser.php:57
#: newadminuser.php:207
msgid "Superuser"
msgstr "Ñóïåðêîðèñòóâà÷"

#: adminuser.php:160 editadminuser.php:76 menu.inc.php:134 newadminuser.php:61
#: newadminuser.php:209
msgid "Domain Master"
msgstr "Ìàéñòåð äîìåíó"

#: adminuser.php:174
msgid "No accounts fount"
msgstr "Àêàóíò³â íå çíàéäåíî"

#: adminuser.php:181
msgid "Add administrator"
msgstr "Äîäàòè àäì³í³ñòðàòîðà"

#: aliases.php:11
msgid "Browse aliases for domain"
msgstr "Ïåðåãëÿíóòè àë³àñè äîìåíó"

#: aliases.php:50
msgid "Total aliases"
msgstr "Âñüîãî àë³àñ³â"

#: aliases.php:55
msgid "Add new alias"
msgstr "Äîäàòè íîâèé àë³àñ"

#: aliases.php:66 editalias.php:77 editemail.php:113 newemail.php:98
#: search.php:255
msgid "Destination"
msgstr "Ïðèçíà÷åííÿ"

#: aliases.php:91 search.php:273
msgid "Edit Alias"
msgstr "Ðåäàãóâàòè àë³àñ"

#: aliases.php:92 search.php:274
msgid "Delete Alias"
msgstr "Âèäàëèòè àë³àñ"

#: auth.inc.php:70
msgid "Web-cyradm is for authorized users only."
msgstr "Web-cyradm ëèøå äëÿ àâòîðèçîâàíèõ êîðèñòóâà÷³â."

#: auth.inc.php:71
msgid "Make sure you entered the right password."
msgstr "Ïåðåêîíàéòåñü, ùî âè ââåëè ïðàâèëüíèé ïàðîëü."

#: auth.inc.php:72
msgid "Push the back button in your browser to try again."
msgstr "Íàòèñí³òü â âàøîìó áðàóçåð³ êíîïêó Íàçàä, àáè ñïðîáóâàòè ùå ðàç."

#: auth.inc.php:73
msgid " Your attempt to login has been stored."
msgstr "Âàøó ñïðîáó ââ³éòè çáåðåæåíî."

#: browse.php:13
msgid "Browse domains"
msgstr "Ïåðåãëÿíóòè äîìåíè"

#: browse.php:24 search.php:53
msgid "domainname"
msgstr "²ìÿ äîìåíó"

#: browse.php:31 search.php:57
msgid "prefix"
msgstr "ïðåô³êñ"

#: browse.php:38 search.php:60
msgid "max Accounts"
msgstr "ìàêñ. Àêàóíò³â"

#: browse.php:42 search.php:61
msgid "default quota per user"
msgstr "íîì³íàëüíà êâîòà äëÿ êîðèñòóâà÷à"

#: browse.php:90 search.php:82
msgid "Edit Domain"
msgstr "Ðåäàãóâàòè Äîìåí"

#: browse.php:91 search.php:83
msgid "Delete Domain"
msgstr "Âèäàëèòè Äîìåí"

#: browse.php:92 deletedomain.php:51 menu.inc.php:59 search.php:84
msgid "accounts"
msgstr "àêàóíòè"

#: browse.php:93 menu.inc.php:68 search.php:85
msgid "Aliases"
msgstr "Àë³àñè"

#: catchall.php:13
msgid "Define a Account for receiving undefined addresses for domain"
msgstr "Çàçíà÷òå àêàóíò äëÿ îòðèìàííÿ íåâèçíà÷åíèõ àäðåñ äëÿ äîìåíó"

#: catchall.php:38
msgid "Do you really want to define the user"
msgstr "Âè ä³éñíî õî÷åòå âèçíà÷èòè êîðèñòóâà÷à"

#: catchall.php:42
msgid "to receive all undefined emailaddresses"
msgstr "ùîá îòðèìàòè âñ³ íåâèçíà÷åí³ àäðåñè åëåêòðîííî¿ ïîøòè"

#: catchall.php:46
msgid "The currently defined user"
msgstr "×èííèé êîðèñòóâà÷"

#: catchall.php:46
msgid "will not receiving any undefined emailaddresses anymore"
msgstr "íå îòðèìóâàòèìå á³ëüøå áóäü-ÿê³ ëèñòè íåâèçíà÷åíî¿ àäðåñè"

#: catchall.php:74
msgid "The user"
msgstr "Êîðèñòóâà÷"

#: catchall.php:74
msgid "is already defined to receive all undefined Emails."
msgstr "âæå âèçíà÷åíèé äëÿ ïðèéîìó ïîøòè, ùî íàä³éøëà íà íåâèçíà÷åí³ àäðåñè"

#: catchall.php:76
msgid "Do you want to remove the function \"catch all\" for the account"
msgstr "Âè õî÷åòå â³äì³íèòè ôóíêö³þ \"ëîâèòè âñå\" äëÿ öüîãî àêàóíòà"

#: catchall.php:127 newadminuser.php:197
msgid "successfully added to Database"
msgstr "óñï³øíî çàíåñåíî â áàçó"

#: catchall.php:133 editdomain.php:56 editemail.php:53 newdomain.php:255
#: newemail.php:44 delete_catchall.php:37
msgid "Database error, please try again"
msgstr "Ïîìèëêà áàçè äàíèõ, ñïðîáóéòå ùå"

#: catchall.php:140 delete_catchall.php:44
msgid "Cancelled"
msgstr "Â³äì³íåíî"

#: change_password.php:53
msgid "Password changed"
msgstr "Ïàðîëü çì³íåíî"

#: change_password.php:56
msgid "Failure in changing password."
msgstr "Íå âèéøëî çì³íèòè ïàðîëü"

#: change_password.php:59 editadminuser.php:252
msgid "New passwords are not equal. Password not changed"
msgstr "Íîâ³ ïàðîë³ íå ³äåíòè÷í³. Ïàðîëü íå çì³íåíî"

#: change_password.php:72
msgid "Change password for account"
msgstr "Çì³íèòè ïàðîëü äëÿ àêàóíòà"

#: change_password.php:91
msgid "New password"
msgstr "Íîâèé ïàðîëü"

#: change_password.php:101
msgid "Confirm new password"
msgstr "Ï³äòâåðä³òü íîâèé ïàðîëü"

#: change_password.php:121 newaccount.php:243
msgid "Passwords do not match"
msgstr "Ïàðîë³ íå îäíàêîâ³"

#: deleteaccount.php:25
msgid "Delete an Account from the System"
msgstr "Âèäàëèòè Àêàóíò ç ñèñòåìè"

#: deleteaccount.php:29
msgid "Do you really want to delete the user "
msgstr "Âè ä³éñíî õî÷åòå âèäàëèòè êîðèñòóâà÷à"

#: deleteaccount.php:33
msgid "with all its defined Emailaddresses"
msgstr "ç óñ³ìà éîãî âèçíà÷åíèìè åë. àäðåñàìè?"

#: deleteaccount.php:69 deleteadminuser.php:68 deletedomain.php:84
#: deleteemail.php:55
msgid "Action cancelled, nothing deleted"
msgstr "Ä³þ â³äì³íåíî, í³÷îãî íå âèäàëåíî"

# Submit and cancel buttons
#: deleteaccount.php:100
msgid "User deleted"
msgstr "Êîðèñòóâà÷à âèäàëåíî"

#: deleteaccount.php:111 deletedomain.php:175
msgid ""
"Security violation detected, action cancelled. Your attempt has been logged."
msgstr ""
"Çíàéäåíî ïîðóøåííÿ çàõèñòó, ä³þ â³äì³íåíî. Âàøó ñïðîáó çàô³êñîâàíî"

#: deleteadminuser.php:17
msgid "Delete an Admin account from the System"
msgstr "Âèäàëèòè àêàóíò Àäì³í³ñòðàòîðà ç Ñèñòåìè"

#: deleteadminuser.php:21
msgid "Do you really want to delete the Domain supervisor"
msgstr "Âè ä³éñíî õî÷åòå âèäàëèòè Ìàéñòðà Äîìåíó"

#: deleteadminuser.php:90 editadminuser.php:276
msgid "At least one Superuser is needed for Web-cyradm"
msgstr "Ïðèíàéìí³ îäèí Ñóïåðêîðèñòóâà÷ ïîòð³áåí äëÿ Web-cyradm"

#: deleteadminuser.php:103
msgid "Admin user deleted"
msgstr "Àäì³í³ñòðàòîðà âèäàëåíî"

#: deleteadminuser.php:116 editadminuser.php:299 newadminuser.php:226
msgid "Security violation detected, nothing deleted, attempt has been logged"
msgstr ""
"Çíàéäåíî ïîðóøåííÿ çàõèñòó, í³÷îãî íå âèäàëåíî. Âàøó ñïðîáó çàô³êñîâàíî"

#: deletedomain.php:28
msgid "Delete a Domain from the System"
msgstr "Âèäàëèòè Äîìåí ç Ñèñòåìè"

#: deletedomain.php:32
msgid "Do you really want to delete the Domain"
msgstr "Âè ä³éñíî õî÷åòå âèäàëèòè Äîìåí"

#: deletedomain.php:37
msgid "with all its defined accounts, admins, and emailaddresses"
msgstr "ç óñ³ìà âèçíà÷åíèìè àêàóíòàìè, àäì³íàìè ³ åë. àäðåñàìè"

#: deletedomain.php:43
msgid "This can take a while depending on how many account have to be deleted"
msgstr "Öå çàéìå äåÿêèé ÷àñ, çàëåæíî â³ä ê³ëüêîñò³ àêàóíò³â ÿê³ âèäàëÿþòüñÿ"

#: deletedomain.php:47
msgid "Your action will delete"
msgstr "Âàøà ä³ÿ - âèäàëèòü"

#: deletedomain.php:154 newadminuser.php:101
msgid "Domain"
msgstr "Äîìåí"

#: deletedomain.php:158
msgid "successfully deleted"
msgstr "óñï³øíî âèäàëåíî"

#: deletealias.php:28
msgid "Please confirm you want to remove"
msgstr "Áóäü-ëàñêà, ï³äòâåðä³òü âèäàëåííÿ"

#: deletealias.php:28
msgid "from the alias"
msgstr "ç àë³àñ³â"

#: deletealias.php:30
msgid "Yes"
msgstr "Òàê"

#: deletealias.php:49
msgid "Please confirm you want to remove the alias"
msgstr "Áóäü-ëàñêà, ï³äòâåðä³òü âèäàëåííÿ àë³àñó"

#: deletealias.php:77
msgid "Removed"
msgstr "Âèäàëåíî"

#: deletealias.php:77
msgid "from"
msgstr "ç"

#: deletealias.php:85
msgid "Removed the alias"
msgstr "Âèäàëåíî àë³àñ"

#: editaccount.php:21
msgid "Email addresses defined for user"
msgstr "Âèçíà÷åíî åë. àäðåñè äëÿ êîðèñòóâà÷à"

#: editaccount.php:42
msgid "New email address"
msgstr "Íîâà åë. àäðåñà"

#: editaccount.php:90
msgid "Edit Emailaddress"
msgstr "Ðåäàãóâàòè åë. àäðåñó"

#: editaccount.php:92
msgid "Vacation"
msgstr "Êàí³êóëè/Â³äïóñòêà"

#: editaccount.php:93
msgid "Delete Emailaddress"
msgstr "Âèäàëèòè åë. àäðåñó"

#: editadminuser.php:13
msgid "Change admin user for domain"
msgstr "Çì³íèòè àäì³í³ñòðàòîðà äîìåíó"

#: editadminuser.php:42 newaccount.php:106 newadminuser.php:36
msgid "Accountname"
msgstr "Ðåºñòðàö³éíå ³ìÿ"

#: editadminuser.php:52 newadminuser.php:51
msgid "Admin Type"
msgstr "Òèï àäì³í³ñòðàòîðà"

#: editadminuser.php:84 login.php:71 newaccount.php:138 newadminuser.php:71
msgid "Password"
msgstr "Ïàðîëü"

#: editadminuser.php:100 newaccount.php:139 newadminuser.php:86
msgid "Confirm Password"
msgstr "Ï³äòâåðä³òü ïàðîëü"

#: editadminuser.php:155
msgid "No Domain assigned yet"
msgstr "Æîäåí äîìåí ùå íå çàêð³ïëåíî"

#: editadminuser.php:165
msgid "Add new domain to this admin"
msgstr "Äîäàòè íîâèé äîìåí öüîìó àäì³íó"

#: editadminuser.php:223
msgid "No such domain, create domain first"
msgstr "Íåìàº òàêîãî äîìåíó, ñïî÷àòêó íåîáõ³äíî éîãî ñòâîðèòè"

#: editadminuser.php:231
msgid "Admin already repsonsible for the domain"
msgstr "Àäì³í âæå â³äïîâ³äàëüíèé çà äîìåí"

#: editalias.php:27
msgid "There was an error adding $dest to $alias: "
msgstr "Ïîìèëêà äîäàâàííÿ $dest â $alias:"

#: editalias.php:64
msgid "Editing alias"
msgstr "Ðåäàãóâàííÿ àë³àñó"

#: editalias.php:68
msgid "Delete this alias"
msgstr "Âèäàëèòè öåé àë³àñ"

#: editalias.php:101
msgid "Cannot remove from account"
msgstr "Íåìîæëèâî âèäàëèòè ç àêàóíòà"

#: editalias.php:105 editalias.php:109
msgid "Remove destination"
msgstr "Âèäàëèòè ïðèçíà÷åííÿ"

#: editalias.php:125
msgid "This alias has no destinations"
msgstr "Àë³àñ íå ìàº ïðèçíà÷åíü"

#: editalias.php:142
msgid "New destination"
msgstr "Íîâå ïðèçíà÷åííÿ"

#: editdomain.php:46
msgid "Successfully changed domain"
msgstr "Äîìåí óñï³øíî çì³íåíî"

#: editdomain.php:92 newdomain.php:39
msgid "Domainname"
msgstr "Äîìåííå ³ìÿ"

#: editdomain.php:106 newdomain.php:57
msgid "Prefix"
msgstr "Ïðåô³êñ"

#: editdomain.php:123 newdomain.php:73
msgid "Allow Free Names"
msgstr "Äîçâîëèòè Â³ëüí³ ²ìåíà"

#: editdomain.php:141 newdomain.php:90
msgid "Allow Free Mail Addresses"
msgstr "Äîçâîëèòè Â³ëüí³ Åë. Àäðåñè"

#: editdomain.php:159 newdomain.php:102
msgid "Maximum Accounts"
msgstr "Ìàêñèìóì Àêàóíò³â"

#: editdomain.php:173 newdomain.php:117
msgid "Default Quota in Kilobytes"
msgstr "Íîì³íàëüíà êâîòà â Êá"

#: editdomain.php:202
msgid "Your are not allowed to change domains!"
msgstr "Âàì íå äîçâîëåíî çì³íþâàòè äîìåíè!"

#: editemail.php:46
msgid "Successfully changed"
msgstr "Óñï³øíî çì³íåíî"

#: editemail.php:68
msgid ""
"You can't edit this email address with 'Allow Free Mail Addressess' set to "
"off!"
msgstr "Âè íå çìîæåòå çì³íèòè öþ åë. àäðåñó ç âèìêíåíîþ îïö³ºþ 'Äîçâîëèòè "
"Â³ëüí³ ²ìåíà!"

#: editemail.php:95 newemail.php:77
msgid "Emailaddress"
msgstr "Åëåêòðîííà àäðåñà"

#: failed.php:66
msgid "Login failed"
msgstr "Ïîìèëêà ïðè âõîä³"

#: failed.php:71 login.php:51
msgid "This is only for authorized users"
msgstr "Ëèøå äëÿ àâòîðèçîâàíèõ êîðèñòóâà÷³â"

#: failed.php:76 logout.php:62 timeout.php:38
msgid "If you like to login click"
msgstr "ßêùî õî÷åòå ââ³éòè - êë³êí³òü"

#: failed.php:78 logout.php:64 timeout.php:40
msgid "here"
msgstr "òóò"

#: forwardalias.php:68 forwardaccount.php:51
msgid "Forward set"
msgstr "Ïåðåñèëàííÿ âñòàíîâëåíî"

#: forwardalias.php:70
msgid "Failure in setting forward"
msgstr "Ïðîâàëåíî âñòàíîâëåííÿ ïåðåñèëàííÿ"

#: forwardalias.php:73
msgid "Wrong password"
msgstr "Íåâ³ðíèé ïàðîëü"

#: forwardalias.php:89 forwardalias.php:97 forwardalias.php:103
#: forwardalias.php:107 forwardaccount.php:57
msgid "Forwarding removed"
msgstr "Ïåðåñèëàííÿ â³äì³íåíî"

#: forwardalias.php:91 forwardalias.php:99
msgid "Failure in removing forwarding"
msgstr "Ïðîâàëåíî â³äì³íó ïåðåñèëàííÿ"

#: forwardalias.php:111 vacation.php:79 vacation.php:107
msgid "Failed to login"
msgstr "Ïðîâàëåíî âõ³ä â ñèñòåìó"

#: forwardalias.php:123 vacation.php:119
msgid "Not possible"
msgstr "Íå ìîæëèâî"

#: forwardalias.php:152
msgid ""
"You can't forward this email address with 'Allow Free Mail Addressess' set "
"to off!"
msgstr "Âè íå ìîæåòå ïåðåíàïðàâèòè öþ åë. àäðåñó ç âèìêíåíîþ "
"îïö³ºþ 'Äîçâîëèòè Â³ëüí³ Åë. Àäðåñè'!"

#: forwardalias.php:161
msgid "Forward for emailaddress"
msgstr "Ïåðåñèëàòè íà åë. àäðåñó"

#: forwardalias.php:204
msgid "Set forwarding to"
msgstr "Âñòàíîâèòè ïåðåñèëàííÿ íà"

#: forwardalias.php:204
msgid "(Seperate multiple values with ,)"
msgstr "(Â³äîêðåìòå ñêëàäí³ çíà÷åííÿ çíàêîì,)"

#: forwardalias.php:210 forwardaccount.php:125
msgid "Keep a copy in the user's mailbox"
msgstr "Çàëèøàòè êîï³þ â ïîøòîâ³é ñêðèíö³ êîðèñòóâà÷à"

#: forwardalias.php:215 forwardaccount.php:139
msgid "Remove forwarding"
msgstr "Â³äì³íèòè ïåðåíàïðàâëåííÿ"

#: index.php:23
msgid "migrate.php exists! please delete or rename it"
msgstr "migrate.php ³ñíóº! Áóäü-ëàñêà, âèäàë³òü ÷è çì³í³òü éîãî íàçâó"

#: index.php:138
msgid "web-cyradm has not yet been configured"
msgstr "web-cyradm íå â³äêîíô³ãóðîâàíî"

#: index.php:141
msgid "Configuration steps:"
msgstr "Êðîêè êîíô³ãóðàö³¿:"

#: index.php:143
msgid "copy the config file that comes with the distribution: "
msgstr "ñêîï³þéòå ôàéë êîíô³ãóðàö³¿, ÿêèé ³äå ç ïðîãðàìîþ"

#: index.php:146
msgid "Edit the file config/conf.php to match your systems configuration"
msgstr "Â³äðåäàãóéòå ôàéë config/conf.php ó â³äïîâ³äíîñò³ ç âàøîþ ñèñòåìîþ"

#: index.php:148
msgid ""
"Further information about how to configure Web-cyradm can be found at the "
"following website:"
msgstr "Äîäàòêîâà ³íôîðìàö³ÿ ïðî êîíô³ãóðàö³þ Web-cyradm ìîæå áóòè "
"çíàéäåíà íà íàñòóïíîìó âåá-ñàéò³:"

#: login.php:50
msgid "Welcome to Web-cyradm"
msgstr "Ëàñêàâî ïðîñèìî â Web-cyradm"

#: login.php:52
msgid "Please authenticate yourself"
msgstr "Áóäü-ëàñêà àâòîðèçóéòåñü"

#: login.php:84
msgid "Select language"
msgstr "Âèáåð³òü ìîâó"

#: logout.php:52
msgid "Thank you for using Web-cyradm"
msgstr "Äÿêóºìî çà âèêîðèñòàííÿ Web-cyradm"

#: logout.php:57
msgid "You are logged out"
msgstr "Âè âèéøëè ç ñèñòåìè"

#: menu.inc.php:19
msgid "Superusers Menu"
msgstr "Ìåíþ Ñóïåðêîðèñòóâà÷à"

#: menu.inc.php:23
msgid "Domainmasters menu"
msgstr "Ìåíþ àäì³í³ñòðàòîðà äîìåíó"

#: menu.inc.php:31
msgid "add new domain"
msgstr "äîäàòè íîâèé äîìåí"

#: menu.inc.php:38
msgid "browse domains"
msgstr "ïåðåãëÿíóòè äîìåíè"

#: menu.inc.php:45
msgid "adminusers"
msgstr "àäì³í³ñòðàòîðè"

#: menu.inc.php:75
msgid "home"
msgstr "íà ãîëîâíó"

#: menu.inc.php:82
msgid "logout"
msgstr "âèéòè"

#: menu.inc.php:90
msgid "Search"
msgstr "Ïîøóê"

#: menu.inc.php:114
msgid "Logged in as user"
msgstr "Íà ïðàâàõ êîðèñòóâà÷à"

#: menu.inc.php:126
msgid "Your role is"
msgstr "Âàø³ ïðàâà â ñèñòåì³"

#: menu.inc.php:144
msgid "Current domain is"
msgstr "×èííèé äîìåí"

#: menu.inc.php:150
msgid "No domain selected"
msgstr "Äîìåí íå âèáðàíî"

#: newaccount.php:13
msgid "Add new Account to domain"
msgstr "Äîäàòè íîâèé Àêàóíò äî äîìåíó"

#: newaccount.php:43 newalias.php:43
msgid "transport is not cyrus, unable to create account"
msgstr "òðàíñïîðò íå cyrus, íå ìîæó ñòâîðèòè àêàóíò"

#: newaccount.php:55
msgid "Sorry, no more account allowed for domain"
msgstr "Âèáà÷òå, á³ëüøå àêàóíò³â äëÿ äîìåíó íå äîçâîëåíî"

#: newaccount.php:60
msgid "Maximum allowed accounts is"
msgstr "Ìàêñèìàëüíà ê³ëüê³ñòü àêàóíò³â"

#: newaccount.php:137
msgid "Quota"
msgstr "Êâîòà"

#: newaccount.php:196
msgid "Sorry, the username already exists"
msgstr "Âèáà÷òå, òàêèé êîðèñòóâà÷ âæå ³ñíóº"

#: newaccount.php:221
msgid "Account successfully added to the Database"
msgstr "Àêàóíò óñï³øíî äîäàíî â áàçó äàíèõ"

#: newaccount.php:234
msgid "Account succesfully added to the IMAP Subsystem"
msgstr "Àêàóíò óñï³øíî äîäàíî â ï³äñèñòåìó IMAP"

#: newadminuser.php:13
msgid "Add new administrator"
msgstr "Äîäàòè íîâîãî àäì³í³ñòðàòîðà"

#: newadminuser.php:64
msgid "Select \"Superuser\" for all domains"
msgstr "Âèáåð³òü \"Ñóïåðêîðèñòóâà÷à\" äëÿ âñ³õ äîìåí³â"

#: newadminuser.php:132
msgid "You must provide a username"
msgstr "Âè ìàºòå âêàçàòè ³ìÿ êîðèñòóâà÷à"

#: newadminuser.php:145
msgid "Passwords are empty or not equal."
msgstr "Ïàðîëü ïîðîæí³é àáî íå ñï³âïàäàº."

#: newadminuser.php:157
msgid "Username already exist"
msgstr "²ìÿ êîðèñòóâà÷à âæå ³ñíóº"

#: newalias.php:15
msgid "Add new alias to domain"
msgstr "Äîäàòè íîâèé àë³àñ äî äîìåíó"

#: newalias.php:55
msgid "Sorry, no more alias allowed for domain"
msgstr "Âèáà÷òå, á³ëüøå àë³àñ³â äëÿ äîìåíó íå äîçâîëåíî"

#: newalias.php:60
msgid "Maximum allowed aliases is"
msgstr "Ìàêñèìàëüíà äîçâîëåíà ê³ëüê³ñòü àë³àñ³â"

#: newdomain.php:15
msgid "Add new domain"
msgstr "Äîäàòè íîâèé äîìåí"

#: newdomain.php:140
msgid "Standard Mailboxes"
msgstr "Ñòàíäàðòí³ ïîøòîâ³ ñêðèíüêè"

#: newdomain.php:146
msgid ""
"emailaddress where the default aliases should be mapped (empty means no "
"mapping)"
msgstr ""
"Ïîøòîâà àäðåñà êóäè àë³àñè íîì³íàëüíî ìàþòü âêàçóâàòè (ïîðîæíüî - íå "
"âêàçóâàòè í³êóäè)"

#: newdomain.php:163
msgid "Mail transport"
msgstr "Òðàíñïîðòóâàííÿ ïîøòè"

#: newdomain.php:166
msgid "Leave this as is, unless you know what you are doing"
msgstr ""
"Çàëèøòå âñå ÿê º, çì³íþéòå ëèøå ÿêùî âè àáñîëþòíî âïåâíåí³ â ñâî¿õ ä³ÿõ"

#: newdomain.php:187
msgid "Parameter"
msgstr "Ïàðàìåòð"

#: newdomain.php:245 newemail.php:34
msgid "Successfully added"
msgstr "Óñï³øíî äîäàíî"

#: newdomain.php:273
msgid "You are not allowed to add new domains"
msgstr "Âàì íå äîçâîëåíî äîäàâàòè íîâ³ äîìåíè"

#: newemail.php:56
msgid "New emailaddress for user"
msgstr "Íîâà åë. àäðåñà äëÿ êîðèñòóâà÷à"

#: search.php:48
msgid "Total domains matching"
msgstr "Âñüîãî â³äïîâ³äíèõ äîìåí³â"

#: search.php:110
msgid "Total users matching"
msgstr "Âñüîãî â³äïîâ³äíèõ êîðèñòóâà÷³â"

#: search.php:118
msgid "Displaying from position"
msgstr "Ïîêàç ç ïîçèö³¿"

#: search.php:245
msgid "Total aliases matching"
msgstr "Âñüîãî â³äïîâ³äíèõ àë³àñ³â"

#: search.php:247
msgid "No aliases found"
msgstr "Æîäíîãî àë³àñó íå çíàéäåíî"

#: setquota.php:26
msgid "Setting individual Quota for user"
msgstr "Âñòàíîâëåííÿ ³íäèâ³äóàëüíî¿ êâîòè äëÿ êîðèñòóâà÷à"

#: setquota.php:58
msgid "Submit"
msgstr "Ï³äòâåðäèòè"

#: setquota.php:70
msgid "Quote for user"
msgstr "Êâîòà äëÿ êîðèñòóâà÷à"

#: setquota.php:74
msgid "changed to"
msgstr "çì³íåíî íà"

#: timeout.php:33
msgid "Your session timed out"
msgstr "Âàøà ñåñ³ÿ âè÷åðïàíà ïî ÷àñó"

#: vacation.php:71
msgid "Vacation notice set"
msgstr "Ïîâ³äîìëåííÿ ïðî êàí³êóëè/â³äïóñòêó âñòàíîâëåíî"

#: vacation.php:73
msgid "Failed to activate vacation"
msgstr "Ïðîâàëåíî àêòèâàö³þ Ïîâ³äîìëåííÿ ïðî êàí³êóëè/â³äïóñòêó"

#: vacation.php:76
msgid "Failure in modifying vacation notice"
msgstr "Ïðîâàëåíî çì³íó Ïîâ³äîìëåííÿ ïðî êàí³êóëè/â³äïóñòêó"

#: vacation.php:95
msgid "Vacation notice unset"
msgstr "Ïîâ³äîìëåííÿ ïðî êàí³êóëè/â³äïóñòêó îáíóëåíî"

#: vacation.php:97
msgid "Failure in unseting vacation notice"
msgstr "Ïðîâàëåíî îáíóëåííÿ Ïîâ³äîìëåííÿ ïðî êàí³êóëè/â³äïóñòêó"

#: vacation.php:101
msgid "Vacation notice removed"
msgstr "Ïîâ³äîìëåííÿ ïðî êàí³êóëè/â³äïóñòêó âèìêíåíî"

#: vacation.php:103
msgid "Failure in removing vacation notice"
msgstr "Ïðîâàëåíî âèìêíåííÿ Ïîâ³äîìëåííÿ ïðî êàí³êóëè/â³äïóñòêó"

#: vacation.php:142
msgid ""
"You can't set Vacation Message for this email address with 'Allow Free Mail "
"Addressess' set to off!"
msgstr "Âè íå ìîæåòå âñòàíîâèòè Ïîâ³äîìëåííÿ ïðî êàí³êóëè/â³äïóñòêó äëÿ ö³º¿ "
"åë. àäðåñè ç âèìêíåíîþ îïö³ºþ 'Äîçâîëèòè Â³ëüí³ Åëåêòðîíí³ Àäðåñè'!"

#: vacation.php:152
msgid "Vacation message for emailaddress"
msgstr "Ïîâ³äîìëåííÿ ïðî êàí³êóëè/â³äïóñòêó äëÿ åë. àäðåñè"

#: vacation.php:174
msgid "Set vacation notice"
msgstr "Âñòàíîâèòè Ïîâ³äîìëåííÿ ïðî êàí³êóëè/â³äïóñòêó"

#: vacation.php:178
msgid "Remove vacation notice"
msgstr "Âèäàëèòè Ïîâ³äîìëåííÿ ïðî êàí³êóëè/â³äïóñòêó"

#: validate.inc.php:74 validate.inc.php:87 validate.inc.php:134
#: validate.inc.php:249
msgid "Security violation detected, attempt logged"
msgstr "Âèÿâëåíî ïîðóøåííÿ çàõèñòó, ñïðîáó çàô³êñîâàíî"

#: validate.inc.php:130
msgid "Quota exeedes the maximum allowed quota for this domain."
msgstr "Êâîòà ïåðåâèùóº ìàêñèìàëüíî äîïóñòèìó êâîòó äëÿ öüîãî äîìåíó."

#: forwardaccount.php:77
msgid "Forward for account"
msgstr "Ïåðåñëàòè äëÿ àêàóíòà"

#: forwardaccount.php:93
msgid "Set forwarding to (one address per line)"
msgstr "Âñòàíîâèòè ïåðåñèëàííÿ íà (îäíà àäðåñà íà ðÿäîê)"

#: delete_catchall.php:31
msgid "successfully deleted from the Database"
msgstr "óñï³øíî âèäàëåíî ç áàçè äàíèõ"

#: deleteemail.php:16
msgid "Delete emailaddress from the System"
msgstr "Âèäàëèòè åë. àäðåñó ç Ñèñòåìè"

#: deleteemail.php:23
msgid "Do you really want to delete the emailaddress for user"
msgstr "Âè ä³éñíî õî÷åòå âèäàëèòè åë. àäðåñó êîðèñòóâà÷à"

# Submit and cancel buttons
#: deleteemail.php:44
msgid "Yes, delete"
msgstr "Òàê, âèäàëèòè"

#: deleteemail.php:49
msgid "Cancel"
msgstr "Â³äì³íà"

#: deleteemail.php:70
msgid "Emailaddress deleted."
msgstr "Åë. àäðåñó âèäàëåíî"

#~ msgid "successfully changed Database...."
#~ msgstr "óñï³øíî çì³íåíî Áàçó äàíèõ..."

#~ msgid "Add new admin user for domain"
#~ msgstr "Äîäàòè íîâîãî àäì³í³ñòðàòîðà äëÿ  äîìåíó"

#~ msgid "Please select a domain first"
#~ msgstr "Áóäü-ëàñêà âèáåð³òü ñïî÷àòêó äîìåí"

# Error messages
#~ msgid "Not yet supported, change will be ignored"
#~ msgstr "Ùå íå ï³äòðèìóºòüñÿ, çì³íè áóäóòü ïðî³ãíîðîâàí³"
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Free Software Foundation, Inc.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
# 
msgid ""
msgstr ""
"Project-Id-Version: Web-cyradm 1.0\n"
"POT-Creation-Date: 2003-08-10 16:56+0200\n"
"PO-Revision-Date: 2003-08-22 12:55+0800\n"
"Last-Translator: Zhang Bo <boozhang@sdb.ac.cn>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=GB2312\n"
"Content-Transfer-Encoding: 8bit\n"

#: CVS/Base/browseaccounts.php:22 browseaccounts.php:22
msgid "Browse accounts for domain"
msgstr "ä¯ÀÀÓòÖÐµÄÓÃ»§"

#: CVS/Base/browseaccounts.php:34 adminuser.php:21 browse.php:66
#: browseaccounts.php:34 catchall.php:24 catchall.php:118
#: change_password.php:19 change_password.php:32 change_password.php:42
#: deleteaccount.php:83 deleteadminuser.php:74 deletedomain.php:17
#: editaccount.php:31 editdomain.php:37 editdomain.php:67 editemail.php:15
#: editemail.php:38 forwardalias.php:16 forwardalias.php:33 newaccount.php:26
#: newadminuser.php:137 newadminuser.php:215 newalias.php:26 newdomain.php:237
#: newemail.php:15 vacation.php:15 vacation.php:30 validate.inc.php:58
#: lib/crypto.php:30 lib/crypto.php:110 lib/crypto.php:149
#: forwardaccount.php:28 delete_catchall.php:23 deleteemail.php:62
msgid "Database error"
msgstr "Êý¾Ý¿â´íÎó"

#: CVS/Base/browseaccounts.php:48 browseaccounts.php:48 newaccount.php:68
msgid "Total accounts"
msgstr "È«²¿ÕËºÅ"

#: CVS/Base/browseaccounts.php:49 adminuser.php:36 browseaccounts.php:49
msgid "Displaying from position:"
msgstr "´Ó´ËÎ»ÖÃ¿ªÊ¼ÏÔÊ¾£º"

#: CVS/Base/browseaccounts.php:55 CVS/Base/browseaccounts.php:242
#: browseaccounts.php:55 browseaccounts.php:242 search.php:123 search.php:239
msgid "Add new account"
msgstr "Ìí¼ÓÐÂÕËºÅ"

#: CVS/Base/browseaccounts.php:78 adminuser.php:65 aliases.php:56
#: browseaccounts.php:78 editalias.php:69 search.php:131 search.php:135
msgid "Previous 10 entries"
msgstr "Ç°10¸ö"

#: CVS/Base/browseaccounts.php:82 adminuser.php:69 aliases.php:57
#: browseaccounts.php:82 editalias.php:70 search.php:138 search.php:142
msgid "Next 10 entries"
msgstr "ºó10¸ö"

#: CVS/Base/browseaccounts.php:91 adminuser.php:78 aliases.php:64
#: browse.php:20 browseaccounts.php:91 editaccount.php:50 editalias.php:76
#: search.php:52 search.php:149 search.php:253
msgid "action"
msgstr "Ö´ÐÐ²Ù×÷"

#: CVS/Base/browseaccounts.php:96 aliases.php:65 browseaccounts.php:96
#: editaccount.php:54 newaccount.php:136 newalias.php:82 search.php:150
#: search.php:254
msgid "Email address"
msgstr "ÓÊ¼þµØÖ·"

#: CVS/Base/browseaccounts.php:96 browseaccounts.php:96 editaccount.php:63
#: login.php:61 search.php:151
msgid "Username"
msgstr "ÓÃ»§Ãû"

#: CVS/Base/browseaccounts.php:97 browseaccounts.php:97
msgid "Last login"
msgstr "ÉÏ´ÎµÇÂ¼"

#: CVS/Base/browseaccounts.php:97 browseaccounts.php:97 editaccount.php:68
#: search.php:152
msgid "Quota used"
msgstr "ÒÑÓÃÓÊÏäÈÝÁ¿"

#: CVS/Base/browseaccounts.php:136 browseaccounts.php:136
msgid "n/a"
msgstr "ÎÞÐ§»òÎÞ·¨ÏÔÊ¾"

#: CVS/Base/browseaccounts.php:146 browseaccounts.php:146 search.php:171
msgid "Edit account"
msgstr "±à¼­ÕËºÅ"

#: CVS/Base/browseaccounts.php:151 browseaccounts.php:151
msgid "Change Password"
msgstr "ÐÞ¸ÄÃÜÂë"

#: CVS/Base/browseaccounts.php:155 browseaccounts.php:155 editaccount.php:58
#: editaccount.php:91
msgid "Forward"
msgstr "×ª·¢"

#: CVS/Base/browseaccounts.php:159 browseaccounts.php:159 search.php:172
msgid "Delete account"
msgstr "É¾³ýÕËºÅ"

#: CVS/Base/browseaccounts.php:163 browseaccounts.php:163 search.php:173
msgid "Set quota"
msgstr "ÉèÖÃÓÊÏäÈÝÁ¿"

#: CVS/Base/browseaccounts.php:167 browseaccounts.php:167 search.php:174
msgid "Set catch all"
msgstr "ÉèÖÃ½ÓÊÕËùÓÐ"

#: CVS/Base/browseaccounts.php:181 browseaccounts.php:181 search.php:190
msgid "Forwards"
msgstr "×ª·¢"

#: CVS/Base/browseaccounts.php:218 browseaccounts.php:218 editaccount.php:152
#: search.php:217
msgid "out of"
msgstr "Ê¹ÓÃÖÐ£¬¹²"

#: CVS/Base/browseaccounts.php:221 browseaccounts.php:221 search.php:220
msgid "Unable to retrieve quota"
msgstr "ÕÒ²»µ½ÓÊÏäÈÝÁ¿ÐÅÏ¢"

#: CVS/Base/browseaccounts.php:224 browseaccounts.php:224 editaccount.php:155
#: search.php:223
msgid "Quota not set"
msgstr "Î´ÉèÖÃÓÊÏäÈÝÁ¿ÉÏÏÞ"

#: CVS/Base/browseaccounts.php:236 browseaccounts.php:236 search.php:235
msgid "No accounts found"
msgstr "Ã»ÓÐÕËºÅ"

#: adminuser.php:13
msgid "Browse admins"
msgstr "ä¯ÀÀ¹ÜÀíÔ±"

#: adminuser.php:35
msgid "Total administrators"
msgstr "ËùÓÐ¹ÜÀíÔ±"

#: adminuser.php:43
msgid "Add administator"
msgstr "Ìí¼Ó¹ÜÀíÔ±"

#: adminuser.php:82
msgid "Adminname"
msgstr "¹ÜÀíÔ±Ãû"

#: adminuser.php:86
msgid "domain"
msgstr "Óò"

#: adminuser.php:90
msgid "admin type"
msgstr "¹ÜÀíÔ±ÀàÐÍ"

#: adminuser.php:119
msgid "Edit adminuser"
msgstr "±à¼­¹ÜÀíÔ±ÐÅÏ¢"

#: adminuser.php:125
msgid "Delete adminuser"
msgstr "É¾³ý¹ÜÀíÔ±"

#: adminuser.php:144
msgid "All domains"
msgstr "È«²¿Óò"

#: adminuser.php:148
msgid "None"
msgstr "ÎÞ"

#: adminuser.php:158 editadminuser.php:65 menu.inc.php:132 newadminuser.php:57
#: newadminuser.php:207
msgid "Superuser"
msgstr "³¬¼¶ÓÃ»§"

#: adminuser.php:160 editadminuser.php:76 menu.inc.php:134 newadminuser.php:61
#: newadminuser.php:209
msgid "Domain Master"
msgstr "Óò¹ÜÀíÔ±"

#: adminuser.php:174
msgid "No accounts fount"
msgstr "Ã»ÓÐÕËºÅ"

#: adminuser.php:181
msgid "Add administrator"
msgstr "Ìí¼Ó¹ÜÀíÔ±"

#: aliases.php:11
msgid "Browse aliases for domain"
msgstr "ä¯ÀÀ¸ÃÓòµÄ±ðÃû"

#: aliases.php:50
msgid "Total aliases"
msgstr "ËùÓÐ±ðÃû"

#: aliases.php:55
msgid "Add new alias"
msgstr "Ìí¼ÓÐÂ±ðÃû"

#: aliases.php:66 editalias.php:77 editemail.php:113 newemail.php:98
#: search.php:255
msgid "Destination"
msgstr "Ä¿±ê"

#: aliases.php:91 search.php:273
msgid "Edit Alias"
msgstr "±à¼­±ðÃû"

#: aliases.php:92 search.php:274
msgid "Delete Alias"
msgstr "É¾³ý±ðÃû"

#: auth.inc.php:70
msgid "Web-cyradm is for authorized users only."
msgstr "½öÊÚÈ¨ÓÃ»§¿ÉÊ¹ÓÃ±¾ÏµÍ³"

#: auth.inc.php:71
msgid "Make sure you entered the right password."
msgstr "Çë¼ì²éÊäÈëµÄÃÜÂëÊÇ·ñÕýÈ·"

#: auth.inc.php:72
msgid "Push the back button in your browser to try again."
msgstr "ÇëÔÚä¯ÀÀÆ÷ÖÐ°´ºóÍË°´Å¥ÔÙÊÔ"

#: auth.inc.php:73
msgid " Your attempt to login has been stored."
msgstr "ÄãÊÔÍ¼µÇÂ¼µÄ¶¯×÷ÒÑ±»¼ÇÈëÈÕÖ¾"

#: browse.php:13
msgid "Browse domains"
msgstr "ä¯ÀÀÓò"

#: browse.php:24 search.php:53
msgid "domainname"
msgstr "ÓòÃû"

#: browse.php:31 search.php:57
msgid "prefix"
msgstr "Ç°×º"

#: browse.php:38 search.php:60
msgid "max Accounts"
msgstr "×î´óÓÃ»§Êý"

#: browse.php:42 search.php:61
msgid "default quota per user"
msgstr "Ã¿ÓÃ»§È±Ê¡ÓÊÏäÈÝÁ¿"

#: browse.php:90 search.php:82
msgid "Edit Domain"
msgstr "±à¼­ÓòÐÅÏ¢"

#: browse.php:91 search.php:83
msgid "Delete Domain"
msgstr "É¾³ýÓò"

#: browse.php:92 deletedomain.php:51 menu.inc.php:59 search.php:84
msgid "accounts"
msgstr "ÕËºÅ¹ÜÀí"

#: browse.php:93 menu.inc.php:68 search.php:85
msgid "Aliases"
msgstr "±ðÃû"

#: catchall.php:13
msgid "Define a Account for receiving undefined adresses for domain"
msgstr "ÉèÖÃÒ»¸öÕËºÅÓÃÀ´½ÓÊÕ·¢Íù´ËÓò¡¢µ«ÊÇÄ¿µÄÓÊ¼þµØÖ·²»Ã÷È·µÄËùÓÐÓÊ¼þ"

#: catchall.php:38
msgid "Do you really want to define the user"
msgstr "ÄãÈ·¶¨ÒªÉèÖÃÕâ¸öÓÃ»§Âð£¿"

#: catchall.php:42
msgid "to receive all undefined emailadresses"
msgstr "ÓÃÀ´½ÓÊÕÄ¿µÄÓÊ¼þµØÖ·²»Ã÷È·µÄÓÊ¼þ"

#: catchall.php:46
msgid "The currently defined user"
msgstr "µ±Ç°ÉèÖÃµÄÓÃ»§"

#: catchall.php:46
msgid "will not receiving any undefined emailadresses anymore"
msgstr "²»ÔÙ½ÓÊÕÈÎºÎÄ¿µÄÓÊ¼þµØÖ·²»Ã÷È·µÄÓÊ¼þ"

#: catchall.php:74
msgid "The user"
msgstr "ÓÃ»§"

#: catchall.php:74
msgid "is allready defined to receive all undefined Emails."
msgstr "Ó¦¾­±»ÉèÖÃÎª½ÓÊÕËùÓÐÄ¿µÄµØÖ·²»Ã÷È·µÄÓÊ¼þ"

#: catchall.php:76
msgid "Do you want to remove the function \"catch all\" for the account"
msgstr "ÄãÈ·¶¨ÒªÎª¸ÃÓÃ»§È¡Ïû¡°½ÓÊÕËùÓÐÄ¿µÄµØÖ·²»Ã÷È·ÓÊ¼þ¡±µÄ¹¦ÄÜÂð"

#: catchall.php:127 newadminuser.php:197
msgid "successfully added to Database"
msgstr "ÒÑ³É¹¦¼ÓÈëµ½Êý¾Ý¿â"

#: catchall.php:133 editdomain.php:56 editemail.php:53 newdomain.php:255
#: newemail.php:44 delete_catchall.php:37
msgid "Database error, please try again"
msgstr "Êý¾Ý¿â´íÎó£¬ÇëÔÙÊÔ"

#: catchall.php:140 delete_catchall.php:44
msgid "Cancelled"
msgstr "ÒÑÈ¡Ïû"

#: change_password.php:53
msgid "Password changed"
msgstr "ÃÜÂëÒÑÐÞ¸Ä"

#: change_password.php:56
msgid "Failure in changing password."
msgstr "ÐÞ¸ÄÃÜÂë³ö´í"

#: change_password.php:59 editadminuser.php:252
msgid "New passwords are not equal. Password not changed"
msgstr "Á½´ÎÊäÈëµÄÃÜÂë²»Ò»ÖÂ£¬ÃÜÂëÎ´ÐÞ¸Ä¡£"

#: change_password.php:72
msgid "Change password for account"
msgstr "ÐÞ¸ÄÕËºÅÃÜÂë"

#: change_password.php:91
msgid "New password"
msgstr "ÐÂÃÜÂë"

#: change_password.php:101
msgid "Confirm new password"
msgstr "È·ÈÏÐÂÃÜÂë"

#: change_password.php:121 newaccount.php:243
msgid "Passwords do not match"
msgstr "Á½´ÎÊäÈëµÄÃÜÂë²»Ò»ÖÂ"

#: deleteaccount.php:25
msgid "Delete an Account from the System"
msgstr "´Ó´ËÏµÍ³ÖÐÉ¾³ýÒ»¸öÕËºÅ"

#: deleteaccount.php:29
msgid "Do you really want to delete the user "
msgstr "ÄãÈ·¶¨ÒªÉ¾³ý´ËÓÃ»§Âð"

#: deleteaccount.php:33
msgid "with all its defined Emailadresses"
msgstr "Í¬Ê±°üº¬ËùÓÐËü¶¨ÒåµÄÓÊ¼þµØÖ·"

#: deleteaccount.php:69 deleteadminuser.php:68 deletedomain.php:84
#: deleteemail.php:55
msgid "Action cancelled, nothing deleted"
msgstr "²Ù×÷È¡Ïû£¬Î´É¾³ýÈÎºÎ¶«Î÷"

#: deleteaccount.php:100
msgid "User deleted"
msgstr "¸ÃÓÃ»§ÒÑ±»É¾³ý"

#: deleteaccount.php:111 deletedomain.php:175
msgid ""
"Security violation detected, action cancelled. Your attempt has been logged."
msgstr "´Ë²Ù×÷Î£¼°°²È«£¬ÒÑ±»È¡Ïû¡£ÄãµÄÐÐÎªÒÑ±»¼ÇÈëÈÕÖ¾¡£"

#: deleteadminuser.php:17
msgid "Delete an Admin account from the System"
msgstr "´Ó´ËÏµÍ³ÖÐÉ¾³ýÒ»¸ö¹ÜÀíÔ±ÕËºÅ"

#: deleteadminuser.php:21
msgid "Do you really want to delete the Domain supervisor"
msgstr "ÄãÈ·¶¨ÒªÉ¾³ý´ËÓòµÄ¹ÜÀíÔ±ÕËºÅÂð"

#: deleteadminuser.php:90 editadminuser.php:276
msgid "At least one Superuser is needed for Web-cyradm"
msgstr "web-cyradm×îÉÙÐèÒªÒ»¸ö³¬¼¶ÓÃ»§µÄÕËºÅ"

#: deleteadminuser.php:103
msgid "Admin user deleted"
msgstr "ÒÑ¾­É¾³ý¸Ã¹ÜÀíÔ±ÕËºÅ"

#: deleteadminuser.php:116 editadminuser.php:299 newadminuser.php:226
msgid "Security violation detected, nothing deleted, attempt has been logged"
msgstr "´Ë²Ù×÷Î£¼°°²È«£¬Ã»ÓÐÉ¾³ýÈÎºÎ¶«Î÷£¬²Ù×÷ÒÑ±»¼ÇÈëÈÕÖ¾¡£"

#: deletedomain.php:28
msgid "Delete a Domain from the System"
msgstr "´Ó±¾ÏµÍ³ÖÐÉ¾³ýÒ»¸öÓò"

#: deletedomain.php:32
msgid "Do you really want to delete the Domain"
msgstr "ÄãÈ·¶¨ÒªÉ¾³ý´ËÓòÂð"

#: deletedomain.php:37
msgid "with all its defined accounts, admins, and emailadresses"
msgstr "Í¬Ê±°üº¬ËüÖ®ÉÏËùÓÐµÄÕËºÅ¡¢¹ÜÀíÔ±ÒÔ¼°ÓÊ¼þµØÖ·"

#: deletedomain.php:43
msgid "This can take a while depending on how many account have to be deleted"
msgstr "ÕâËù»¨µÄÊ±¼äÈ¡¾öÓÚÒªÉ¾³ý¶àÉÙÕËºÅ"

#: deletedomain.php:47
msgid "Your action will delete"
msgstr "´Ë²Ù×÷½«É¾³ý"

#: deletedomain.php:154 newadminuser.php:101
msgid "Domain"
msgstr "Óò"

#: deletedomain.php:158
msgid "successfully deleted"
msgstr "ÒÑ³É¹¦É¾³ý"

#: deletealias.php:28
msgid "Please confirm you want to remove"
msgstr "ÇëÈ·ÈÏÄãÒªÉ¾³ý"

#: deletealias.php:28
msgid "from the alias"
msgstr "´Ó±ðÃûÖÐ"

#: deletealias.php:30
msgid "Yes"
msgstr "È·¶¨"

#: deletealias.php:49
msgid "Please confirm you want to remove the alias"
msgstr "ÇëÈ·ÈÏÄãÏëÉ¾³ý¸Ã±ðÃû"

#: deletealias.php:77
msgid "Removed"
msgstr "ÒÑÉ¾³ý"

#: deletealias.php:77
msgid "from"
msgstr "´Ó"

#: deletealias.php:85
msgid "Removed the alias"
msgstr "É¾³ý±ðÃû"

#: editaccount.php:21
msgid "Email adresses defined for user"
msgstr "Îª´ËÓÃ»§Éè¶¨µÄÓÊ¼þµØÖ·"

#: editaccount.php:42
msgid "New email address"
msgstr "ÐÂÓÊ¼þµØÖ·"

#: editaccount.php:90
msgid "Edit Emailadress"
msgstr "±à¼­ÓÊ¼þµØÖ·"

#: editaccount.php:92
msgid "Vacation"
msgstr "×Ô¶¯»Ø¸´"

#: editaccount.php:93
msgid "Delete Emailadress"
msgstr "É¾³ýÓÊ¼þµØÖ·"

#: editadminuser.php:13
msgid "Change admin user for domain"
msgstr "¸Ä±ä´ËÓòµÄ¹ÜÀíÔ±"

#: editadminuser.php:42 newaccount.php:106 newadminuser.php:36
msgid "Accountname"
msgstr "ÕËºÅÃû"

#: editadminuser.php:52 newadminuser.php:51
msgid "Admin Type"
msgstr "¹ÜÀíÔ±ÀàÐÍ"

#: editadminuser.php:84 login.php:71 newaccount.php:138 newadminuser.php:71
msgid "Password"
msgstr "ÃÜÂë"

#: editadminuser.php:100 newaccount.php:139 newadminuser.php:86
msgid "Confirm Password"
msgstr "È·ÈÏÃÜÂë"

#: editadminuser.php:155
msgid "No Domain assigned yet"
msgstr "ÉÐÎ´Ö¸¶¨Óò"

#: editadminuser.php:165
msgid "Add new domain to this admin"
msgstr "Îª¸Ã¹ÜÀíÔ±Ôö¼ÓÐÂµÄÓÐÈ¨ÏÞ¹ÜÀíµÄÓò"

#: editadminuser.php:223
msgid "No such domain, create domain first"
msgstr "Ã»ÓÐ¸ÃÓò£¬ÇëÏÈ´´½¨¸ÃÓò"

#: editadminuser.php:231
msgid "Admin already repsonsible for the domain"
msgstr "¹ÜÀíÔ±ÒÑ¾­¸ºÔð¹ÜÀí´ËÓò"

#: editalias.php:27
msgid "There was an error adding $dest to $alias: "
msgstr "ÔÚ°Ñ$dest¼Óµ½$aliasµÄ¹ý³ÌÖÐ³öÏÖÁËÒ»¸ö´íÎó£º"

#: editalias.php:64
msgid "Editing alias"
msgstr "±à¼­±ðÃû"

#: editalias.php:68
msgid "Delete this alias"
msgstr "É¾³ý¸Ã±ðÃû"

#: editalias.php:101
msgid "Cannot remove from account"
msgstr "ÎÞ·¨´ÓÕËºÅÖÐÉ¾³ý"

#: editalias.php:105 editalias.php:109
msgid "Remove destination"
msgstr "É¾³ýÓëÖ®¶ÔÓ¦µÄÄ¿±êÓÊ¼þµØÖ·"

#: editalias.php:125
msgid "This alias has no destinations"
msgstr "¸Ã±ðÃûÃ»ÓÐÓëÖ®¶ÔÓ¦µÄÄ¿±êÓÊ¼þµØÖ·"

#: editalias.php:142
msgid "New destination"
msgstr "ÐÂÄ¿±ê"

#: editdomain.php:46
msgid "Successfully changed domain"
msgstr "ÓòÒÑÐÞ¸Ä³É¹¦"

#: editdomain.php:92 newdomain.php:39
msgid "Domainname"
msgstr "ÓòÃû"

#: editdomain.php:106 newdomain.php:57
msgid "Prefix"
msgstr "Ç°×º"

#: editdomain.php:123 newdomain.php:73
msgid "Allow Free Names"
msgstr "ÔÊÐíÈÎÒâÃû×Ö"

#: editdomain.php:141 newdomain.php:90
msgid "Allow Free Mail Addresses"
msgstr "ÔÊÐíÈÎÒâÓÊ¼þµØÖ·"

#: editdomain.php:159 newdomain.php:102
msgid "Maximum Accounts"
msgstr "×î´óÕËºÅÊý"

#: editdomain.php:173 newdomain.php:117
msgid "Default Quota in Kilobytes"
msgstr "È±Ê¡ÓÊÏäÈÝÁ¿£¨Ç§×Ö½Ú£©"

#: editdomain.php:202
msgid "Your are not allowed to change domains!"
msgstr "ÄãÎ´±»ÊÚÈ¨ÐÞ¸ÄÓò£¡"

#: editemail.php:46
msgid "Successfully changed"
msgstr "ÐÞ¸ÄÒÑ³É¹¦"

#: editemail.php:68
msgid ""
"You can't edit this email address with 'Allow Free Mail Addressess' set to "
"off!"
msgstr "µ±¡®ÔÊÐíÈÎÒâÓÊ¼þµØÖ·¡¯±»ÉèÖÃÎª¡®¹Ø¡¯Ê±£¬²»ÔÊÐí±à¼­¸ÃÓÊ¼þµØÖ·£¡"

#: editemail.php:95 newemail.php:77
msgid "Emailadress"
msgstr "ÓÊ¼þµØÖ·"

#: failed.php:66
msgid "Login failed"
msgstr "µÇÂ¼Ê§°Ü"

#: failed.php:71 login.php:51
msgid "This is only for authorized users"
msgstr "½öÊÚÈ¨ÓÃ»§¿ÉÊ¹ÓÃ±¾ÏµÍ³"

#: failed.php:76 logout.php:62 timeout.php:38
msgid "If you like to login click"
msgstr "Èç¹ûÒªµÇÂ¼£¬Çëµã»÷"

#: failed.php:78 logout.php:64 timeout.php:40
msgid "here"
msgstr "ÕâÀï"

#: forwardalias.php:68 forwardaccount.php:51
msgid "Forward set"
msgstr "ÓÊ¼þ×ª·¢ÒÑ¾­ÉèÖÃºÃ"

#: forwardalias.php:70
msgid "Failure in setting forward"
msgstr "ÉèÖÃÓÊ¼þ×ª·¢Ê§°Ü"

#: forwardalias.php:73
msgid "Wrong password"
msgstr "ÊäÈëÃÜÂë´íÎó"

#: forwardalias.php:89 forwardalias.php:97 forwardalias.php:103
#: forwardalias.php:107 forwardaccount.php:57
msgid "Forwarding removed"
msgstr "ÒÑÈ¡Ïû×ª·¢"

#: forwardalias.php:91 forwardalias.php:99
msgid "Failure in removing forwarding"
msgstr "È¡ÏûÓÊ¼þ×ª·¢Ê§°Ü"

#: forwardalias.php:111 vacation.php:79 vacation.php:107
msgid "Failed to login"
msgstr "µÇÂ¼Ê§°Ü"

#: forwardalias.php:123 vacation.php:119
msgid "Not possible"
msgstr "²»¿ÉÄÜ"

#: forwardalias.php:152
msgid ""
"You can't forward this email address with 'Allow Free Mail Addressess' set "
"to off!"
msgstr "µ±¡®ÔÊÐíÈÎÒâÓÊ¼þµØÖ·¡¯±»ÉèÖÃÎª¡®¹Ø¡¯Ê±£¬²»ÔÊÐí¶Ô¸ÃÓÊ¼þµØÖ·½øÐÐ×Ô¶¯×ª·¢ÉèÖÃ£¡"

#: forwardalias.php:161
msgid "Forward for emailadress"
msgstr "ÓÊ¼þµØÖ·×ª·¢"

#: forwardalias.php:204
msgid "Set forwarding to"
msgstr "½«ÓÊ¼þ×ª·¢ÖÁ"

#: forwardalias.php:204
msgid "(Seperate multiple values with ,)"
msgstr "£¨²»Í¬ÓÊ¼þµØÖ·Ö®¼äÓÃ¶ººÅ·Ö¸ô£©"

#: forwardalias.php:210 forwardaccount.php:125
msgid "Keep a copy in the user's mailbox"
msgstr "ÔÚÓÃ»§ÓÊÏäÄÚ±£ÁôÒ»·Ý¿½±´"

#: forwardalias.php:215 forwardaccount.php:139
msgid "Remove forwarding"
msgstr "È¡Ïû×ª·¢"

#: index.php:23
msgid "migrate.php exists! please delete or rename it"
msgstr "ÎÄ¼þmigrate.phpÒÑ¾­´æÔÚ£¡Çë½«ÆäÉ¾³ý»ò¸ÄÃû"

#: index.php:138
msgid "web-cyradm has not yet been configured"
msgstr "ÉÐÎ´ÅäÖÃweb-cyradm"

#: index.php:141
msgid "Configuration steps:"
msgstr "ÅäÖÃ²½Öè£º"

#: index.php:143
msgid "copy the config file that comes with the distribution: "
msgstr "¿½±´·¢²¼°üÖÐµÄÅäÖÃÎÄ¼þ"

#: index.php:146
msgid "Edit the file config/conf.php to match your systems configuration"
msgstr "¸ù¾ÝÄãµÄÏµÍ³ÐèÇó£¬±à¼­config/conf.phpÎÄ¼þ"

#: index.php:148
msgid ""
"Further information about how to configure Web-cyradm can be found at the "
"following website:"
msgstr "ÔÚÒÔÏÂÍøÕ¾ÖÐ¿ÉÒÔÕÒµ½ÈçºÎÅäÖÃweb-cyradmµÄÏêÏ¸ÐÅÏ¢£º"

#: login.php:50
msgid "Welcome to Web-cyradm"
msgstr "»¶Ó­Ê¹ÓÃWeb-cyradm"

#: login.php:52
msgid "Please authenticate yourself"
msgstr "ÇëÊäÈëÈÏÖ¤ÐÅÏ¢"

#: login.php:84
msgid "Select language"
msgstr "ÇëÑ¡ÔñÓïÑÔ"

#: logout.php:52
msgid "Thank you for using Web-cyradm"
msgstr "¸ÐÐ»ÄúÊ¹ÓÃWeb-cyradm"

#: logout.php:57
msgid "You are logged out"
msgstr "ÄãÒÑ¾­×¢Ïú"

#: menu.inc.php:19
msgid "Superusers Menu"
msgstr "³¬¼¶ÓÃ»§²Ëµ¥"

#: menu.inc.php:23
msgid "Domainmasters menu"
msgstr "Óò¹ÜÀíÔ±²Ëµ¥"

#: menu.inc.php:31
msgid "add new domain"
msgstr "Ìí¼ÓÐÂÓò"

#: menu.inc.php:38
msgid "browse domains"
msgstr "ä¯ÀÀÓò"

#: menu.inc.php:45
msgid "adminusers"
msgstr "¹ÜÀíÔ±"

#: menu.inc.php:75
msgid "home"
msgstr "Ê×Ò³"

#: menu.inc.php:82
msgid "logout"
msgstr "×¢Ïú"

#: menu.inc.php:90
msgid "Search"
msgstr "²éÕÒ"

#: menu.inc.php:114
msgid "Logged in as user"
msgstr "ÒÔÓÃ»§Éí·ÝµÇÂ¼"

#: menu.inc.php:126
msgid "Your role is"
msgstr "ÄãµÄ½ÇÉ«ÊÇ"

#: menu.inc.php:144
msgid "Current domain is"
msgstr "µ±Ç°ÓòÊÇ"

#: menu.inc.php:150
msgid "No domain selected"
msgstr "Ã»ÓÐÑ¡ÔñÓò"

#: newaccount.php:13
msgid "Add new Account to domain"
msgstr "Îª´ËÓòÌí¼ÓÒ»¸öÐÂÕËºÅ"

#: newaccount.php:43 newalias.php:43
msgid "transport is not cyrus, unable to create account"
msgstr "transportÎ´ÉèÖÃÎªcyrus, ÎÞ·¨´´½¨ÕËºÅ"

#: newaccount.php:55
msgid "Sorry, no more account allowed for domain"
msgstr "ºÜÒÅº¶£¬¸ÃÓòÔÊÐíµÄ×î´óÓÃ»§ÊýÒÑ¾­´ïµ½"

#: newaccount.php:60
msgid "Maximum allowed accounts is"
msgstr "ÔÊÐíµÄ×î´óÕËºÅÊýÊÇ"

#: newaccount.php:137
msgid "Quota"
msgstr "ÓÊÏäÈÝÁ¿"

#: newaccount.php:196
msgid "Sorry, the username already exists"
msgstr "ºÜÒÅº¶£¬¸ÃÓÃ»§ÃûÒÑ¾­´æÔÚ"

#: newaccount.php:221
msgid "Account successfully added to the Database"
msgstr "ÒÑ³É¹¦½«ÕËºÅ¼ÓÈëÊý¾Ý¿â"

#: newaccount.php:234
msgid "Account succesfully added to the IMAP Subsystem"
msgstr "ÒÑ³É¹¦½«ÕËºÅ¼ÓÈëIMAP×ÓÏµÍ³"

#: newadminuser.php:13
msgid "Add new administrator"
msgstr "Ìí¼ÓÐÂ¹ÜÀíÔ±"

#: newadminuser.php:64
msgid "Select \"Superuser\" for all domains"
msgstr "ÎªËùÓÐµÄÓòÑ¡Ôñ³¬¼¶¹ÜÀíÔ±"

#: newadminuser.php:132
msgid "You must provide a username"
msgstr "Äã±ØÐëÌá¹©Ò»¸öÓÃ»§Ãû"

#: newadminuser.php:145
msgid "Passwords are empty or not equal."
msgstr "ÃÜÂëÎª¿Õ»òÕßÁ½´ÎÊäÈëµÄÃÜÂë²»Ò»ÖÂ¡£"

#: newadminuser.php:157
msgid "Username already exist"
msgstr "¸ÃÓÃ»§ÃûÒÑ´æÔÚ"

#: newalias.php:15
msgid "Add new alias to domain"
msgstr "Îª´ËÓòÌí¼ÓÒ»¸öÐÂ±ðÃû"

#: newalias.php:55
msgid "Sorry, no more alias allowed for domain"
msgstr "ºÜÒÅº¶£¬²»ÔÊÐíÎª¸ÃÓòÔö¼ÓÐÂµÄ±ðÃû"

#: newalias.php:60
msgid "Maximum allowed aliases is"
msgstr "ÔÊÐíµÄ×î´ó±ðÃûÊýÊÇ"

#: newdomain.php:15
msgid "Add new domain"
msgstr "Ìí¼ÓÒ»¸öÐÂÓò"

#: newdomain.php:140
msgid "Standard Mailboxes"
msgstr "±ê×¼ÓÊÏä"

#: newdomain.php:146
msgid ""
"emailadress where the default aliases should be mapped (empty means no "
"mapping)"
msgstr "Ó³ÉäÎªÈ±Ê¡±ðÃûµÄÓÊ¼þµØÖ·£¨¿Õ±íÊ¾Ã»ÓÐÓ³Éä£©"

#: newdomain.php:163
msgid "Mail transport"
msgstr "ÓÊ¼þ´«µÝ"

#: newdomain.php:166
msgid "Leave this as is, unless you know what you are doing"
msgstr "³ý·ÇÄãÇå³þÒª×öÊ²Ã´£¬·ñÔòÇë²»Òª¸Ä¶¯Ëü"

#: newdomain.php:187
msgid "Parameter"
msgstr "²ÎÊý"

#: newdomain.php:245 newemail.php:34
msgid "Successfully added"
msgstr "ÒÑ³É¹¦Ìí¼Ó"

#: newdomain.php:273
msgid "You are not allowed to add new domains"
msgstr "ÄãÎÞÈ¨Ìí¼ÓÐÂÓò"

#: newemail.php:56
msgid "New emailadress for user"
msgstr "¸ÃÓÃ»§µÄÐÂÓÊ¼þµØÖ·"

#: search.php:48
msgid "Total domains matching"
msgstr "ËùÓÐ·ûºÏÌõ¼þµÄÓò"

#: search.php:110
msgid "Total users matching"
msgstr "ËùÓÐ·ûºÏÌõ¼þµÄÓÃ»§"

#: search.php:118
msgid "Displaying from position"
msgstr "´Ó´ËÎ»ÖÃ¿ªÊ¼ÏÔÊ¾"

#: search.php:245
msgid "Total aliases matching"
msgstr "ËùÓÐ·ûºÏÌõ¼þµÄ±ðÃû"

#: search.php:247
msgid "No aliases found"
msgstr "Ã»ÓÐ±ðÃû"

#: setquota.php:26
msgid "Setting individual Quota for user"
msgstr "Îª¸ÃÓÃ»§¸ö±ðÉèÖÃÓÊÏäÈÝÁ¿"

#: setquota.php:58
msgid "Submit"
msgstr "Ìá½»"

#: setquota.php:70
msgid "Quote for user"
msgstr "ÓÃ»§ÓÊÏäÈÝÁ¿"

#: setquota.php:74
msgid "changed to"
msgstr "ÒÑ¸ÄÎª"

#: timeout.php:33
msgid "Your session timed out"
msgstr "»á»°³¬Ê±"

#: vacation.php:71
msgid "Vacation notice set"
msgstr "×Ô¶¯»Ø¸´ÒÑÉèÖÃ"

#: vacation.php:73
msgid "Failed to activate vacation"
msgstr "ÆôÓÃ×Ô¶¯»Ø¸´Ê§°Ü"

#: vacation.php:76
msgid "Failure in modifying vacation notice"
msgstr "ÐÞ¸Ä×Ô¶¯»Ø¸´ÏûÏ¢Ê§°Ü"

#: vacation.php:95
msgid "Vacation notice unset"
msgstr "×Ô¶¯»Ø¸´ÒÑÈ¡Ïû"

#: vacation.php:97
msgid "Failure in unseting vacation notice"
msgstr "È¡Ïû×Ô¶¯»Ø¸´Ê§°Ü"

#: vacation.php:101
msgid "Vacation notice removed"
msgstr "×Ô¶¯»Ø¸´ÏûÏ¢ÄÚÈÝÒÑÉ¾³ý"

#: vacation.php:103
msgid "Failure in removing vacation notice"
msgstr "É¾³ý×Ô¶¯»Ø¸´ÐÅÏ¢ÄÚÈÝÊ§°Ü"

#: vacation.php:142
msgid ""
"You can't set Vacation Message for this email address with 'Allow Free Mail "
"Addressess' set to off!"
msgstr "µ±¡®ÔÊÐíÈÎÒâÓÊ¼þµØÖ·¡¯±»ÉèÖÃÎª¡®¹Ø¡¯Ê±£¬ÎÞ·¨¶Ô¸ÃÓÊ¼þµØÖ·½øÐÐ×Ô¶¯»Ø¸´ÉèÖÃ£¡"

#: vacation.php:152
msgid "Vacation message for emailadress"
msgstr "¸ÃÓÊ¼þµØÖ·µÄ×Ô¶¯»Ø¸´ÐÅÏ¢"

#: vacation.php:174
msgid "Set vacation notice"
msgstr "ÉèÖÃ×Ô¶¯»Ø¸´ÐÅÏ¢"

#: vacation.php:178
msgid "Remove vacation notice"
msgstr "É¾³ý×Ô¶¯»Ø¸´ÐÅÏ¢ÄÚÈÝ"

#: validate.inc.php:74 validate.inc.php:87 validate.inc.php:134
#: validate.inc.php:249
msgid "Security violation detected, attempt logged"
msgstr "´Ë²Ù×÷Î£¼°°²È«£¬²Ù×÷ÒÑ±»¼ÇÈëÈÕÖ¾¡£"

#: validate.inc.php:130
msgid "Quota exeedes the maximum allowed qutoa for this domain."
msgstr "ÓÊÏäÈÝÁ¿³¬¹ýÁË¸ÃÓòÔÊÐíµÄ×î´óÓÊÏäÈÝÁ¿¡£"

#: forwardaccount.php:77
msgid "Forward for account"
msgstr "ÕËºÅÓÊ¼þ×ª·¢"

#: forwardaccount.php:93
msgid "Set forwarding to (one adress per line)"
msgstr "½«ÓÊ¼þ×ª·¢ÖÁ£¨Ã¿ÐÐÒ»¸öÓÊ¼þµØÖ·£©"

#: delete_catchall.php:31
msgid "successfully deleted from the Database"
msgstr "ÒÑ³É¹¦µØ´ÓÊý¾Ý¿âÖÐÉ¾³ý"

#: deleteemail.php:16
msgid "Delete emailadress from the System"
msgstr "´Ó±¾ÏµÍ³ÖÐÉ¾³ýÓÊ¼þµØÖ·"

#: deleteemail.php:23
msgid "Do you really want to delete the emailadress for user"
msgstr "ÄãÈ·¶¨ÒªÉ¾³ý¸ÃÓÃ»§µÄÕâ¸öÓÊ¼þµØÖ·Âð"

#: deleteemail.php:44
msgid "Yes, delete"
msgstr "È·¶¨£¬É¾³ý"

#: deleteemail.php:49
msgid "Cancel"
msgstr "È¡Ïû"

#: deleteemail.php:70
msgid "Emailadress deleted."
msgstr "ÓÊ¼þµØÖ·ÒÑÉ¾³ý"

#~ msgid "successfully changed Database...."
#~ msgstr "ÐÞ¸ÄÊý¾Ý¿â³É¹¦"

#~ msgid "Add new admin user for domain"
#~ msgstr "Îª´ËÓòÌí¼ÓÒ»¸öÐÂ¹ÜÀíÔ±ÕËºÅ"

#~ msgid "Please select a domain first"
#~ msgstr "ÇëÏÈÑ¡ÔñÒ»¸öÓò"

#~ msgid "Not yet supported, change will be ignored"
#~ msgstr "Ä¿Ç°ÉÐÎ´Ö§³Ö£¬¸Ä¶¯½«±»ºöÂÔ"
<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
?>
<script type="text/javascript">
<!--
function setfocus() {
document.form1.login.focus();
}
function entsub() {
  if (window.event && window.event.keyCode == 13)
    document.form1.submit();
  else
    return true;}
// --></script>

<script language="JavaScript" type="text/javascript">
function selectLang()
{
        var lang_page = 'index.php?LANG=' + document.form1.LANG[document.form1.LANG.selectedIndex].value;
        self.location = lang_page;
}

</script>

<!-- </head> -->

<table width="100%" border="0" cellspacing="0" cellpadding="0" style="height: 15%;">
 <tr>
         <td></td>
  </tr>

</table>
<!-- -->
<form name="form1" method="post" action="auth.inc.php">
<table width="100%" border="0" style="height: 80%;">
  <tr>
    <td align="center" valign="middle"> 
        <table width="450" border="0" cellpadding="1" cellspacing="1" style="height: 150px;">
          <tr>


          <td bgcolor="#000000">		  
              <table border="0" bgcolor="#FFFFFF" cellpadding="2" cellspacing="0" width="450" style="height: 150px;">
                <tr> 
                  <td colspan="5" bgcolor="#000666">
			<font face="Verdana, Arial, Helvetica, sans-serif" color="#FFFFFF" size="2"><b>
                    	Web-cyradm</b></font></td>
                </tr>
                <tr> 
                  <td colspan="5">&nbsp;</td>
                </tr>
                <tr> 
                  <td>&nbsp;</td>
                  <td colspan="4">
                    <p><font face="Verdana,Geneva,Arial,Helvetica,sans-serif" color="#000000" size="2">
		     <?php print _("Welcome to Web-cyradm") ?><br>  
                     <?php print _("This is only for authorized users") ?><br><br>
		     <?php print _("Please authenticate yourself") ?>
		
                      </font></p><br>                    
                  </td>
                </tr>
                <tr> 
                  <td></td>
                  <td nowrap> 
                    <div align="left"><font face="Verdana, Arial, Helvetica, sans-serif" color="#999999" size="2"><b>
                      <?php print _("Username") ?></b></font></div>
                  </td>
                  <td colspan="3"> 
                    <input type="text" name="login">
                  </td>
                </tr>
                <tr> 
                  <td width="10"> 
                    <div align="right"><font color="#999999"><b></b></font></div>
                  </td>
                  <td><font face="Verdana, Arial, Helvetica, sans-serif" color="#999999" size="2"><b><?php print _("Password") ?></b></font></td>
                  <td> 
                    <input type="password" name="login_password" onkeypress="return entsub()">
                  </td>
                  <td > 
                    <div align="right">
<input type="submit" value="<?php print _("Submit")?>">
</div>
                  </td>
                  <td width="10"></td>
                </tr>
		<tr>
		<td></td>
		<td><font face="Verdana, Arial, Helvetica, sans-serif" color="#999999" size="2"><b><?php print _("Select language")?></b></font></td>
		<td>
<select size="1" name="LANG" onchange= "selectLang()">

<?php
	if (!$LANG) {
		print "<option selected=\"selected\">Select language</option>";
	}

foreach ($nls['aliases'] as $l){

	if ($l == $LANG){
		print "<option selected=\"selected\"";
		print " value=\"$l\">";
		print $nls['languages'][$l];
		print "</option>\n";
	}
	else {
		print "<option";
		print " value=\"$l\">";
		print $nls['languages'][$l];
		print "</option>\n";
	}
}


?>

 </select> 

		</td>
		</tr>
                <tr> 
               <td colspan="5">&nbsp;</td> 
                </tr>
              </table>			
          </td>
        </tr>
      </table>
    </td>
  </tr>
</table>

</form> 
<script type="text/javascript">
<!--
document.form1.login.focus();
//-->
</script>
<?php
include WC_BASE . "/footer.inc.php";
?>
<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
?>

          <tr>
        <td width="10">&nbsp; </td>
        <td valign="top">

<?php
logger(sprintf("LOGOUT : %s %s %s %s %s%s", $_SERVER['REMOTE_ADDR'], $_SESSION['user'], $_SERVER['HTTP_USER_AGENT'], $_SERVER['HTTP_REFERER'], $_SERVER['REQUEST_METHOD'], "\n"));

$_SESSION = array();
//print session_id();
if(session_destroy()){
/*
	print "<html>";
	print "<title>Web-cyradm</title>";
	print "<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1>";
	print "</head>";
	print "<body bgcolor=#FFFFFF text=#000000 leftmargin=0 topmargin=0 marginwidth=0 marginheight=0>";
	print "<form name=form1 method=post action=>";
*/
	?>
	<table width="100%" border="0" style="height: 100%;">
		<tr>
			<td align="center" valign="middle">
				<table width="450" border="0" cellpadding="1" 
				cellspacing="1" style="height: 150px;">
					<tr>
						<td bgcolor="#000000">
							<table border="0" bgcolor="#FFFFFF" 
							cellpadding="0" cellspacing="0" 
							width="450" style="height: 150px;">
								<tr>
									<td bgcolor="#000666"
									style="font-family: Verdana, Arial, Helvetica, sans-serif; color: #fff; font-weight: bold;">
										Web-cyradm
									</td>
								</tr>

								<tr>
									<td>&nbsp;</td>
								</tr>

								<tr>
									<td>
										<p align="center"
										style="font-family: Verdana, Arial, Helvetica, sans-serif; color: #000; ">
											<?php print _("Thank you for using Web-cyradm");?>
										</p>

										<p align="center"
										style="font-family: Verdana, Arial, Helvetica, sans-serif; color: #000;  font-weight: bold;">
											<?php print _("You are logged out");?>
										</p>

										<p align="center"
										style="font-family: Verdana, Arial, Helvetica, sans-serif; color: #000; ">
											<?php print _("If you like to login click");?>
											<a class="navi" href="index.php"><?php
											print _("here");
											?></a>
										</p>
									</td>
								</tr>

								<tr>
									<td>&nbsp;</td>
								</tr>
							</table>
 
						</td>
					</tr>
				</table>
			</td>
		</tr>
	</table>
<!--
</form>
</body>
</html>
-->
	<?php
}
?>
</td></tr>

<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
?>
<!-- #################### manageaccount.php start #################### -->
<tr>
	<td width="10">&nbsp;</td>
	<td valign="top">

		<?php
		if ($authorized) {
			$cyr_conn = new cyradm;
			$error = $cyr_conn->imap_login();

			if ($error != 0) {
				die ("Error: " . $error);
			}

			if (empty($_POST['confirmed'])) {
				$imap_checked="";
				$pop_checked="";
				$sieve_checked="";
				$smtpauth_checked="";
				$smtp_checked="";
				
				$_sep = '.';
				if ($DOMAIN_AS_PREFIX) {
					$_sep = '/';
				}
				$q = $cyr_conn->getquota("user" . $_sep . $_GET['username']);

				$query = "SELECT * FROM accountuser WHERE username ='".$_GET['username']."'";
				$result = $handle->query($query);
				if (DB::isError($result)) {
					die (_("Database error"));
				}
				$cnt = $result->numRows($result);

				if ($cnt) {
					$row = $result->fetchRow(DB_FETCHMODE_ASSOC, 0);
					if ($row['imap']) {
						$imap_checked="checked";
					}					
					if ($row['pop']) {
						$pop_checked="checked";
					}
					if ($row['sieve']) {
						$sieve_checked="checked";
					}
					if ($row['smtpauth']) {
						$smtpauth_checked="checked";
					}
				}
				
				$query = "SELECT status FROM virtual WHERE username ='".$_GET['username']."' LIMIT 1";
				$result = $handle->query($query);

				if (DB::isError($result)) {
				        die (_("Database error"));
				}
				$cnt = $result->numRows($result);

				if ($cnt) {
					$row = $result->fetchRow(DB_FETCHMODE_ASSOC, 0);
					if ($row['status']) {
						$smtp_checked="checked";
					}
				}				
				?>
				<form action="index.php" method="POST">
					<input type="hidden" name="action" value="manageaccount">
					<input type="hidden" name="confirmed" value="true">
					<input type="hidden" name="domain" value="<?php echo $_GET['domain'];?>"> 
					<input type="hidden" name="username" value="<?php echo $_GET['username'];?>">
<!--
					<h3>
						<?php print _("Additional information for account");?>
						<span style="color: red;">
							<?php echo $_GET['username'];?>
						</span>
					</h3>

					<table>
					<tr>	
						<td width="150">
							<?php print _("First name");?>:
						</td>
						<td>
							<input class="inputfield" type="password" size="30" name="firstname" readonly>
						</td>
					</tr>

					<tr>	
						<td width="150">
							<?php print _("Last name");?>:
						</td>
						<td>
							<input class="inputfield" type="password" size="30" name="lastname" readonly>
						</td>
					</tr>
					</table>
-->
					<h3>
						<?php print _("Change password for account");?>
						<span style="color: red;">
							<?php echo $_GET['username'];?>
						</span>
					</h3>

					<table>		
					<tr>
						<td width="150">
							<?php print _("New password");?>:
						</td>
						
						<td>
							<input class="inputfield" type="password" size="30" name="new_password">
						</td>
					</tr>
					
					<tr>
						<td width="150">
							<?php print _("Confirm new password")?>:
						</td>
						
						<td>
							<input class="inputfield" type="password" size="30" name="confirm_password">
						</td>
					</tr>
					</table>

					<h3>
						<?php print _("Setting individual Quota for user");?>:
						<span style="color: red;">
							<?php echo $_GET['username'];?>
						</span>
					</h3>
					
					<table>
					<tr>
						<td width="150">
							<?php print _("Quota")?>:
						</td>

						<td>
							<input class="inputfield" type="text" size="10" name="quota" value="<?php print $q_total = $q['qmax']; ?>" > Kbytes
						</td>
					</tr>
					</table>

					<h3>
				                <?php print _("Edit services for user");?>
							<span style="color: red;">
								<?php echo $username;?>
							</span>
					</h3>

					<table>
					<tr>
						<th><?php print _("Service");?></th>
						<th><?php print _("Status");?></th>
					</tr>
					<tr>
						<td><?php print _("Fetch mail via IMAP client");?></td>
						<td><input name="imap" value="1" type="checkbox" <?php print $imap_checked?>></td>
					</tr>
					<tr>
						<td><?php print _("Fetch mail via POP client");?></td>
						<td><input name="pop" value="1" type="checkbox" <?php print $pop_checked?>></td>
					</tr>
					<tr>
						<td><?php print _("Set vacation message and filter rules with sieve");?></td>
						<td><input name="sieve" value="1" type="checkbox" <?php print $sieve_checked; ?>></td>
					</tr>

					<tr>
						<td><?php print _("Send E-Mails via smtp authentication");?></td>
						<td><input name="smtpauth" value="1" type="checkbox" <?php print $smtpauth_checked; ?>></td>
					</tr>

					<tr>
						<td><?php print _("Receive E-Mails via smtp");?></td>
						<td><input name="smtp" value="1" type="checkbox" <?php print $smtp_checked; ?>></td>
					</tr>

					<tr>
						<td height="10">&nbsp;</td>
					</tr>

					<tr>
						<td colspan="2" align="center">
							<input class="button" type="submit" value="<?php print _("Submit");?>">&nbsp;
							<input class="button" type="submit" name="cancel" value="<?php print _("Cancel"); ?>">
						</td>
					</tr>
					</table>
				</form>
				<?php
			} elseif (!empty($_POST['cancel'])) {
				$_GET['domain'] = $_POST['domain'];
				include WC_BASE . "/browseaccounts.php";
			} else {
				// Change password
				if (!empty($_POST['new_password']) && !empty($_POST['confirm_password'])) {
					$query = "SELECT password FROM accountuser WHERE username='".$_POST['username']."'";
					$result = $handle->query($query);
					if (DB::isError($result)) {
						die (_("Database error"));
					}
					$row = $result->fetchRow(DB_FETCHMODE_ASSOC, 0);
					$password = $row['password'];

					if ($PASSWORD_CHANGE_METHOD=="sql"){
						$pwd = new password;
						$new_password = $pwd->encrypt($_POST['new_password'], $CRYPT);
						$query = "UPDATE accountuser SET password='$new_password' WHERE username='".$_POST['username']."'";
						$result = $handle->query($query);
						if (DB::isError($result)) {
							die (_("Database error"));
						} else {
							print "<h3>"._("Password changed")."</h3>";
						}
					} elseif ($PASSWORD_CHANGE_METHOD=="poppassd") {
						require WC_BASE . '/lib/poppassd.php';
						$daemon = new poppassd;
						if ($daemon->change_password($_POST['username'], $password, $_POST['new_password'])) {
							print  "<h3>"._("Password changed")."</h3>";
						} else {
							print $daemon->$err_str;
							print "<h3>"._("Failure in changing password.")."</h3>";
						}
					}
				}
			
				// Change services
				if (empty($_POST['imap'])) {
					$_POST['imap'] = 0;
				}
				if (empty($_POST['pop'])) {
					$_POST['pop'] = 0;
				}
				if (empty($_POST['sieve'])) {
					$_POST['sieve'] = 0;
				}
				if (empty($_POST['smtpauth'])) {
					$_POST['smtpauth'] = 0;
				}
				if (empty($_POST['smtp'])) {
					$_POST['smtp'] = 0;
				}
				$query = "UPDATE accountuser SET imap='".$_POST['imap']."', pop='".$_POST['pop']."', sieve='".$_POST['sieve']."', smtpauth='".$_POST['smtpauth']."' WHERE username='".$_POST['username']."'";
				$result1 = $handle->query($query);
				$query = "UPDATE virtual SET status='".$_POST['smtp']."' WHERE username='".$_POST['username']."'";
				$result2 = $handle->query($query);
				if ($result1 && $result2) {
					print "<h3>"._("Services successfully changed")."</h3>";
				} else {
					print "<h3>"._("Services NOT changed")."</h3>";
				}

				// Change quota
				$_sep = '.';
				if ($DOMAIN_AS_PREFIX) {
					$_sep = '/';
				}
				$q = $cyr_conn->getquota("user" . $_sep . $_POST['username']);
				if ($q['qmax']!=$_POST['quota']) {
				$query = "SELECT prefix,domainquota FROM domain WHERE domain_name='".$_POST['domain']."'";
				$result = $handle->query($query);
				if (DB::isError($result)) {
					die (_("Database error"));
				}
				$row = $result->fetchRow(DB_FETCHMODE_ASSOC, 0);
			
				$prefix = $row['prefix'];
				$domain_quota = $row['domainquota'];

				// for change bigger->smaler or none->set we don't want domain quota checks
				if ($domain_quota!=0 && $q['qmax']<(int)$_POST['quota'] && $q['qmax']!="NOT-SET") {
					$used_domain_quota = 0;

					$query = "SELECT username FROM accountuser WHERE prefix='$prefix' ORDER BY username";
					$result = $handle->query($query);
					if (DB::isError($result)) {
						die (_("Database error"));
					}

					$cnt = $result->numRows($result);

					for ($c = 0; $c < $cnt; $c++) {
						$row = $result->fetchRow(DB_FETCHMODE_ASSOC, $c);
						$user_quota = $cyr_conn->getquota("user" . $_sep . $row['username']);
						if ($user_quota['qmax'] != "NOT-SET"){
							$used_domain_quota += $user_quota['qmax'];
						}
					}
					# All space - space used by all accounts + space used changed account
					$quota_left = $domain_quota - $used_domain_quota + $q['qmax'];

					if ($quota_left>0) {
						if ($_POST['quota'] > $quota_left){
							$_POST['quota'] = $quota_left;
								?>
								<h3>
									<?php print _("Quota exeeded");?>
									<span style="color: red;">
										<?php print _("New quota is");?>:
									</span>
									<span style="font-weight: bolder;">
										<?php echo $_POST['quota'];?>
									</span>
								</h3>
								<?php
						}
						$cyr_conn->setmbquota("user" . $_sep . $_POST['username'], $_POST['quota']);
						?>
						<h3>
							<?php print _("Quote for user");?>
							<span style="color: red;">
								<?php echo $_POST['username'];?>
							</span>
							<?php print _("changed to");?>
							<span style="color: red;">
								<?php echo $_POST['quota'];?>
							</span>
						</h3>
						<?php
					} else {
						?>
						<h3>
							<span style="color: red;">
								<?php print _("Quota exeeded");?>
							<br>
								<?php print _("Quota NOT changed");?>
							</span>
						</h3>
						<?php
					} // End of if ($quota_left>0)
				} else { // if ($domain_quota!=0 && $q['qmax']<$_POST['quota'] && $q['qmax']!="NOT-SET")
					$cyr_conn->setmbquota("user" . $_sep . $_POST['username'], $_POST['quota']);
					?>
					<h3>
						<?php print _("Quote for user");?>
						<span style="color: red;">
							<?php echo $_POST['username'];?>
						</span>
						<?php print _("changed to");?>
						<span style="color: red;">
							<?php echo $_POST['quota'];?>
						</span>
					</h3>
				<?php
				} // End of if ($domain_quota!=0 && $q['qmax']<$_POST['quota'] && $q['qmax']!="NOT-SET")
				}
				$_GET['domain'] = $_POST['domain'];
				include WC_BASE . "/browseaccounts.php";
			} // End of if (empty($_POST['confirmed']))
		} else {
			?>
			<h3>
				<?php print $err_msg; ?>
			</h3>
			<a href="index.php?action=accounts&domain=<?php echo $_GET['domain'];?>"><?php print _("Back");?></a>
			<?php
		} // End of if ($authorized)
		?>
	</td>
</tr>

<!-- #################### editeccountnew.php end #################### -->
<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}

if (! isset($domain)){
	$domain = '';
}
?>
<!-- ############################## Begin Menu ############################################ -->
<table border="0" cellspacing="2" cellpadding="0">
	<tr>
		<?php
		if ($_SESSION['admintype']==0){
			?>
			<!-- ############### Root menu first ########## -->
			<td colspan="7">
				<?php print _("Superusers Menu");?>
			</td>

			<td colspan="9">
				<?php print _("Domainmasters menu");?>
			</td>
			<td>
				<?php print _("Search");?>
			</td>

 		</tr>

		<tr>
			<td class="rootnavi">
				<a class="rootnavilink" href="index.php?action=newdomain&amp;domain=new"
				><?php print _("add new domain");?></a>
			</td>

			<td>&nbsp;</td>

			<td class="rootnavi">
				<a class="rootnavilink" href="index.php?action=browse"
				><?php print _("browse domains");?></a>
			</td>

			<td>&nbsp;</td>

			<td class="rootnavi">
				<a class="rootnavilink" href="index.php?action=adminuser&amp;domain=<?php echo $domain;?>"
				><?php print _("adminusers");?></a>
			</td>

			<td>&nbsp;</td>

			<td>&nbsp;</td>
			
			<?php
		}
		?>
		<!-- ################ And the supervisors menu ##### -->

		<td class="navi">
			<a class="navilink" href="index.php?action=accounts&amp;domain=<?php echo $domain;?>"
			><?php print _("accounts");?></a>
		</td>

		<td>&nbsp;</td>

		<!--
		# Temporary removed, subject to discuss
		<td class="navi">
			<a class="navilink" href="index.php?action=aliases&amp;domain=<?php echo $domain;?>"
			><?php print _("aliases");?></a>
		</td>
		-->

		<td>&nbsp;</td>

		<td class="navi">
			<a class="navilink" href="index.php"><?php print _("home");?></a>
		</td>

		<td>&nbsp;</td>

		<td class="navi">
			<a class="navilink" href="index.php?action=settings"><?php print _("settings");?></a>
		</td>

		<td>&nbsp;</td>

		<td class="navi">
			<a class="navilink" href="index.php?action=logout&amp;domain=<?php echo $domain;?>"
			><?php print _("logout");?></a>
		</td>

		<td>&nbsp;</td>

		<td class="navi">
			<form action="index.php" method="get" >
		<!-- 		<input type="submit" value="<?php 
				print _("Search"); 
				?>"> -->
				<input type="hidden" name="action" value="search">
				<input type="hidden" name="domain" value="<?php echo $domain;?>">
				<input type="text" size="10" class="inputfield" name="searchstring" value="<?php if (isset($searchstring))  echo $searchstring; ?>">
			</form>
		</td>
	</tr>
</table>

</td></tr>

<tr>
	<td width="10">&nbsp;</td>

	<td valign="top" height="30">
		<table border="0" cellspacing="2" cellpadding="2"
		class="header">
			<tr>
				<td>
					-&gt;
				</td>

				<td>
					<?php print _("Logged in as user");?>:
				</td>

				<td style="font-weight: bold;">
					<?php echo $_SESSION['user'];?>
				</td>

				<td>
					-&gt;
				</td>

				<td>
					<?php print _("Your role is");?>:
				</td>

				<td style="font-weight: bold; color: red;">
					<?php
					if ($_SESSION['admintype'] == 0){
						print _("Superuser");
					} elseif ($_SESSION['admintype'] == 1){
						print _("Domain Master");
					}
					?>
				</td>

				<td>
					-&gt;
				</td>

				<td>
					<?php print _("Current domain is");?>:
				</td>

				<td style="font-weight: bold;">
					<?php
					if (empty($domain)){
						print _("No domain selected");
					} else {
						echo $domain;
					}
					?>
				</td>
			</tr>
		</table>
	</td>
</tr>

<tr>
	<td width="10">&nbsp;</td>
	
	<td height="5">
		<hr noshade="noshade" size="1">
	</td>
</tr>

<!-- ############################## End Menu ############################################ -->

<h1>Migration from plain to crypt passwords in table accountusers</h1>

<?php

include WC_BASE . "/config/conf.php";
include "DB.php";
include WC_BASE . "/lib/crypto.php";

if ($CRYPT != "crypt"){
        die ("Sorry, only crypt is supported, please check config.inc.php");
}

?>

<h2>Please make a backup of your mysql-databases first!!!</h2>

<pre>
/etc/init.d/mysql.server stop

cd /usr/local/mysql

cp -rp var var-backup

/etc/init.d/mysql.server start
</pre>

<?php

if ($confirmed!="yes"){

	?>

	<h3>Type "yes" to confirm</h3>
	<form action="migrate.php">
	<input type="text" name="confirmed">
	<input type="submit">
	</form>

	<?php
}
else if ($confirmed=="yes"){

	$query="SELECT * FROM adminuser";
	$handle=DB::connect ($DB['DSN'],true);
	$result=$handle->query($query);
	$cnt=$result->numRows($result);

	$pwd=new password;

	for ($c=0;$c<$cnt;$c++){
		$row=$result->fetchRow(DB_FETCHMODE_ASSOC,$c);
		$plainpassword=$row['password'];
		$username=$row['username'];
		$cryptpassword=$pwd->encrypt($plainpassword,$CRYPT);

		$query="UPDATE adminuser SET password='$cryptpassword' WHERE username='$username'";

		$handle=DB::connect ($DB['DSN'],true);
		$result2=$handle->query($query);
		if ($result2){
			print "User <b>$username</b> successfully migrated<br>";
		}

	}

}

?>

<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
?>
<!-- #################### newaccount.php start #################### -->
<tr>
	<td width="10">&nbsp;</td>
	<td valign="top">

	<?php
	if ($authorized){
		if (empty($_POST['confirmed'])){
			$query = "SELECT * FROM domain WHERE domain_name='".$_GET['domain']."'";
		} else {
			$query = "SELECT * FROM domain WHERE domain_name='".$_POST['domain']."'";
		}
		$result = $handle->query($query);
		if (DB::isError($result)) {
			die (_("Database error"));
		}

		$row = $result->fetchRow(DB_FETCHMODE_ASSOC, 0);

		$prefix		= $row['prefix'];
		$maxaccounts	= $row['maxaccounts'];
		$def_quota	= $row['quota'];
		$domain_quota	= $row['domainquota'];
		$transport	= $row['transport'];
		// START Andreas Kreisl : freenames
		$freenames	= $row['freenames'];
		// END Andreas Kreisl : freenames
		$freeaddress    = $row['freeaddress'];
		$folders	= $row['folders'];

		if ($transport != "cyrus"){
			print _("transport is not cyrus, unable to create account");
			echo "<br>";
			echo "<a href=\"index.php\">";
			print _("Back");
			echo "</a>";
			echo "</td></tr>";
			exit();
		}
		
		if (empty($_POST['confirmed'])){
			# Why prefix, not domain_name?
			$query = "SELECT * FROM accountuser WHERE prefix='$prefix' order by username";
			$result = $handle->query($query);
			if (DB::isError($result)) {
				die (_("Database error"));
			}
			$cnt = $result->numRows();
			
			if ($domain_quota != 0) {
				$used_domain_quota = 0;
				$cyr_conn = new cyradm;
				$error = $cyr_conn->imap_login();

				if ($error != 0){
					die ("IMAP Error: ".$cyr_conn->geterror());
				}

				for ($c = 0; $c < $cnt; $c++) {
					$row = $result->fetchRow(DB_FETCHMODE_ASSOC, $c);
					
					$_sep = '.';
					if ($DOMAIN_AS_PREFIX) {
						$_sep = '/';
					}
					
					$user_quota = $cyr_conn->getquota("user" . $_sep . $row['username']);
					
					if ($user_quota['qmax'] != "NOT-SET"){
						$used_domain_quota += $user_quota['qmax'];
					}
				}

				$quota_left = $domain_quota - $used_domain_quota;
				
				if ($def_quota > $quota_left) {
 					$def_quota = $quota_left;
				}
				$_SESSION['quota_left'] = $quota_left;
			} // End of if ($domain_quota!=0)
				
			if ($cnt+1 > $maxaccounts){
				?>
				<h3>
					<?php print _("Sorry, no more account allowed for domain");?>
					<span style="color: red;">
						<?php echo $_GET['domain'];?>
					</span>
					<br>
					<?php print _("Maximum allowed accounts is");?>
					<span style="font-weight: bolder;">
						<?php echo $maxaccounts;?>
					</span>
					<br>
					<a href="index.php?action=accounts&domain=<?php echo $_GET['domain'];?>"><?php print _("Back");?></a>
				<?php
			} elseif ($domain_quota != 0 && $quota_left <= 0) {
				?>
				<h3>
					<?php print _("Sorry, no more disk space left for domain");?>
					<span style="color: red;">
						<?php echo $_GET['domain'];?>
					</span>
					<br>
					<?php print _("Quota is");?>
					<span style="font-weight: bolder;">
						<?php echo $domain_quota;?>
					</span>
					<br>
					<a href="index.php?action=accounts&domain=<?php echo $_GET['domain'];?>"><?php print _("Back");?></a>
				<?php
			} else {
				?>
				<h3>
					<?php print _("Add new Account to domain");?>:
					<span style="color: red;">
						<?php echo $_GET['domain'];?>
					</span>
				</h3>
				<p>
					<?php print _("Total accounts") . ": " . $cnt;?>
				</p>
				<?php

				if (!$DOMAIN_AS_PREFIX){
					// START Andreas Kreisl : freenames
					if ($freenames=="YES"){
						$lastaccount = sprintf("%04d",$cnt);
						$lastaccount = $prefix . $lastaccount;
					} else {
						$lastaccount = $prefix."0000";
						if ($cnt > 0){
							$row = $result->fetchRow(DB_FETCHMODE_ASSOC, $cnt - 1);
							$lastaccount = $row['username'];
						}
					}
					// END Andreas Kreisl : freenames

					$test = ereg ("[0-9][0-9][0-9][0-9]$", $lastaccount, $result_array);
					$next = $result_array[0] + 1;

					$nextaccount = sprintf("%04d",$next);
					$nextaccount = $prefix.$nextaccount;
				}
				?>
				<form action="index.php" method="POST" style="border: ridge 0px maroon;">
					<input type="hidden" name="action" value="newaccount">
					<input type="hidden" name="confirmed" value="true">
					<input type="hidden" name="domain" value="<?php print $_GET['domain'];?>">

					<table>
						<?php
						if (!$DOMAIN_AS_PREFIX){
							?>
							<tr>
								<td>
									<?php print _("Accountname");?>
								</td>

								<!-- START Andreas Kreisl : freenames -->
								<td>
									<?php
									if ($freenames == "YES"){
										$_type = 'text';
										$_disp = '';
									} else {
										$_type = 'hidden';
										$_disp = $nextaccount;
									}
									?>
									<input
									<?php
									echo ($_type === 'hidden')?(''):('class="inputfield"');
									?>
									type="<?php echo $_type;?>"
									name="username"
									value="<?php echo $nextaccount;?>"
									onfocus="this.style.backgroundColor='#aaaaaa';"
									><?php echo $_disp;?>
								</td>
								<!-- END Andreas Kreisl : freenames -->
							</tr>
							<?php
						} // End of if (!$DOMAIN_AS_PREFIX)

						$_fields = array(
							'email'	=> array(_("Email address"), 'a', false, '@' . $_GET['domain']),
							'quota' => array(_("Quota"), '8', false, '', $def_quota),
							'password' => array(_("Password"), 'c', true, ''),
							'confirm_password' => array(_("Confirm Password"), 'c', true, '')
						);

						foreach ($_fields as $_name => $_def){
							?>
								<tr>
									<td>
										<?php echo $_def[0];?>
									</td>

									<td>
										<input
										class="inputfield"
										type="<?php echo ($_def[2])?('password'):('text'); ?>"
										name="<?php echo $_name; ?>" onfocus="this.style.backgroundColor='#<?php echo str_repeat($_def[1], 6); ?>'"
										<?php
										echo (isset($_def[4]))?('value="' . $_def[4] . '"'):('');
										?>
										><?php
										echo $_def[3];
										?>
									</td>
								</tr>
							<?php
						}
						?>

						<tr>
							<td colspan="2" align="center" style="border: 0px inset maroon;">
								<input
								class="button"
								type="submit"
								value="<?php print _("Submit"); ?>"
								>
							</td>
						</tr>
					</table>
				</form>
				<?php
			} // End of if ($cnt2+1 > $maxaccounts) .. else
		} elseif (!empty($_POST['confirmed'])){

			if ($DOMAIN_AS_PREFIX){
				if ($FQUN) {
					$username = $_POST['email']."@".$_POST['domain'];
				} else {
					$username = $_POST['email'].".".$_POST['domain'];
				}
				$separator = '/';
			} else {
				$username = $_POST['username'];
				$separator = '.';
			}

			if ($domain_quota!=0){
				// WARNING: if domain_quota is set, all accounts MUST have quotas!
				if (empty($_POST['quota'])){
					$_POST['quota'] = $def_quota;
				}
				if ($_POST['quota'] > $_SESSION['quota_left']){
					$_POST['quota'] = $_SESSION['quota_left'];
						?>
						<h3>
							<?php print _("Quota exeeded");?>
							<span style="color: red;">
								<?php print _("New quota is");?>:
							</span>
							<span style="font-weight: bolder;">
								<?php echo $_POST['quota'];?>
							</span>
						</h3>
						<?php
				}
				unset($_SESSION['quota_left']);
			}

			$cyr_conn = new cyradm;
			$error = $cyr_conn->imap_login();
			if ($error != 0) {
				die ("Error $error");
			}
			
			$pwd = new password;
			$password = $pwd->encrypt($_POST['password'], $CRYPT);
			
			$query = "INSERT INTO accountuser (username, password, prefix, domain_name) VALUES ('".$username."','".$password."','".$prefix."','".$_POST['domain']."')";
			$result = $handle->query($query);
			if (DB::isError($result)) {
				die (_("Database error"));
			}

			$query = "INSERT INTO virtual (alias, dest, username, status) values ( '".$_POST['email']."@".$_POST['domain']."','".$username."','".$username."','1')";
			$result = $handle->query($query);
			if (DB::isError($result)) {
				die (_("Database error"));
			}
			?>
				<h3>
					<?php print _("Account successfully added to the Database");?>:
					<span style="color: red;">
					<?php echo $username;?>
					</span>
				</h3>
			<?php

			$result = $cyr_conn->createmb("user" . $separator . $username);

			if ($result) {
				?>
				<h3>
					<?php print _("Account succesfully added to the IMAP Subsystem");?>
				</h3>
				<?php
			}
			$result = $cyr_conn->setacl("user" . $separator . $username, $CYRUS['ADMIN'], $cyr_conn->allacl);
			$result = $cyr_conn->setmbquota("user" . $separator . $username, $_POST['quota']);
			$AUTOCREATE_MAILBOXES = array();
			if (!empty($folders)) $AUTOCREATE_MAILBOXES = explode(',',$folders);
			if(sizeof($AUTOCREATE_MAILBOXES) > 0) {
				//log out of admin, log in as user
				$cyr_conn->imap_logout();
				$cyr_conn->imap_login($username, $_POST['password']);

				//create and subscribe to each mailbox listed in AUTOCREATE_MAILBOXES
				for($i=0; $i < sizeof($AUTOCREATE_MAILBOXES); $i++) {
					$new_folder = trim($AUTOCREATE_MAILBOXES[$i]);
					//if (function_exists('mb_convert_encoding')) {
					$new_folder = mb_convert_encoding($new_folder,"UTF7-IMAP",$charset);
					//}
					$cyr_conn->createmb("INBOX".$separator.$new_folder);
					$cyr_conn->command('. subscribe "INBOX'.$separator.$new_folder.'"');
				}
				$cyr_conn->imap_logout();
			}
			$_GET['domain'] = $_POST['domain'];
			include WC_BASE . "/browseaccounts.php";
		} // End of if (empty($_POST['confirmed']))
	} else { // if ($authorized)
		?>
		<h3>
			<?php print $err_msg;?>
		</h3>
			<a href="index.php?action=newaccount&domain=<?php echo $_POST['domain'];?>"><?php print _("Back");?></a>
		<?php
	} // End of if ($authorized)
	?>
	</td>
</tr>
<!-- #################### newaccount.php end #################### -->
<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
?>
<!-- #################### newadminuser.php start #################### -->
<tr>
	<td width="10">&nbsp;</td>
	<td valign="top">

	<?php
	if ($authorized){
		if (empty($_POST['confirmed'])){
			?>
			<h3>
				<?php print _("Add new administrator");?>:
			</h3>
			<form action="index.php" method="post">
				<input type="hidden"
				name="action"
				value="newadminuser">

				<input
				type="hidden"
				name="confirmed"
				value="true">

				<input
				type="hidden"
				name="domain"
				value="<?php print $_GET['domain']; ?>">

				<table>
					<tr>
						<td>
							<?php print _("Accountname");?>
						</td>

						<td>
							<input
							class="inputfield"
							type="text"
							name="newadminuser"
							onfocus="this.style.backgroundColor='#aaaaaa'"
							>
						</td>
					</tr>

					<tr>
						<td>
							<?php print _("Admin Type");?>
						</td>

						<td>
							<select name="newadmintype">
								<option value="0"><?php
								print _("Superuser");
								?></option>

								<option selected value="1"><?php
								print _("Domain Master");
								?></option>
							</select> <?php
							print _("Select \"Superuser\" for all domains");
							?>
						</td>
					</tr>

					<tr>
						<td>
							<?php print _("Password") ?>
						</td>

						<td>
							<input
							class="inputfield"
							type="password"
							name="new_password"
							onfocus="this.style.backgroundColor='#aaaaaa'"
							>
						</td>
					</tr>

					<tr>
						<td>
							<?php print _("Confirm Password");?>
						</td>

						<td>
							<input
							class="inputfield"
							type="password"
							name="confirm_password"
							onfocus="this.style.backgroundColor='#aaaaaa'"
							>
						</td>
					</tr>

					<tr>
						<td>
							<?php print _("Domain");?>
						</td>
						<td>
							<input
							class="inputfield"
							type="text"
							name="newdomain"
							value="<?php print $_GET['domain']; ?>"
							onfocus="this.style.backgroundColor='#aaaaaa'"
							>
						</td>
					</tr>

					<tr>
						<td colspan="2" align="center">
							<input
							class="inputfield"
							type="submit"
							value="<?php print _("Submit"); ?>"
							>
						</td>
					</tr>
				</table>
				</form>
				<?php
			} elseif (! empty($_POST['confirmed'])){
				# Generate password for new admin
				$pwd = new password;
				$password = $pwd->encrypt($_POST['new_password'],$CRYPT);
				# Save new admin into table
				$query = "INSERT INTO adminuser (username , password , type ) VALUES ('".$_POST['newadminuser']."','".$password."','".$_POST['newadmintype']."')";
				$result = $handle->query($query);
				if (DB::isError($result)) {
					die (_("Database error"));
				}
				# Save initial setup for new admin
				$query = "INSERT INTO settings (username) VALUES ('".$_POST['newadminuser']."')";
				$result = $handle->query($query);
				if (DB::isError($result)) {
					die (_("Database error"));
				}
				# Save domain which new admin will be responsible for
				# If admin is superuser, he will be responsible for all domains
				if ($_POST['newadmintype'] == 0){
					$query = "INSERT INTO domainadmin (domain_name , adminuser) values ('*' , '".$_POST['newadminuser']."')";
					$result = $handle->query($query);
					if (DB::isError($result)) {
						die (_("Database error"));
					}
				}
				else if (!empty($_POST['newdomain'])){
					$query = "INSERT INTO domainadmin (domain_name , adminuser) values ('".$_POST['newdomain']."' ,'".$_POST['newadminuser']."')";
					$result = $handle->query($query);
					if (DB::isError($result)) {
						die (_("Database error"));
					}
				}
				?>
				<h3>
					<?php
						print _("successfully added to Database");
					?>
					:
					<span style="color: red;">
						<?php echo $_POST['newadminuser'];?>
					</span>
					as
					<span style="color: red;">
						<?php
						if ($_POST['newadmintype'] == 0) {
							print _("Superuser");
						} else {
							print _("Domain Master");
						}
						?>
					</span>
				</h3>
				<?php
				include WC_BASE . "/adminuser.php";
		} // End of if (empty($_POST['confirmed']))
	} else { // if ($authorized)
		?>
		<h3>
			<?php print $err_msg; ?>
		</h3>
		<?php
	} // End of if ($authorized)
	?>
	</td>
</tr>
<!-- #################### newadminuser.php end #################### -->

<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
?>

<!-- #################################### Start newalias.php ################################# -->

<tr>
	<td width="10">&nbsp;</td>
	<td valign="top">

		<h3>
			<?php print _("Add new alias to domain");?>
			<span style="color: red;">
				<?php echo $_GET['domain'];?>
			</span>
		</h3>
    <?php
                require_once WC_BASE . '/config/conf.php';
                $query1 = "SELECT * FROM domain WHERE domain_name='$domain'";
		
                $handle = DB::connect($DB['DSN'], true);
                if (DB::isError($handle)) {
    	            die (_("Database error"));
                }

                $result1 = $handle->query($query1);

		$row = $result1->fetchRow(DB_FETCHMODE_ASSOC, 0);

	        $prefix         = $row['prefix'];
	        $maxaccounts    = $row['maxaccounts'];
                $def_quota      = $row['quota'];
                $transport      = $row['transport'];
                // START Andreas Kreisl : freenames
                $freenames      = $row['freenames'];
                // END Andreas Kreisl : freenames
                $freeaddress    = $row['freeaddress'];

	        if ($transport != "cyrus"){
                        die (_("transport is not cyrus, unable to create account"));
            	}
		
		if (empty($confirmed)){
		
	        $query2         = "SELECT * FROM virtual WHERE username='$prefix' order by alias";
		$result2        = $handle->query($query2);
		$cnt2           = $result2->numRows($result2);
		
		if ($cnt2+1 > $maxaccounts){
			?>
			<h3>
			    <?php print _("Sorry, no more alias allowed for domain");?>
			    <span style="color: red;">
				<?php echo $domain;?>
			    </span>
			    <br>
			    <?php print _("Maximum allowed aliases is");?>
			    <span style="font-weight: bolder;">
				<?php echo $maxaccounts;?>
			    </span>
			<?php
		} else {
			?>

		<form method="get" action="index.php">
			<input type="hidden"
			name="domain"
			value="<?php echo $_GET['domain']; ?>"
			>

			<input type="hidden"
			name="action"
			value="editalias"
			>

			<table>
				<tr>
					<td>
						<?php print _("Email address");?>
					</td>

					<td>
						<input
						type="text"
						name="alias"
						size="30"
						maxlength="50"
						value="<?php if (! empty($_GET['alias'])){ echo $_GET['alias']; } ?>"
						class="inputfield"
						onfocus="this.style.backgroundColor='#aaaaaa'"
						>@<?php
						echo $_GET['domain'];
						?>
					</td>
				</tr>

				<tr>
					<td colspan="2" align="center">
						<input 
						name="create"
						class="button"
						type="submit"
						value="<?php print _("Submit"); ?>"
						>&nbsp;
						
						<input
						name="reset"
						class="buttoN"
						type="reset"
						value="<?php print _("Cancel"); ?>"
						>
					</td>
				</tr>
			</table>
		</form>
		<?php
		    }
		}
		?>
	</td>
</tr>

<!-- ##################################### End newalias.php ################################## -->
<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
?>
<!-- #################### newdomain.php start #################### -->
<script>
<!--
	function display(url, nam, width, height) {
                window.open(url,nam,'width=' + width + ',height=' + height + ',screenX=40,screenY=30,resizable=0,scrollbars=no,menubar=no,status=no,location=no,toolbar=no,top=220,left=180');
}
// -->
</script>
<tr>
	<td width="10">&nbsp;</td>
	<td valign="top">
<?php
if ($authorized) {
?>
		<h3>
			<?php print _("Add new domain");?>
		</h3>
<?php
	if (empty($_GET['confirmed'])){
?>
			<form action="index.php" method="get" style="border: 0px double green;" name="mainform">
				<input type="hidden" name="action" value="newdomain">
				<input type="hidden" name="confirmed" value="true">
					<table>
						<tr>
							<td>
								<?php 
								print _("Domainname");
								?>
							</td>

							<td>
								<input 
								class="inputfield" 
								type="text" 
								size="20" 
								name="domain"> <a href="javascript:display('ace.php?domain='+document.mainform.domain.value+'&charset=<?php echo $charset; ?>','ACE',300,200);">Get ACE string</a>
							</td>
						</tr>

						<?php
						if ($DOMAIN_AS_PREFIX == 0) {
							?>
							<tr>
								<td>
									<?php print _("Prefix");?>
								</td>

								<td>
									<input
									class="inputfield"
									type="text"
									size="8"
									name="prefix"
									>
								</td>
							</tr>

						<!-- START Andreas Kreisl : freenames -->
						<tr>
							<td>
								<?php print _("Allow Free Names");?>
							</td>
							<td>
								<input
								class="inputfield"
								type="checkbox"
								name="freenames"
								value="Done by Andreas Kreisl"
								>
							</td>
						</tr>
							<!-- END Andreas Kreisl : freenames -->
							<?php
						} 
						?>
						<tr>
							<td>
								<?php print _("Allow Free Mail Addresses");?>
							</td>
							<td>
								<input
								class="inputfield"
								type="checkbox"
								name="freeaddress"
								>
							</td>
						</tr>
						<tr>
							<td>
								<?php print _("Maximum Accounts");?>
							</td>
							
							<td>
								<input
								class="inputfield"
								type="text"
								size="2"
								name="maxaccounts"
								>
							</td>
						</tr>
						
						<tr>
							<td>
								<?php print _("Default Quota in Kilobytes");?>
							</td>
							
							<td>
								<input
								class="inputfield"
								type="text"
								size="15"
								name="quota"
								value="<?php print $DEFAULT_QUOTA; ?>">
							</td>
						</tr>
						
						<tr>
							<td>
								<?php print _("Quota for Domain in Kilobytes");?>
							</td>

							<td>
								<input
                                                                class="inputfield"
                                                                type="text"
                                                                size="15"
                                                                name="domainquota"
								value="<?php print $DEFAULT_DOMAIN_QUOTA; ?>"> (0 = <?php print _("Quota not set"); ?>)
							</td>
						
						<tr>
							<td colspan="2">
								<p>
									&nbsp;
								</p>
							</td>
						</tr>
					</table>

					<h4>
						<?php print _("Standard Folders");?>
					</h4>

					<table>
						<tr>
							<td>
								<?php print _("Forders which are automaticaly created for every new account (comma separated list)");?>
							</td>
						</tr> 
						
						<tr>
							<td>
								<input class="inputfield" type="text" name="defaultfolders" size="80">
							</td>
						</tr>
					</table>
<!-- 

					<h4>
						<?php print _("Standard Mailboxes");?>
					</h4>

					<table>
						<tr>
							<td>
								<?php print _("emailadress where the default aliases should be mapped (empty means no mapping)");?>
							</td>
						</tr> 
						
						<tr>
							<td>
								<input
								class="inputfield"
								type="text"
								name="defaultaliases"
								>
							</td>
						</tr>

					</table>
-->
					
					<h4>
						<?php print _("Mail transport");?>
					</h4>
					
					<?php print _("Leave this as is, unless you know what you are doing");?>

					<table>
						<tr>
							<td>
								<select 
								name="transport" 
								class="selectfield">
									<option
									selected 
									value="cyrus">cyrus</option>
									<option 
									value="lmtp">lmtp</option>
									<option 
									value="smtp">smtp</option>
									<option
									value="uucp">uucp</option>
								</select>
							</td>
							
							<td>
								<?php print _("Parameter");?>
								<input
								class="inputfield"
								type="text"
								name="tparam"
								>
							</td>
						</tr>
					</table>

					<table>
						<tr>
							<td>
								<input
								class="button"
								type="submit"
								value="<?php print _("Submit"); ?>">
							</td>
						</tr>
					</table>
				</form>
<?php
	} else { // If (empty($_GET['confirmed'])
				if ($DOMAIN_AS_PREFIX) {
					$_GET['prefix'] = $_GET['domain'];
				}

				if ($_GET['transport'] != "cyrus") {
					$trans = $_GET['transport'].":".$_GET['tparam'];
				} else {
					$trans = 'cyrus';
				}
				// START Andreas Kreisl : freenames
				if (!empty($_GET['freenames'])) {
					$freenames = "YES";
				} else {
					$freenames = "NO";
				}
				if (!empty($_GET['freeaddress'])) {
					$freeaddress = "YES";
				} else {
					$freeaddress = "NO";
				}
				$query = "INSERT INTO domain (domain_name, prefix, maxaccounts, quota, domainquota, transport,freenames,freeaddress,folders) VALUES ('".$_GET['domain']."', '".$_GET['prefix']."', '".$_GET['maxaccounts']."', '".$_GET['quota']."', '".$_GET['domainquota']."', '".$trans."', '".$freenames."', '".$freeaddress."','".$_GET['defaultfolders']."')";
				// END Andreas Kreisl : freenames

				$result = $handle->query($query);
				if (!DB::isError($result)){
?>
					<h3>
						<?php print _("Successfully added");?>:
						<span style="color: red;">
							<?php echo $_GET['domain'];?>
						</span>
					</h3>
<?php
				} else {
?>
					<h3>
						<?php print _("Database error, please try again");?>
						<?php # echo get_var_dump($result); ?>
					</h3>
<?php
				}
				include WC_BASE . "/browse.php";
	} // If (empty($_GET['confirmed'])
} else { // If ($authorized)
?>
			<h3>
				<?php echo $err_msg;?>
			</h3>
			<a href="index.php?action=browse"><?php print _("Back");?></a>
<?php
}
?>
	</td>
</tr>

<!-- #################### newdomain.php end #################### -->

<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
?>
<!-- #################### newemail.php start #################### -->
<tr>
	<td width="10">&nbsp;</td>
	<td valign="top">

		<?php
		if ($authorized) {
	                $query = "SELECT freeaddress FROM domain WHERE domain_name='".$_GET['domain']."'";
	 		$result = $handle->query($query);
			if (DB::isError($result)) {
				die (_("Database error"));
			}
			$row = $result->fetchRow(DB_FETCHMODE_ASSOC, 0);
			$freeaddress=$row['freeaddress'];
		
			if (!empty($_GET['confirmed']) && empty($_GET['cancel'])) {
				if ($freeaddress != "YES") {
					$query = "INSERT INTO virtual (alias,dest,username) VALUES ('".$_GET['alias']."@".$_GET['domain']."','".$_GET['dest']."','".$_GET['username']."')";
				} else {
					$query = "INSERT INTO virtual (alias,dest,username) VALUES ('".$_GET['alias']."@".$_GET['aliasdomain']."','".$_GET['dest']."','".$_GET['username']."')";
				}
				$result = $handle->query($query);

				if (!DB::isError($result)) {
					?>
					<h3>
						<?php print _("Successfully added");?>:
						<span style="color: red;">
							<?php echo $_GET['alias'];?>
						</span>
					</h3>
					<?php
					include WC_BASE . "/editaccount.php";
				} else {
					?>
					<h3>
						<?php print _("Database error, please try again");?>
					</h3>
					<?php
					include WC_BASE . "/editaccount.php";
				}
			} elseif (!empty($_GET['cancel'])) {
				include WC_BASE . "/editaccount.php";
			} else {
				?>

				<h3>
					<?php print _("New emailadress for user");?>:
					<span style="color: red;">
						<?php echo $_GET['username'];?>
					</span>
				</h3>

				<form action="index.php" method="get">

					<input type="hidden" name="action"
					value="newemail">
					<input type="hidden" name="confirmed"
					value="true">
					<input type="hidden" name="domain"
					value="<?php print $_GET['domain'] ?>"> 
					<input type="hidden" name="username"
					value="<?php print $_GET['username'] ?>"> 

					<table>

						<tr>
							<td>
								<?php print _("Emailadress");?>
							</td>

							<td>
								<input  class="inputfield" type="text" 
								size="30" name="alias">
								<?php
									if ($freeaddress != "YES") {
										print "@".$_GET['domain'];
									} else {
										print "@";
								?>
										<input class="inputfield" type="text"
										size="20" name="aliasdomain">
								<?php
									}
								?>
							</td>
						</tr>

						<tr>
							<td width="150">
								<?php print _("Destination");?>
							</td>
							
							<td>
								<input  class="inputfield" type="text"
								size="30" name="dest" 
								value="<?php print $_GET['username'];?>">
							</td>
						</tr>


						<tr>
							<td>
								<input class="button" type="submit"
								value="<?php print _("Submit");?>">

								<input class="button" type="submit"
								name="cancel" value="<?php print _("Cancel"); ?>">
							</td>
						</tr>
					</table>
				</form>
				<?php
			} // End of if (!empty($_GET['confirmed']))
		} else { // if ($authorized)
			?>
				<h3>
					<?php echo $err_msg;?>
				</h3>
				<a href="index.php?action=editaccount&domain=<?php echo $_GET['domain'];?>&username=<?php echo $_GET['username'];?>"><?php print _("Back");?></a>
			<?php
		}
		?>
	</td>
</tr>
<!-- #################### newemail.php end #################### -->

# phpMyAdmin MySQL-Dump
# version 2.2.6
# http://phpwizard.net/phpMyAdmin/
# http://www.phpmyadmin.net/ (download page)
#
# Host: localhost
# Generation Time: Nov 04, 2002 at 01:44 AM
# Server version: 3.23.52
# PHP Version: 4.2.3
# Database : `mail`
# --------------------------------------------------------

#
# Table structure for table `accountuser`
#

CREATE TABLE accountuser (
  username varchar(255) binary NOT NULL default '',
  password varchar(50) binary NOT NULL default '',
  prefix varchar(50) NOT NULL default '',
  domain_name varchar(255) NOT NULL default '',
  imap int(10) NOT NULL default '1',
  pop int(10) NOT NULL default '1',
  sieve int(10) NOT NULL default '1',
  smtpauth int(10) NOT NULL default '1',
  UNIQUE KEY username (username)
) TYPE=MyISAM;
# --------------------------------------------------------

#
# Table structure for table `adminuser`
#

CREATE TABLE adminuser (
  username varchar(50) binary NOT NULL default '',
  password varchar(50) binary NOT NULL default '',
  type int(11) NOT NULL default '0',
  SID varchar(255) NOT NULL default '',
  home varchar(255) NOT NULL default '',
  PRIMARY KEY  (username)
) TYPE=MyISAM;
# --------------------------------------------------------

#
# Table structure for table `settings`
#

CREATE TABLE settings (
  `username` varchar(50) binary NOT NULL default '',
  `style` varchar(50) NOT NULL default 'default',
  `maxdisplay` int(4) NOT NULL default '15',
  `warnlevel` int(3) NOT NULL default '90',
  PRIMARY KEY  (username)
) TYPE=MyISAM;
# --------------------------------------------------------

#
# Table structure for table `alias`
#

CREATE TABLE alias (
  alias varchar(255) NOT NULL default '',
  dest longtext,
  username varchar(50) NOT NULL default '',
  status int(11) NOT NULL default '1',
  PRIMARY KEY  (alias)
) TYPE=MyISAM;
# --------------------------------------------------------

#
# Table structure for table `domain`
#

CREATE TABLE domain (
  domain_name varchar(255) NOT NULL default '',
  prefix varchar(50) NOT NULL default '',
  maxaccounts int(11) NOT NULL default '20',
  quota int(10) NOT NULL default '20000',
  domainquota int(10) NOT NULL default '0',
  transport varchar(255) NOT NULL default 'cyrus',
  freenames enum('YES','NO') NOT NULL default 'NO',
  freeaddress enum('YES','NO') NOT NULL default 'NO',
  folders varchar(255) NOT NULL default '',
  PRIMARY KEY  (domain_name),
  UNIQUE KEY prefix (prefix)
) TYPE=MyISAM;
# --------------------------------------------------------

#
# Table structure for table `domainadmin`
#

CREATE TABLE domainadmin (
  domain_name varchar(255) NOT NULL default '',
  adminuser varchar(255) NOT NULL default ''
) TYPE=MyISAM;
# --------------------------------------------------------

#
# Table structure for table `search`
#

CREATE TABLE search (
  search_id varchar(255) NOT NULL default '',
  search_sql text NOT NULL,
  perpage int(11) NOT NULL default '0',
  timestamp timestamp(14) NOT NULL,
  PRIMARY KEY  (search_id),
  KEY search_id (search_id)
) TYPE=MyISAM;
# --------------------------------------------------------

#
# Table structure for table `virtual`
#

CREATE TABLE virtual (
  alias varchar(255) NOT NULL default '',
  dest longtext,
  username varchar(50) NOT NULL default '',
  status int(11) NOT NULL default '1',
  KEY alias (alias)
) TYPE=MyISAM;

CREATE TABLE log (
  id int(11) NOT NULL auto_increment,
  msg text NOT NULL,
  user varchar(255) NOT NULL default '',
  host varchar(255) NOT NULL default '',
  time datetime NOT NULL default '2000-00-00 00:00:00',
  pid varchar(255) NOT NULL default '',
  PRIMARY KEY  (id)
) TYPE=MyISAM;

INSERT INTO adminuser (username, password) VALUES ('admin', ENCRYPT('test'));
INSERT INTO domainadmin (domain_name,adminuser) VALUES ('*','admin');
INSERT INTO accountuser (username, password) VALUES ('cyrus', ENCRYPT('secret'));
INSERT INTO `settings` ( `username` , `style` , `maxdisplay` , `warnlevel` ) VALUES ( 'admin', 'default', '15', '90');

ALTER TABLE `log` ADD INDEX `idx_log_user` ( `user` ); 
DROP INDEX virtual_unique_ndx;
DROP TABLE search;
DROP TABLE virtual;
DROP TABLE domainadmin;
DROP TABLE "domain";
DROP TABLE "log";
DROP TABLE alias;
DROP TABLE adminuser;
DROP TABLE accountuser;

CREATE TABLE accountuser (
  username varchar(255) PRIMARY KEY,
  password varchar(50) NOT NULL default '',
  prefix varchar(50) NOT NULL default '',
  domain_name varchar(255) NOT NULL default '',
  imap int NOT NULL default 0,
  pop int NOT NULL default 0,
  sieve int NOT NULL default 0,
  smtpauth int NOT NULL default 0,
);

CREATE TABLE adminuser (
  username varchar(50) PRIMARY KEY,
  password varchar(50) NOT NULL default '',
  type int NOT NULL default 0,
  SID varchar(255) NOT NULL default '',
  home varchar(255) NOT NULL default ''
);

CREATE TABLE settings (
  username varchar(50) PRIMARY KEY,
  style varchar(50) NOT NULL default 'default',
  maxdisplay int NOT NULL default 15,
  warnlevel int NOT NULL default 90
);

CREATE TABLE alias (
  alias varchar(255) PRIMARY KEY,
  dest varchar(255),
  username varchar(255) NOT NULL default '',
  status int NOT NULL default 1
);

CREATE TABLE domain (
  domain_name varchar(255) PRIMARY KEY,
  prefix varchar(255) UNIQUE NOT NULL default '',
  maxaccounts int NOT NULL default 20,
  quota int NOT NULL default '20000',
  domainquota int NOT NULL default '0',
  transport varchar(255) NOT NULL default 'cyrus',
  freenames varchar(3) CHECK (freenames='YES' OR freenames='NO' ) DEFAULT 'NO' NOT NULL,
  freeaddress varchar(3) CHECK (freeaddress='YES' OR freeaddress='NO' ) DEFAULT 'NO' NOT NULL,
  folders varchar(255) NOT NULL default ''
);


CREATE TABLE domainadmin (
  domain_name varchar(255) NOT NULL default '',
  adminuser varchar(255) NOT NULL default ''
);

CREATE TABLE search (
  search_id varchar(255) PRIMARY KEY,
  search_sql text NOT NULL,
  perpage int NOT NULL default '0',
  timestamp timestamp NOT NULL
);

CREATE TABLE virtual (
  alias varchar(255) NOT NULL default '',
  dest varchar(255),
  username varchar(255) NOT NULL default '',
  status int NOT NULL default '1'
);
CREATE UNIQUE INDEX virtual_unique_ndx ON virtual(alias,dest);

CREATE TABLE log (
  id serial PRIMARY KEY,
  msg text NOT NULL,
  "user" varchar(255) NOT NULL default '',
  host varchar(255) NOT NULL default '',
  time timestamp  NOT NULL,
  pid varchar(255) NOT NULL default ''
);

GRANT SELECT,INSERT,UPDATE,DELETE ON accountuser TO mail;
GRANT SELECT,INSERT,UPDATE,DELETE ON adminuser TO mail;
GRANT SELECT,INSERT,UPDATE,DELETE ON alias TO mail;
GRANT SELECT,INSERT,UPDATE,DELETE ON domain TO mail;
GRANT SELECT,INSERT,UPDATE,DELETE ON domainadmin TO mail;
GRANT SELECT,INSERT,UPDATE,DELETE ON search TO mail;
GRANT SELECT,INSERT,UPDATE,DELETE ON virtual TO mail;
GRANT SELECT,INSERT,UPDATE,DELETE ON log TO mail;
#!/usr/local/bin/php -q
#
#  imap2imap-copy.php version 0.1
#
#  Purpose:
#
#  Migrating users from one to another IMAP Server.
#  i.e. from WU-IMAP to cyrus or vice versa
#
#  Just fill in the variables in capital letters and run the script from
#  the commandline. PHP must be compiled as cgi to be able to run this script.
#
#  Release date 2003-01-01
#
#  Copyright 2003 by Luc de Louw luc@delouw.ch
#  
<?php

$OLDMAILBOX="{whateverhost:143}INBOX";
$NEWMAILBOX="{localhost:143}INBOX";
$OLDUSER="foo";
$OLDPASSWORD="letmein";
$NEWUSER="test0001";
$NEWPASSWORD="changeme";

print "Logging in to old IMAP Server ...";
$oldimap = imap_open($OLDMAILBOX, $OLDUSER, $OLDPASSWORD); 

print "done\n\n";

print "Logging in to new IMAP Server ...";

$newimap = imap_open($NEWMAILBOX, $NEWUSER, $NEWPASSWORD);

print "done\n\n";

print "Fetching number of messages...";
$headers = imap_headers ($oldimap);
$cnt=count($headers);

print "done\n\n";

print "Numer of messages to transfer: ".$cnt."\n\n";

for ($i=1;$i<$cnt+1;$i++){

	print "Processing message number: ".$i." ...";

	$head= imap_header($oldimap,$i);

	$from = $head->fromaddress; 
	$to = $head->toaddress; 
	$subject = $head->subject;
	$body = imap_body($oldimap,$i);

	$newheader= imap_fetchheader($oldimap,$i,"FT_UID");
	
	$result=imap_append($newimap,$NEWMAILBOX,$newheader." From: ".$from."\r\n"."To: ".$to."\r\n"."Subject: ".$subject."\r\n\r\n".$body."\r\n");

	if ($result){
		print "done\n";
	}

}

imap_close($oldimap);
imap_close($newimap);

print "\n";
print "##########################################################################\n";
print "#                                                                        #\n";
print "# W A R N I N G !  D O   N O T   L E A V E   T H I S   S C R I P T   I N #\n";
print "#                                                                        #\n";
print "# A   W E B S E R V E R S   D O C U M E N T R O O T ! ! !                #\n";
print "#                                                                        #\n";
print "##########################################################################\n";


?>
use mysql;
INSERT INTO user (Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv) VALUES ('localhost', 'mail', PASSWORD('secret'), 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N');
   
INSERT INTO db (Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Grant_priv, References_priv, Index_priv, Alter_priv) VALUES ('localhost', 'mail', 'mail', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y ');
flush privileges;

create database mail;
CREATE USER mail WITH PASSWORD 'secret' NOCREATEDB NOCREATEUSER;
CREATE DATABASE mail;
#!/bin/bash
#
#
# This script extracts the i18n stings out of the php files and puts them in a pot file

xgettext -C `find . -name "*.php"` -o web-cyradm.pot --keyword=_
#!/bin/bash
#
# 	This script merges existing PO's with a new POT
#
#

for i in cs da de en es fr hu it nb_NO nl no pl pt ro ru sl sv tr zh_CN

do
	chmod 644 ../locale/$i/LC_MESSAGES/web-cyradm.po
	#chmod 644 ../locale/$i/LC_MESSAGES/web-cyradm.po~
	chmod 644 ../locale/$i/LC_MESSAGES/web-cyradm.mo
	#rm ../locale/$i/LC_MESSAGES/web-cyradm.po~
	msgmerge -U ../locale/$i/LC_MESSAGES/web-cyradm.po ../locale/templates/web-cyradm.pot
	msgfmt -o ../locale/$i/LC_MESSAGES/web-cyradm.mo ../locale/$i/LC_MESSAGES/web-cyradm.po
	echo "=============================================================================="
	echo "Statistics for Language $i:"
	echo ""
	msgfmt --statistics ../locale/$i/LC_MESSAGES/web-cyradm.po -o /dev/null
	

done
ALTER TABLE `mail`.`domain` ADD `transport` VARCHAR(255) DEFAULT 'cyrus' NOT NULL
ALTER TABLE `domain` ADD `freenames` ENUM( 'YES', 'NO' ) DEFAULT 'NO' NOT NULL;
ALTER TABLE `domain` ADD `freeaddress` ENUM( 'YES', 'NO' ) DEFAULT 'NO' NOT NULL;

ALTER TABLE `virtual` DROP PRIMARY KEY;
ALTER TABLE `virtual` DROP INDEX `alias`;
ALTER TABLE `virtual` ADD INDEX (alias);

CREATE TABLE log (
  id int(11) NOT NULL auto_increment,
  msg text NOT NULL,
  user varchar(255) NOT NULL default '',
  host varchar(255) NOT NULL default '',
  time datetime NOT NULL default '2000-00-00 00:00:00',
  pid varchar(255) NOT NULL default '',
  PRIMARY KEY  (id)
) TYPE=MyISAM;

-- execute as postgres user in de mail database

ALTER TABLE domain ADD column freenames DEFAULT 'NO' NOT NULL;
ALTER TABLE domain ADD freeaddress DEFAULT 'NO' NOT NULL;

CREATE TABLE log (
  "id" serial PRIMARY KEY,
  "msg" text NOT NULL,
  "user" varchar(255) NOT NULL default '',
  "host" varchar(255) NOT NULL default '',
  "time" datetime NOT NULL default '2000-01-01 00:00:00',
  "pid" varchar(255) NOT NULL default ''
);


GRANT SELECT,INSERT,UPDATE,DELETE ON log TO mail;
ALTER TABLE `domain` ADD `domainquota` int(10) DEFAULT '0' NOT NULL AFTER `quota`;
ALTER TABLE `domain` ADD `folders` varchar(255) NOT NULL DEFAULT '';

ALTER TABLE `accountuser` ADD `imap` int(10) DEFAULT '1' NOT NULL AFTER `domain_name`;
ALTER TABLE `accountuser` ADD `pop` int(10) DEFAULT '1' NOT NULL AFTER `imap`;
ALTER TABLE `accountuser` ADD `sieve` int(10) DEFAULT '1' NOT NULL AFTER `pop`;
ALTER TABLE `accountuser` ADD `smtpauth` int(10) DEFAULT '1' NOT NULL AFTER `sieve`;

CREATE TABLE `settings` (
  `username` varchar(50) binary NOT NULL default '',
  `style` varchar(50) NOT NULL default 'default',
  `maxdisplay` int(4) NOT NULL default '15',
  `warnlevel` int(3) NOT NULL default '90',
  PRIMARY KEY  (username)
) TYPE=MyISAM;

INSERT INTO `settings` (username) SELECT `username` FROM adminuser;

ALTER TABLE `log` ADD INDEX `idx_log_user` ( `user` ); 
-- From PostgreSQL documentation: "In the current implementation of ADD COLUMN, default and NOT NULL clauses for the new column are not supported. The new column always comes into being with all values null."
-- How to achive "AFTER quota"?
ALTER TABLE domain ADD domainquota int;
ALTER TABLE domain SET DEFAULT '0';
UPDATE domain SET domainquota = DEFAULT;
ALTER TABLE domain ALTER COLUMN domainquota SET NOT NULL;

ALTER TABLE domain ADD folders varchar(255);
ALTER TABLE domain SET DEFAULT '';
UPDATE domain SET folders = DEFAULT;
ALTER TABLE domain ALTER COLUMN folders SET NOT NULL;

ALTER TABLE accountuser ADD imap int;
ALTER TABLE accountuser ADD pop int;
ALTER TABLE accountuser ADD sieve int;
ALTER TABLE accountuser ADD smtpauth int;

CREATE TABLE settings (
  username varchar(50) PRIMARY KEY,
  style varchar(50) NOT NULL default 'default',
  maxdisplay int NOT NULL default 15,
  warnlevel int NOT NULL default 90
);

INSERT INTO settings (username) SELECT username FROM adminuser;
UPDATE settings SET style = DEFAULT, maxdisplay = DEFAULT, warnlevel = DEFAULT;
<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
?>
<!-- #################################### Start search ################################# -->
<tr>
	<td width="10">&nbsp; </td>
	<td valign="top">

<?php
if ($authorized) {
	$cyr_conn = new cyradm;
	$error = $cyr_conn->imap_login();

	if ($error != 0){
		die ("IMAP Error: ".$cyr_conn->geterror());
	}

	if ($_SESSION['admintype'] == 0) {
		$allowed_domains1="('1'='1";
		$allowed_domains3="('1'='1";
	} else {
		$allowed_domains1="(a.domain_name='";
		$allowed_domains3="(virtual.username='";
		foreach($_SESSION['allowed_domains'] as $allowed_domain) {
			$allowed_domains1 .= $allowed_domain."' OR a.domain_name='";
			$allowed_domains3 .= $allowed_domain."' OR virtual.username='";
		}
	}


	#####  Show matching Domains first #######
	$query = "SELECT * FROM domain AS a WHERE domain_name LIKE '%".addslashes($_GET['searchstring'])."%' AND ".$allowed_domains1."') ORDER BY domain_name";
	$result = $handle->query($query);
	$cnt = $result->numRows();

	print "<tr>";
	print "<td width=\"10\">&nbsp; </td>";
	print "<td valign=\"top\"><h3>"._("Total domains matching").": ".$cnt."</h3>";
	print "<table border=0>";
	print "<tbody>";
	print "<tr>";
	print ($_SESSION['admintype']==0)?"<th colspan=\"4\">":"<th colspan=\"2\">";
	print _("action")."</th>";
	print "<th>". _("domainname")."</th>";
	if (!$DOMAIN_AS_PREFIX ) {
	    print "<th>"._("prefix")."</th>";
	}
	print "<th>"._("max Accounts")."</th>";
	print "<th>"._("Domain quota")."</th>";
	print "<th>"._("default quota per user")."</th>";
	print "</tr>";

	for ($c=0;$c<$cnt;$c++) {
		if ($c%2==0){
			$cssrow="row1";
		} else {
			$cssrow="row2";
		}

		$row=$result->fetchRow(DB_FETCHMODE_ASSOC,$c);
		$domain = $row['domain_name'];

		print "<tr class=\"$cssrow\"> \n";
		if ($_SESSION['admintype']==0) {
			print '<td><a href="index.php?action=editdomain&domain='.$domain.'">'. _("Edit Domain")."</a></td>\n";
			print '<td><a href="index.php?action=deletedomain&domain='.$domain.'">'. _("Delete Domain")."</a></td>\n";
		}
		if ($row['transport'] == 'cyrus') {
			print '<td><a href="index.php?action=accounts&domain='.$domain.'">'. _("accounts")."</a></td>\n";
		} else {
			print "<td>"._("accounts")."</td>\n";
		}
		if ($row['transport'] == 'cyrus') {
			print '<td><a href=\"index.php?action=aliases&domain='.$domain.'">'._("Aliases")."</a></td>\n";
		} else {
			print "<td>"._("Aliases")."</td>\n";
		}
		print "<td>";
		print $domain;
		print "</td>\n<td>";
		if (!$DOMAIN_AS_PREFIX) {
			# Print the prefix
			print $row['prefix'];
			print "</td>\n<td align=\"right\">";
		}
		# Print the maxaccount
		print $row['maxaccounts'];
		print "</td>\n<td align=\"right\">";
		if (! $row['domainquota'] == 0) {
			echo $row['domainquota'];
		} else {
			print _("Quota not set");
		}
		print "</td>\n<td align=\"right\">";
		# Print the quota
		print $row['quota'];
		print "</td>\n</tr>\n";
	}
	print "</tbody>";
	print "</table>";

	############ And now show the users matching the search query ###########
	$query = "SELECT DISTINCT a.username, a.domain_name FROM virtual as v, accountuser as a WHERE ((v.username LIKE '%".addslashes($_GET['searchstring'])."%') OR (v.alias LIKE '%".addslashes($_GET['searchstring'])."%')) AND (v.username=a.username) AND ".$allowed_domains1."') ORDER BY username";
	$result = $handle->query($query);
	$total = $result->numRows();

	print "<h3>"._("Total users matching").": ".$total."</h3>";
	if (empty($row_pos)) {
		$row_pos = 0;
	}
        $query = "SELECT DISTINCT a.* FROM virtual as v, accountuser as a WHERE ((v.username LIKE '%".$_GET['searchstring']."%') OR (v.alias LIKE '%".addslashes($_GET['searchstring'])."%')) AND (v.username=a.username) AND ".$allowed_domains1."') ORDER BY username";
	$result = $handle->limitQuery($query,$row_pos,10);
	$cnt = $result->numRows();

	print "<h4>"._("Displaying from position").": ".$row_pos."</h4>";
	if ($cnt!=0) {
		print "<table cellspacing=\"2\" cellpadding=\"0\"><tr>";

		$prev = $row_pos -10;
		$next = $row_pos +10;

		if ($row_pos<10) {
			print "<td class=\"navi\"><a class=\"navilink\" href=\"#\">"._("Previous 10 entries")."</a></td>";
		} else {
			print "<td class=\"navi\"><a class=\"navilink\" href=\"index.php?action=search&row_pos=".$prev."&searchstring=".$searchstring."\">"._("Previous 10 entries")."</a></td>";
		}
		if ($next>$total) {
			print "<td class=\"navi\"><a class=\"navilink\" href=\"#\">"._("Next 10 entries")."</a></td>";
		} else {
			print "<td class=\"navi\"><a class=\"navilink\" href=\"index.php?action=search&row_pos=".$next."&searchstring=".$searchstring."\">"._("Next 10 entries")."</a></td>";
		}
		print "</tr></table><p>";

		print "<table border=\"0\">\n";
		print "<tbody>";
		print "<tr>";
		print "<th colspan=\"5\">"._("action")."</th>";
		print "<th>"._("Email address")."</th>";
		print "<th>"._("Username")."</th>";
		print "<th>"._("Last login")."</th>";
		print "<th>"._("Quota used")."</th>";
		print "<th>"._("services")."</th>";
		print "</tr>";

		for ($c=0;$c<$cnt;$c++) {
			if ($c%2==0){
				$cssrow="row1";
			} else {
				$cssrow="row2";
			}

			$row=$result->fetchRow(DB_FETCHMODE_ASSOC,$c);
			$username=$row['username'];
			$domain=$row['domain_name'];
			$services = array();
			$services['imap'] = $row['imap'];
			$services['pop'] = $row['pop'];
			$services['sieve'] = $row['sieve'];
			$services['smtpauth'] = $row['smtpauth'];
			print "\n<tr class=\"$cssrow\">";
			print "\n<td valign=\"middle\"><a href=\"index.php?action=editaccount&domain=".$domain."&username=".$username."\">"._("Edit email addresses")."</a></td>";
			print "\n<td valign=\"middle\"><a href=\"index.php?action=manageaccount&domain=".$domain."&username=".$username."\">"._("Edit account")."</a></td>";
			print "\n<td valign=\"middle\"><a href=\"index.php?action=forwardaccount&domain=".$domain."&username=".$username."\">". _("Forward")."</a></td>";
			print "\n<td valign=\"middle\"><a href=\"index.php?action=deleteaccount&domain=".$domain."&username=".$username."\">"._("Delete account")."</a></td>";
			print "\n<td valign=\"middle\"><a href=\"index.php?action=catch&domain=".$domain."&username=".$username."\">"._("Set catch all")."</a></td>";
			print "\n<td valign=\"middle\">";
			$query2 = "SELECT alias,status FROM virtual WHERE username='".$username."'";
			$result2 = $handle->query($query2);
			$cnt2 = $result2->numRows();

			for ($c2=0;$c2<$cnt2;$c2++){
				# Print All Emailadresses found for the account
				$row2 = $result2->fetchRow(DB_FETCHMODE_ASSOC, $c2);
				print $row2['alias']."<br>";
			}
			$query3 = "SELECT dest FROM virtual WHERE alias='".$username."' AND username=''";
			$result3 = $handle->query($query3);
			$row = $result3->fetchRow(DB_FETCHMODE_ASSOC, 0);
			if (is_array($row)) {
				print "<br><b>"._("Forwards").":</b><br><br>";
				$forwards_tmp = preg_split('|,\s*|', stripslashes($row['dest']));
				$forwards = array();
				while (list(, $forward) = each($forwards_tmp)){
					if (strtolower($forward) != strtolower($username)){
						$forwards[] = htmlspecialchars(trim($forward));
					} else {
						$forwards[] = "<b>".htmlspecialchars(trim($forward))."</b>";
					}
				}
				echo implode("<br>", $forwards);
			}
			print "</td>\n<td valign=\"middle\">";
			print $username;
			print "</td>\n<td align=\"center\" valign=\"middle\">";
			$query3 = "SELECT * FROM log WHERE user='".$username."' ORDER BY time DESC";
			$result3 = $handle->query($query3);
			if (! DB::isError($result3)){
				$row3 = $result3->fetchRow(DB_FETCHMODE_ASSOC, 0);
				$lastlogin = $row3['time'];
			} else {
				$lastlogin = '';
			}
			if ($lastlogin == ''){
				$lastlogin=_("n/a");
			}
			print $lastlogin;
			print "</td>\n<td valign=\"middle\">";
			if ($DOMAIN_AS_PREFIX){
	    			$quota = $cyr_conn->getquota("user/" . $username);
			} else {
	    			$quota = $cyr_conn->getquota("user." . $username);
			}

			if ($quota['used'] != "NOT-SET"){
				$q_used  = $quota['used'];
				$q_total = $quota['qmax'];
				if (!$q_total == 0) {
					$q_percent = 100*$q_used/$q_total;
					if ($q_percent >= $_SESSION['warnlevel']){
						printf ("<font color=red>");
					}
					printf ("%d KBytes %s %d KBytes (%.2f%%)",
						$quota['used']/1024, _("out of"),
						$quota['qmax']/1024, $q_percent);
					if ($q_percent >= $_SESSION['warnlevel']){
						printf ("</font>");
					}
				} else {
					print _("Unable to retrieve quota");
				}
			} else { 
				print _("Quota not set");
			}  
			print "&nbsp;</td>\n";
			print '<td valign="middle">';
			print '<table border=0 align="center">';
			if($services['imap']==1){
				print "<tr><td>imap</td><td><img src=\"images/checked.png\" alt=\"yes\" border=0></td></tr>";
			}
			else {
				print "<tr><td>imap</td><td><img src=\"images/false.png\" alt=\"no\" border=0></td></tr>";
			}
			if($services['pop']==1){
				print "<tr><td>pop</td><td><img src=\"images/checked.png\" alt=\"yes\" border=0></td></tr>";
			}
			else{
				print "<tr><td>pop</td><td><img src=\"images/false.png\" alt=\"no\" border=0></td></tr>";
			}
			if($services['sieve']==1){
				print "<tr><td>sieve</td><td><img src=\"images/checked.png\" alt=\"yes\" border=0></td></tr>";
			}
			else{
				print "<tr><td>sieve</td><td><img src=\"images/false.png\" alt=\"no\" border=0></td></tr>";
			}
			if($services['smtpauth']==1){
				print "<tr><td>smtpauth</td><td><img src=\"images/checked.png\" alt=\"yes\" border=0></td></tr>";
			}
			else{
				print "<tr><td>smtpauth</td><td><img src=\"images/false.png\" alt=\"no\" border=0></td></tr>";
			}
			if($row2['status']==1){
				print "<tr><td>smtp</td><td><img src=\"images/checked.png\" alt=\"yes\" border=0></td></tr>";
			}
			else{
				print "<tr><td>smtp</td><td><img src=\"images/false.png\" alt=\"no\" border=0></td></tr>";
			}
			print "</table>\n</td>\n";
			print "</tr>\n";
		}
		print "\n</tbody>\n";
		print "</table>\n";
	}
	else{
		print "\n"._("No accounts found")."\n<p>";
	}

	################ And now show the matching aliases #######################
	$query3 = "SELECT DISTINCT alias, username FROM virtual WHERE (((dest LIKE '%".$_GET['searchstring']."%') OR (alias LIKE '%".$_GET['searchstring']."%')) AND (dest <> username) AND (username<>'')) AND ".$allowed_domains3."') ORDER BY username";	
	$result3 = $handle->query($query3);
	$total = $result3->numRows();
	print "<h3>"._("Total aliases matching").": ".$total."</h3>";
	if ($total == 0) {
		print _("No aliases found");
	} else {
?>
        <table border="0">
                <tbody>
                <tr>
                        <th colspan="2"><?php print _("action");?></th>
                        <th><?php print _("Email address"); ?></th>
                        <th><?php print _("Destination"); ?></th>
                </tr>
<?php 
		for ($c = 0; $c < $total; $c++){
			if ($c%2==0){
				$cssrow="row1";
			} else {
				$cssrow="row2";
			}
			$row = $result3->fetchRow( DB_FETCHMODE_ASSOC, $c);
			$alias = $row['alias'];
			$domain = $row['username'];
?>
			<tr class="<?php echo $cssrow; ?>">
                        <td><a href="index.php?action=editalias&alias=<?php echo $alias;?>&domain=<?php echo $domain;?>"><?php print _("Edit Alias"); ?></a></td>
                        <td><a href="index.php?action=deletealias&alias=<?php echo $alias;?>&domain=<?php echo $domain;?>"><?php print _("Delete Alias"); ?></a></td>
                        <td><?php echo $alias; ?></td>
                        <td>
<?php
			$query4 = "SELECT dest FROM virtual WHERE alias='".$alias."' AND username='".$domain."'";
			$result4 = $handle->limitQuery($query4, 0, 3);
			$num_dest = $result4->numRows ($result4);
			for ($d=0; $d<$num_dest; $d++) {
				$row2 = $result4->fetchRow (DB_FETCHMODE_ASSOC, $d);
				if ($d!= 0) {
					echo ", ";
				}
				echo $row2['dest'];
			}
			$query5 = "SELECT COUNT(dest) FROM virtual WHERE alias='".$alias."' AND username='".$domain."'";
			$num_dests = $handle->getOne($query5);
			if ($num_dests>3) {
				print ", ... ";
			}
?>
			</td></tr>
<?php
		}
?>
	</table>
	<br>
<?php
	}
} else {
?>
	<h3>
		<?php print $err_msg;?>
	</h3>
	<a href="index.php?action=browse"><?php print _("Back");?></a>
<?php
}
?>
	</td>
</tr>
<!-- ##################################### End search.php #################################### -->
<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
?>
<?php 
session_name('web-cyradm-session');
session_start();

$sess_timeout = $SESS_TIMEOUT; // seconds
// if (!isset($first)) $first = 1;
$current_time = time();
// $newid = time();

// Check session of current user.
// If the user doesn't have a session, create a new
// session and set session_ok to FALSE, so that he can
// login.
// If the user already had a session, check if the
// session expired.
// If it has expired, set session_ok to FALSE and
// redirect to timeout.php.
// If the session has NOT expired, update timestamp in session.

// Read old timestamp
$old_time = isset($_SESSION['timestamp'])?($_SESSION['timestamp']):(-1);
// Update timestamp
$_SESSION['timestamp'] = $current_time;
if (! isset($_SESSION['session_ok'])){
	// User doesn't have a session.
	$_SESSION['session_ok'] = FALSE;
} else {
	// User seems to have a session.
	// If it pretends to be a valid session, check if
	// has expired.  If it has, invalidate the session.
	// If the session is already invalid, pass through,
	// so that the login screen is shown.

	if ($_SESSION['session_ok'] === TRUE){
		if ($current_time > ($old_time + $SESS_TIMEOUT)){
			// Session has expired
		#	$_SESSION['session_ok']	= FALSE;
			$_SESSION['timestamp']	= -1;
			$LANG = $_SESSION['LANG'];
			include ("header.inc.php");
			include ("timeout.php");
			include ("footer.inc.php");
			$_SESSION['session_ok'] = FALSE;
			session_unset();
			die();
		} else {
			// Session has NOT expired
			$_SESSION['session_ok']	= TRUE;
		}
	}
}

<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
?>
<!-- ############################## Start main ###################################### -->
<tr>
        <td width="10">&nbsp;</td>
	<td align="center" valign="top">
		<table border="0" cellpadding="2" cellspacing="0" width="99%">
			<tr>
				<th align="left" valign="top" width="49%">
					<a class="th_a" href="index.php?action=changeadminpasswd">
					<?php print _("Change password"); ?>
					</a>
				</th>
				<td align="left" valign="top" width="2%">&nbsp;</td>
				<th align="left" valign="top" width="49%">
					<a class="th_a" href="index.php?action=display">
					<?php print _("Display Preferences"); ?>
					</a>
				</th>
			</tr>

			<tr>
				<td class="row1" align="left" valign="top" width="49%">
					<?php print _("Use this to change your admin password."); ?>
				</td>
				<td align="left" valign="top" width="2%">&nbsp;</td>
				<td class="row1" align="left" valign="top" width="49%">
					<?php print _("You can change the way that Web-cyradm displays information to you."); ?>
				</td>
			</tr>

			<tr><td align="left" valign="top" height="2%">&nbsp;</td></tr>
			
			<tr>
<!--				<th align="left" valign="top" width="49%">
					<a class="th_a" href="">
					<?php print _("Administration Settings"); ?>
					</a>
				</th>
				<td align="left" valign="top" width="2%">&nbsp;</td>
				<th align="left" valign="top" width="49%">
				</th> -->
			</tr>

			<tr>
<!--				<td class="row1" align="left" valign="top" width="49%">
					<?php print _("You can set all administrative settings."); ?>
				</td>
				<td align="left" valign="top" width="2%">&nbsp;</td>
				<td class="row1" align="left" valign="top" width="49%">
				</td> -->
			</tr>
		</table>
	</td>
</tr>
<!-- ############################## End main ###################################### -->
<?php

include ("../header.inc.php");
require_once("DB.php");

$dbroot=$_POST['dbroot'];
$dbrootpassword=$_POST['dbrootpassword'];
$dbname=$_POST['dbname'];
$createdb=$_POST['createdb'];
$dbuser=$_POST['dbuser'];
$dbuserpassword=$_POST['dbuserpassword'];
$admin=$_POST['admin'];
$adminpassword=$_POST['adminpassword'];
$cyruspassword=$_POST['cyruspassword'];
$proceed=$_POST['Proceed'];

?>


<h3>Web-cyradm setup</h3>
This is the web-cyradm setup, which will guide you troght the installation and setup of the system. <br>
After finishing the setup, <b>you MUST make this file unreadable for the web-server</b>, or web-cyradm denies working for security reasons.

<h4>Database setup (MySQL only at the moment)</h4>
Please choose a user that is allowed to create databases and set privileges. Usually this is the user "root".<br>
This user is only needed for the creation of the database. In a further step you have to provide a application user such as "mail".

<form method="post" name="dbuser">
<table>
<tr>
	<td>Username</td>
	<td><input type="text" size="10" name="dbroot" value="<?php print $dbroot;?>"</input>
</tr>
<tr>
	<td>Password</td>
	<td><input type="password" size="10" name="dbrootpassword" value="<?php print $dbrootpassword;?>"</input>
<input type="submit" name="submit" value="Reload page">
</tr>

</table>

<?php

if (!empty($dbroot) && !empty($dbrootpassword)){

	?>
	<hr>
	<h4>Choose or create a database</h4>
	Here you can choose between a existing database or the creation of a new database.



	<?php

	$DB_TYPE="mysql";

	$DB_HOST="localhost";
	$DB_NAME="mysql";
	$DB_PROTOCOL="unix"; // set to "tcp" for TCP/IP
	$DSN="$DB_TYPE://$dbroot:$dbrootpassword@$DB_PROTOCOL+$DB_HOST/$DB_NAME";
	$handle = DB::connect($DSN, true);


	if (DB::isError($handle)) {
		#die (_("Database error"));
		die ("<h3><font color='red'>Database error</font></h3>");
	}

	#$query="SELECT Db from db";
	$query="SHOW DATABASES";
	$result=$handle->query($query);
	$count=$result->numRows($result);

	if (DB::isError($handle)) {
		print $handle->getMessage();
	}

	?>
	<table>
	<tr>
		<td>Choose a database</td>
		<td>
	<?php

	print "<select name=\"dbname\">
<option value=\"new\" selected>New Database</option>\n<option ";

	for ($i=0;$i<$count;$i++){
		$row=$result->fetchRow(DB_FETCHMODE_ASSOC, $i);
		if ($row['Database']==$dbname){
			print "selected ";
		}
		print "value=\"".$row['Database']."\">".$row['Database']."</option>\n";
		if ($i<$count-1){
			print "<option ";
		}
	}

	print "</select>\n";

	?>
		</td>
		<td><input type="submit" name="submit" value="Reload page">
		</td>
	</tr>

	<?php


	if (!isset($dbname)){
		$dbname="new";
	}
	if ($dbname=="new"){
		?>
		<tr>
			<td>Database name</td>
			<td><input type="text" name="createdb" value="<?php print $createdb;?>" size="20"></td>
			<td><input type="submit" name="submit" value="Reload page"></td>
	
		<?php
	}	
	print "</tr></table>";
	if (!empty($createdb) && !empty($dbname) OR $dbname!="new"){
		?>
		<hr>
		<h4>Define a database user</h4>
		Here you need to define the user which and its password that is accessing the database for web-cyradm. The default user is "mail"

		<table>
                <tr>
                        <td>Database user</td>
                        <td><input type="text" name="dbuser" value="<?php print $dbuser;?>" size="20"></td>
		</tr>
		<tr>
			<td>Password</td>
			<td><input type="password" name="dbuserpassword" value="<?php print $dbuserpassword;?>" size="20"></td>
                        <td><input type="submit" name="submit" value="Reload page"></td>
		</tr>
		</table>


		<?php

	if (!empty($dbuser) && !empty($dbuserpassword)){
	?>
                <hr>
                <h4>Define the initial Superuser</h4>
		Here you define the inital name and password for the superuser to be able to login into web-cyradm.

                <table>
                <tr>
                        <td>Superusername</td>
                        <td><input type="text" name="admin" value="<?php print $admin;?>" size="20"></td>
                </tr>
                <tr>
                        <td>Password</td>
                        <td><input type="password" name="adminpassword" value="<?php print $adminpassword;?>" size="20"></td>
                        <td><input type="submit" name="submit" value="Reload page"></td>
                </tr>
                </table>
	<?php
	}

        if (!empty($admin) && !empty($adminpassword)){
        ?>
                <hr>
                <h4>Define the password for the user "cyrus"</h4>
                Here you define the inital password for the cyrus user which is needed to create new mailboxes and access to quota functions.

                <table>
                <tr>
                        <td>cyrus password</td>
                        <td><input type="password" name="cyruspassword" value="<?php print $cyruspassword;?>" size="20"></td>
                        <td><input type="submit" name="submit" value="Reload page"></td>
                </tr>
                </table>
		</form>


                <?php

	if (!empty($cyruspassword)){
		?>
		<hr>
		<font color="red">
		<h4>Proceed with this settings?</h4>
		After confirmation, the database will be populated with the initial data.
		</font>
		<form action="populate.php" method="post">
		<input type="hidden" name="dbroot" value="<?php print $dbroot;?>">
		<input type="hidden" name="dbrootpassword" value="<?php print $dbrootpassword;?>">
		<input type="hidden" name="dbname" value="<?php print $dbname;?>">
		<input type="hidden" name="createdb" value="<?php print $createdb;?>">
		<input type="hidden" name="dbuser" value="<?php print $dbuser;?>">
		<input type="hidden" name="dbuserpassword" value="<?php print $dbuserpassword;?>">
		<input type="hidden" name="admin" value="<?php print $admin;?>">
		<input type="hidden" name="adminpassword" value="<?php print $adminpassword;?>">
		<input type="hidden" name="cyruspassword" value="<?php print $cyruspassword;?>">
		<input type="submit" name="submit" value="Proceed">
		</form>

	<?php
	}



	}
	}
}
include ("../footer.inc.php");

<?php
include ("../header.inc.php");
require_once("DB.php");

$dbroot=$_POST['dbroot'];
$dbrootpassword=$_POST['dbrootpassword'];
$dbname=$_POST['dbname'];
$createdb=$_POST['createdb'];
$dbuser=$_POST['dbuser'];
$dbuserpassword=$_POST['dbuserpassword'];
$admin=$_POST['admin'];
$adminpassword=$_POST['adminpassword'];
$cyruspassword=$_POST['cyruspassword'];
$proceed=$_POST['Proceed'];

if ($createdb){
	$query_priv1="INSERT INTO user (Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv) VALUES ('localhost', '$createdb', PASSWORD('$dbuserpassword'), 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N');";

	$query_priv2="INSERT INTO db (Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Grant_priv, References_priv, Index_priv, Alter_priv) VALUES ('localhost', '$createdb', '$createdb', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y ');";

	$query_flush="flush privileges;";
	$create_db="CREATE DATABASE $createdb";
}

$query="CREATE TABLE accountuser (
  username varchar(255) binary NOT NULL default '',
  password varchar(30) binary NOT NULL default '',
  prefix varchar(50) NOT NULL default '',
  domain_name varchar(255) NOT NULL default '',
  UNIQUE KEY username (username)
) TYPE=MyISAM;";

$query2="CREATE TABLE adminuser (
  username varchar(50) binary NOT NULL default '',
  password varchar(50) binary NOT NULL default '',
  type int(11) NOT NULL default '0',
  SID varchar(255) NOT NULL default '',
  home varchar(255) NOT NULL default '',
  PRIMARY KEY  (username)
) TYPE=MyISAM;";

$query3="CREATE TABLE settings (
  `username` varchar(50) binary NOT NULL default '',
  `style` varchar(50) NOT NULL default 'default',
  `maxdisplay` int(4) NOT NULL default '15',
  `warnlevel` int(3) NOT NULL default '90',
  PRIMARY KEY  (username)
) TYPE=MyISAM;";

$query4="CREATE TABLE alias (
  alias varchar(255) NOT NULL default '',
  dest longtext,
  username varchar(50) NOT NULL default '',
  status int(11) NOT NULL default '1',
  PRIMARY KEY  (alias)
) TYPE=MyISAM;";

$query5="CREATE TABLE domain (
  domain_name varchar(255) NOT NULL default '',
  prefix varchar(50) NOT NULL default '',
  maxaccounts int(11) NOT NULL default '20',
  quota int(10) NOT NULL default '20000',
  domainquota int(10) NOT NULL default '0',
  transport varchar(255) NOT NULL default 'cyrus',
  freenames enum('YES','NO') NOT NULL default 'NO',
  freeaddress enum('YES','NO') NOT NULL default 'NO',
  PRIMARY KEY  (domain_name),
  UNIQUE KEY prefix (prefix)
) TYPE=MyISAM;";

$query6="CREATE TABLE domainadmin (
  domain_name varchar(255) NOT NULL default '',
  adminuser varchar(255) NOT NULL default ''
) TYPE=MyISAM;";

$query7="CREATE TABLE virtual (
  alias varchar(255) NOT NULL default '',
  dest longtext,
  username varchar(50) NOT NULL default '',
  status int(11) NOT NULL default '1',
  KEY alias (alias)
) TYPE=MyISAM;";

$query8="CREATE TABLE log (
  id int(11) NOT NULL auto_increment,
  msg text NOT NULL,
  user varchar(255) NOT NULL default '',
  host varchar(255) NOT NULL default '',
  time datetime NOT NULL default '2000-00-00 00:00:00',
  pid varchar(255) NOT NULL default '',
  PRIMARY KEY  (id)
) TYPE=MyISAM;";

$query9="INSERT INTO adminuser (username, password) VALUES ('$admin', ENCRYPT('$adminpassword'));";
$query10="INSERT INTO domainadmin (domain_name,adminuser) VALUES ('*','$admin');";
$query11="INSERT INTO accountuser (username, password) VALUES ('cyrus', ENCRYPT('$cyruspassword'));";

?>
<h4>Population seems to be successful</h4>
Now create the files /etc/pam.d/imap, pop and sieve with the following content:

<table border=2 bordercolor="ffffff" width=80% >
<tr><td bgcolor="#a7a6a6">
auth sufficient pam_mysql.so user=<?php print $dbuser;?> passwd=<?php print $dbuserpassword;?> host=localhost db=<?php print $createdb;?> table=accountuser usercolumn=username passwdcolumn=password crypt=1 logtable=log logmsgcolumn=msg logusercolumn=user loghostcolumn=host logpidcolumn=pid logtimecolumn=time
<p>
auth required pam_mysql.so user=<?php print $dbuser;?> passwd=<?php print $dbuserpassword;?> 
host=localhost db=<?php print $createdb?> table=accountuser usercolumn=username   
passwdcolumn=password crypt=1 logtable=log logmsgcolumn=msg logusercolumn=user loghostcolumn=host logpidcolumn=pid logtimecolumn=time
</td>
</tr>
</table>

<p>
<b>Warning!</b> Be sure that the parameters are on ONE line when copy-pasting.


<?php

include ("../footer.inc.php");
?>
<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}

setlocale(LC_MESSAGES, $LANG);
setlocale(LC_ALL, $LANG);
putenv("LANG=" . $LANG);
putenv("LANGUAGE=" . $LANG);

// Specify location of translation tables
bindtextdomain("web-cyradm", "./locale");

// Choose domain
textdomain("web-cyradm");
?>
	<table width="100%" border="0" style="height: 80%;">
		<tr>
			<td align="center" valign="middle"> 
				<table width="450" border="0" cellpadding="1" cellspacing="1" style="height: 150px;">
					<tr>
						<td bgcolor="#000000">		  
							<table border="0" bgcolor="#FFFFFF" cellpadding="0" 
							cellspacing="0" width="450" 
							style="height: 150px;">
								<tr> 
									<td colspan="5" bgcolor="#000666"
									style="font-family: Verdana, Arial, Helvetica, sans-serif; color: #fff; font-size: large; font-weight: bold;">
										Web-cyradm
									</td>
								</tr>
								
								<tr> 
									<td colspan="5">&nbsp;</td>
								</tr>
								
								<tr> 
									<td>&nbsp;</td>

									<td colspan="4"
									style="font-family: Verdana, Arial, Helvetica, sans-serif; color: #000; font-size: large;">
										<p align="center">
											<?php print _("Your session timed out");?>
										</p>

										<p align="center">
											<?php
											print _("If you like to login click");?>
											<a class="navi" href="index.php"
											><?php print _("here");?></a>
										</p>

										<br>
											
									</td>
								</tr>
							</table>			
						</td>
					</tr>
				</table>
			</td>
		</tr>
	</table>
<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
?>
<!-- #################### vacation.php start #################### -->
<tr>
	<td width="10">&nbsp;</td>
	<td valign="top">

<?php
if ($authorized){
			if (!empty($_GET['confirmed']) && empty($_GET['cancel'])){
				include_once WC_BASE . '/lib/sieve-php.lib.php';
				include_once WC_BASE . '/lib/sieve_strs.php';
				$daemon = new sieve($CYRUS['HOST'],"2000", $CYRUS['ADMIN'], $CYRUS['PASS'], $_GET['username']);
				switch ($_GET['mode']) {
				case 'set':
					if ($daemon->sieve_login()){
						$sieve_str = new sieve_strs;
						$mess = $_GET['vacation_text'];
						$mess2 = preg_replace ("/\s*$/s",'',$mess);
						$mess3 = preg_replace ("/\r/",'',$mess2);
						if (preg_match ("/subject.*\n(.*)$/iUs", $mess3, $matches)){
							// remove 'subject:' and trailing space.
							preg_match ("/subject.*(\w.*)\s*\r?\n/iU",$matches[0],$matches2);
							// adding extra slashes because
							// sieve_sendscript() calls stripslaches()
							$subject = addslashes($matches2[1]);
							$text = addslashes($matches[1]);
						} else {
							$subject = addslashes($_GET['subject']);
							$text = addslashes($mess2);
						}
						// remove leading lines.
						if (preg_match ("/^\s*\n*(.*)$/s", $text, $matches)){
							$text = $matches[1];
						} else {
							$text = '';
						}
						$vacation_script = 'require "vacation"; vacation :days 1 :addresses ["'.$_GET['alias'].'"] :subject "'.$subject.'" "'.$text."\";\n";
						$old_script = $sieve_str->get_old_script($daemon);
						if (preg_match("/redirect \".*$/siU", $old_script, $matches)){
							$forwards_script = $matches[0];
						} else {
							$forwards_script ='';
						}
						$script = $vacation_script.$forwards_script;
						$script = iconv($charset,"UTF-8",$script);
						if ($daemon->sieve_sendscript('sieve', $script)){
							if ($daemon->sieve_setactivescript('sieve')){
								$_msg = _("Vacation notice set");
							} else {
								$_msg = _("Failed to activate vacation");
							}
						} else {
							$_msg = _("Failure in modifying vacation notice");
						}
					} else {
						$_msg = _("Failed to login");
					}
					?>
					<span style="font-weight: bold; font-size: large;">
						<?php echo $_msg;?>
					</span>
					<?php
					break;

				case 'unset':
					if ($daemon->sieve_login()){
						$sieve_str = new sieve_strs;
						$old_script = $sieve_str->get_old_script($daemon);
						if (preg_match ("/redirect \".*$/is",$old_script,$matches)){
							$forwards_script = $matches[0];
							if ($daemon->sieve_sendscript('sieve', $forwards_script)){
								$_msg = _("Vacation notice unset");
							} else {
								$_msg = _("Failure in unseting vacation notice");
							}
						} else {
							if ($daemon->sieve_deletescript('sieve')) {
								$_msg = _("Vacation notice removed");
							} else {
								$_msg = _("Failure in removing vacation notice");
							}
						}
					} else {
						$_msg = _("Failed to login");
					}
					?>
					<span style="font-weight: bold; font-size: large;">
						<?php echo $_msg;?>
					</span>
					<?php
					break;

				default:
					?>
					<span style="font-weight: bold; font-size: large;">
						<?php print _("Not possible");?>
					</span>
					<?php
					break;
				}
				include WC_BASE . "/editaccount.php";
			} elseif (!empty($_GET['confirmed']) && !empty($_GET['cancel'])){
				include WC_BASE . "/editaccount.php";
			} elseif (empty($_GET['confirmed'])) {

				include_once WC_BASE . '/lib/sieve-php.lib.php';
				include_once WC_BASE . '/lib/sieve_strs.php';
				$daemon = new sieve($CYRUS['HOST'],"2000", $CYRUS['ADMIN'], $CYRUS['PASS'], $_GET['username']);

    				$query = "SELECT * FROM domain WHERE domain_name='".$_GET['domain']."'";
				$result = $handle->query($query);
				$row = $result->fetchRow(DB_FETCHMODE_ASSOC, 0);
				$freeaddress = $row['freeaddress'];
				if ($freeaddress!="YES") {
                            	    $aliasname = spliti("@",$_GET['alias'],2);
				    $aliasname = $aliasname[0];
				    $alias_new = $aliasname."@".$_GET['domain'];
				    if ($alias_new != $_GET['alias']) {
					die ("<b>" . _("You can't set Vacation Message for this email address with 'Allow Free Mail Addressess' set to off!") . "</b>");
				    }
				}
				?>
				<h3>
					<?php print _("Vacation message for emailadress");?>
					<span style="color: red;">
						<?php echo $_GET['alias']; ?>
					</span>
				</h3>

				<form action="index.php" method="get">

					<input type="hidden" name="action" value="vacation">
					<input type="hidden" name="confirmed" value="true">
					<input type="hidden" name="domain" value="<?php print $_GET['domain']; ?>"> 
					<input type="hidden" name="alias" value="<?php print $_GET['alias']; ?>"> 
					<input type="hidden" name="username" value="<?php echo $_GET['username'];?>">
				
					<table>
						<tr>
							<td>
								<input class="menu" type="radio"
								name="mode" value="set" checked><?php
								print _("Set vacation notice");?>
							</td>
						</tr>
						<tr>
							<td>
								<input class="menu" type="radio"
								name="mode" value="unset"><?php
								print _("Remove vacation notice");?>
							</td>
						</tr>
<?php
					if ($daemon->sieve_login()){
						$sieve_str = new sieve_strs;
						$old_script = iconv('UTF-8',$charset,$sieve_str->get_old_script($daemon));
						if (preg_match("/(require \".*)(redirect \"|$)/Uis", $old_script, $matches)){
							if (preg_match("/subject \".*/is",$matches[1],$matches2)){
								$vacation_script = $matches2[0];
							} else {
								$vacation_script = "";
							}
						} else {
							$vacation_script = "";
						}
					} else {
						$vacation_script = "";
					}
					preg_match ("/(subject \".*)\" \"(.*$)/is", $vacation_script, $matches);
					if (count($matches) >= 2){
						$subject = stripslashes(preg_replace("/subject \"/", "", $matches[1]));
						$vacation_script = $matches[2];
						$vacation_script = stripslashes(preg_replace("/\";$/", "", $vacation_script));
					} else {
						$subject = '';
						$vacation_script = '';
					}
?>
						<tr>
							<td>
								<?php print _("Subject"); ?>:<br>
								<input type="text" name="subject"
								size="60" value="<?php echo htmlspecialchars($subject); ?>">
							</td>
						</tr>
						<tr>
							<td>
								<?php print _("Body"); ?>:<br>
								<textarea name="vacation_text"
								rows="6" cols="55"><?php
								print $vacation_script;?></textarea>
							</td>
						</tr>
						<tr>
							<td>
								<input class="button" type="submit"
								value="<?php print _("Submit");?>"> 

								<input class="button" name="cancel"
								type="submit" value="<?php print _("Cancel");?>">
							</td>
						</tr>
					</table>
				</form>
<?php
			}
} else {
?>
	<h3>
		<?php echo $err_msg;?>
		<a href="index.php?action=editaccount&domain=<?php echo $_GET['domain'];?>&username=<?php echo $_GET['username'];?>"><?php print _("Back");?></a>
	</h3>
<?php
} // End of if ($authorized)
?>
	</td>
</tr>

<!-- #################### vacation.php end #################### -->
<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}

################# Temporary fix for PHP 4.2.0 a better solution has to found #######################
$_get_vars = array(
	'adminuser', 'newadminuser', 'newadmintype', 'newusername',
	'type', 'newtype', 'domain', 'prefix', 'action', 'row_pos', 'username',
	'password', 'new_password', 'confirm_password', 'quota', 'maxaccounts',
	'newdomain', 'email', 'alias', 'dest', 'newalias', 'newdest', 'confirmed',
	'cancel', 'searchstring', 'transport', 'tparam', 'mode', 'forwards',
	'metoo', 'vacation_text', 'freenames', 'freeaddress', 'LANG', 'delete_catchall',
	'resp_domain', 'newdomain','orderby'
);

$_post_vars = array('action','domain');

if ($_GET){
	if ($_GET['action']!=""){
		foreach ($_get_vars as $_get_var){
			if (isset($_GET[$_get_var])){
				$$_get_var = $_GET[$_get_var];
			}
		}
	}
}

if ($_POST){
	if ($_POST['action']!=""){
		foreach ($_post_vars as $_post_var){
			if (isset($_POST[$_post_var])){
				$$_post_var = $_POST[$_post_var];
			}
		}
	}
}

// ############################### FUNCTIONS ##################################

function ValidMail($email) {
	if (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@([[:alnum:]]|xn--)([.-]?[[:alnum:]])*[.][a-wyz][[:alpha:]](f|g|l|m|t|u|v|z|ro|fo|op|pa|me|seum)?$",$email)){
		return FALSE;
	} else {
		return TRUE;
	}
}

function ValidName($username) {
	if (empty($username)) {
		return FALSE;
	} else {
		return TRUE;
	}
}

function ValidPassword($password) {
	if (empty($password)) {
		return FALSE;
	} else {
		return TRUE;
	}
}

function ValidDomain($domain) {
	if (!eregi("^([[:alnum:]]|xn--)([.-]?[[:alnum:]])*[.][a-wyz][[:alpha:]](f|g|l|m|t|u|v|z|ro|fo|op|pa|me|seum)?$",$domain)){
		return FALSE;
	} else {
		return TRUE;
	}
}

function ValidPrefix($prefix) {
	global $DOMAIN_AS_PREFIX;
	
	if ($DOMAIN_AS_PREFIX) {
		return ValidDomain($prefix);
	} else {
//		if (!eregi("^[[:alnum:]_-]+$",$prefix)){
		if (empty($prefix)) {
			return FALSE;
		} else {
			return TRUE;
		}
	}
}

function ValidAdminType($type) {
	if ($type == 0 || $type == 1) {
		return TRUE;
	} else {
		return FALSE;
	}
}

function ValidAlias($domain,$alias) {
	$atpos=strpos($alias,"@");
	$alias_domain=strpos($alias,$domain);
	if ($atpos && $alias_domain==0){
		return FALSE;
	}
	else {
		return TRUE;
	}
}
	

# Security precaution if register_globals = on
$authorized = FALSE;
# Load list of reserved Adresses into array
$reserved=explode(",",$RESERVED);
#
$setforward = $forwardto = (isset($_POST['setforward']))?($_POST['setforward']):('');

# Connecting to database
$handle =& DB::connect($DB['DSN'],true);
if (DB::isError($handle)) {
	die (_("Database error"));
}

# We check and remember list of domains for domain admin
$query = "SELECT * FROM domainadmin WHERE adminuser='".$_SESSION['user']."'";
$result = $handle->query($query);
if (DB::isError($result)) {
	die (_("Database error"));
}
$cnt = $result->numRows();

if (!$cnt){
	print _("Security violation detected, attempt logged");
	logger(sprintf("SECURITY VIOLATION %s %s %s %s %s%s", $_SERVER['REMOTE_ADDR'], $_SESSION['user'], $_SERVER['HTTP_USER_AGENT'], $_SERVER['HTTP_REFERER'], $_SERVER['REQUEST_METHOD'], "\n"),"WARN");
	include WC_BASE . "/logout.php";
	die ();
}

if ($_SESSION['admintype'] != 0){
	$allowed_domains = array();
	
	for ($i=0; $i < $cnt; $i++){
		$row=$result->fetchRow(DB_FETCHMODE_ASSOC, $i);
		$allowed_domains[] = $row['domain_name'];
	}
	$_SESSION['allowed_domains'] = $allowed_domains;
	if (!isset($domain)) $domain='';

	if (!empty($domain) AND !in_array($domain,$_SESSION['allowed_domains'])) {
		print _("Security violation detected, attempt logged");
		logger(sprintf("SECURITY VIOLATION %s %s %s %s %s%s", $_SERVER['REMOTE_ADDR'], $_SESSION['user'], $_SERVER['HTTP_USER_AGENT'], $_SERVER['HTTP_REFERER'], $_SERVER['REQUEST_METHOD'], "\n"),"WARN");
		include WC_BASE . "/logout.php";
		die ();
	}
}
//################## Validate input and verify users actions ##################
if (! empty($action)){
	switch ($action){
#OK############################# Check input if browse ################################################
	case "browse":
		if (!empty($_GET['orderby']) AND
			!in_array($_GET['orderby'], array('domain_name', 'prefix', 'maxaccounts',
							  'domainquota', 'quota'))){
			unset($_GET['orderby']);
		}
		if (!empty($_GET['row_pos'])) {
			settype($_GET['row_pos'],"int");
		       	if ($_GET['row_pos'] < 0) {
				unset($_GET['row_pos']);
			}
		}
		break;
#OK############################# Check input if accounts ##############################################
	case "accounts":
		if (!empty($_GET['domain']) && !ValidDomain($_GET['domain'])) {
			$authorized = FALSE;
			$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
		} else {
			if (!empty($_GET['row_pos'])) {
				settype($_GET['row_pos'],"int");
			       	if ($_GET['row_pos'] < 0) {
					unset($_GET['row_pos']);
				}
			}
			$authorized = TRUE;
		}
		break;
#OK########################### Check input if adminuser ###############################################
	case "adminuser":
		if ($_SESSION['admintype'] != 0) {
			$authorized = FALSE;
			$err_msg = _("Security violation detected, nothing deleted, attempt has been logged");
		} else {
			if (!empty($_GET['domain']) && !ValidDomain($_GET['domain'])) {
				unset($_GET['domain']);
			}
			if (!empty($_GET['row_pos'])) {
				settype($_GET['row_pos'],"int");
				if ($_GET['row_pos'] < 0) {
					unset($_GET['row_pos']);
				}
			}
			$authorized = TRUE;
		}
		break;
#OK########################### Check input if newadminuser ###############################################
	case "newadminuser":
		if ($_SESSION['admintype'] != 0) {
			$authorized = FALSE;
			$err_msg = _("Security violation detected, nothing deleted, attempt has been logged");
		} elseif (!isset($_POST['confirmed'])) {
			if (!empty($_GET['domain']) && !ValidDomain($_GET['domain'])) {
				$authorized = FALSE;
				$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
			} else {
				$authorized = TRUE;
			}
		} else {
			if (!empty($_POST['domain']) && !ValidDomain($_POST['domain']) || !ValidAdminType($_POST['newadmintype'])) {
				$authorized = FALSE;
				$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
			} elseif (!ValidName($_POST['newadminuser'])) {
				$authorized = FALSE;
				$err_msg = _("You must provide a username");
			} elseif (!ValidPassword($_POST['new_password']) || !ValidPassword($_POST['confirm_password'])){
				$authorized = FALSE;
				$err_msg = _("Password incorrect");
			} elseif ($_POST['new_password'] != $_POST['confirm_password']) {
				$authorized = FALSE;
				$err_msg = _("New passwords are not equal. Password not changed");
			} else {
				# Check if admin already exists
				$query = "SELECT * FROM adminuser WHERE username='".$_POST['newadminuser']."'";
				$result = $handle->query($query);
				if (DB::isError($result)) {
					die (_("Database error"));
				}
				if ($result->numRows()){
					$authorized = FALSE;
					$err_msg = _("Username already exist");
				# If domain is not set or admin will be superuser: that's all
				} elseif (empty($_POST['newdomain']) || $_POST['newadmintype'] == 0) {
					$authorized = TRUE;
				} elseif (!ValidDomain($_POST['newdomain'])) {
					$authorized = FALSE;
					$err_msg = _("Invalid domain name");
				} else {
					# Check if domain already exists
					$query="SELECT domain_name FROM domain WHERE domain_name='".$_POST['newdomain']."'";
					$result= $handle->query($query);
					if (DB::isError($result)) {
						die (_("Database error"));
					}
					if (!$result->numRows()){
						$authorized = FALSE;
						$err_msg = _("No such domain");
					} else {
						$authorized = TRUE;
					}
				}
			}
		}
		break;
#Almost OK################### Check input if editadminuser ###############################################
	case "editadminuser":
		if ($_SESSION['admintype'] != 0) {
			$authorized = FALSE;
			$err_msg = _("Security violation detected, nothing deleted, attempt has been logged");
		} elseif (!isset($_POST['confirmed'])) {
			if (!empty($_GET['domain']) && !ValidDomain($_GET['domain'])) {
				$authorized = FALSE;
				$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
			} elseif (!ValidName($_GET['username'])) {
				$authorized = FALSE;
				$err_msg = _("You must provide a username");
			} else {
				$authorized = TRUE;
			}
		} else {
			if (!empty($_POST['domain']) && !ValidDomain($_POST['domain']) || !ValidAdminType($_POST['newtype'])) {
				$authorized = FALSE;
				$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
			} elseif (!ValidName($_POST['username'])) {
				$authorized = FALSE;
				$err_msg = _("You must provide a username");
			} elseif (!empty($_POST['new_password']) && (!ValidPassword($_POST['new_password']) || !ValidPassword($_POST['confirm_password']))){
				$authorized = FALSE;
				$err_msg = _("Password incorrect");
			} elseif ($_POST['new_password'] != $_POST['confirm_password']) {
				$authorized = FALSE;
				$err_msg = _("New passwords are not equal. Password not changed");
			} else {
				$query = "SELECT type FROM adminuser WHERE username='".$_POST['username']."'";
				$result = $handle->query($query);
				if (DB::isError($result)) {
					die (_("Database error"));
				}
				$row = $result->fetchRow(DB_FETCHMODE_ASSOC, 0);
				$type = $row['type'];
				
				if ($type != $_POST['newtype']) {
					if ($_POST['newtype'] == 1) {
						# We have to take care to have at least one superuser left, or we cannot use
						# Web-cyradm again

						# Query to get the count of superusers
						$query = "SELECT type FROM adminuser WHERE type='0'";
						$result = $handle->query($query);
						if (DB::isError($result)) {
							die (_("Database error"));
						}
						$cnt = $result->numRows();

						# Check if only 1 superuser is defined, in case of requested change of a superuser
						if ($cnt==1 && $type==0){
							# No Way! We cannot change the last Superuser to domainadmin!
							$authorized = FALSE;
							$err_msg = _("At least one Superuser is needed for Web-cyradm");
						}
					}
				}
# TODO: Checks for array of domains $_POST['resp_domain']
				//if (!empty($_POST['resp_domain'])) {
				//}
				# If domain is not set: that's all
				if (empty($_POST['newdomain']) || $_POST['newtype'] == 0) {
					$authorized = TRUE;
				} elseif (!ValidDomain($_POST['newdomain'])) {
					$authorized = FALSE;
					$err_msg = _("Invalid domain name");
				} else {
					# Check if domain already exists
					$query = "SELECT domain_name FROM domain WHERE domain_name='".$_POST['newdomain']."'";
					$result = $handle->query($query);
					if (DB::isError($result)) {
						die (_("Database error"));
					}
					if (!$result->numRows()){
						$authorized = FALSE;
						$err_msg = _("No such domain");
					} else {
						$query = "SELECT * FROM domainadmin WHERE adminuser='".$_POST['username']."' AND domain_name='".$_POST['newdomain']."'";
						$result = $handle->query($query);
						if (DB::isError($result)) {
							die (_("Database error"));
						}
						if ($result->numRows()) {
							$err_msg = _("Admin already repsonsible for the domain")." ".$_POST['newdomain'];
						} else {
							$authorized = TRUE;
						}
					}
				}
			}
		}
		break;
#OK########################### Check input if deleteadminuser #############################################
	case "deleteadminuser":
		if ($_SESSION['admintype'] != 0) {
			$authorized = FALSE;
			$err_msg = _("Security violation detected, nothing deleted, attempt has been logged");
		} elseif (!isset($_GET['confirmed'])) {
			if (!empty($_GET['domain']) && !ValidDomain($_GET['domain'])) {
				$authorized = FALSE;
				$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
			} elseif (!ValidName($_GET['username'])) {
				$authorized = FALSE;
				$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
			} else {
				$authorized = TRUE;
			}
		} elseif (!empty($_GET['cancel'])) {
			$authorized = TRUE;
		} else {
			if (!empty($_GET['domain']) && !ValidDomain($_GET['domain'])) {
				$authorized = FALSE;
				$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
			} elseif (!ValidName($_GET['username'])) {
				$authorized = FALSE;
				$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
			} else {
				#Determine what type of admin should be deleted
				$query = "SELECT type FROM adminuser WHERE username='".$_GET['username']."'";
				$result = $handle->query($query);
				if (DB::isError($result)) {
					die (_("Database error"));
				}
				$row = $result->fetchRow(DB_FETCHMODE_ASSOC, 0);
				$type = $row['type'];

				# Query to get the count of superusers
				$query = "SELECT type FROM adminuser WHERE type='0'";
				$result = $handle->query($query);
				if (DB::isError($result)) {
					die (_("Database error"));
				}
				$cnt = $result->numRows();
				
				# Check if only 1 superuser is defined
				if ($cnt==1 && $type==0){
					# No Way! We cannot delete the last Superuser!
					$authorized = FALSE;
					$err_msg = _("At least one Superuser is needed for Web-cyradm");
				} else {
					$authorized = TRUE;
				}
			}
		}
		break;
#OK############################# Check input if newaccount ################################################
	case "newaccount":
		if (!isset($_POST['confirmed'])) {
			if (!ValidDomain($_GET['domain'])) {
				$authorized = FALSE;
				$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
			} else {
				$authorized = TRUE;
			}
		} else {
			if (!ValidDomain($_POST['domain'])) {
				$authorized = FALSE;
				$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
			} elseif (!empty($_POST['quota'])) {
				settype($_POST['quota'],"int");
		       		if ($_POST['quota'] < 0) {
					$authorized = FALSE;
					$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
				}
			}
			if (!ValidPassword($_POST['password']) || !ValidPassword($_POST['confirm_password'])){
				$authorized = FALSE;
				$err_msg = _("Password incorrect");
			} elseif ($_POST['password'] != $_POST['confirm_password']) {
				$authorized = FALSE;
				$err_msg = _("Passwords do not match");
			} elseif (!ValidMail($_POST['email']."@".$_POST['domain'])) {
				$authorized = FALSE;
				$err_msg = _("Invalid email adress");
			} elseif (!empty($_POST['username']) && !ValidName($_POST['username'])) {
				$authorized = FALSE;
				$err_msg = _("Invalid username");
			# Check for reserved addresses
			} elseif (in_array($_POST['email'], $reserved)) {
				$authorized = FALSE;
				$err_msg="Reserved Emailadress, request cancelled";
			} else {
				$authorized = TRUE;
				
				if ($DOMAIN_AS_PREFIX){
					$_POST['username'] = $_POST['email'];
				}
				# Check to see if there's an account with the same username
				$query = "SELECT * FROM accountuser WHERE username='".$_POST['username']."'";
				$result = $handle->query($query);
				if (DB::isError($result)) {
					die (_("Database error"));
				}
				$cnt = $result->numRows();
				if ($cnt != 0) {
					$authorized = FALSE;
					$err_msg = _("Sorry, the username already exists");
				}
				
				# Check to see if there's an email with the same name
				$query = "SELECT alias FROM virtual WHERE alias='".$_POST['email']."@".$_POST['domain']."'";
				$result = $handle->query($query);
				if (DB::isError($result)) {
					die (_("Database error"));
				}
				$cnt = $result->numRows();
				if ($cnt != 0) {
					$authorized = FALSE;
					$err_msg = _("Sorry, the emailadress already exists");
				}
				
				# We need to check if the requested quota is NOT higher than the defined maximum Quota
				# Superusers can override
				$query = "SELECT quota FROM domain WHERE domain_name='".$_POST['domain']."'";
				$result = $handle->query($query);
				$row = $result->fetchRow(DB_FETCHMODE_ASSOC, 0);
				# $quota2 is the allowed quota, $quota the requested quota for the account
				$quota2=$row['quota'];

				#When the requuested quota is higher that the default quota, we need to check if
				#admin NOT superuser AND when submitting the request
				if ($_POST['quota'] > $row['quota'] && $_SESSION['admintype'] != 0) {
					$authorized = FALSE;
					$err_msg = _("Quota exeedes the maximum allowed quota for this domain.");
				}
			}
		}
		break;
#OK########################### Check input if editaccount ###############################################
	case "editaccount":
		if (!ValidDomain($_GET['domain'])) {
			$authorized = FALSE;
			$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
		} elseif (!ValidName($_GET['username'])) {
			$authorized = FALSE;
			logger(sprintf("SECURITY VIOLATION %s %s %s %s %s%s", $_SERVER['REMOTE_ADDR'], $_SESSION['user'], $_SERVER['HTTP_USER_AGENT'], $_SERVER['HTTP_REFERER'], $_SERVER['REQUEST_METHOD'], "\n"),"WARN");
			$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
		} else {
			# it's needed to defend users from not allowed domains
			$query = "SELECT username FROM accountuser WHERE username='".$_GET['username']."' AND domain_name='".$_GET['domain']."'";
			$result = $handle->query($query);
			if (DB::isError($result)) {
				die (_("Database error"));
			}
			if (!$result->numRows()){
				$authorized = FALSE;
				logger(sprintf("SECURITY VIOLATION %s %s %s %s %s%s", $_SERVER['REMOTE_ADDR'], $_SESSION['user'], $_SERVER['HTTP_USER_AGENT'], $_SERVER['HTTP_REFERER'], $_SERVER['REQUEST_METHOD'], "\n"),"WARN");
				$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
			} else {
				$authorized = TRUE;
			}
		}
		break;
#OK########################### Check input if deleteaccount ###############################################
	case "deleteaccount":
		if (!ValidDomain($_GET['domain'])) {
			$authorized = FALSE;
			$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
		} elseif (!ValidName($_GET['username'])) {
			$authorized = FALSE;
			logger(sprintf("SECURITY VIOLATION %s %s %s %s %s%s", $_SERVER['REMOTE_ADDR'], $_SESSION['user'], $_SERVER['HTTP_USER_AGENT'], $_SERVER['HTTP_REFERER'], $_SERVER['REQUEST_METHOD'], "\n"),"WARN");
			$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
		} else {
			# it's needed to defend users from not allowed domains
			$query = "SELECT username FROM accountuser WHERE username='".$_GET['username']."' AND domain_name='".$_GET['domain']."'";
			$result = $handle->query($query);
			if (DB::isError($result)) {
				die (_("Database error"));
			}
			if (!$result->numRows()){
				$authorized = FALSE;
				logger(sprintf("SECURITY VIOLATION %s %s %s %s %s%s", $_SERVER['REMOTE_ADDR'], $_SESSION['user'], $_SERVER['HTTP_USER_AGENT'], $_SERVER['HTTP_REFERER'], $_SERVER['REQUEST_METHOD'], "\n"),"WARN");
				$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
			} else {
				$authorized = TRUE;
			}
		}
		break;
#OK############################# Check input if manageaccount ##################################################
	case "manageaccount":
		if (empty($_POST['confirmed'])) {
			if (!ValidDomain($_GET['domain']) || !ValidName($_GET['username'])) {
				$authorized = FALSE;
				$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
			} else {
				$query = "SELECT username FROM accountuser WHERE username='".$_GET['username']."' AND domain_name='".$_GET['domain']."'";
				$result = $handle->query($query);
				if (DB::isError($result)) {
					die (_("Database error"));
				}
				if (!$result->numRows()) {
					$authorized = FALSE;
					logger(sprintf("SECURITY VIOLATION %s %s %s %s %s%s", $_SERVER['REMOTE_ADDR'], $_SESSION['user'], $_SERVER['HTTP_USER_AGENT'], $_SERVER['HTTP_REFERER'], $_SERVER['REQUEST_METHOD'], "\n"),"WARN");
					$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
				} else {
					$authorized = TRUE;
				}
			}
		} elseif (!empty($_POST['cancel'])) {
			$authorized = TRUE;
		} else {
			// Global checks
			if (!ValidDomain($_POST['domain']) || !ValidName($_POST['username'])) {
				$authorized = FALSE;
				$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
			} else {
				$query = "SELECT username FROM accountuser WHERE username='".$_POST['username']."' AND domain_name='".$_POST['domain']."'";
				$result = $handle->query($query);
				if (DB::isError($result)) {
					die (_("Database error"));
				}
				if (!$result->numRows()) {
					$authorized = FALSE;
					logger(sprintf("SECURITY VIOLATION %s %s %s %s %s%s", $_SERVER['REMOTE_ADDR'], $_SESSION['user'], $_SERVER['HTTP_USER_AGENT'], $_SERVER['HTTP_REFERER'], $_SERVER['REQUEST_METHOD'], "\n"),"WARN");
					$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
				// Checks for setting password
				} else {
					# That's ok if both passwords are empty
					if (!empty($_POST['new_password']) && !empty($_POST['confirm_password'])) {
						if (!ValidPassword($_POST['new_password']) || !ValidPassword($_POST['confirm_password'])) {
							$authorized = FALSE;
							$err_msg = _("Password incorrect");
						} elseif ($_POST['new_password'] != $_POST['confirm_password']) {
							$authorized = FALSE;
							$err_msg = _("New passwords are not equal. Password not changed");
						}
					}
					// Checks for setting services
					if (!empty($_POST['imap']) && $_POST['imap'] != 1) {
						$_POST['imap'] = 1;
					}
					if (!empty($_POST['pop']) && $_POST['pop'] != 1) {
						$_POST['pop'] = 1;
					}
					if (!empty($_POST['sieve']) && $_POST['sieve'] != 1) {
						$_POST['sieve'] = 1;
					}
					if (!empty($_POST['smtpauth']) && $_POST['smtpauth'] != 1) {
						$_POST['smtpauth'] = 1;
					}
					if (!empty($_POST['smtp']) && $_POST['smtp'] != 1) {
						$_POST['smtp'] = 1;
					}	
				// Checks for setting quota
					settype($_POST['quota'],"int");
					if ($_POST['quota'] < 0) {
						$authorized = FALSE;
						$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
					} else {
						$query = "SELECT quota FROM domain WHERE domain_name='".$_POST['domain']."'";
						$result = $handle->query($query);
						if (DB::isError($result)) {
							die (_("Database error"));
						}

						$row = $result->fetchRow(DB_FETCHMODE_ASSOC, 0);
						$max_quota = $row['quota'];
					
						$query = "SELECT * FROM accountuser WHERE username='".$_POST['username']."' AND domain_name='".$_POST['domain']."'";
						$result = $handle->query($query);
						if (DB::isError($result)) {
							die (_("Database error"));
						}
					
						if ($result->numRows()) {
							if (!empty($_POST['quota']) && $_POST['quota'] > $max_quota && $_SESSION['admintype']!=0) {
								$authorized = FALSE;
								$err_msg=_("Quota exeedes the maximum allowed quota for this domain.");
							} else {
								$authorized=TRUE;
							}
						}
					}
				}
			}
			$_GET['domain'] = $_POST['domain'];
		}
		break;
#OK############################### Check input if newemail ################################################
	case "newemail":
		if (!ValidDomain($_GET['domain']) || !ValidName($_GET['username'])) {
			$authorized = FALSE;
			$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
		} else {
			$query = "SELECT username FROM accountuser WHERE username='".$_GET['username']."' AND domain_name='".$_GET['domain']."'";
			$result = $handle->query($query);
			if (DB::isError($result)) {
				die (_("Database error"));
			}
			if (!$result->numRows()){
				$authorized = FALSE;
				logger(sprintf("SECURITY VIOLATION %s %s %s %s %s%s", $_SERVER['REMOTE_ADDR'], $_SESSION['user'], $_SERVER['HTTP_USER_AGENT'], $_SERVER['HTTP_REFERER'], $_SERVER['REQUEST_METHOD'], "\n"),"WARN");
				$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
			} else {
				if (!empty($_GET['confirmed']) && empty($_GET['cancel'])) {
			                $query = "SELECT freeaddress FROM domain WHERE domain_name='".$_GET['domain']."'";
					$result = $handle->query($query);
					if (DB::isError($result)) {
						die (_("Database error"));
					}
					$row = $result->fetchRow(DB_FETCHMODE_ASSOC, 0);
					$freeaddress = $row['freeaddress'];
					if ($freeaddress != "YES") {
						$valid_alias = ValidMail($_GET['alias']."@".$_GET['domain']);
					} else {
						$valid_alias = ValidMail($_GET['alias']."@".$_GET['aliasdomain']);
					}

					if ($dest != $_GET['username'] && !ValidMail($_GET['dest'])) {
						$authorized = FALSE;
						$err_msg = _("Invalid destination");
					} elseif (!empty($_GET['alias']) && !$valid_alias) {
						$authorized = FALSE;
						$err_msg = _("Invalid email adress");
					# Check for reserved addresses
					} elseif (in_array($_GET['alias'], $reserved)) {
						$authorized = FALSE;	
						$err_msg="Reserved Emailadress, request cancelled";
					# Check to see if there's an email with the same name
					} else {
						$query = "SELECT alias FROM virtual WHERE alias='";
						if ($freeaddress != "YES") {
							$query .= $_GET['alias']."@".$_GET['domain']."'";
						} else {
							$query .= $_GET['alias']."@".$_GET['aliasdomain']."'";
						}
						$result = $handle->query($query);
						if (DB::isError($result)) {
							die (_("Database error"));
						}
						$cnt = $result->numRows();
						if ($cnt != 0) {
							$authorized = FALSE;
							$err_msg = _("Sorry, the emailadress already exists");
						} else {
							$authorized = TRUE;
						}
					}
				} else {
					$authorized=TRUE;
				}
			}
		}
		break;
#OK########################  Check if change email-adress ####################################
	case "editemail":
		if (!ValidDomain($_GET['domain']) || !ValidName($_GET['username']) || !ValidMail($_GET['alias'])) {
			$authorized = FALSE;
			$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
		} else {
			$query = "SELECT username FROM accountuser WHERE username='".$_GET['username']."' AND domain_name='".$_GET['domain']."'";
			$result = $handle->query($query);
			if (DB::isError($result)) {
				die (_("Database error"));
			}
			if (!$result->numRows()){
				$authorized = FALSE;
				logger(sprintf("SECURITY VIOLATION %s %s %s %s %s%s", $_SERVER['REMOTE_ADDR'], $_SESSION['user'], $_SERVER['HTTP_USER_AGENT'], $_SERVER['HTTP_REFERER'], $_SERVER['REQUEST_METHOD'], "\n"),"WARN");
				$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
			} else {
				if (!empty($_GET['confirmed']) && empty($_GET['cancel'])) {
			                $query = "SELECT freeaddress FROM domain WHERE domain_name='".$_GET['domain']."'";
					$result = $handle->query($query);
					if (DB::isError($result)) {
						die (_("Database error"));
					}
					$row = $result->fetchRow(DB_FETCHMODE_ASSOC, 0);
					$freeaddress = $row['freeaddress'];
					if ($freeaddress != "YES") {
						$valid_alias = ValidMail($_GET['newalias']."@".$_GET['domain']);
					} else {
						$valid_alias = ValidMail($_GET['newalias']."@".$_GET['aliasdomain']);
					}

					if ($newdest != $_GET['username'] && !ValidMail($_GET['newdest'])) {
						$authorized = FALSE;
						$err_msg = _("Invalid destination");
					} elseif (!empty($_GET['newalias']) && !$valid_alias) {
						$authorized = FALSE;
						$err_msg = _("Invalid email adress");
					# Check for reserved addresses
					} elseif (in_array($_GET['newalias'], $reserved)) {
						$authorized = FALSE;	
						$err_msg="Reserved Emailadress, request cancelled";
					} else {
					# Check to see if there's an email with the same name
						if ($freeaddress != "YES") {
							$fullalias = $_GET['newalias']."@".$_GET['domain'];
						} else {
							$fullalias = $_GET['newalias']."@".$_GET['aliasdomain'];
						}
						if ($fullalias != $_GET['alias']) {
							$query = "SELECT alias FROM virtual WHERE alias='".$fullalias."'";
							$result = $handle->query($query);
							if (DB::isError($result)) {
								die (_("Database error"));
							}
							$cnt = $result->numRows();
							if ($cnt != 0) {
								$authorized = FALSE;
								$err_msg = _("Sorry, the emailadress already exists");
							} else {
								$authorized = TRUE;
							}
						} else {
							$authorized = TRUE;
						}
					}
				} else {
					$authorized = TRUE;
				}
			}
		}
		break;
#OK########################  Check input if deleteemail ####################################
	case "deleteemail":
		if (!ValidDomain($_GET['domain']) || !ValidName($_GET['username']) || !ValidMail($_GET['alias'])) {
			$authorized = FALSE;
			$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
		} else {
			$query = "SELECT username FROM accountuser WHERE username='".$_GET['username']."' AND domain_name='".$_GET['domain']."'";
			$result = $handle->query($query);
			if (DB::isError($result)) {
				die (_("Database error"));
			}
			if (!$result->numRows()){
				$authorized = FALSE;
				logger(sprintf("SECURITY VIOLATION %s %s %s %s %s%s", $_SERVER['REMOTE_ADDR'], $_SESSION['user'], $_SERVER['HTTP_USER_AGENT'], $_SERVER['HTTP_REFERER'], $_SERVER['REQUEST_METHOD'], "\n"),"WARN");
				$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
			} else {
				$authorized = TRUE;
			}
		}
		break;
#OK#########################  Check input if vacation ####################################
	case "vacation":
		if (!ValidDomain($_GET['domain']) || !ValidName($_GET['username']) || !ValidMail($_GET['alias'])) {
			$authorized = FALSE;
			$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
		} else {
			$query = "SELECT username FROM accountuser WHERE username='".$_GET['username']."' AND domain_name='".$_GET['domain']."'";
			$result = $handle->query($query);
			if (DB::isError($result)) {
				die (_("Database error"));
			}
			if (!$result->numRows()){
				$authorized = FALSE;
				logger(sprintf("SECURITY VIOLATION %s %s %s %s %s%s", $_SERVER['REMOTE_ADDR'], $_SESSION['user'], $_SERVER['HTTP_USER_AGENT'], $_SERVER['HTTP_REFERER'], $_SERVER['REQUEST_METHOD'], "\n"),"WARN");
				$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
			} else {
				# TODO: Validation of $_GET['vacation_text']
				$authorized = TRUE;
			}
		}
		break;
#OK#########################  Check input if forwardaccount ####################################
	case "forwardaccount":
		if (!ValidDomain($_GET['domain']) || !ValidName($_GET['username'])) {
			$authorized = FALSE;
			$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
		} else {
			$query = "SELECT username FROM accountuser WHERE username='".$_GET['username']."' AND domain_name='".$_GET['domain']."'";
			$result = $handle->query($query);
			if (DB::isError($result)) {
				die (_("Database error"));
			}
			if (!$result->numRows()){
				$authorized = FALSE;
				logger(sprintf("SECURITY VIOLATION %s %s %s %s %s%s", $_SERVER['REMOTE_ADDR'], $_SESSION['user'], $_SERVER['HTTP_USER_AGENT'], $_SERVER['HTTP_REFERER'], $_SERVER['REQUEST_METHOD'], "\n"),"WARN");
				$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
			} else {
				# TODO: Validation of $_GET['forwardto']
				$authorized = TRUE;
			}
		}
		break;
#OK######################## Check input if forwardalias ####################################
	case "forwardalias":
		if (!ValidDomain($_GET['domain']) || !ValidName($_GET['username']) || !ValidMail($_GET['alias'])) {
			$authorized = FALSE;
			$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
		} else {
			$query = "SELECT username FROM accountuser WHERE username='".$_GET['username']."' AND domain_name='".$_GET['domain']."'";
			$result = $handle->query($query);
			if (DB::isError($result)) {
				die (_("Database error"));
			}
			if (!$result->numRows()){
				$authorized = FALSE;
				logger(sprintf("SECURITY VIOLATION %s %s %s %s %s%s", $_SERVER['REMOTE_ADDR'], $_SESSION['user'], $_SERVER['HTTP_USER_AGENT'], $_SERVER['HTTP_REFERER'], $_SERVER['REQUEST_METHOD'], "\n"),"WARN");
				$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
			} else {
				# TODO: Validation of $_GET['forwards']
				$authorized = TRUE;
			}
		}
		break;
#OK##################################### Check new domain name ########################################
	case "newdomain":
		if ($_SESSION['admintype'] != 0) {
			$authorized = FALSE;
			logger(sprintf("SECURITY VIOLATION %s %s %s %s %s%s", $_SERVER['REMOTE_ADDR'], $_SESSION['user'], $_SERVER['HTTP_USER_AGENT'], $_SERVER['HTTP_REFERER'], $_SERVER['REQUEST_METHOD'], "\n"),"WARN");
			$err_msg = _("Security violation detected, nothing deleted, attempt has been logged");
		} else {
			if (!empty($_GET['confirmed'])){
				settype($_GET['maxaccounts'],"int");
				settype($_GET['quota'],"int");
				settype($_GET['domainquota'],"int");
				if ($_GET['maxaccounts'] < 0) {
					$authorized = FALSE;
					$err_msg = "Value incorrect";
				} elseif ($_GET['quota'] < 0) {
					$authorized = FALSE;
					$err_msg = "Value incorrect";
				} elseif ($_GET['domainquota'] < 0) {
					$authorized = FALSE;
					$err_msg = "Value incorrect";
				} elseif (!ValidDomain($_GET['domain'])){
					$authorized = FALSE;
					$err_msg = "You must choose a valid domainname";
				} elseif (!($DOMAIN_AS_PREFIX) && (empty($_GET['prefix']) || !ValidPrefix($_GET['prefix']))) {
					$authorized = FALSE;
					$err_msg = "You must choose a valid prefix for your domain";
				} elseif (!in_array($_GET['transport'],array("cyrus","lmtp","smtp","uucp"))) {
					$authorized = FALSE;
					$err_msg = "You must choose a valid transport";
				} else {
					# TODO: Validation of $_GET['tparam']
					if ($DOMAIN_AS_PREFIX) {
						$_GET['prefix'] = $_GET['domain'];
					}
					$query = "SELECT domain_name FROM domain WHERE domain_name='".$_GET['domain']."' OR prefix='".$_GET['prefix']."'";
					$result = $handle->query($query);
					if (DB::isError($result)) {
						die (_("Database error"));
					}
					if ($result->numRows()){
						$authorized = FALSE;
						$err_msg = "Domain or prefix already exists";
					} else {
						$authorized = TRUE;
					}
				}
			} else {
				$authorized = TRUE;
			}
		}
		break;
#OK#################################### Check input if editdomain ####################################
	case "editdomain":
		if ($_SESSION['admintype'] != 0) {
			$authorized = FALSE;
			logger(sprintf("SECURITY VIOLATION %s %s %s %s %s%s", $_SERVER['REMOTE_ADDR'], $_SESSION['user'], $_SERVER['HTTP_USER_AGENT'], $_SERVER['HTTP_REFERER'], $_SERVER['REQUEST_METHOD'], "\n"),"WARN");
			$err_msg = _("Security violation detected, nothing deleted, attempt has been logged");
		} elseif (!ValidDomain($_GET['domain'])) {
			$authorized = FALSE;
			$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
		} else {
			if (!empty($_GET['confirmed'])){
				settype($_GET['maxaccounts'],"int");
				settype($_GET['quota'],"int");
				settype($_GET['domainquota'],"int");
				if ($_GET['maxaccounts'] < 0) {
					$authorized = FALSE;
					$err_msg = "Value incorrect";
				} elseif ($_GET['quota'] < 0) {
					$authorized = FALSE;
					$err_msg = "Value incorrect";
				} elseif ($_GET['domainquota'] < 0) {
					$authorized = FALSE;
					$err_msg = "Value incorrect";
				} elseif (!ValidDomain($_GET['newdomain'])){
					$authorized = FALSE;
					$err_msg = "You must choose a valid domainname";
				} elseif (!empty($_GET['newprefix']) && !ValidPrefix($_GET['newprefix'])) {
					$authorized = FALSE;
					$err_msg = "You must choose a valid prefix for your domain";
				} else {
					$query = "SELECT domain_name FROM domain WHERE domain_name='".$_GET['newdomain']."' AND domain_name!='".$_GET['domain']."' OR prefix='".$_GET['newprefix']."' AND prefix!='".$_GET['prefix']."'";
					$result = $handle->query($query);
					if (DB::isError($result)) {
						die (_("Database error"));
					}
					if ($result->numRows()){
						$authorized = FALSE;
						$err_msg = "Domain or prefix already exists";
					} else {
						$authorized = TRUE;
					}
				}
			} else {
				$authorized = TRUE;
			}
		}
		break;
#OK#################################### Check input if deletedomain ##################################
	case "deletedomain":
		if ($_SESSION['admintype'] != 0) {
			$authorized = FALSE;
			logger(sprintf("SECURITY VIOLATION %s %s %s %s %s%s", $_SERVER['REMOTE_ADDR'], $_SESSION['user'], $_SERVER['HTTP_USER_AGENT'], $_SERVER['HTTP_REFERER'], $_SERVER['REQUEST_METHOD'], "\n"),"WARN");
			$err_msg = _("Security violation detected, nothing deleted, attempt has been logged");
		} elseif (!ValidDomain($_GET['domain'])) {
			$authorized = FALSE;
			$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
		} else {
			$authorized = TRUE;
		}
		break;
#OK################################## Check input if changeadminpasswd ###############################
	case "changeadminpasswd":
		if (isset($_POST['confirmed'])){
			if (!ValidPassword($_POST['old_password']) || !ValidPassword($_POST['new_password']) || !ValidPassword($_POST['confirm_password'])) {
				$authorized = FALSE;
				$err_msg = "Password incorrect";
			} elseif ($_POST['new_password'] != $_POST['confirm_password']){
				$authorized = FALSE;
				$err_msg = _("New passwords are not equal. Password not changed");
			} else {
				$pwd=new password;
				$result=$pwd->check("adminuser",$_SESSION['user'],$_POST['old_password'],$CRYPT);
				if ($result) {
					$authorized = TRUE;
				} else {
					$authorized = FALSE;
					$err_msg = "Password incorrect";
				}
			}
		}
		break;
#OK####################################### Check input if display ##################################
	case "display":
		if (isset($_GET['confirmed'])) {
			settype($_GET['maxdisplay'],"int");
			settype($_GET['account_maxdisplay'],"int");
			settype($_GET['warnlevel'],"int");
			if ($_GET['maxdisplay'] <= 0) {
				$authorized = FALSE;
				$err_msg = "Value incorrect";
			}
			elseif ($_GET['account_maxdisplay'] <= 0) {
				$authorized = FALSE;
				$err_msg = "Value incorrect";
			}
			elseif ($_GET['warnlevel'] < 0 || $_GET['warnlevel'] > 100) {
				$authorized = FALSE;
				$err_msg = "Warn level should be beetwen 0 and 100";
			}
			elseif (!isset($_GET['style']) OR empty($_GET['style']) OR !in_array($_GET['style'], $TEMPLATE)){
				$authorized = FALSE;
				$err_msg = "Value incorrect";
			}
			else {
				$authorized = TRUE;
			}
		}
		break;
#OK######################################### Check input if catch ####################################
	case "catch":
		if (empty($_GET['domain']) || !ValidDomain($_GET['domain'])) {
			$authorized = FALSE;
			$err_msg = _("Security violation detected, nothing deleted, attempt has been logged");
		} elseif (empty($_GET['username']) || !ValidName($_GET['username'])) {
			$authorized = FALSE;
			$err_msg = _("Security violation detected, nothing deleted, attempt has been logged");
		} else {
			$authorized = TRUE;
		}
		break;
#OK################################### Check input if delete_catchall ################################
	case "delete_catchall";
		if (empty($_GET['domain']) || !ValidDomain($_GET['domain'])) {
			$authorized = FALSE;
			$err_msg = _("Security violation detected, nothing deleted, attempt has been logged");
		} elseif (empty($_GET['username']) || !ValidName($_GET['username'])) {
			$authorized = FALSE;
			$err_msg = _("Security violation detected, nothing deleted, attempt has been logged");
		} else {
			$authorized = TRUE;
		}
		break;
#OK######################################## Check input if aliases ###################################
	case "aliases":
		if (!empty($_GET['domain']) && !ValidDomain($_GET['domain'])) {
			$authorized = FALSE;
			$err_msg = _("Security violation detected, nothing deleted, attempt has been logged");
		} else {
			if (!empty($_GET['row_pos'])) {				
				settype($_GET['row_pos'],"int");
				if ($_GET['row_pos'] < 0) {
					unset($_GET['row_pos']);
				}
			}
			$authorized = TRUE;
		}
		break;
#OK######################################## Check input if newalias ##################################
	case "newalias":
		if (!empty($_GET['domain']) && !ValidDomain($_GET['domain'])) {
			$authorized = FALSE;
			$err_msg = _("Security violation detected, nothing deleted, attempt has been logged");
		} else {
			$authorized = TRUE;
		}
		break;		
#OK####################################### Check input if editalias ##################################
	case "editalias":

		if (!empty($_GET['domain']) && !ValidDomain($_GET['domain'])) {
			$authorized = FALSE;
			$err_msg = _("Security violation detected, nothing deleted, attempt has been logged");
		} 
		elseif (!empty($_GET['alias']) && (!empty($_GET['create']) && !ValidMail($_GET['alias'].'@'.$_GET['domain']) || empty($_GET['create']) && !ValidMail($_GET['alias']) && !ValidDomain(substr($_GET['alias'],1)))) {
			$authorized = FALSE;
			$err_msg = _("Security violation detected, nothing deleted, attempt has been logged");
		} 
                elseif (!ValidAlias($_GET['domain'],$_GET['alias'])){
                        $authorized = FALSE;
                        $err_msg = "Alias must be in the same domain";
                }
		elseif (!empty($_GET['adddest']) && ((empty($_GET['dest']) || !ValidMail($_GET['dest']) && !ValidName($_GET['dest'])))) {
			$authorized = FALSE;
			$err_msg = "invalid destination";
		# Check for reserved addresses
		} 
		elseif (in_array($alias, $reserved)) {
			$authorized = FALSE;
			$err_msg="Reserved Emailadress, request cancelled";
		} 
		elseif (!empty($_GET['adddest'])) {
			$query = "SELECT * FROM virtual WHERE alias='".$_GET['alias']."' AND dest='".$_GET['dest']."' AND username='".$_GET['domain']."'";
			$result = $handle->query($query);
			if (DB::isError($result)) {
				die (_("Database error"));
			}
			if ($result->numRows()){
				$authorized = FALSE;
				$err_msg = "Alias already exists";
			} 
			else {
				$authorized = TRUE;
			}
		}
		else {
			$authorized = TRUE;
		}
		break;		
#OK####################################### Check input if deletealias ##################################
	case "deletealias":
		if (!ValidDomain($_GET['domain']) || !ValidMail($_GET['alias'])) {
			$authorized = FALSE;
			$err_msg = _("Security violation detected, action cancelled. Your attempt has been logged.");
		} 
		elseif (!empty($_GET['dest']) && !ValidMail($_GET['dest']) && !ValidName($_GET['dest'])) {
			$authorized = FALSE;
			$err_msg = "invalid destination";
		}
		elseif (!ValidAlias($_GET['domain'],$_GET['alias'])){
                        $authorized = FALSE;
                        $err_msg = "Alias must be in the same domain";
                }
		else {
			$authorized = TRUE;
		}
		break;
#Almost OK#################################### Check input if search ###################################
	case "search":
		if (!empty($_GET['domain']) && !ValidDomain($_GET['domain'])) {
			$authorized = FALSE;
			$err_msg = _("Security violation detected, nothing deleted, attempt has been logged");
		} else {
			#TODO: Validation of $_GET['searchstring']
			$authorized = TRUE;
		}
		break;
######################################### If nothing matches ##########################################
	default:
		break;
	} // End of switch ($action)
} // End of if (! empty($action))
?>

<?php
if (!defined('WC_BASE')) define('WC_BASE', dirname(__FILE__));
$ref=WC_BASE."/index.php";
if ($ref!=$_SERVER['SCRIPT_FILENAME']){
	header("Location: index.php");
	exit();
}
include WC_BASE . "/browse.php";
?>