Creating branches/14.1

This commit is contained in:
Ralf Becker 2014-07-09 17:51:10 +00:00
parent a1b31addf1
commit 94f904544b
98 changed files with 28333 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,921 @@
<?php // $Id: Filesystem.php 312282 2011-06-19 13:39:05Z clockwerx $
/*
+----------------------------------------------------------------------+
| Copyright (c) 2002-2007 Christian Stocker, Hartmut Holzgraefe |
| All rights reserved |
| |
| Redistribution and use in source and binary forms, with or without |
| modification, are permitted provided that the following conditions |
| are met: |
| |
| 1. Redistributions of source code must retain the above copyright |
| notice, this list of conditions and the following disclaimer. |
| 2. Redistributions in binary form must reproduce the above copyright |
| notice, this list of conditions and the following disclaimer in |
| the documentation and/or other materials provided with the |
| distribution. |
| 3. The names of the authors may not be used to endorse or promote |
| products derived from this software without specific prior |
| written permission. |
| |
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
| FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE |
| COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, |
| INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, |
| BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
| CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
| LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN |
| ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
| POSSIBILITY OF SUCH DAMAGE. |
+----------------------------------------------------------------------+
*/
require_once "HTTP/WebDAV/Server.php";
require_once "System.php";
/**
* Filesystem access using WebDAV
*
* @access public
* @author Hartmut Holzgraefe <hartmut@php.net>
* @version @package-version@
*/
class HTTP_WebDAV_Server_Filesystem extends HTTP_WebDAV_Server
{
/**
* Root directory for WebDAV access
*
* Defaults to webserver document root (set by ServeRequest)
*
* @access private
* @var string
*/
var $base = "";
/**
* MySQL Host where property and locking information is stored
*
* @access private
* @var string
*/
var $db_host = "localhost";
/**
* MySQL database for property/locking information storage
*
* @access private
* @var string
*/
var $db_name = "webdav";
/**
* MySQL table name prefix
*
* @access private
* @var string
*/
var $db_prefix = "";
/**
* MySQL user for property/locking db access
*
* @access private
* @var string
*/
var $db_user = "root";
/**
* MySQL password for property/locking db access
*
* @access private
* @var string
*/
var $db_passwd = "";
/**
* Serve a webdav request
*
* @access public
* @param string
*/
function ServeRequest($base = false)
{
// special treatment for litmus compliance test
// reply on its identifier header
// not needed for the test itself but eases debugging
if (isset($this->_SERVER['HTTP_X_LITMUS'])) {
error_log("Litmus test ".$this->_SERVER['HTTP_X_LITMUS']);
header("X-Litmus-reply: ".$this->_SERVER['HTTP_X_LITMUS']);
}
// set root directory, defaults to webserver document root if not set
if ($base) {
$this->base = realpath($base); // TODO throw if not a directory
} else if (!$this->base) {
$this->base = $this->_SERVER['DOCUMENT_ROOT'];
}
// establish connection to property/locking db
mysql_connect($this->db_host, $this->db_user, $this->db_passwd) or die(mysql_error());
mysql_select_db($this->db_name) or die(mysql_error());
// TODO throw on connection problems
// let the base class do all the work
parent::ServeRequest();
}
/**
* No authentication is needed here
*
* @access private
* @param string HTTP Authentication type (Basic, Digest, ...)
* @param string Username
* @param string Password
* @return bool true on successful authentication
*/
function check_auth($type, $user, $pass)
{
return true;
}
/**
* PROPFIND method handler
*
* @param array general parameter passing array
* @param array return array for file properties
* @return bool true on success
*/
function PROPFIND(&$options, &$files)
{
// get absolute fs path to requested resource
$fspath = $this->base . $options["path"];
// sanity check
if (!file_exists($fspath)) {
return false;
}
// prepare property array
$files["files"] = array();
// store information for the requested path itself
$files["files"][] = $this->fileinfo($options["path"]);
// information for contained resources requested?
if (!empty($options["depth"]) && is_dir($fspath) && $this->_is_readable($fspath)) {
// make sure path ends with '/'
$options["path"] = $this->_slashify($options["path"]);
// try to open directory
$handle = opendir($fspath);
if ($handle) {
// ok, now get all its contents
while ($filename = readdir($handle)) {
if ($filename != "." && $filename != "..") {
$files["files"][] = $this->fileinfo($options["path"].$filename);
}
}
// TODO recursion needed if "Depth: infinite"
closedir($handle);
}
}
// ok, all done
return true;
}
/**
* Get properties for a single file/resource
*
* @param string resource path
* @return array resource properties
*/
function fileinfo($path)
{
// map URI path to filesystem path
$fspath = $this->base . $path;
// create result array
$info = array();
// TODO remove slash append code when base clase is able to do it itself
$info["path"] = is_dir($fspath) ? $this->_slashify($path) : $path;
$info["props"] = array();
// no special beautified displayname here ...
$info["props"][] = $this->mkprop("displayname", strtoupper($path));
// creation and modification time
$info["props"][] = $this->mkprop("creationdate", filectime($fspath));
$info["props"][] = $this->mkprop("getlastmodified", filemtime($fspath));
// Microsoft extensions: last access time and 'hidden' status
$info["props"][] = $this->mkprop("lastaccessed", fileatime($fspath));
$info["props"][] = $this->mkprop("ishidden", ('.' === substr(basename($fspath), 0, 1)));
// type and size (caller already made sure that path exists)
if (is_dir($fspath)) {
// directory (WebDAV collection)
$info["props"][] = $this->mkprop("resourcetype", "collection");
$info["props"][] = $this->mkprop("getcontenttype", "httpd/unix-directory");
} else {
// plain file (WebDAV resource)
$info["props"][] = $this->mkprop("resourcetype", "");
if ($this->_is_readable($fspath)) {
$info["props"][] = $this->mkprop("getcontenttype", $this->_mimetype($fspath));
} else {
$info["props"][] = $this->mkprop("getcontenttype", "application/x-non-readable");
}
$info["props"][] = $this->mkprop("getcontentlength", filesize($fspath));
}
// get additional properties from database
$query = "SELECT ns, name, value
FROM {$this->db_prefix}properties
WHERE path = '$path'";
$res = mysql_query($query);
while ($row = mysql_fetch_assoc($res)) {
$info["props"][] = $this->mkprop($row["ns"], $row["name"], $row["value"]);
}
mysql_free_result($res);
return $info;
}
/**
* detect if a given program is found in the search PATH
*
* helper function used by _mimetype() to detect if the
* external 'file' utility is available
*
* @param string program name
* @param string optional search path, defaults to $PATH
* @return bool true if executable program found in path
*/
function _can_execute($name, $path = false)
{
// path defaults to PATH from environment if not set
if ($path === false) {
$path = getenv("PATH");
}
// check method depends on operating system
if (!strncmp(PHP_OS, "WIN", 3)) {
// on Windows an appropriate COM or EXE file needs to exist
$exts = array(".exe", ".com");
$check_fn = "file_exists";
} else {
// anywhere else we look for an executable file of that name
$exts = array("");
$check_fn = "is_executable";
}
// now check the directories in the path for the program
foreach (explode(PATH_SEPARATOR, $path) as $dir) {
// skip invalid path entries
if (!file_exists($dir)) continue;
if (!is_dir($dir)) continue;
// and now look for the file
foreach ($exts as $ext) {
if ($check_fn("$dir/$name".$ext)) return true;
}
}
return false;
}
/**
* Check if path is readable by current user
*
* Allow extending classes to overwrite it
*
* @param string $fspath
* @return boolean
*/
function _is_readable($fspath)
{
return is_readable($fspath);
}
/**
* Check if path is writable by current user
*
* Allow extending classes to overwrite it
*
* @param string $fspath
* @return boolean
*/
function _is_writable($fspath)
{
return is_writable($fspath);
}
/**
* try to detect the mime type of a file
*
* @param string file path
* @return string guessed mime type
*/
function _mimetype($fspath)
{
if (is_dir($fspath)) {
// directories are easy
return "httpd/unix-directory";
} else if (function_exists("mime_content_type")) {
// use mime magic extension if available
$mime_type = mime_content_type($fspath);
} else if ($this->_can_execute("file")) {
// it looks like we have a 'file' command,
// lets see it it does have mime support
$fp = popen("file -i '$fspath' 2>/dev/null", "r");
$reply = fgets($fp);
pclose($fp);
// popen will not return an error if the binary was not found
// and find may not have mime support using "-i"
// so we test the format of the returned string
// the reply begins with the requested filename
if (!strncmp($reply, "$fspath: ", strlen($fspath)+2)) {
$reply = substr($reply, strlen($fspath)+2);
// followed by the mime type (maybe including options)
if (preg_match('|^[[:alnum:]_-]+/[[:alnum:]_-]+;?.*|', $reply, $matches)) {
$mime_type = $matches[0];
}
}
}
if (empty($mime_type)) {
// Fallback solution: try to guess the type by the file extension
// TODO: add more ...
// TODO: it has been suggested to delegate mimetype detection
// to apache but this has at least three issues:
// - works only with apache
// - needs file to be within the document tree
// - requires apache mod_magic
// TODO: can we use the registry for this on Windows?
// OTOH if the server is Windos the clients are likely to
// be Windows, too, and tend do ignore the Content-Type
// anyway (overriding it with information taken from
// the registry)
// TODO: have a seperate PEAR class for mimetype detection?
switch (strtolower(strrchr(basename($fspath), "."))) {
case ".html":
$mime_type = "text/html";
break;
case ".gif":
$mime_type = "image/gif";
break;
case ".jpg":
$mime_type = "image/jpeg";
break;
default:
$mime_type = "application/octet-stream";
break;
}
}
return $mime_type;
}
/**
* HEAD method handler
*
* @param array parameter passing array
* @return bool true on success
*/
function HEAD(&$options)
{
// get absolute fs path to requested resource
$fspath = $this->base . $options["path"];
// sanity check
if (!file_exists($fspath)) return false;
// detect resource type
$options['mimetype'] = $this->_mimetype($fspath);
// detect modification time
// see rfc2518, section 13.7
// some clients seem to treat this as a reverse rule
// requiering a Last-Modified header if the getlastmodified header was set
$options['mtime'] = filemtime($fspath);
// detect resource size
$options['size'] = filesize($fspath);
return true;
}
/**
* GET method handler
*
* @param array parameter passing array
* @return bool true on success
*/
function GET(&$options)
{
// get absolute fs path to requested resource
$fspath = $this->base . $options["path"];
// is this a collection?
if (is_dir($fspath)) {
return $this->GetDir($fspath, $options);
}
// the header output is the same as for HEAD
if (!$this->HEAD($options)) {
return false;
}
// no need to check result here, it is handled by the base class
$options['stream'] = fopen($fspath, "r");
return true;
}
/**
* GET method handler for directories
*
* This is a very simple mod_index lookalike.
* See RFC 2518, Section 8.4 on GET/HEAD for collections
*
* @param string directory path
* @return void function has to handle HTTP response itself
*/
function GetDir($fspath, &$options)
{
$path = $this->_slashify($options["path"]);
if ($path != $options["path"]) {
header("Location: ".$this->base_uri.$path);
exit;
}
// fixed width directory column format
$format = "%15s %-19s %-s\n";
if (!$this->_is_readable($fspath)) {
return false;
}
$handle = opendir($fspath);
if (!$handle) {
return false;
}
echo "<html><head><title>Index of ".htmlspecialchars(urldecode($options['path']))."</title></head>\n";
echo "<h1>Index of ".htmlspecialchars($options['path'])."</h1>\n";
echo "<pre>";
printf($format, "Size", "Last modified", "Filename");
echo "<hr>";
while ($filename = readdir($handle)) {
if ($filename != "." && $filename != "..") {
$fullpath = $fspath.$filename;
$name = htmlspecialchars($filename);
printf($format,
number_format(filesize($fullpath)),
strftime("%Y-%m-%d %H:%M:%S", filemtime($fullpath)),
'<a href="'.$name.'">'.urldecode($name).'</a>');
}
}
echo "</pre>";
closedir($handle);
echo "</html>\n";
exit;
}
/**
* PUT method handler
*
* @param array parameter passing array
* @return bool true on success
*/
function PUT(&$options)
{
$fspath = $this->base . $options["path"];
$dir = dirname($fspath);
if (!file_exists($dir) || !is_dir($dir)) {
return "409 Conflict"; // TODO right status code for both?
}
$options["new"] = ! file_exists($fspath);
if ($options["new"] && !$this->_is_writable($dir)) {
return "403 Forbidden";
}
if (!$options["new"] && !$this->_is_writable($fspath)) {
return "403 Forbidden";
}
if (!$options["new"] && is_dir($fspath)) {
return "403 Forbidden";
}
$fp = fopen($fspath, "w");
return $fp;
}
/**
* MKCOL method handler
*
* @param array general parameter passing array
* @return bool true on success
*/
function MKCOL($options)
{
$path = $this->base .$options["path"];
$parent = dirname($path);
$name = basename($path);
if (!file_exists($parent)) {
return "409 Conflict";
}
if (!is_dir($parent)) {
return "403 Forbidden";
}
if ( file_exists($parent."/".$name) ) {
return "405 Method not allowed";
}
if (!empty($this->_SERVER["CONTENT_LENGTH"])) { // no body parsing yet
return "415 Unsupported media type";
}
$stat = mkdir($parent."/".$name, 0777);
if (!$stat) {
return "403 Forbidden";
}
return ("201 Created");
}
/**
* DELETE method handler
*
* @param array general parameter passing array
* @return bool true on success
*/
function DELETE($options)
{
$path = $this->base . "/" .$options["path"];
if (!file_exists($path)) {
return "404 Not found";
}
if (is_dir($path)) {
$query = "DELETE FROM {$this->db_prefix}properties
WHERE path LIKE '".$this->_slashify($options["path"])."%'";
mysql_query($query);
System::rm(array("-rf", $path));
} else {
unlink($path);
}
$query = "DELETE FROM {$this->db_prefix}properties
WHERE path = '$options[path]'";
mysql_query($query);
return "204 No Content";
}
/**
* MOVE method handler
*
* @param array general parameter passing array
* @return bool true on success
*/
function MOVE($options)
{
return $this->COPY($options, true);
}
/**
* COPY method handler
*
* @param array general parameter passing array
* @return bool true on success
*/
function COPY($options, $del=false)
{
// TODO Property updates still broken (Litmus should detect this?)
if (!empty($this->_SERVER["CONTENT_LENGTH"])) { // no body parsing yet
return "415 Unsupported media type";
}
// no copying to different WebDAV Servers yet
if (isset($options["dest_url"])) {
return "502 bad gateway";
}
$source = $this->base . $options["path"];
if (!file_exists($source)) {
return "404 Not found";
}
if (is_dir($source)) { // resource is a collection
switch ($options["depth"]) {
case "infinity": // valid
break;
case "0": // valid for COPY only
if ($del) { // MOVE?
return "400 Bad request";
}
break;
case "1": // invalid for both COPY and MOVE
default:
return "400 Bad request";
}
}
$dest = $this->base . $options["dest"];
$destdir = dirname($dest);
if (!file_exists($destdir) || !is_dir($destdir)) {
return "409 Conflict";
}
$new = !file_exists($dest);
$existing_col = false;
if (!$new) {
if ($del && is_dir($dest)) {
if (!$options["overwrite"]) {
return "412 precondition failed";
}
$dest .= basename($source);
if (file_exists($dest)) {
$options["dest"] .= basename($source);
} else {
$new = true;
$existing_col = true;
}
}
}
if (!$new) {
if ($options["overwrite"]) {
$stat = $this->DELETE(array("path" => $options["dest"]));
if (($stat{0} != "2") && (substr($stat, 0, 3) != "404")) {
return $stat;
}
} else {
return "412 precondition failed";
}
}
if ($del) {
if (!rename($source, $dest)) {
return "500 Internal server error";
}
$destpath = $this->_unslashify($options["dest"]);
if (is_dir($source)) {
$query = "UPDATE {$this->db_prefix}properties
SET path = REPLACE(path, '".$options["path"]."', '".$destpath."')
WHERE path LIKE '".$this->_slashify($options["path"])."%'";
mysql_query($query);
}
$query = "UPDATE {$this->db_prefix}properties
SET path = '".$destpath."'
WHERE path = '".$options["path"]."'";
mysql_query($query);
} else {
if (is_dir($source) && $options["depth"] == "infinity") { // no find for depth="0"
$files = System::find($source);
$files = array_reverse($files);
} else {
$files = array($source);
}
if (!is_array($files) || empty($files)) {
return "500 Internal server error";
}
foreach ($files as $file) {
if (is_dir($file)) {
$file = $this->_slashify($file);
}
$destfile = str_replace($source, $dest, $file);
if (is_dir($file)) {
if (!file_exists($destfile)) {
if (!$this->_is_writable(dirname($destfile))) {
return "403 Forbidden";
}
if (!mkdir($destfile)) {
return "409 Conflict";
}
} else if (!is_dir($destfile)) {
return "409 Conflict";
}
} else {
if (!copy($file, $destfile)) {
return "409 Conflict";
}
}
}
$query = "INSERT INTO {$this->db_prefix}properties
SELECT *
FROM {$this->db_prefix}properties
WHERE path = '".$options['path']."'";
}
return ($new && !$existing_col) ? "201 Created" : "204 No Content";
}
/**
* PROPPATCH method handler
*
* @param array general parameter passing array
* @return bool true on success
*/
function PROPPATCH(&$options)
{
global $prefs, $tab;
$msg = "";
$path = $options["path"];
$dir = dirname($path)."/";
$base = basename($path);
foreach ($options["props"] as $key => $prop) {
if ($prop["ns"] == "DAV:") {
$options["props"][$key]['status'] = "403 Forbidden";
} else {
if (isset($prop["val"])) {
$query = "REPLACE INTO {$this->db_prefix}properties
SET path = '$options[path]'
, name = '$prop[name]'
, ns= '$prop[ns]'
, value = '$prop[val]'";
} else {
$query = "DELETE FROM {$this->db_prefix}properties
WHERE path = '$options[path]'
AND name = '$prop[name]'
AND ns = '$prop[ns]'";
}
mysql_query($query);
}
}
return "";
}
/**
* LOCK method handler
*
* @param array general parameter passing array
* @return bool true on success
*/
function LOCK(&$options)
{
// get absolute fs path to requested resource
$fspath = $this->base . $options["path"];
// TODO recursive locks on directories not supported yet
// makes litmus test "32. lock_collection" fail
if (is_dir($fspath) && !empty($options["depth"])) {
return "409 Conflict";
}
$options["timeout"] = time()+300; // 5min. hardcoded
if (isset($options["update"])) { // Lock Update
$where = "WHERE path = '$options[path]' AND token = '$options[update]'";
$query = "SELECT owner, exclusivelock FROM {$this->db_prefix}locks $where";
$res = mysql_query($query);
$row = mysql_fetch_assoc($res);
mysql_free_result($res);
if (is_array($row)) {
$query = "UPDATE {$this->db_prefix}locks
SET expires = '$options[timeout]'
, modified = ".time()."
$where";
mysql_query($query);
$options['owner'] = $row['owner'];
$options['scope'] = $row["exclusivelock"] ? "exclusive" : "shared";
$options['type'] = $row["exclusivelock"] ? "write" : "read";
return true;
} else {
return false;
}
}
$query = "INSERT INTO {$this->db_prefix}locks
SET token = '$options[locktoken]'
, path = '$options[path]'
, created = ".time()."
, modified = ".time()."
, owner = '$options[owner]'
, expires = '$options[timeout]'
, exclusivelock = " .($options['scope'] === "exclusive" ? "1" : "0")
;
mysql_query($query);
return mysql_affected_rows() ? "200 OK" : "409 Conflict";
}
/**
* UNLOCK method handler
*
* @param array general parameter passing array
* @return bool true on success
*/
function UNLOCK(&$options)
{
$query = "DELETE FROM {$this->db_prefix}locks
WHERE path = '$options[path]'
AND token = '$options[token]'";
mysql_query($query);
return mysql_affected_rows() ? "204 No Content" : "409 Conflict";
}
/**
* checkLock() helper
*
* @param string resource path to check for locks
* @return bool true on success
*/
function checkLock($path)
{
$result = false;
$query = "SELECT owner, token, created, modified, expires, exclusivelock
FROM {$this->db_prefix}locks
WHERE path = '$path'
";
$res = mysql_query($query);
if ($res) {
$row = mysql_fetch_array($res);
mysql_free_result($res);
if ($row) {
$result = array( "type" => "write",
"scope" => $row["exclusivelock"] ? "exclusive" : "shared",
"depth" => 0,
"owner" => $row['owner'],
"token" => $row['token'],
"created" => $row['created'],
"modified" => $row['modified'],
"expires" => $row['expires']
);
}
}
return $result;
}
/**
* create database tables for property and lock storage
*
* @param void
* @return bool true on success
*/
function create_database()
{
// TODO
return false;
}
}
/*
* Local variables:
* tab-width: 4
* c-basic-offset: 4
* indent-tabs-mode:nil
* End:
*/

View File

@ -0,0 +1,251 @@
<?php // $Id: _parse_lockinfo.php 246152 2007-11-14 10:49:27Z hholzgra $
/*
+----------------------------------------------------------------------+
| Copyright (c) 2002-2007 Christian Stocker, Hartmut Holzgraefe |
| All rights reserved |
| |
| Redistribution and use in source and binary forms, with or without |
| modification, are permitted provided that the following conditions |
| are met: |
| |
| 1. Redistributions of source code must retain the above copyright |
| notice, this list of conditions and the following disclaimer. |
| 2. Redistributions in binary form must reproduce the above copyright |
| notice, this list of conditions and the following disclaimer in |
| the documentation and/or other materials provided with the |
| distribution. |
| 3. The names of the authors may not be used to endorse or promote |
| products derived from this software without specific prior |
| written permission. |
| |
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
| FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE |
| COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, |
| INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, |
| BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
| CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
| LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN |
| ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
| POSSIBILITY OF SUCH DAMAGE. |
+----------------------------------------------------------------------+
*/
/**
* helper class for parsing LOCK request bodies
*
* @package HTTP_WebDAV_Server
* @author Hartmut Holzgraefe <hholzgra@php.net>
* @version @package-version@
*/
class _parse_lockinfo
{
/**
* success state flag
*
* @var bool
* @access public
*/
var $success = false;
/**
* lock type, currently only "write"
*
* @var string
* @access public
*/
var $locktype = "";
/**
* lock scope, "shared" or "exclusive"
*
* @var string
* @access public
*/
var $lockscope = "";
/**
* lock owner information
*
* @var string
* @access public
*/
var $owner = "";
/**
* flag that is set during lock owner read
*
* @var bool
* @access private
*/
var $collect_owner = false;
/**
* constructor
*
* @param string path of stream to read
* @access public
*/
function _parse_lockinfo($path)
{
// we assume success unless problems occur
$this->success = true;
// remember if any input was parsed
$had_input = false;
// open stream
$f_in = fopen($path, "r");
if (!$f_in) {
$this->success = false;
return;
}
// create namespace aware parser
$xml_parser = xml_parser_create_ns("UTF-8", " ");
// set tag and data handlers
xml_set_element_handler($xml_parser,
array(&$this, "_startElement"),
array(&$this, "_endElement"));
xml_set_character_data_handler($xml_parser,
array(&$this, "_data"));
// we want a case sensitive parser
xml_parser_set_option($xml_parser,
XML_OPTION_CASE_FOLDING, false);
// parse input
while ($this->success && !feof($f_in)) {
$line = fgets($f_in);
if (is_string($line)) {
$had_input = true;
$this->success &= xml_parse($xml_parser, $line, false);
}
}
// finish parsing
if ($had_input) {
$this->success &= xml_parse($xml_parser, "", true);
}
// check if required tags where found
$this->success &= !empty($this->locktype);
$this->success &= !empty($this->lockscope);
// free parser resource
xml_parser_free($xml_parser);
// close input stream
fclose($f_in);
}
/**
* tag start handler
*
* @param resource parser
* @param string tag name
* @param array tag attributes
* @return void
* @access private
*/
function _startElement($parser, $name, $attrs)
{
// namespace handling
if (strstr($name, " ")) {
list($ns, $tag) = explode(" ", $name);
} else {
$ns = "";
$tag = $name;
}
if ($this->collect_owner) {
// everything within the <owner> tag needs to be collected
$ns_short = "";
$ns_attr = "";
if ($ns) {
if ($ns == "DAV:") {
$ns_short = "D:";
} else {
$ns_attr = " xmlns='$ns'";
}
}
$this->owner .= "<$ns_short$tag$ns_attr>";
} else if ($ns == "DAV:") {
// parse only the essential tags
switch ($tag) {
case "write":
$this->locktype = $tag;
break;
case "exclusive":
case "shared":
$this->lockscope = $tag;
break;
case "owner":
$this->collect_owner = true;
break;
}
}
}
/**
* data handler
*
* @param resource parser
* @param string data
* @return void
* @access private
*/
function _data($parser, $data)
{
// only the <owner> tag has data content
if ($this->collect_owner) {
$this->owner .= $data;
}
}
/**
* tag end handler
*
* @param resource parser
* @param string tag name
* @return void
* @access private
*/
function _endElement($parser, $name)
{
// namespace handling
if (strstr($name, " ")) {
list($ns, $tag) = explode(" ", $name);
} else {
$ns = "";
$tag = $name;
}
// <owner> finished?
if (($ns == "DAV:") && ($tag == "owner")) {
$this->collect_owner = false;
}
// within <owner> we have to collect everything
if ($this->collect_owner) {
$ns_short = "";
$ns_attr = "";
if ($ns) {
if ($ns == "DAV:") {
$ns_short = "D:";
} else {
$ns_attr = " xmlns='$ns'";
}
}
$this->owner .= "</$ns_short$tag$ns_attr>";
}
}
}
?>

View File

@ -0,0 +1,285 @@
<?php // $Id: _parse_propfind.php 246152 2007-11-14 10:49:27Z hholzgra $
/*
+----------------------------------------------------------------------+
| Copyright (c) 2002-2007 Christian Stocker, Hartmut Holzgraefe |
| All rights reserved |
| |
| Redistribution and use in source and binary forms, with or without |
| modification, are permitted provided that the following conditions |
| are met: |
| |
| 1. Redistributions of source code must retain the above copyright |
| notice, this list of conditions and the following disclaimer. |
| 2. Redistributions in binary form must reproduce the above copyright |
| notice, this list of conditions and the following disclaimer in |
| the documentation and/or other materials provided with the |
| distribution. |
| 3. The names of the authors may not be used to endorse or promote |
| products derived from this software without specific prior |
| written permission. |
| |
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
| FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE |
| COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, |
| INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, |
| BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
| CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
| LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN |
| ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
| POSSIBILITY OF SUCH DAMAGE. |
+----------------------------------------------------------------------+
*/
/**
* helper class for parsing PROPFIND request bodies
*
* @package HTTP_WebDAV_Server
* @author Hartmut Holzgraefe <hholzgra@php.net>
* @version @package-version@
*/
class _parse_propfind
{
/**
* success state flag
*
* @var bool
* @access public
*/
var $success = false;
/**
* found properties are collected here
*
* @var array
* @access public
*/
var $props = false;
/**
* found (CalDAV) filters are collected here
*
* @var array
* @access public
*/
var $filters = false;
/**
* found other tags, eg. CalDAV calendar-multiget href's
*
* @var array
* @access public
*/
var $other = false;
/**
* what we are currently parsing: props or filters
*
* @var array
* @access private
*/
var $use = 'props';
/**
* Root tag, usually 'propfind' for PROPFIND, but can be eg. 'calendar-query' or 'calendar-multiget' for CalDAV REPORT
*
* @var array with keys 'name' and 'ns'
*/
var $root;
/**
* internal tag nesting depth counter
*
* @var int
* @access private
*/
var $depth = 0;
/**
* On return whole request, if $store_request == true was specified in constructor
*
* @var string
*/
var $request;
/**
* constructor
*
* @access public
* @param string $path
* @param boolean $store_request=false if true whole request data will be made available in $this->request
*/
function _parse_propfind($path, $store_request=false)
{
// success state flag
$this->success = true;
// property storage array
$this->props = array();
// internal tag depth counter
$this->depth = 0;
// remember if any input was parsed
$had_input = false;
// open input stream
$f_in = fopen($path, "r");
if (!$f_in) {
$this->success = false;
return;
}
// create XML parser
$xml_parser = xml_parser_create_ns("UTF-8", " ");
// set tag and data handlers
xml_set_element_handler($xml_parser,
array(&$this, "_startElement"),
array(&$this, "_endElement"));
xml_set_character_data_handler($xml_parser,
array(&$this,'_charData')
);
// we want a case sensitive parser
xml_parser_set_option($xml_parser,
XML_OPTION_CASE_FOLDING, false);
// parse input
while ($this->success && !feof($f_in)) {
$line = fgets($f_in);
if ($store_request) $this->request .= $line;
if (is_string($line)) {
$had_input = true;
$this->success &= xml_parse($xml_parser, $line, false);
}
}
// finish parsing
if ($had_input) {
$this->success &= xml_parse($xml_parser, "", true);
}
// free parser
xml_parser_free($xml_parser);
// close input stream
fclose($f_in);
// if no input was parsed it was a request
if(!count($this->props)) $this->props = "all"; // default
}
/**
* start tag handler
*
* @access private
* @param resource parser
* @param string tag name
* @param array tag attributes
*/
function _startElement($parser, $name, $attrs)
{
// name space handling
if (strstr($name, " ")) {
list($ns, $tag) = explode(" ", $name);
if ($ns == "")
$this->success = false;
} else {
$ns = "";
$tag = $name;
}
// record root tag
if ($this->depth == 0) {
$this->root = array('name' => $tag, 'xmlns' => $ns, 'attrs' => $attrs);
}
// special tags at level 1: <allprop> and <propname>
if ($this->depth == 1) {
$this->use = 'props';
switch ($tag)
{
case "allprop":
$this->props = "all";
break;
case "propname":
$this->props = "names";
break;
case 'prop':
break;
case 'filter':
$this->use = 'filters';
$this->filters['attrs'] = $attrs; // need attrs eg. <filters test="(anyof|alloff)">
break;
default:
$this->use = 'other';
break;
}
}
//echo "$this->depth: use=$this->use $ns:$tag attrs=".array2string($attrs)."\n";
// requested properties are found at level 2
// CalDAV filters can be at deeper levels too and we need the attrs, same for other tags (eg. multiget href's)
if ($this->depth == 2 || $this->use == 'filters' && $this->depth >= 2 || $this->use == 'other' ||
$this->use == 'props' && $this->depth >= 2) {
$prop = array("name" => $tag);
if ($ns)
$prop["xmlns"] = $ns;
if ($this->use != 'props' || $this->depth > 2) {
$prop['attrs'] = $attrs;
$prop['depth'] = $this->depth;
}
// collect sub-elements of props in the original props children attribute
// eg. required for CalDAV <calendar-data><expand start="..." end="..."/></calendar-data>
if ($this->use == 'props' && $this->depth > 2)
{
$this->last_prop['children'][$tag] = $prop;
}
else
{
// this can happen if we have allprop and prop in one propfind:
// <allprop /><prop><blah /></prop>, eg. blah is not automatic returned by allprop
if (!is_array($this->{$this->use}) && $this->{$this->use}) $this->{$this->use} = array($this->{$this->use});
$this->{$this->use}[] =& $prop;
$this->last_prop =& $prop;
unset($prop);
}
}
// increment depth count
$this->depth++;
}
/**
* end tag handler
*
* @access private
* @param resource parser
* @param string tag name
*/
function _endElement($parser, $name)
{
// here we only need to decrement the depth count
$this->depth--;
}
/**
* char data handler for non prop tags, eg. href's in CalDAV multiget, or filter contents
*
* @access private
* @param resource parser
* @param string character data
*/
function _charData($parser, $data)
{
if ($this->use != 'props' && ($n = count($this->{$this->use})) && ($data = trim($data))) {
$this->{$this->use}[$n-1]['data'] = $data;
}
}
}

View File

@ -0,0 +1,246 @@
<?php // $Id: _parse_proppatch.php 246152 2007-11-14 10:49:27Z hholzgra $
/*
+----------------------------------------------------------------------+
| Copyright (c) 2002-2007 Christian Stocker, Hartmut Holzgraefe |
| All rights reserved |
| |
| Redistribution and use in source and binary forms, with or without |
| modification, are permitted provided that the following conditions |
| are met: |
| |
| 1. Redistributions of source code must retain the above copyright |
| notice, this list of conditions and the following disclaimer. |
| 2. Redistributions in binary form must reproduce the above copyright |
| notice, this list of conditions and the following disclaimer in |
| the documentation and/or other materials provided with the |
| distribution. |
| 3. The names of the authors may not be used to endorse or promote |
| products derived from this software without specific prior |
| written permission. |
| |
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
| FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE |
| COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, |
| INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, |
| BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
| CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
| LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN |
| ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
| POSSIBILITY OF SUCH DAMAGE. |
+----------------------------------------------------------------------+
*/
/**
* helper class for parsing PROPPATCH request bodies
*
* @package HTTP_WebDAV_Server
* @author Hartmut Holzgraefe <hholzgra@php.net>
* @version @package-version@
*/
class _parse_proppatch
{
/**
*
*
* @var
* @access
*/
var $success;
/**
*
*
* @var
* @access
*/
var $props;
/**
*
*
* @var
* @access
*/
var $depth;
/**
*
*
* @var
* @access
*/
var $mode;
/**
*
*
* @var
* @access
*/
var $current;
/**
* On return whole request, if $store_request == true was specified in constructor
*
* @var string
*/
var $request;
/**
* constructor
*
* @param string path of input stream
* @param boolean $store_request=false if true whole request data will be made available in $this->request
* @access public
*/
function _parse_proppatch($path, $store_request=false)
{
$this->success = true;
$this->depth = 0;
$this->props = array();
$had_input = false;
$f_in = fopen($path, "r");
if (!$f_in) {
$this->success = false;
return;
}
$xml_parser = xml_parser_create_ns("UTF-8", " ");
xml_set_element_handler($xml_parser,
array(&$this, "_startElement"),
array(&$this, "_endElement"));
xml_set_character_data_handler($xml_parser,
array(&$this, "_data"));
xml_parser_set_option($xml_parser,
XML_OPTION_CASE_FOLDING, false);
while($this->success && !feof($f_in)) {
$line = fgets($f_in);
if ($store_request) $this->request .= $line;
if (is_string($line)) {
$had_input = true;
$this->success &= xml_parse($xml_parser, $line, false);
}
}
if($had_input) {
$this->success &= xml_parse($xml_parser, "", true);
}
xml_parser_free($xml_parser);
fclose($f_in);
}
/**
* tag start handler
*
* @param resource parser
* @param string tag name
* @param array tag attributes
* @return void
* @access private
*/
function _startElement($parser, $name, $attrs)
{
if (strstr($name, " ")) {
list($ns, $tag) = explode(" ", $name);
if ($ns == "")
$this->success = false;
} else {
$ns = "";
$tag = $name;
}
if ($this->depth == 1) {
$this->mode = $tag;
}
if ($this->depth == 3) {
$prop = array("name" => $tag);
$this->current = array("name" => $tag, "ns" => $ns, "status"=> 200);
if ($this->mode == "set") {
$this->current["val"] = ""; // default set val
}
}
if ($this->depth >= 4) {
$this->current["val"] .= "<$tag";
if (isset($attr)) {
foreach ($attr as $key => $val) {
$this->current["val"] .= ' '.$key.'="'.str_replace('"','&quot;', $val).'"';
}
}
$this->current["val"] .= ">";
}
$this->depth++;
}
/**
* tag end handler
*
* @param resource parser
* @param string tag name
* @return void
* @access private
*/
function _endElement($parser, $name)
{
if (strstr($name, " ")) {
list($ns, $tag) = explode(" ", $name);
if ($ns == "")
$this->success = false;
} else {
$ns = "";
$tag = $name;
}
$this->depth--;
if ($this->depth >= 4) {
$this->current["val"] .= "</$tag>";
}
if ($this->depth == 3) {
if (isset($this->current)) {
$this->props[] = $this->current;
unset($this->current);
}
}
}
/**
* input data handler
*
* @param resource parser
* @param string data
* @return void
* @access private
*/
function _data($parser, $data)
{
if (isset($this->current)) {
$this->current["val"] .= $data;
}
}
}
/*
* Local variables:
* tab-width: 4
* c-basic-offset: 4
* indent-tabs-mode:nil
* End:
*/

View File

@ -0,0 +1,44 @@
<?php
/**
* EGroupware - modified PEAR modules
*
* @link http://www.egroupware.org
* @package egw-pear
* @subpackage setup
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
$setup_info['egw-pear']['name'] = 'egw-pear';
$setup_info['egw-pear']['title'] = 'egw-pear';
$setup_info['egw-pear']['version'] = '14.1';
$setup_info['egw-pear']['app_order'] = 99;
$setup_info['egw-pear']['enable'] = 0; // no need to show anywhere in EGroupware
$setup_info['egw-pear']['author'] = array(
'name' => 'PEAR - PHP Extension and Application Repository',
'url' => 'http://pear.php.net',
);
$setup_info['egw-pear']['license'] = 'PHP';
$setup_info['egw-pear']['description'] =
'A place for PEAR modules modified for eGroupWare.';
$setup_info['egw-pear']['note'] =
'This application is a place for PEAR modules used by eGroupWare, which are NOT YET available from pear,
because we patched them somehow and the PEAR modules are not released upstream.
This application is under the LGPL license because the GPL is not compatible with the PHP license.
If the modules are available from PEAR they do NOT belong here anymore.';
$setup_info['egw-pear']['maintainer'] = array(
'name' => 'eGroupWare coreteam',
'email' => 'egroupware-developers@lists.sourceforge.net',
);
// installation checks for egw-pear
$setup_info['egw-pear']['check_install'] = array(
// we need pear itself to be installed
'' => array(
'func' => 'pear_check',
'from' => 'FMail',
),
);

View File

@ -0,0 +1,71 @@
#
# dbmail-ldap v3 directory schema
#
# Based on the Qmail schema
# Modified for dbmail by Paul Stevens <paul@nfg.nl>
# Modified for dbmail by Lars Kneschke <lkneschke@metaways.de> too
#
# This schema depends on:
# - core.schema
# - cosine.schema
# - nis.schema
#
# This schema conflicts with
# - qmailuser.schema
# Attribute Type Definitions
attributetype ( 1.3.6.1.4.1.12340.6.2.1.1 NAME 'mailQuota'
DESC 'The amount of space the user can use until all further messages get bounced.'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.44
SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.12340.6.2.1.2 NAME 'mailForwardingAddress'
DESC 'Address(es) to forward all incoming messages to.'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
attributetype ( 1.3.6.1.4.1.12340.6.2.1.3 NAME 'mailHost'
DESC 'Name or address of the MTA host to use for recipient'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
attributetype ( 1.3.6.1.4.1.12340.6.2.1.4 NAME 'dbmailUID'
DESC 'UID of the user on the mailsystem'
EQUALITY caseIgnoreIA5Match
SUBSTR caseIgnoreIA5SubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.12340.6.2.1.5 NAME 'dbmailGID'
DESC 'GID of the user on the mailsystem'
EQUALITY caseIgnoreIA5Match
SUBSTR caseIgnoreIA5SubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.12340.6.2.1.6 NAME 'mailAlternateAddress'
DESC 'Secondary (alias) mailaddresses for the same user'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
attributetype ( 1.3.6.1.4.1.12340.6.2.1.7 NAME 'deliveryMode'
DESC 'multi field entries of: normal, forwardonly'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.44 SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.12340.6.2.1.8 NAME 'accountStatus'
DESC 'The status of a user account: active, disabled'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.44 SINGLE-VALUE )
# Object Class Definitions
objectclass ( 1.3.6.1.4.1.12340.6.2.2.1 NAME 'dbmailUser'
DESC 'DBMail-LDAP User' SUP top AUXILIARY
MUST ( uid $ mail )
MAY ( userPassword $ uidNumber $ gidNumber $ mailQuota $ mailForwardingAddress $ mailHost $ mailAlternateAddress $ dbmailUID $ dbmailGID $ deliveryMode $ accountStatus ) )
objectclass ( 1.3.6.1.4.1.12340.6.2.2.2 NAME 'dbmailForwardingAddress'
DESC 'DBMail-LDAP Forwarding Address' SUP top AUXILIARY
MUST ( mail $ mailForwardingAddress ) )

View File

@ -0,0 +1,330 @@
#!/usr/bin/php -Cq
<?php
/**
* EGroupware -checkpasswd for Dovecot and Active Directory
*
* Quota is stored with "quota:" prefix in multivalued proxyAddresses attribute.
* Group-memberships are passed to Dovecot to use them in ACL.
*
* Reads descriptor 3 through end of file and then closes descriptor 3.
* There must be at most 512 bytes of data before end of file.
*
* The information supplied on descriptor 3 is a login name terminated by \0, a password terminated by \0,
* a timestamp terminated by \0, and possibly more data.
* There are no other restrictions on the form of the login name, password, and timestamp.
*
* If the password is unacceptable, checkpassword exits 1. If checkpassword is misused, it may instead exit 2.
* If user is not found, checkpassword exits 3.
* If there is a temporary problem checking the password, checkpassword exits 111.
*
* If the password is acceptable, checkpassword runs prog. prog consists of one or more arguments.
*
* Following enviroment variables are used by Dovecot:
* - SERVICE: contains eg. imap, pop3 or smtp
* - TCPLOCALIP and TCPREMOTEIP: Client socket's IP addresses if available
* Following is document, but does NOT work:
* - MASTER_USER: If master login is attempted. This means that the password contains the master user's password and the normal username contains the user who master wants to log in as.
* Found working:
* - AUTH_LOGIN_USER: If master login is attempted. This means that username/password are from master, AUTH_LOGIN_USER is user master wants to log in as.
*
* Following enviroment variables are used on return:
* - USER: modified user name
* - HOME: mail_home
* - EXTRA: userdb extra fields eg. "system_groups_user=... userdb_quota_rule=*:storage=10000"
*
* @author rb(at)stylite.de
* @copyright (c) 2012-13 by rb(at)stylite.de
* @package emailadmin
* @link http://wiki2.dovecot.org/AuthDatabase/CheckPassword
* @link http://cr.yp.to/checkpwd/interface.html
* @version $Id$
*/
// protect from being called via HTTP
if (php_sapi_name() !== 'cli') die('This is a command line only script!');
// uncomment to write to log-file, otherwise errors go to stderr
//$log = '/var/log/dovecot_checkpassword.log';
//$log_verbose = true; // error's are always logged, set to true to log auth failures and success too
// ldap server settings
$ldap_uri = 'ldaps://10.7.102.13/';
$ldap_base = 'CN=Users,DC=gruene,DC=intern';
$bind_dn = "CN=Administrator,$ldap_base";
//$bind_dn = "Administrator@gruene.intern";
//$bind_pw = 'secret';
$version = 3;
$use_tls = false;
$search_base = $ldap_base;//'o=%d,dc=egroupware';
$passdb_filter = $userdb_filter = '(&(objectCategory=person)(sAMAccountName=%s))';
// %d for domain and %s for username given by Dovecot is set automatic
$user_attrs = array(
'%u' => 'samaccountname', // do NOT remove!
// '%n' => 'uidnumber',
// '%h' => 'mailmessagestore',
'%q' => '{quota:}proxyaddresses',
'%x' => 'dn',
);
$user_name = '%u'; // '%u@%d';
$user_home = '/var/dovecot/imap/gruene/%u'; //'/var/dovecot/imap/%d/%u'; // mailbox location
$extra = array(
'userdb_quota_rule' => '*:bytes=%q',
/* only for director
'proxy' => 'Y',
'nologin' => 'Y',
'nopassword' => 'Y',
*/
);
// get host by not set l attribute
/* only for director
$host_filter = 'o=%d';
$host_base = 'dc=egroupware';
$host_attr = 'l';
$host_default = '10.40.8.200';
*/
// to return Dovecot extra system_groups_user
$group_base = $ldap_base;
$group_filter = '(&(objectCategory=group)(member=%x))';
$group_attr = 'cn';
$group_append = ''; //'@%d';
$master_dn = $bind_dn; //"cn=admin,dc=egroupware";
//$domain_master_dn = "cn=admin,o=%d,dc=egroupware";
ini_set('display_errors',false);
error_reporting(E_ALL & ~E_NOTICE);
if ($log) ini_set('error_log',$log);
if ($_SERVER['argc'] < 2)
{
fwrite(STDERR,"\nUsage: {$_SERVER['argv'][0]} prog-to-exec\n\n");
fwrite(STDERR,"To test run:\n");
fwrite(STDERR,"echo -en 'username\\0000''password\\0000' | {$_SERVER['argv'][0]} env 3<&0 ; echo $?\n");
fwrite(STDERR,"echo -en 'username\\0000' | AUTHORIZED=1 {$_SERVER['argv'][0]} env 3<&0 ; echo $?\n");
fwrite(STDERR,"echo -en '(dovecode-admin@domain|dovecot|cyrus)\\0000''master-password\\0000' | AUTH_LOGIN_USER=username {$_SERVER['argv'][0]} env 3<&0 ; echo $?\n\n");
exit(2);
}
list($username,$password) = explode("\0",file_get_contents('php://fd/3'));
if (isset($_SERVER['AUTH_LOGIN_USER']))
{
$master = $username;
$username = $_SERVER['AUTH_LOGIN_USER'];
}
//error_log("dovecot_checkpassword '{$_SERVER['argv'][1]}': username='$username', password='$password', master='$master'");
$ds = ldap_connect($ldap_uri);
if ($version) ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, $version);
if ($use_tls) ldap_start_tls($ds);
if (!@ldap_bind($ds, $bind_dn, $bind_pw))
{
error_log("Can't connect to LDAP server $ldap_uri!");
exit(111); // 111 = temporary problem
}
list(,$domain) = explode('@',$username);
if (preg_match('/^(.*)\.imapc$/',$domain,$matches))
{
$domain = $matches[1];
$username = explode('.', $username);
array_pop($username);
$username = implode('.',$username);
$user_home = '/var/tmp/imapc-%d/%s';
$extra = array(
'userdb_mail' => 'imapc:/var/tmp/imapc-'.$domain.'/'.$username,
//'userdb_imapc_password' => $password,
//'userdb_imapc_host' => 'hugo.de',
);
}
$replace = array(
'%d' => $domain,
'%s' => $username,
);
$base = strtr($search_base, $replace);
if (($passdb_query = !isset($_SERVER['AUTHORIZED']) || $_SERVER['AUTHORIZED'] != 1))
{
$filter = $passdb_filter;
// authenticate with master user/password
// master user name is hardcoded "dovecot", "cyrus" or "dovecot-admin@domain" and mapped currently to cn=admin,[o=domain,]dc=egroupware
if (isset($master))
{
list($n,$d) = explode('@', $master);
if (!($n === 'dovecot-admin' && $d === $domain || in_array($master,array('dovecot','cyrus'))))
{
// no valid master-user for given domain
exit(1);
}
$dn = $d ? strtr($domain_master_dn,array('%d'=>$domain)) : $master_dn;
if (!@ldap_bind($ds, $dn, $password))
{
if ($log_verbose) error_log("Can't bind as '$dn' with password '$password'! Authentication as master '$master' for user '$username' failed!");
exit(111); // 111 = temporary problem
}
if ($log_verbose) error_log("Authentication as master '$master' for user '$username' succeeded!");
$passdb_query = false;
$filter = $userdb_filter;
}
}
else
{
$filter = $userdb_filter;
putenv('AUTHORIZED=2');
}
$filter = strtr($filter, quote($replace));
// remove prefixes eg. "{quota:}proxyaddresses"
$attrs = $user_attrs;
foreach($attrs as &$a) if ($a[0] == '{') list(,$a) = explode('}', $a);
if (!($sr = ldap_search($ds, $base, $filter, array_values($attrs))))
{
error_log("Error ldap_search(\$ds, '$base', '$filter')!");
exit(111); // 111 = temporary problem
}
$entries = ldap_get_entries($ds, $sr);
if (!$entries['count'])
{
if ($log_verbose) error_log("User '$username' NOT found!");
exit(3);
}
if ($entries['count'] > 1)
{
// should not happen for passdb, but could happen for aliases ...
error_log("Error ldap_search(\$ds, '$base', '$filter') returned more then one user!");
exit(111); // 111 = temporary problem
}
//print_r($entries);
if ($passdb_query)
{
// now authenticate user by trying to bind to found dn with given password
if (!@ldap_bind($ds, $entries[0]['dn'], $password))
{
if ($log_verbose) error_log("Can't bind as '{$entries[0]['dn']}' with password '$password'! Authentication for user '$username' failed!");
exit(1);
}
if ($log_verbose) error_log("Successfull authentication user '$username' dn='{$entries[0]['dn']}'.");
}
else // user-db query, no authentication
{
if ($log_verbose) error_log("User-db query for user '$username' dn='{$entries[0]['dn']}'.");
}
// add additional placeholders from $user_attrs
foreach($user_attrs as $placeholder => $attr)
{
if ($attr[0] == '{') // prefix given --> ignore all values without and remove it
{
list($prefix, $attr) = explode('}', substr($attr, 1));
foreach($entries[0][$attr] as $key => $value)
{
if ($key === 'count') continue;
if (strpos($value, $prefix) !== 0) continue;
$replace[$placeholder] = substr($value, strlen($prefix));
break;
}
}
else
{
$replace[$placeholder] = is_array($entries[0][$attr]) ? $entries[0][$attr][0] : $entries[0][$attr];
}
}
// search memberships
if (isset($group_base) && $group_filter && $group_attr)
{
$base = strtr($group_base, $replace);
$filter = strtr($group_filter, quote($replace));
$append = strtr($group_append, $replace);
if (($sr = ldap_search($ds, $base, $filter, array($group_attr))) &&
($groups = ldap_get_entries($ds, $sr)) && $groups['count'])
{
//print_r($groups);
$system_groups_user = array();
foreach($groups as $key => $group)
{
if ($key === 'count') continue;
$system_groups_user[] = $group[$group_attr][0].$append;
}
$extra['system_groups_user'] = implode(',', $system_groups_user); // todo: check separator
}
else
{
error_log("Error searching for memberships ldap_search(\$ds, '$base', '$filter')!");
}
}
// set host attribute for director to old imap
if (isset($host_base) && isset($host_filter))
{
if (!($sr = ldap_search($ds, $host_base, $filter=strtr($host_filter, quote($replace)), array($host_attr))))
{
error_log("Error ldap_search(\$ds, '$host_base', '$filter')!");
exit(111); // 111 = temporary problem
}
$entries = ldap_get_entries($ds, $sr);
if ($entries['count'] && !isset($entries[0][$host_attr]))
{
$extra['host'] = $host_default;
}
}
// close ldap connection
ldap_unbind($ds);
// build command to run
array_shift($_SERVER['argv']);
$cmd = array_shift($_SERVER['argv']);
foreach($_SERVER['argv'] as $arg)
{
$cmd .= ' '.escapeshellarg($arg);
}
// setting USER, HOME, EXTRA
putenv('USER='.strtr($user_name, $replace));
if ($user_home) putenv('HOME='.strtr($user_home, $replace));
if ($extra)
{
foreach($extra as $name => $value)
{
if (($pos = strpos($value,'%')) !== false)
{
// check if replacement is set, otherwise skip whole extra-value
if (!isset($replace[substr($value,$pos,2)]))
{
unset($extra[$name]);
continue;
}
$value = strtr($value,$replace);
}
putenv($name.'='.$value);
}
putenv('EXTRA='.implode(' ', array_keys($extra)));
}
// call given command and exit with it's exit-status
passthru($cmd, $ret);
exit($ret);
/**
* escapes a string for use in searchfilters meant for ldap_search.
*
* Escaped Characters are: '*', '(', ')', ' ', '\', NUL
* It's actually a PHP-Bug, that we have to escape space.
* For all other Characters, refer to RFC2254.
*
* @param string|array $string either a string to be escaped, or an array of values to be escaped
* @return string
*/
function quote($string)
{
return str_replace(array('\\','*','(',')','\0',' '),array('\\\\','\*','\(','\)','\\0','\20'),$string);
}

754
emailadmin/doc/main.cf Normal file
View File

@ -0,0 +1,754 @@
# Global Postfix configuration file. This file lists only a subset
# of all 300+ parameters. See the sample-xxx.cf files for a full list.
#
# The general format is lines with parameter = value pairs. Lines
# that begin with whitespace continue the previous line. A value can
# contain references to other $names or ${name}s.
#
# NOTE - CHANGE NO MORE THAN 2-3 PARAMETERS AT A TIME, AND TEST IF
# POSTFIX STILL WORKS AFTER EVERY CHANGE.
# SOFT BOUNCE
#
# The soft_bounce parameter provides a limited safety net for
# testing. When soft_bounce is enabled, mail will remain queued that
# would otherwise bounce. This parameter disables locally-generated
# bounces, and prevents the SMTP server from rejecting mail permanently
# (by changing 5xx replies into 4xx replies). However, soft_bounce
# is no cure for address rewriting mistakes or mail routing mistakes.
#
#soft_bounce = no
# LOCAL PATHNAME INFORMATION
#
# The queue_directory specifies the location of the Postfix queue.
# This is also the root directory of Postfix daemons that run chrooted.
# See the files in examples/chroot-setup for setting up Postfix chroot
# environments on different UNIX systems.
#
queue_directory = /var/spool/postfix
# The command_directory parameter specifies the location of all
# postXXX commands.
#
command_directory = /usr/sbin
# The daemon_directory parameter specifies the location of all Postfix
# daemon programs (i.e. programs listed in the master.cf file). This
# directory must be owned by root.
#
daemon_directory = /usr/lib/postfix
# QUEUE AND PROCESS OWNERSHIP
#
# The mail_owner parameter specifies the owner of the Postfix queue
# and of most Postfix daemon processes. Specify the name of a user
# account THAT DOES NOT SHARE ITS USER OR GROUP ID WITH OTHER ACCOUNTS
# AND THAT OWNS NO OTHER FILES OR PROCESSES ON THE SYSTEM. In
# particular, don't specify nobody or daemon. PLEASE USE A DEDICATED
# USER.
#
mail_owner = postfix
# The default_privs parameter specifies the default rights used by
# the local delivery agent for delivery to external file or command.
# These rights are used in the absence of a recipient user context.
# DO NOT SPECIFY A PRIVILEGED USER OR THE POSTFIX OWNER.
#
#default_privs = nobody
# INTERNET HOST AND DOMAIN NAMES
#
# The myhostname parameter specifies the internet hostname of this
# mail system. The default is to use the fully-qualified domain name
# from gethostname(). $myhostname is used as a default value for many
# other configuration parameters.
#
#myhostname = host.domain.tld
#myhostname = virtual.domain.tld
# The mydomain parameter specifies the local internet domain name.
# The default is to use $myhostname minus the first component.
# $mydomain is used as a default value for many other configuration
# parameters.
#
#mydomain = domain.tld
# SENDING MAIL
#
# The myorigin parameter specifies the domain that locally-posted
# mail appears to come from. The default is to append $myhostname,
# which is fine for small sites. If you run a domain with multiple
# machines, you should (1) change this to $mydomain and (2) set up
# a domain-wide alias database that aliases each user to
# user@that.users.mailhost.
#
# For the sake of consistency between sender and recipient addresses,
# myorigin also specifies the default domain name that is appended
# to recipient addresses that have no @domain part.
#
#myorigin = $myhostname
#myorigin = $mydomain
# RECEIVING MAIL
# The inet_interfaces parameter specifies the network interface
# addresses that this mail system receives mail on. By default,
# the software claims all active interfaces on the machine. The
# parameter also controls delivery of mail to user@[ip.address].
#
# See also the proxy_interfaces parameter, for network addresses that
# are forwarded to us via a proxy or network address translator.
#
# Note: you need to stop/start Postfix when this parameter changes.
#
#inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
# The proxy_interfaces parameter specifies the network interface
# addresses that this mail system receives mail on by way of a
# proxy or network address translation unit. This setting extends
# the address list specified with the inet_interfaces parameter.
#
# You must specify your proxy/NAT addresses when your system is a
# backup MX host for other domains, otherwise mail delivery loops
# will happen when the primary MX host is down.
#
#proxy_interfaces =
#proxy_interfaces = 1.2.3.4
# The mydestination parameter specifies the list of domains that this
# machine considers itself the final destination for.
#
# These domains are routed to the delivery agent specified with the
# local_transport parameter setting. By default, that is the UNIX
# compatible delivery agent that lookups all recipients in /etc/passwd
# and /etc/aliases or their equivalent.
#
# The default is $myhostname + localhost.$mydomain. On a mail domain
# gateway, you should also include $mydomain.
#
# Do not specify the names of virtual domains - those domains are
# specified elsewhere (see sample-virtual.cf).
#
# Do not specify the names of domains that this machine is backup MX
# host for. Specify those names via the relay_domains settings for
# the SMTP server, or use permit_mx_backup if you are lazy (see
# sample-smtpd.cf).
#
# The local machine is always the final destination for mail addressed
# to user@[the.net.work.address] of an interface that the mail system
# receives mail on (see the inet_interfaces parameter).
#
# Specify a list of host or domain names, /file/name or type:table
# patterns, separated by commas and/or whitespace. A /file/name
# pattern is replaced by its contents; a type:table is matched when
# a name matches a lookup key (the right-hand side is ignored).
# Continue long lines by starting the next line with whitespace.
#
# DO NOT LIST RELAY DESTINATIONS IN MYDESTINATION.
# SPECIFY RELAY DESTINATIONS IN RELAY_DOMAINS.
#
# See also below, section "REJECTING MAIL FOR UNKNOWN LOCAL USERS".
#
#mydestination = $myhostname, localhost.$mydomain
#mydestination = $myhostname, localhost.$mydomain $mydomain
#mydestination = $myhostname, localhost.$mydomain, $mydomain,
# mail.$mydomain, www.$mydomain, ftp.$mydomain
mydestination = $myhostname, localhost.$mydomain $mydomain,
kneschke.de, phpgw.de, egroupware.org, linux-at-work.de, lists.kneschke.de
# REJECTING MAIL FOR UNKNOWN LOCAL USERS
#
# The local_recipient_maps parameter specifies optional lookup tables
# with all names or addresses of users that are local with respect
# to $mydestination and $inet_interfaces.
#
# If this parameter is defined, then the SMTP server will reject
# mail for unknown local users. This parameter is defined by default.
#
# To turn off local recipient checking in the SMTP server, specify
# local_recipient_maps = (i.e. empty).
#
# The default setting assumes that you use the default Postfix local
# delivery agent for local delivery. You need to update the
# local_recipient_maps setting if:
#
# - You define $mydestination domain recipients in files other than
# /etc/passwd, /etc/aliases, or the $virtual_alias_maps files.
# For example, you define $mydestination domain recipients in
# the $virtual_mailbox_maps files.
#
# - You redefine the local delivery agent in master.cf.
#
# - You redefine the "local_transport" setting in main.cf.
#
# - You use the "luser_relay", "mailbox_transport", or "fallback_transport"
# feature of the Postfix local delivery agent (see sample-local.cf).
#
# Details are described in the LOCAL_RECIPIENT_README file.
#
# Beware: if the Postfix SMTP server runs chrooted, you probably have
# to access the passwd file via the proxymap service, in order to
# overcome chroot restrictions. The alternative, having a copy of
# the system passwd file in the chroot jail is just not practical.
#
# The right-hand side of the lookup tables is conveniently ignored.
# In the left-hand side, specify a bare username, an @domain.tld
# wild-card, or specify a user@domain.tld address.
#
#local_recipient_maps = unix:passwd.byname $alias_maps
#local_recipient_maps = proxy:unix:passwd.byname $alias_maps
#local_recipient_maps =
# The unknown_local_recipient_reject_code specifies the SMTP server
# response code when a recipient domain matches $mydestination or
# $inet_interfaces, while $local_recipient_maps is non-empty and the
# recipient address or address local-part is not found.
#
# The default setting is 550 (reject mail) but it is safer to start
# with 450 (try again later) until you are certain that your
# local_recipient_maps settings are OK.
#
unknown_local_recipient_reject_code = 550
#unknown_local_recipient_reject_code = 450
# TRUST AND RELAY CONTROL
# The mynetworks parameter specifies the list of "trusted" SMTP
# clients that have more privileges than "strangers".
#
# In particular, "trusted" SMTP clients are allowed to relay mail
# through Postfix. See the smtpd_recipient_restrictions parameter
# in file sample-smtpd.cf.
#
# You can specify the list of "trusted" network addresses by hand
# or you can let Postfix do it for you (which is the default).
#
# By default (mynetworks_style = subnet), Postfix "trusts" SMTP
# clients in the same IP subnetworks as the local machine.
# On Linux, this does works correctly only with interfaces specified
# with the "ifconfig" command.
#
# Specify "mynetworks_style = class" when Postfix should "trust" SMTP
# clients in the same IP class A/B/C networks as the local machine.
# Don't do this with a dialup site - it would cause Postfix to "trust"
# your entire provider's network. Instead, specify an explicit
# mynetworks list by hand, as described below.
#
# Specify "mynetworks_style = host" when Postfix should "trust"
# only the local machine.
#
#mynetworks_style = class
#mynetworks_style = subnet
#mynetworks_style = host
# Alternatively, you can specify the mynetworks list by hand, in
# which case Postfix ignores the mynetworks_style setting.
#
# Specify an explicit list of network/netmask patterns, where the
# mask specifies the number of bits in the network part of a host
# address.
#
# You can also specify the absolute pathname of a pattern file instead
# of listing the patterns here. Specify type:table for table-based lookups
# (the value on the table right-hand side is not used).
#
#mynetworks = 168.100.189.0/28, 127.0.0.0/8
#mynetworks = $config_directory/mynetworks
#mynetworks = hash:/etc/postfix/network_table
# The relay_domains parameter restricts what destinations this system will
# relay mail to. See the smtpd_recipient_restrictions restriction in the
# file sample-smtpd.cf for detailed information.
#
# By default, Postfix relays mail
# - from "trusted" clients (IP address matches $mynetworks) to any destination,
# - from "untrusted" clients to destinations that match $relay_domains or
# subdomains thereof, except addresses with sender-specified routing.
# The default relay_domains value is $mydestination.
#
# In addition to the above, the Postfix SMTP server by default accepts mail
# that Postfix is final destination for:
# - destinations that match $inet_interfaces,
# - destinations that match $mydestination
# - destinations that match $virtual_alias_domains,
# - destinations that match $virtual_mailbox_domains.
# These destinations do not need to be listed in $relay_domains.
#
# Specify a list of hosts or domains, /file/name patterns or type:name
# lookup tables, separated by commas and/or whitespace. Continue
# long lines by starting the next line with whitespace. A file name
# is replaced by its contents; a type:name table is matched when a
# (parent) domain appears as lookup key.
#
# NOTE: Postfix will not automatically forward mail for domains that
# list this system as their primary or backup MX host. See the
# permit_mx_backup restriction in the file sample-smtpd.cf.
#
#relay_domains = $mydestination
# INTERNET OR INTRANET
# The relayhost parameter specifies the default host to send mail to
# when no entry is matched in the optional transport(5) table. When
# no relayhost is given, mail is routed directly to the destination.
#
# On an intranet, specify the organizational domain name. If your
# internal DNS uses no MX records, specify the name of the intranet
# gateway host instead.
#
# In the case of SMTP, specify a domain, host, host:port, [host]:port,
# [address] or [address]:port; the form [host] turns off MX lookups.
#
# If you're connected via UUCP, see also the default_transport parameter.
#
#relayhost = $mydomain
#relayhost = gateway.my.domain
#relayhost = uucphost
#relayhost = [an.ip.add.ress]
# REJECTING UNKNOWN RELAY USERS
#
# The relay_recipient_maps parameter specifies optional lookup tables
# with all addresses in the domains that match $relay_domains.
#
# If this parameter is defined, then the SMTP server will reject
# mail for unknown relay users. This feature is off by default.
#
# The right-hand side of the lookup tables is conveniently ignored.
# In the left-hand side, specify an @domain.tld wild-card, or specify
# a user@domain.tld address.
#
#relay_recipient_maps = hash:/etc/postfix/relay_recipients
# INPUT RATE CONTROL
#
# The in_flow_delay configuration parameter implements mail input
# flow control. This feature is turned on by default, although it
# still needs further development (it's disabled on SCO UNIX due
# to an SCO bug).
#
# A Postfix process will pause for $in_flow_delay seconds before
# accepting a new message, when the message arrival rate exceeds the
# message delivery rate. With the default 100 SMTP server process
# limit, this limits the mail inflow to 100 messages a second more
# than the number of messages delivered per second.
#
# Specify 0 to disable the feature. Valid delays are 0..10.
#
#in_flow_delay = 1s
# ADDRESS REWRITING
#
# Insert text from sample-rewrite.cf if you need to do address
# masquerading.
#
# Insert text from sample-canonical.cf if you need to do address
# rewriting, or if you need username->Firstname.Lastname mapping.
# ADDRESS REDIRECTION (VIRTUAL DOMAIN)
#
# Insert text from sample-virtual.cf if you need virtual domain support.
# "USER HAS MOVED" BOUNCE MESSAGES
#
# Insert text from sample-relocated.cf if you need "user has moved"
# style bounce messages. Alternatively, you can bounce recipients
# with an SMTP server access table. See sample-smtpd.cf.
# TRANSPORT MAP
#
# Insert text from sample-transport.cf if you need explicit routing.
# ALIAS DATABASE
#
# The alias_maps parameter specifies the list of alias databases used
# by the local delivery agent. The default list is system dependent.
#
# On systems with NIS, the default is to search the local alias
# database, then the NIS alias database. See aliases(5) for syntax
# details.
#
# If you change the alias database, run "postalias /etc/aliases" (or
# wherever your system stores the mail alias file), or simply run
# "newaliases" to build the necessary DBM or DB file.
#
# It will take a minute or so before changes become visible. Use
# "postfix reload" to eliminate the delay.
#
#alias_maps = dbm:/etc/aliases
#alias_maps = hash:/etc/aliases
#alias_maps = hash:/etc/aliases, nis:mail.aliases
#alias_maps = netinfo:/aliases
# The alias_database parameter specifies the alias database(s) that
# are built with "newaliases" or "sendmail -bi". This is a separate
# configuration parameter, because alias_maps (see above) may specify
# tables that are not necessarily all under control by Postfix.
#
#alias_database = dbm:/etc/aliases
#alias_database = dbm:/etc/mail/aliases
#alias_database = hash:/etc/aliases
#alias_database = hash:/etc/aliases, hash:/opt/majordomo/aliases
# ADDRESS EXTENSIONS (e.g., user+foo)
#
# The recipient_delimiter parameter specifies the separator between
# user names and address extensions (user+foo). See canonical(5),
# local(8), relocated(5) and virtual(5) for the effects this has on
# aliases, canonical, virtual, relocated and .forward file lookups.
# Basically, the software tries user+foo and .forward+foo before
# trying user and .forward.
#
#recipient_delimiter = +
# DELIVERY TO MAILBOX
#
# The home_mailbox parameter specifies the optional pathname of a
# mailbox file relative to a user's home directory. The default
# mailbox file is /var/spool/mail/user or /var/mail/user. Specify
# "Maildir/" for qmail-style delivery (the / is required).
#
#home_mailbox = Mailbox
#home_mailbox = Maildir/
# The mail_spool_directory parameter specifies the directory where
# UNIX-style mailboxes are kept. The default setting depends on the
# system type.
#
#mail_spool_directory = /var/mail
#mail_spool_directory = /var/spool/mail
# The mailbox_command parameter specifies the optional external
# command to use instead of mailbox delivery. The command is run as
# the recipient with proper HOME, SHELL and LOGNAME environment settings.
# Exception: delivery for root is done as $default_user.
#
# Other environment variables of interest: USER (recipient username),
# EXTENSION (address extension), DOMAIN (domain part of address),
# and LOCAL (the address localpart).
#
# Unlike other Postfix configuration parameters, the mailbox_command
# parameter is not subjected to $parameter substitutions. This is to
# make it easier to specify shell syntax (see example below).
#
# Avoid shell meta characters because they will force Postfix to run
# an expensive shell process. Procmail alone is expensive enough.
#
# IF YOU USE THIS TO DELIVER MAIL SYSTEM-WIDE, YOU MUST SET UP AN
# ALIAS THAT FORWARDS MAIL FOR ROOT TO A REAL USER.
#
#mailbox_command = /some/where/procmail
#mailbox_command = /some/where/procmail -a "$EXTENSION"
# The mailbox_transport specifies the optional transport in master.cf
# to use after processing aliases and .forward files. This parameter
# has precedence over the mailbox_command, fallback_transport and
# luser_relay parameters.
#
# Specify a string of the form transport:nexthop, where transport is
# the name of a mail delivery transport defined in master.cf. The
# :nexthop part is optional. For more details see the sample transport
# configuration file.
#
# NOTE: if you use this feature for accounts not in the UNIX password
# file, then you must update the "local_recipient_maps" setting in
# the main.cf file, otherwise the SMTP server will reject mail for
# non-UNIX accounts with "User unknown in local recipient table".
#
#mailbox_transport = lmtp:unix:/file/name
mailbox_transport = lmtp:unix:/var/imap/socket/lmtp
#mailbox_transport = cyrus
# The fallback_transport specifies the optional transport in master.cf
# to use for recipients that are not found in the UNIX passwd database.
# This parameter has precedence over the luser_relay parameter.
#
# Specify a string of the form transport:nexthop, where transport is
# the name of a mail delivery transport defined in master.cf. The
# :nexthop part is optional. For more details see the sample transport
# configuration file.
#
# NOTE: if you use this feature for accounts not in the UNIX password
# file, then you must update the "local_recipient_maps" setting in
# the main.cf file, otherwise the SMTP server will reject mail for
# non-UNIX accounts with "User unknown in local recipient table".
#
#fallback_transport = lmtp:unix:/file/name
#fallback_transport = cyrus
#fallback_transport =
# The luser_relay parameter specifies an optional destination address
# for unknown recipients. By default, mail for unknown@$mydestination
# and unknown@[$inet_interfaces] is returned as undeliverable.
#
# The following expansions are done on luser_relay: $user (recipient
# username), $shell (recipient shell), $home (recipient home directory),
# $recipient (full recipient address), $extension (recipient address
# extension), $domain (recipient domain), $local (entire recipient
# localpart), $recipient_delimiter. Specify ${name?value} or
# ${name:value} to expand value only when $name does (does not) exist.
#
# luser_relay works only for the default Postfix local delivery agent.
#
# NOTE: if you use this feature for accounts not in the UNIX password
# file, then you must specify "local_recipient_maps =" (i.e. empty) in
# the main.cf file, otherwise the SMTP server will reject mail for
# non-UNIX accounts with "User unknown in local recipient table".
#
#luser_relay = $user@other.host
#luser_relay = $local@other.host
#luser_relay = admin+$local
# JUNK MAIL CONTROLS
#
# The controls listed here are only a very small subset. See the file
# sample-smtpd.cf for an elaborate list of anti-UCE controls.
# The header_checks parameter specifies an optional table with patterns
# that each logical message header is matched against, including
# headers that span multiple physical lines.
#
# By default, these patterns also apply to MIME headers and to the
# headers of attached messages. With older Postfix versions, MIME and
# attached message headers were treated as body text.
#
# For details, see the sample-filter.cf file.
#
#header_checks = regexp:/etc/postfix/header_checks
# FAST ETRN SERVICE
#
# Postfix maintains per-destination logfiles with information about
# deferred mail, so that mail can be flushed quickly with the SMTP
# "ETRN domain.tld" command, or by executing "sendmail -qRdomain.tld".
#
# By default, Postfix maintains deferred mail logfile information
# only for destinations that Postfix is willing to relay to (as
# specified in the relay_domains parameter). For other destinations,
# Postfix attempts to deliver ALL queued mail after receiving the
# SMTP "ETRN domain.tld" command, or after execution of "sendmail
# -qRdomain.tld". This can be slow when a lot of mail is queued.
#
# The fast_flush_domains parameter controls what destinations are
# eligible for this "fast ETRN/sendmail -qR" service.
#
#fast_flush_domains = $relay_domains
#fast_flush_domains =
# The disable_vrfy_command parameter allows you to disable the SMTP
# VRFY command. This stops some techniques used by spammers to harvest
# email addresses.
#
disable_vrfy_command = yes
# SHOW SOFTWARE VERSION OR NOT
#
# The smtpd_banner parameter specifies the text that follows the 220
# code in the SMTP server's greeting banner. Some people like to see
# the mail version advertised. By default, Postfix shows no version.
#
# You MUST specify $myhostname at the start of the text. That is an
# RFC requirement. Postfix itself does not care.
#
#smtpd_banner = $myhostname ESMTP $mail_name
#smtpd_banner = $myhostname ESMTP $mail_name ($mail_version)
# PARALLEL DELIVERY TO THE SAME DESTINATION
#
# How many parallel deliveries to the same user or domain? With local
# delivery, it does not make sense to do massively parallel delivery
# to the same user, because mailbox updates must happen sequentially,
# and expensive pipelines in .forward files can cause disasters when
# too many are run at the same time. With SMTP deliveries, 10
# simultaneous connections to the same domain could be sufficient to
# raise eyebrows.
#
# Each message delivery transport has its XXX_destination_concurrency_limit
# parameter. The default is $default_destination_concurrency_limit for
# most delivery transports. For the local delivery agent the default is 2.
#local_destination_concurrency_limit = 2
#default_destination_concurrency_limit = 20
# DEBUGGING CONTROL
#
# The debug_peer_level parameter specifies the increment in verbose
# logging level when an SMTP client or server host name or address
# matches a pattern in the debug_peer_list parameter.
#
debug_peer_level = 2
# The debug_peer_list parameter specifies an optional list of domain
# or network patterns, /file/name patterns or type:name tables. When
# an SMTP client or server host name or address matches a pattern,
# increase the verbose logging level by the amount specified in the
# debug_peer_level parameter.
#
#debug_peer_list = 127.0.0.1
#debug_peer_list = some.domain
# The debugger_command specifies the external command that is executed
# when a Postfix daemon program is run with the -D option.
#
# Use "command .. & sleep 5" so that the debugger can attach before
# the process marches on. If you use an X-based debugger, be sure to
# set up your XAUTHORITY environment variable before starting Postfix.
#
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
xxgdb $daemon_directory/$process_name $process_id & sleep 5
# If you don't have X installed on the Postfix machine, try:
# debugger_command =
# PATH=/bin:/usr/bin:/usr/local/bin; export PATH; (echo cont;
# echo where) | gdb $daemon_directory/$process_name $process_id 2>&1
# >$config_directory/$process_name.$process_id.log & sleep 5
# INSTALL-TIME CONFIGURATION INFORMATION
#
# The following parameters are used when installing a new Postfix version.
#
# sendmail_path: The full pathname of the Postfix sendmail command.
# This is the Sendmail-compatible mail posting interface.
#
sendmail_path = /usr/sbin/sendmail
# newaliases_path: The full pathname of the Postfix newaliases command.
# This is the Sendmail-compatible command to build alias databases.
#
newaliases_path = /usr/bin/newaliases
# mailq_path: The full pathname of the Postfix mailq command. This
# is the Sendmail-compatible mail queue listing command.
#
mailq_path = /usr/bin/mailq
# setgid_group: The group for mail submission and queue management
# commands. This must be a group name with a numerical group ID that
# is not shared with other accounts, not even with the Postfix account.
#
setgid_group = postdrop
# manpage_directory: The location of the Postfix on-line manual pages.
#
manpage_directory = /usr/share/man
# sample_directory: The location of the Postfix sample configuration files.
#
sample_directory = /usr/share/doc/postfix-2.0.19/sample
# readme_directory: The location of the Postfix README files.
#
readme_directory = /usr/share/doc/postfix-2.0.19/readme
default_destination_concurrency_limit = 2
#alias_database = hash:/etc/mail/aliases
local_destination_concurrency_limit = 2
alias_maps = hash:/etc/mail/aliases
content_filter = smtp-amavis:[127.0.0.1]:10024
queue_minfree = 100000000
message_size_limit = 50000000
mailbox_size_limit = 500000000
smtpd_helo_required=yes
smtpd_helo_restrictions=permit_mynetworks, reject_invalid_hostname, reject_invalid_hostname
smtpd_sender_restrictions=permit_mynetworks, reject_unknown_sender_domain, reject_non_fqdn_sender
virtual_maps = ldap:aliases, ldap:mailboxes
aliases_server_host = 127.0.0.1
aliases_search_base = dc=domain,dc=loc
aliases_query_filter = (&(|(mail=%s)(mailalternateaddress=%s))(objectclass=posixaccount)(deliveryMode=forwardonly)(accountstatus=active))
aliases_bind_dn = cn=thepostfixadmin,dc=domain,dc=loc
aliases_bind_pw = thepassword
aliases_result_attribute = mailforwardingaddress
aliases_version = 3
mailboxes_server_host = 127.0.0.1
mailboxes_search_base = dc=domain,dc=loc
mailboxes_query_filter = (&(|(mail=%s)(mailalternateaddress=%s))(objectclass=posixaccount)(accountstatus=active))
mailboxes_bind_dn = cn=thepostfixadmin,dc=domain,dc=loc
mailboxes_bind_pw = thepassword
mailboxes_result_attribute = uid, mailforwardingaddress
mailboxes_version = 3
#SMTPD mit SASL-Authentification verwenden
smtpd_sasl_auth_enable = yes
#Zusatz-Optionen: Keine anonyme-Anmeldung verwenden
smtpd_sasl_security_options = noanonymous
#Wieder ein Workaround für ältere Clients und Outlook
broken_sasl_auth_clients = yes
# ODER meine Netze und SASL erlauben
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_rbl_client relays.ordb.org,
reject_rbl_client sbl-xbl.spamhaus.org,
reject_rbl_client opm.blitzed.org,
reject_rbl_client dnsbl.njabl.org,
reject_rbl_client blackholes.wirehub.net,
reject_rbl_client list.dsbl.org,
reject_rbl_client dnsbl.sorbs.net,
reject_unauth_destination,
reject_non_fqdn_sender,
reject_non_fqdn_recipient,
reject_unauth_pipelining,
reject_unknown_sender_domain,
reject_unknown_recipient_domain
# reject_unknown_client
# reject_rbl_client proxies.relays.monkeys.com,
# incoming SSL
smtpd_use_tls = yes
#smtpd_tls_auth_only = yes
smtpd_tls_key_file = /etc/ssl/private/smtp.linux-at-work.de/smtp.linux-at-work.de.key
smtpd_tls_cert_file = /etc/ssl/private/smtp.linux-at-work.de/smtp.linux-at-work.de.crt
smtpd_tls_CAfile = /etc/ssl/certs/ca-cert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
#outgoing SSL
smtp_tls_key_file = /etc/ssl/private/smtp.linux-at-work.de/smtp.linux-at-work.de.key
smtp_tls_cert_file = /etc/ssl/private/smtp.linux-at-work.de/smtp.linux-at-work.de.crt
smtp_tls_CAfile = /etc/ssl/certs/ca-cert.pem
smtp_tls_CApath = /etc/ssl/certs
smtp_tls_loglevel = 2
# The server and client negotiate a session, which takes some computer time
# and network bandwidth. The session is cached only in the smtpd process
# actually using this session and is lost when the process dies.
# To share the session information between the smtp processes, a disc based
# session cache can be used based on the SDBM databases (routines included
# in Postfix/TLS). Since concurrent writing must be supported, only SDBM
# can be used.
#
smtp_tls_session_cache_database = sdbm:/etc/postfix/smtp_scache
# By default TLS is disabled, so no difference to plain postfix is visible.
# If you enable TLS it will be used when offered by the server.
# WARNING: I didn't have access to other software (except those explicitely
# listed) to test the interaction. On corresponding mailing list
# there was a discussion going on about MS exchange servers offering
# STARTTLS even if it is not configured, so it might be wise to not
# use this option on your central mail hub, as you don't know in advance
# whether you are going to hit such host. Use the recipient/site specific
# options instead.
# HINT: I have it switched on on my mailservers and did experience one
# single failure since client side TLS is implemented. (There was one
# misconfired MS Exchange server; I contacted ths admin.) Hence, I am happy
# with it running all the time, but I am interested in testing anyway.
# You have been warned, however :-)
#
# In case of failure, a "4xx" code is issued and the mail stays in the queue.
#
# Explicitely switch it on here, if you want it.
#
#smtp_use_tls = yes

View File

@ -0,0 +1,408 @@
#!/usr/bin/php -Cq
<?php
/**
* EGroupware - tcp-map for Postfix and Active Directory
*
* Using multivalued proxyAddresses attribute as implemented in emailadmin_smtp_ads:
* - "smtp:<email>" allows to receive mail for given <email>
* (includes aliases AND primary email)
* - "forward:<email>" forwards received mail to given <email>
* (requires account to have at an "smtp:<email>" value!)
* - ("forwardOnly" is used for no local mailbox, only forwards, not implemented!)
* - ("quota:<quota>" is used to store quota)
*
* Groups can be used as distribution lists by assigning them an
* email address via there mail attribute (no proxyAddress)
*
* PROTOCOL DESCRIPTION
* The TCP map class implements a very simple protocol: the
* client sends a request, and the server sends one reply.
* Requests and replies are sent as one line of ASCII text,
* terminated by the ASCII newline character. Request and
* reply parameters (see below) are separated by whitespace.
*
* REQUEST FORMAT
* Each request specifies a command, a lookup key, and possi-
* bly a lookup result.
*
* get SPACE key NEWLINE
* Look up data under the specified key.
*
* put SPACE key SPACE value NEWLINE
* This request is currently not implemented.
*
* REPLY FORMAT
* Each reply specifies a status code and text. Replies must
* be no longer than 4096 characters including the newline
* terminator.
*
* 500 SPACE text NEWLINE
* In case of a lookup request, the requested data
* does not exist. In case of an update request, the
* request was rejected. The text describes the
* nature of the problem.
*
* 400 SPACE text NEWLINE
* This indicates an error condition. The text
* describes the nature of the problem. The client
* should retry the request later.
*
* 200 SPACE text NEWLINE
* The request was successful. In the case of a lookup
* request, the text contains an encoded version of
* the requested data.
*
* ENCODING
* In request and reply parameters, the character %, each
* non-printing character, and each whitespace character must
* be replaced by %XX, where XX is the corresponding ASCII
* hexadecimal character value. The hexadecimal codes can be
* specified in any case (upper, lower, mixed).
*
* The Postfix client always encodes a request. The server
* may omit the encoding as long as the reply is guaranteed
* to not contain the % or NEWLINE character.
*
* @author rb(at)stylite.de
* @copyright (c) 2012-13 by rb(at)stylite.de
* @package emailadmin
* @link http://www.postfix.org/tcp_table.5.html
* @version $Id$
*/
// protect from being called via HTTP
if (php_sapi_name() !== 'cli') die('This is a command line only script!');
// our defaults
$default_host = 'localhost';
$verbose = false;
// allow only clients matching that preg to access, should be only mserver IP
//$only_client = '/^10\.40\.8\.210:/';
// uncomment to write to log-file, otherwise errors go to stderr
//$log = 'syslog'; // or not set (stderr) or filename '/var/log/postfix_tcp_map.log';
//$log_verbose = true; // error's are always logged, set to true to log failures and success too
// ldap server settings
$ldap_uri = 'ldaps://10.7.102.13/';
$base = 'CN=Users,DC=gruene,DC=intern';
//$bind_dn = "CN=Administrator,$base";
//$bind_dn = "Administrator@gruene.intern";
//$bind_pw = 'secret';
$version = 3;
$use_tls = false;
// supported maps
$maps = array(
// virtual mailbox map
'mailboxes' => array(
'base' => $base,
'filter' => '(&(objectCategory=person)(proxyAddresses=smtp:%s))',
'attrs' => 'samaccountname', // result-attrs must be lowercase!
'port' => 2001,
),
// virtual alias maps
'aliases' => array(
'base' => $base,
'filter' => '(&(objectCategory=person)(proxyAddresses=smtp:%s))',
'attrs' => array('samaccountname','{forward:}proxyaddresses'),
'port' => 2002,
),
// groups as distribution list
'groups' => array(
'base' => $base,
'filter' => '(&(objectCategory=group)(mail=%s))',
'attrs' => 'dn',
// continue with resulting dn
'filter1' => '(&(objectCategory=person)(proxyAddresses=smtp:*)(memberOf=%s))',
'attrs1' => array('samaccountname','{forward:}proxyaddresses'),
'port' => 2003,
),
);
ini_set('display_errors',false);
error_reporting(E_ALL & ~E_NOTICE);
if ($log) ini_set('error_log',$log);
function usage($extra=null)
{
global $maps;
fwrite(STDERR, "\nUsage: $cmd [-v|--verbose] [-h|--help] [-l|--log (syslog|path)] [-q|--query <email-addresse> (mailboxes|alias|groups)] [host]\n\n");
fwrite(STDERR, print_r($maps,true)."\n");
if ($extra) fwrite(STDERR, "\n\n$extra\n\n");
exit(2);
}
$cmd = basename(array_shift($_SERVER['argv']));
while (($arg = array_shift($_SERVER['argv'])) && $arg[0] == '-')
{
switch($arg)
{
case '-v': case '--verbose':
$verbose = $log_verbose = true;
break;
case '-h': case '--help':
usage();
break;
case '-l': case '--log':
$log = array_shift($_SERVER['argv']);
break;
case '-q': case '--query':
if (count($_SERVER['argv']) == 2) // need 2 arguments
{
$request = 'get '.array_shift($_SERVER['argv'])."\n";
$map = array_shift($_SERVER['argv']);
echo respond($request, $map)."\n";
exit;
}
usage();
break;
default:
usage("Unknown option '$arg'!");
}
}
if ($_SERVER['argv']) usage();
if ($arg)
{
$host = $arg;
}
else
{
$host = $default_host;
}
if ($verbose) echo "using $host\n";
$servers = $clients = $buffers = array();
// Create the server socket
foreach($maps as $map => $data)
{
$addr = 'tcp://'.$host.':'.$data['port'];
if (!($server = stream_socket_server($addr, $errno, $errstr)))
{
fwrite(STDERR, date('Y-m-d H:i:s').": Error calling stream_socket_server('$addr')!\n");
fwrite(STDERR, $errstr." ($errno)\n");
exit($errno);
}
$servers[$data['port']] = $server;
$clients[$data['port']] = array();
}
while (true) // mail loop of tcp server --> never exits
{
$read = $servers;
if ($clients) $read = array_merge($read, call_user_func_array('array_merge', array_values($clients)));
if ($verbose) print 'about to call socket_select(array('.implode(',',$read).', ...) waiting... ';
if (stream_select($read, $write=null, $except=null, null)) // null = block forever
{
foreach($read as $sock)
{
if (($port = array_search($sock, $servers)) !== false)
{
$client = stream_socket_accept($sock,$timeout,$client_addr); // @ required to get not timeout warning!
if ($verbose) echo "accepted connection $client from $client_addr on port $port\n";
if ($only_client && !preg_match($only_client,$client_addr))
{
fwrite($client,"Go away!\r\n");
fclose($client);
error_log(date('Y-m-d H:i:s').": Connection $client from wrong client $client_addr (does NOT match '$only_client') --> terminated");
continue;
}
$clients[$port][] = $client;
}
elseif (feof($sock)) // client connection closed
{
if ($verbose) echo "client $sock closed connection\n";
foreach($clients as $port => &$socks)
{
if (($key = array_search($sock, $socks, true)) !== false)
{
unset($socks[$key]);
}
}
}
else // client send something
{
$buffer =& $buffers[$sock];
$buffer .= fread($sock, 8096);
if (strpos($buffer, "\n") !== false)
{
list($request, $buffer) = explode("\n", $buffer, 2);
foreach($maps as $map => $data)
{
if (($key = array_search($sock, $clients[$data['port']], true)) !== false)
{
if ($verbose) echo date('Y-m-d H:i:s').": client send: $request for map $map\n";
// Respond to client
fwrite($sock, respond($request, $map));
break;
}
}
}
}
}
if ($except)
{
echo "Exception: "; print_r($except);
}
}
else
{
// timeout expired
}
}
/**
* escapes a string for use in searchfilters meant for ldap_search.
*
* Escaped Characters are: '*', '(', ')', ' ', '\', NUL
* It's actually a PHP-Bug, that we have to escape space.
* For all other Characters, refer to RFC2254.
*
* @param string|array $string either a string to be escaped, or an array of values to be escaped
* @return string
*/
function quote($string)
{
return str_replace(array('\\','*','(',')','\0',' '),array('\\\\','\*','\(','\)','\\0','\20'),$string);
}
function respond($request, $map, $extra='', $reconnect=false)
{
static $ds;
global $ldap_uri, $version, $use_tls, $bind_dn, $bind_pw;
global $maps, $log_verbose;
if (($map == 'aliases' || $map == 'groups') && strpos($request,'@') === false && !$extra)
{
return "500 No domain aliases yet\n";
}
if (!isset($ds) || $reconnect)
{
$ds = ldap_connect($ldap_uri);
if ($version) ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, $version);
if ($use_tls) ldap_start_tls($ds);
if (!@ldap_bind($ds, $bind_dn, $bind_pw))
{
error_log("$map: Can't connect to LDAP server $ldap_uri!");
$ds = null;
return "400 Can't connect to LDAP server $ldap_uri!\n"; // 400 (temp.) error
}
}
if (!preg_match('/^get ([^\n]+)\n?$/', $request, $matches))
{
error_log("$map: Wrong format '$request'!");
return "400 Wrong format '$request'!\n"; // 400 (temp.) error
}
$username = $matches[1];
list($name,$domain) = explode('@',$username);
/* check if we are responsible for the given domain
if ($domain && $map != 'domains' && (int)($response = respond("get $domain", 'domains')) != 200)
{
return $response;
}*/
$replace = array(
'%n' => quote($name),
'%d' => quote($domain),
'%s' => quote($username),
);
$base = strtr($maps[$map]['base'], $replace);
$filter = strtr($maps[$map]['filter'.$extra], $replace);
$prefix = isset($maps[$map]['prefix'.$extra]) ? str_replace(array('%n','%d','%s'),array($name,$domain,$username),$maps[$map]['prefix']) : '';
$search_attrs = $attrs = (array)$maps[$map]['attrs'.$extra];
// remove prefix like "{smtp:}proxyaddresses"
foreach($search_attrs as &$attr)
{
if ($attr[0] == '{') list(,$attr) = explode('}', $attr);
}
unset($attr);
if (!($sr = @ldap_search($ds, $base, $filter, $search_attrs)))
{
$errno = ldap_errno($ds);
$error = ldap_error($ds).' ('.$errno.')';
if ($errno == -1) // eg. -1 lost connection to ldap
{
// as DC closes connections quickly, first try to reconnect once, before returning a temp. failure
if (!$reconnect) return respond($request, $map, $extra, true);
error_log("$map: get '$username' --> 400 $error: !ldap_search(\$ds, '$base', '$filter')");
ldap_close($ds);
$ds = null; // force new connection on next lookup
return "400 $error\n"; // 400 (temp.) error
}
else // happens if base containing domain does not exist
{
if ($log_verbose) error_log("$map: get '$username' --> 500 Not found: $error: !ldap_search(\$ds, '$base', '$filter')");
return "500 Not found: $error\n"; // 500 not found
}
}
$entries = ldap_get_entries($ds, $sr);
if (!$entries['count'])
{
if ($log_verbose) error_log("$map: get '$username' --> 500 not found ldap_search(\$ds, '$base', '$filter') no entries");
return "500 Not found\n"; // 500: Query returned no result
}
$response = array();
foreach($entries as $key => $entry)
{
if ($key === 'count') continue;
foreach($attrs as $attr)
{
unset($filter_prefix);
if ($attr[0] == '{')
{
list($filter_prefix, $attr) = explode('}', substr($attr, 1));
}
foreach((array)$entry[$attr] as $k => $mail)
{
if ($k !== 'count' && ($mail = trim($mail)))
{
if ($filter_prefix)
{
if (stripos($mail, $filter_prefix) === 0)
{
$mail = substr($mail, strlen($filter_prefix));
}
else
{
continue;
}
}
$response[] = isset($maps[$map]['return']) ? $maps[$map]['return'] : $prefix.$mail;
}
}
}
}
if (!$response)
{
if ($log_verbose) error_log("$map: get '$username' --> 500 not found ldap_search(\$ds, '$base', '$filter') no response");
return "500 Not found\n"; // 500: Query returned no result
}
if (isset($maps[$map]['filter'.(1+$extra)]) && isset($maps[$map]['attrs'.(1+$extra)]))
{
return respond('get '.$response[0], $map, 1+$extra);
}
$response = '200 '.implode(',',$response)."\n";
if ($log_verbose) error_log("$map: get '$username' --> $response");
return $response;
}

View File

@ -0,0 +1,271 @@
#
# qmail-ldap (20030901) ldapv3 directory schema
#
# The offical qmail-ldap OID assigned by IANA is 7914
#
# Created by: David E. Storey <dave@tamos.net>
# Modified and included into qmail-ldap by Andre Oppermann <opi@nrg4u.com>
# Schema fixes by Mike Jackson <mjj@pp.fi>
# Schema fixes by Christian Zoffoli (XMerlin) <czoffoli@xmerlin.org>
#
#
# This schema depends on:
# - core.schema
# - cosine.schema
# - nis.schema
#
# Attribute Type Definitions
attributetype ( 1.3.6.1.4.1.7914.1.2.1.1 NAME 'qmailUID'
DESC 'UID of the user on the mailsystem'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.7914.1.2.1.2 NAME 'qmailGID'
DESC 'GID of the user on the mailsystem'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.7914.1.2.1.3 NAME 'mailMessageStore'
DESC 'Path to the maildir/mbox on the mail system'
EQUALITY caseExactIA5Match
SUBSTR caseIgnoreIA5SubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.7914.1.2.1.4 NAME 'mailAlternateAddress'
DESC 'Secondary (alias) mailaddresses for the same user'
EQUALITY caseIgnoreIA5Match
SUBSTR caseIgnoreIA5SubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
#
# mailQuota format is no longer supported from qmail-ldap 20030901 on,
# user mailQuotaSize and mailQuotaCount instead.
#
#attributetype ( 1.3.6.1.4.1.7914.1.2.1.5 NAME 'mailQuota'
# DESC 'The amount of space the user can use until all further messages get bounced.'
# SYNTAX 1.3.6.1.4.1.1466.115.121.1.44 SINGLE-VALUE )
#
attributetype ( 1.3.6.1.4.1.7914.1.2.1.6 NAME 'mailHost'
DESC 'On which qmail server the messagestore of this user is located.'
EQUALITY caseIgnoreIA5Match
SUBSTR caseIgnoreIA5SubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} SINGLE-VALUE)
attributetype ( 1.3.6.1.4.1.7914.1.2.1.7 NAME 'mailForwardingAddress'
DESC 'Address(es) to forward all incoming messages to.'
EQUALITY caseIgnoreIA5Match
SUBSTR caseIgnoreIA5SubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
attributetype ( 1.3.6.1.4.1.7914.1.2.1.8 NAME 'deliveryProgramPath'
DESC 'Program to execute for all incoming mails.'
EQUALITY caseExactIA5Match
SUBSTR caseIgnoreIA5SubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
attributetype ( 1.3.6.1.4.1.7914.1.2.1.9 NAME 'qmailDotMode'
DESC 'Interpretation of .qmail files: both, dotonly, ldaponly, ldapwithprog'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{32} SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.7914.1.2.1.10 NAME 'deliveryMode'
DESC 'multi field entries of: nolocal, noforward, noprogram, reply'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{32} )
attributetype ( 1.3.6.1.4.1.7914.1.2.1.11 NAME 'mailReplyText'
DESC 'A reply text for every incoming message'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{4096} SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.7914.1.2.1.12 NAME 'accountStatus'
DESC 'The status of a user account: active, noaccess, disabled, deleted'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.7914.1.2.1.14 NAME 'qmailAccountPurge'
DESC 'The earliest date when a mailMessageStore will be purged'
EQUALITY numericStringMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.36 SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.7914.1.2.1.15 NAME 'mailQuotaSize'
DESC 'The size of space the user can have until further messages get bounced.'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.7914.1.2.1.16 NAME 'mailQuotaCount'
DESC 'The number of messages the user can have until further messages get bounced.'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.7914.1.2.1.17 NAME 'mailSizeMax'
DESC 'The maximum size of a single messages the user accepts.'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
#
# qmailGroup attributes
#
attributetype ( 1.3.6.1.4.1.7914.1.3.1.1 NAME 'dnmember'
DESC 'Group member specified as distinguished name.'
EQUALITY distinguishedNameMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
attributetype ( 1.3.6.1.4.1.7914.1.3.1.2 NAME 'rfc822member'
DESC 'Group member specified as normal rf822 email address.'
EQUALITY caseIgnoreIA5Match
SUBSTR caseIgnoreIA5SubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
attributetype ( 1.3.6.1.4.1.7914.1.3.1.3 NAME 'filtermember'
DESC 'Group member specified as ldap search filter.'
EQUALITY caseIgnoreIA5Match
SUBSTR caseIgnoreIA5SubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{512} )
attributetype ( 1.3.6.1.4.1.7914.1.3.1.4 NAME 'senderconfirm'
DESC 'Sender to Group has to answer confirmation email.'
EQUALITY booleanMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.7914.1.3.1.5 NAME 'membersonly'
DESC 'Sender to Group must be group member itself.'
EQUALITY booleanMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.7 SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.7914.1.3.1.6 NAME 'confirmtext'
DESC 'Text that will be sent with sender confirmation email.'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{4096} SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.7914.1.3.1.7 NAME 'dnmoderator'
DESC 'Group moderator specified as Distinguished name.'
EQUALITY distinguishedNameMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
attributetype ( 1.3.6.1.4.1.7914.1.3.1.8 NAME 'rfc822moderator'
DESC 'Group moderator specified as normal rfc822 email address.'
EQUALITY caseIgnoreIA5Match
SUBSTR caseIgnoreIA5SubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
attributetype ( 1.3.6.1.4.1.7914.1.3.1.9 NAME 'moderatortext'
DESC 'Text that will be sent with request for moderation email.'
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{4096} SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.7914.1.3.1.10 NAME 'dnsender'
DESC 'Allowed sender specified as distinguished name.'
EQUALITY distinguishedNameMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
attributetype ( 1.3.6.1.4.1.7914.1.3.1.11 NAME 'rfc822sender'
DESC 'Allowed sender specified as normal rf822 email address.'
EQUALITY caseIgnoreIA5Match
SUBSTR caseIgnoreIA5SubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
attributetype ( 1.3.6.1.4.1.7914.1.3.1.12 NAME 'filtersender'
DESC 'Allowed sender specified as ldap search filter.'
EQUALITY caseIgnoreIA5Match
SUBSTR caseIgnoreIA5SubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{512} )
#
# qldapAdmin Attributes
#
attributetype ( 1.3.6.1.4.1.7914.1.4.1.1 NAME 'qladnmanager'
DESC ''
EQUALITY distinguishedNameMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 )
attributetype ( 1.3.6.1.4.1.7914.1.4.1.2 NAME 'qlaDomainList'
DESC ''
EQUALITY caseIgnoreIA5Match
SUBSTR caseIgnoreIA5SubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
attributetype ( 1.3.6.1.4.1.7914.1.4.1.3 NAME 'qlaUidPrefix'
DESC ''
EQUALITY caseIgnoreIA5Match
SUBSTR caseIgnoreIA5SubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.7914.1.4.1.4 NAME 'qlaQmailUid'
DESC ''
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.7914.1.4.1.5 NAME 'qlaQmailGid'
DESC ''
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.7914.1.4.1.6 NAME 'qlaMailMStorePrefix'
DESC ''
EQUALITY caseIgnoreIA5Match
SUBSTR caseIgnoreIA5SubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.7914.1.4.1.7 NAME 'qlaMailQuotaSize'
DESC ''
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.7914.1.4.1.8 NAME 'qlaMailQuotaCount'
DESC ''
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.7914.1.4.1.9 NAME 'qlaMailSizeMax'
DESC ''
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.7914.1.4.1.10 NAME 'qlaMailHostList'
DESC ''
EQUALITY caseIgnoreIA5Match
SUBSTR caseIgnoreIA5SubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
# Object Class Definitions
objectclass ( 1.3.6.1.4.1.7914.1.2.2.1 NAME 'qmailUser'
DESC 'QMail-LDAP User'
SUP top
AUXILIARY
MUST ( mail )
MAY ( uid $ mailMessageStore $ homeDirectory $ userPassword $
mailAlternateAddress $ qmailUID $ qmailGID $
mailHost $ mailForwardingAddress $ deliveryProgramPath $
qmailDotMode $ deliveryMode $ mailReplyText $
accountStatus $ qmailAccountPurge $
mailQuotaSize $ mailQuotaCount $ mailSizeMax ) )
objectclass ( 1.3.6.1.4.1.7914.1.3.2.1 NAME 'qmailGroup'
DESC 'QMail-LDAP Group'
SUP top
AUXILIARY
MUST ( mail $ mailAlternateAddress $ mailMessageStore )
MAY ( dnmember $ rfc822member $ filtermember $ senderconfirm $
membersonly $ confirmtext $ dnmoderator $ rfc822moderator $
moderatortext $ dnsender $ rfc822sender $ filtersender) )
objectclass ( 1.3.6.1.4.1.7914.1.4.2.1 NAME 'qldapAdmin'
DESC 'QMail-LDAP Subtree Admin'
SUP top
AUXILIARY
MUST ( qlaDnManager $ qlaDomainList $ qlaMailMStorePrefix $
qlaMailHostList )
MAY ( qlaUidPrefix $ qlaQmailUid $ qlaQmailGid $ qlaMailQuotaSize $
qlaMailQuotaCount $ qlaMailSizeMax ) )

View File

@ -0,0 +1,103 @@
#
# qmail-ldap v3 directory schema
#
# The offical qmail-ldap OID assigned by IANA is 7914
#
# Created by: David E. Storey <dave@tamos.net>
#
# Modified and included into qmail-ldap by Andre Oppermann <opi@nrg4u.com>
#
# Schema fixes by Mike Jackson <mjj@pp.fi>
#
#
# This schema depends on:
# - core.schema
# - cosine.schema
# - nis.schema
#
#
# Example from new format
#
# attributetype ( 1.3.6.1.1.1.1.0 NAME 'uidNumber'
# DESC 'An integer uniquely identifying a user in an administrative domain'
# EQUALITY integerMatch
# SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
# Attribute Type Definitions
attributetype ( 1.3.6.1.4.1.7914.1.2.1.1 NAME 'qmailUID'
DESC 'UID of the user on the mailsystem'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.7914.1.2.1.2 NAME 'qmailGID'
DESC 'GID of the user on the mailsystem'
EQUALITY integerMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.7914.1.2.1.3 NAME 'mailMessageStore'
DESC 'Path to the maildir/mbox on the mail system'
EQUALITY caseExactIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.7914.1.2.1.4 NAME 'mailAlternateAddress'
DESC 'Secondary (alias) mailaddresses for the same user'
EQUALITY caseIgnoreIA5Match
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
attributetype ( 1.3.6.1.4.1.7914.1.2.1.5 NAME 'mailQuota'
DESC 'The amount of space the user can use until all further messages get bounced.'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.44 SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.7914.1.2.1.6 NAME 'mailHost'
DESC 'On which qmail server the messagestore of this user is located.'
EQUALITY caseIgnoreIA5Match
SUBSTR caseIgnoreIA5SubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} SINGLE-VALUE)
attributetype ( 1.3.6.1.4.1.7914.1.2.1.7 NAME 'mailForwardingAddress'
DESC 'Address(es) to forward all incoming messages to.'
EQUALITY caseIgnoreIA5Match
SUBSTR caseIgnoreIA5SubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26{256} )
attributetype ( 1.3.6.1.4.1.7914.1.2.1.8 NAME 'deliveryProgramPath'
DESC 'Program to execute for all incoming mails.'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.44 SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.7914.1.2.1.9 NAME 'qmailDotMode'
DESC 'Interpretation of .qmail files: both, dotonly, ldaponly, ldapwithprog, none'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.44 SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.7914.1.2.1.10 NAME 'deliveryMode'
DESC 'multi field entries of: normal, forwardonly, nombox, localdelivery, reply, echo'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.44 )
attributetype ( 1.3.6.1.4.1.7914.1.2.1.11 NAME 'mailReplyText'
DESC 'A reply text for every incoming message'
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{4096} SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.7914.1.2.1.12 NAME 'accountStatus'
DESC 'The status of a user account: active, nopop, disabled, deleted'
EQUALITY caseIgnoreMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.44 SINGLE-VALUE )
attributetype ( 1.3.6.1.4.1.7914.1.2.1.14 NAME 'qmailAccountPurge'
DESC 'The earliest date when a mailMessageStore will be purged'
EQUALITY numericStringMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.36 SINGLE-VALUE )
# Object Class Definitions
objectclass ( 1.3.6.1.4.1.7914.1.2.2.1 NAME 'qmailUser'
DESC 'QMail-LDAP User' SUP top AUXILIARY
MUST ( mail $ uid )
MAY ( mailMessageStore $ homeDirectory $ userPassword $
mailAlternateAddress $ qmailUID $ qmailGID $ mailQuota $
mailHost $ mailForwardingAddress $ deliveryProgramPath $
qmailDotMode $ deliveryMode $ mailReplyText $
accountStatus $ qmailAccountPurge ) )

View File

@ -0,0 +1,19 @@
SMARTSIEVE - SIEVE SCRIPT MANAGER
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Copyright 2002 Stephen Grier <stephengrier@users.sourceforge.net>
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

View File

@ -0,0 +1,16 @@
# # Start it with:
# # initctl reload-configuration
# # initctl start tcpmaps
description "TCPMAP"
author "Ralf und Wim"
start on runlevel [235] or starting postfix
stop on runlevel [S016]
#pre-start exec /etc/vmware-tools/services.sh start
#post-stop exec /etc/vmware-tools/services.sh stop
respawn
instance tcpmaps
exec /usr/local/bin/postfix_tcp_map_ads.php --log syslog localhost

View File

@ -0,0 +1,185 @@
<?php
/**
* EGroupware EMailAdmin: Support for DBMail IMAP with dbmailUser LDAP schema
*
* @link http://www.stylite.de
* @package emailadmin
* @author Ralf Becker <rb@stylite.de>
* @author Klaus Leithoff <kl@stylite.de>
* @author Lars Kneschke
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
/**
* Support for DBMail IMAP with qmailUser LDAP schema
*
* @todo base this class on dbmailqmailuser or the other way around
*/
class dbmaildbmailuser extends emailadmin_imap
{
/**
* Label shown in EMailAdmin
*/
const DESCRIPTION = 'dbmail (dbmailUser Schema)';
/**
* Capabilities of this class (pipe-separated): default, sieve, admin, logintypeemail
*/
const CAPABILITIES = 'default|sieve';
function addAccount($_hookValues) {
return $this->updateAccount($_hookValues);
}
#function deleteAccount($_hookValues) {
#}
function getUserData($_username) {
$userData = array();
$ds = $GLOBALS['egw']->ldap->ldapConnect(
$GLOBALS['egw_info']['server']['ldap_host'],
$GLOBALS['egw_info']['server']['ldap_root_dn'],
$GLOBALS['egw_info']['server']['ldap_root_pw']
);
if(!is_resource($ds)) {
return false;
}
$filter = '(&(objectclass=posixaccount)(uid='. $_username .')(dbmailGID='. sprintf("%u", crc32($GLOBALS['egw_info']['server']['install_id'])) .'))';
$justthese = array('dn', 'objectclass', 'mailQuota');
if($sri = ldap_search($ds, $GLOBALS['egw_info']['server']['ldap_context'], $filter, $justthese)) {
if($info = ldap_get_entries($ds, $sri)) {
if(isset($info[0]['mailquota'][0])) {
$userData['quotaLimit'] = $info[0]['mailquota'][0] / 1048576;
}
}
}
return $userData;
}
function updateAccount($_hookValues) {
if(!$uidnumber = (int)$_hookValues['account_id']) {
return false;
}
$ds = $GLOBALS['egw']->ldap->ldapConnect(
$GLOBALS['egw_info']['server']['ldap_host'],
$GLOBALS['egw_info']['server']['ldap_root_dn'],
$GLOBALS['egw_info']['server']['ldap_root_pw']
);
if(!is_resource($ds)) {
return false;
}
$filter = '(&(objectclass=posixaccount)(uidnumber='. $uidnumber .'))';
$justthese = array('dn', 'objectclass', 'dbmailUID', 'dbmailGID', 'mail');
$sri = ldap_search($ds, $GLOBALS['egw_info']['server']['ldap_context'], $filter, $justthese);
if($info = ldap_get_entries($ds, $sri)) {
if((!in_array('dbmailuser',$info[0]['objectclass']) && !in_array('dbmailUser',$info[0]['objectclass'])) && $info[0]['mail']) {
$newData['objectclass'] = $info[0]['objectclass'];
unset($newData['objectclass']['count']);
$newData['objectclass'][] = 'dbmailuser';
sort($newData['objectclass']);
$newData['dbmailGID'] = sprintf("%u", crc32($GLOBALS['egw_info']['server']['install_id']));
$newData['dbmailUID'] = (!empty($this->domainName)) ? $_hookValues['account_lid'] .'@'. $this->domainName : $_hookValues['account_lid'];
if(!ldap_modify($ds, $info[0]['dn'], $newData)) {
#print ldap_error($ds);
}
return true;
} else {
$newData = array();
$newData['dbmailUID'] = (!empty($this->domainName)) ? $_hookValues['account_lid'] .'@'. $this->domainName : $_hookValues['account_lid'];
$newData['dbmailGID'] = sprintf("%u", crc32($GLOBALS['egw_info']['server']['install_id']));
if(!ldap_modify($ds, $info[0]['dn'], $newData)) {
print ldap_error($ds);
_debug_array($newData);
exit;
#return false;
}
}
}
return false;
}
function setUserData($_username, $_quota) {
$ds = $GLOBALS['egw']->ldap->ldapConnect(
$GLOBALS['egw_info']['server']['ldap_host'],
$GLOBALS['egw_info']['server']['ldap_root_dn'],
$GLOBALS['egw_info']['server']['ldap_root_pw']
);
if(!is_resource($ds)) {
return false;
}
$filter = '(&(objectclass=posixaccount)(uid='. $_username .'))';
$justthese = array('dn', 'objectclass', 'dbmailGID', 'dbmailUID', 'mail');
$sri = ldap_search($ds, $GLOBALS['egw_info']['server']['ldap_context'], $filter, $justthese);
if($info = ldap_get_entries($ds, $sri)) {
$validLDAPConfig = false;
if(in_array('dbmailuser',$info[0]['objectclass']) || in_array('dbmailUser',$info[0]['objectclass'])) {
$validLDAPConfig = true;
}
if(!in_array('dbmailuser',$info[0]['objectclass']) && !in_array('dbmailUser',$info[0]['objectclass']) && $info[0]['mail']) {
$newData['objectclass'] = $info[0]['objectclass'];
unset($newData['objectclass']['count']);
$newData['objectclass'][] = 'dbmailUser';
sort($newData['objectclass']);
$newData['dbmailGID'] = sprintf("%u", crc32($GLOBALS['egw_info']['server']['install_id']));
$newData['dbmailUID'] = (!empty($this->domainName)) ? $_username .'@'. $this->domainName : $_username;
if(ldap_modify($ds, $info[0]['dn'], $newData)) {
$validLDAPConfig = true;
}
} else {
if ((in_array('dbmailuser',$info[0]['objectclass']) || in_array('dbmailUser',$info[0]['objectclass'])) && !$info[0]['dbmailuid']) {
$newData = array();
$newData['dbmailUID'] = (!empty($this->domainName)) ? $_username .'@'. $this->domainName : $_username;
if(!ldap_modify($ds, $info[0]['dn'], $newData)) {
#print ldap_error($ds);
#return false;
}
}
if ((in_array('dbmailuser',$info[0]['objectclass']) || in_array('dbmailUser',$info[0]['objectclass'])) && !$info[0]['dbmailgid']) {
$newData = array();
$newData['dbmailGID'] = sprintf("%u", crc32($GLOBALS['egw_info']['server']['install_id']));
if(!ldap_modify($ds, $info[0]['dn'], $newData)) {
#print ldap_error($ds);
#return false;
}
}
}
if($validLDAPConfig) {
$newData = array();
if((int)$_quota >= 0) {
$newData['mailQuota'] = (int)$_quota * 1048576;
} else {
$newData['mailQuota'] = array();
}
if(!ldap_modify($ds, $info[0]['dn'], $newData)) {
#print ldap_error($ds);
return false;
}
}
return true;
}
return false;
}
}

View File

@ -0,0 +1,164 @@
<?php
/**
* EGroupware EMailAdmin: Support for DBMail IMAP with qmailUser LDAP schema
*
* @link http://www.stylite.de
* @package emailadmin
* @author Ralf Becker <rb@stylite.de>
* @author Klaus Leithoff <kl@stylite.de>
* @author Lars Kneschke
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
/**
* Support for DBMail IMAP with qmailUser LDAP schema
*
* @todo base this class on dbmaildbmailuser or the other way around
*/
class dbmailqmailuser extends emailadmin_imap
{
/**
* Label shown in EMailAdmin
*/
const DESCRIPTION = 'dbmail (qmailUser Schema)';
/**
* Capabilities of this class (pipe-separated): default, sieve, admin, logintypeemail
*/
const CAPABILITIES = 'default|sieve';
function addAccount($_hookValues) {
return $this->updateAccount($_hookValues);
}
#function deleteAccount($_hookValues) {
#}
function getUserData($_username) {
$userData = array();
$ds = $GLOBALS['egw']->ldap->ldapConnect(
$GLOBALS['egw_info']['server']['ldap_host'],
$GLOBALS['egw_info']['server']['ldap_root_dn'],
$GLOBALS['egw_info']['server']['ldap_root_pw']
);
if(!is_resource($ds)) {
return false;
}
$filter = '(&(objectclass=posixaccount)(uid='. $_username .')(qmailGID='. sprintf("%u", crc32($GLOBALS['egw_info']['server']['install_id'])) .'))';
$justthese = array('dn', 'objectclass', 'mailQuota');
if($sri = ldap_search($ds, $GLOBALS['egw_info']['server']['ldap_context'], $filter, $justthese)) {
if($info = ldap_get_entries($ds, $sri)) {
if(isset($info[0]['mailquota'][0])) {
$userData['quotaLimit'] = $info[0]['mailquota'][0] / 1048576;
}
}
}
return $userData;
}
function updateAccount($_hookValues) {
if(!$uidnumber = (int)$_hookValues['account_id']) {
return false;
}
$ds = $GLOBALS['egw']->ldap->ldapConnect(
$GLOBALS['egw_info']['server']['ldap_host'],
$GLOBALS['egw_info']['server']['ldap_root_dn'],
$GLOBALS['egw_info']['server']['ldap_root_pw']
);
if(!is_resource($ds)) {
return false;
}
$filter = '(&(objectclass=posixaccount)(uidnumber='. $uidnumber .'))';
$justthese = array('dn', 'objectclass', 'qmailUID', 'qmailGID', 'mail');
$sri = ldap_search($ds, $GLOBALS['egw_info']['server']['ldap_context'], $filter, $justthese);
if($info = ldap_get_entries($ds, $sri)) {
if(!in_array('qmailuser',$info[0]['objectclass']) && $info[0]['email']) {
$newData['objectclass'] = $info[0]['objectclass'];
unset($newData['objectclass']['count']);
$newData['objectclass'][] = 'qmailuser';
sort($newData['objectclass']);
$newData['qmailGID'] = sprintf("%u", crc32($GLOBALS['egw_info']['server']['install_id']));
#$newData['qmailUID'] = (!empty($this->domainName)) ? $_username .'@'. $this->domainName : $_username;
ldap_modify($ds, $info[0]['dn'], $newData);
return true;
} else {
$newData = array();
$newData['qmailGID'] = sprintf("%u", crc32($GLOBALS['egw_info']['server']['install_id']));
#$newData['qmailUID'] = (!empty($this->domainName)) ? $_username .'@'. $this->domainName : $_username;
if(!ldap_modify($ds, $info[0]['dn'], $newData)) {
#print ldap_error($ds);
#return false;
}
}
}
return false;
}
function setUserData($_username, $_quota) {
$ds = $GLOBALS['egw']->ldap->ldapConnect(
$GLOBALS['egw_info']['server']['ldap_host'],
$GLOBALS['egw_info']['server']['ldap_root_dn'],
$GLOBALS['egw_info']['server']['ldap_root_pw']
);
if(!is_resource($ds)) {
return false;
}
$filter = '(&(objectclass=posixaccount)(uid='. $_username .'))';
$justthese = array('dn', 'objectclass', 'qmailGID', 'mail');
$sri = ldap_search($ds, $GLOBALS['egw_info']['server']['ldap_context'], $filter, $justthese);
if($info = ldap_get_entries($ds, $sri)) {
#_debug_array($info);
if(!in_array('qmailuser',$info[0]['objectclass']) && $info[0]['email']) {
$newData['objectclass'] = $info[0]['objectclass'];
unset($newData['objectclass']['count']);
$newData['objectclass'][] = 'qmailuser';
sort($newData['objectclass']);
$newData['qmailGID'] = sprintf("%u", crc32($GLOBALS['egw_info']['server']['install_id']));
ldap_modify($ds, $info[0]['dn'], $newData);
} else {
if (in_array('qmailuser',$info[0]['objectclass']) && !$info[0]['qmailgid']) {
$newData = array();
$newData['qmailGID'] = sprintf("%u", crc32($GLOBALS['egw_info']['server']['install_id']));
if(!ldap_modify($ds, $info[0]['dn'], $newData)) {
#print ldap_error($ds);
#return false;
}
}
}
$newData = array();
if((int)$_quota >= 0) {
$newData['mailQuota'] = (int)$_quota * 1048576;
} else {
$newData['mailQuota'] = array();
}
if(!ldap_modify($ds, $info[0]['dn'], $newData)) {
#print ldap_error($ds);
return false;
}
return true;
}
return false;
}
}

View File

@ -0,0 +1,160 @@
<?php
/**
* EGroupware EMailAdmin: Interface for IMAP support
*
* @link http://www.stylite.de
* @package emailadmin
* @author Ralf Becker <rb@stylite.de>
* @author Stylite AG <info@stylite.de>
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
define('IMAP_NAMESPACE_PERSONAL', 'personal');
define('IMAP_NAMESPACE_OTHERS' , 'others');
define('IMAP_NAMESPACE_SHARED' , 'shared');
define('IMAP_NAMESPACE_ALL' , 'all');
/**
* This class holds all information about the imap connection.
* This is the base class for all other imap classes.
*
* Also proxies Sieve calls to emailadmin_sieve (eg. it behaves like the former felamimail bosieve),
* to allow IMAP plugins to also manage Sieve connection.
*/
interface defaultimap
{
/**
* adds a account on the imap server
*
* @param array $_hookValues
* @return bool true on success, false on failure
*/
function addAccount($_hookValues);
/**
* updates a account on the imap server
*
* @param array $_hookValues
* @return bool true on success, false on failure
*/
function updateAccount($_hookValues);
/**
* deletes a account on the imap server
*
* @param array $_hookValues
* @return bool true on success, false on failure
*/
function deleteAccount($_hookValues);
/**
* converts a foldername from current system charset to UTF7
*
* @param string $_folderName
* @return string the encoded foldername
*/
function encodeFolderName($_folderName);
/**
* returns the supported capabilities of the imap server
* return false if the imap server does not support capabilities
*
* @return array the supported capabilites
*/
function getCapabilities();
/**
* return the delimiter used by the current imap server
*
* @return string the delimimiter
*/
function getDelimiter();
/**
* get the effective Username for the Mailbox, as it is depending on the loginType
* @param string $_username
* @return string the effective username to be used to access the Mailbox
*/
function getMailBoxUserName($_username);
/**
* Create mailbox string from given mailbox-name and user-name
*
* @param string $_folderName=''
* @return string utf-7 encoded (done in getMailboxName)
*/
function getUserMailboxString($_username, $_folderName='');
/**
* get list of namespaces
*
* @return array with keys 'personal', 'shared' and 'others' and value array with values for keys 'name' and 'delimiter'
*/
function getNameSpaceArray();
/**
* return the quota for another user
* used by admin connections only
*
* @param string $_username
* @param string $_what - what to retrieve either QMAX, USED or ALL is supported
* @return mixed the quota for specified user (by what) or array with all available Quota Information, or false
*/
function getQuotaByUser($_username, $_what='QMAX');
/**
* returns information about a user
*
* Only a stub, as admin connection requires, which is only supported for Cyrus
*
* @param string $_username
* @return array userdata
*/
function getUserData($_username);
/**
* opens a connection to a imap server
*
* @param bool $_adminConnection create admin connection if true
* @param int $_timeout=null timeout in secs, if none given fmail pref or default of 20 is used
* @throws Exception on error
*/
function openConnection($_adminConnection=false, $_timeout=null);
/**
* set userdata
*
* @param string $_username username of the user
* @param int $_quota quota in bytes
* @return bool true on success, false on failure
*/
function setUserData($_username, $_quota);
/**
* check if imap server supports given capability
*
* @param string $_capability the capability to check for
* @return bool true if capability is supported, false if not
*/
function supportsCapability($_capability);
/**
* Set vacation message for given user
*
* @param int|string $_euser nummeric account_id or imap username
* @param array $_vacation
* @param string $_scriptName=null
* @return boolean
*/
public function setVacationUser($_euser, array $_vacation, $_scriptName=null);
/**
* Get vacation message for given user
*
* @param int|string $_euser nummeric account_id or imap username
* @param string $_scriptName=null
* @throws Exception on connection error or authentication failure
* @return array
*/
public function getVacationUser($_euser, $_scriptName=null);
}

View File

@ -0,0 +1,20 @@
<?php
/**
* EGroupware EMailAdmin: generic base class for SMTP
*
* @link http://www.egroupware.org
* @package emailadmin
* @author Lars Kneschke <lkneschke@linux-at-work.de>
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License Version 2+
* @version $Id$
*/
/**
* EMailAdmin generic base class for SMTP
*
* @deprecated use emailadmin_smtp
*/
class defaultsmtp extends emailadmin_smtp
{
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,77 @@
<?php
/**
* EGroupware EMailAdmin: some base functionality
*
* @link http://www.stylite.de
* @package emailadmin
* @author Ralf Becker <rb@stylite.de>
* @copyright (c) 2014 by Ralf Becker <rb@stylite.de>
* @author Stylite AG <info@stylite.de>
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
class emailadmin_base
{
/**
* Get a list of supported SMTP servers
*
* Calls hook "smtp_server_types" to allow applications to supply own server-types
*
* @return array classname => label pairs
*/
static public function getSMTPServerTypes($extended=true)
{
$retData = array();
foreach($GLOBALS['egw']->hooks->process(array(
'location' => 'smtp_server_types',
'extended' => $extended,
), array('managementserver', 'emailadmin'), true) as $data)
{
if ($data) $retData += $data;
}
uksort($retData, function($a, $b) {
static $prio = array( // not explicitly mentioned get 0
'emailadmin_smtp' => 9,
'emailadmin_smtp_sql' => 8,
'smtpplesk' => -1,
);
return (int)$prio[$b] - (int)$prio[$a];
});
return $retData;
}
/**
* Get a list of supported IMAP servers
*
* Calls hook "imap_server_types" to allow applications to supply own server-types
*
* @param boolean $extended=true
* @return array classname => label pairs
*/
static public function getIMAPServerTypes($extended=true)
{
$retData = array();
foreach($GLOBALS['egw']->hooks->process(array(
'location' => 'imap_server_types',
'extended' => $extended,
), array('managementserver', 'emailadmin'), true) as $data)
{
if ($data) $retData += $data;
}
uksort($retData, function($a, $b) {
static $prio = array( // not explicitly mentioned get 0
'emailadmin_imap' => 9,
'emailadmin_oldimap' => 9,
'managementserver_imap' => 8,
'emailadmin_dovecot' => 7,
'emailadmin_imap_dovecot' => 7,
'cyrusimap' => 6,
'emailadmin_imap_cyrus' => 6,
'pleskimap' => -1,
);
return (int)$prio[$b] - (int)$prio[$a];
});
return $retData;
}
}

View File

@ -0,0 +1,242 @@
<?php
/**
* EGroupware EMailAdmin: Business logic
*
* @link http://www.stylite.de
* @package emailadmin
* @author Ralf Becker <rb@stylite.de>
* @author Klaus Leithoff <kl@stylite.de>
* @author Lars Kneschke
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
/**
* Business logic
*/
class emailadmin_bo
{
/**
* Name of app the table is registered
*/
const APP = 'emailadmin';
static $sessionData = array();
#var $userSessionData;
var $LDAPData;
//var $SMTPServerType = array(); // holds a list of config options
static $SMTPServerType = array(
'emailadmin_smtp' => array(
'description' => 'standard SMTP-Server',
'classname' => 'emailadmin_smtp'
),
);
//var $IMAPServerType = array(); // holds a list of config options
static $IMAPServerType = array(
'defaultimap' => array(
'description' => 'standard IMAP server',
'protocol' => 'imap',
'classname' => 'defaultimap'
)
);
var $imapClass; // holds the imap/pop3 class
var $smtpClass; // holds the smtp class
var $tracking; // holds the tracking object
/**
* @var emailadmin_so
*/
var $soemailadmin;
function __construct($_profileID=false,$_restoreSesssion=true)
{
parent::__construct(self::APP,self::TABLE,null,'',true);
//error_log(__METHOD__.function_backtrace());
if (!is_object($GLOBALS['emailadmin_bo']))
{
$GLOBALS['emailadmin_bo'] = $this;
}
//init with all servertypes and translate the standard entry description
self::$SMTPServerType = self::getSMTPServerTypes();
self::$IMAPServerType = self::getIMAPServerTypes();
self::$SMTPServerType['emailadmin_smtp']['description'] = lang('standard SMTP-Server');
self::$IMAPServerType['defaultimap']['description'] = lang('standard IMAP Server');
if ($_restoreSesssion) // && !(is_array(self::$sessionData) && (count(self::$sessionData)>0)) )
{
$this->restoreSessionData();
}
if ($_restoreSesssion===false) // && (is_array(self::$sessionData) && (count(self::$sessionData)>0)) )
{
// make sure session data will be created new
self::$sessionData = array();
self::saveSessionData();
}
#_debug_array(self::$sessionData);
}
function getAccountEmailAddress($_accountName, $_profileID)
{
$profileData = $this->getProfile($_profileID);
#$smtpClass = self::$SMTPServerType[$profileData['smtpType']]['classname'];
if ($profileData['smtpType']=='defaultsmtp') $profileData['smtpType']='emailadmin_smtp';
$smtpClass = CreateObject('emailadmin.'.self::$SMTPServerType[$profileData['smtpType']]['classname']);
#return empty($smtpClass) ? False : ExecMethod("emailadmin.$smtpClass.getAccountEmailAddress",$_accountName,3,$profileData);
return is_object($smtpClass) ? $smtpClass->getAccountEmailAddress($_accountName) : False;
}
function getMailboxString($_folderName)
{
if (is_object($this->imapClass))
{
return ExecMethod("emailadmin.".$this->imapClass.".getMailboxString",$_folderName,3,$this->profileData);
return $this->imapClass->getMailboxString($_folderName);
}
else
{
return false;
}
}
/**
* Get a list of supported SMTP servers
*
* Calls hook "smtp_server_types" to allow applications to supply own server-types
*
* @return array classname => label pairs
* @deprecated use emailadmin_base::getSMTPServerTypes()
*/
static public function getSMTPServerTypes($extended=true)
{
return emailadmin_base::getSMTPServerTypes($extended);
}
/**
* Get a list of supported IMAP servers
*
* Calls hook "imap_server_types" to allow applications to supply own server-types
*
* @param boolean $extended=true
* @return array classname => label pairs
* @deprecated use emailadmin_base::getIMAPServerTypes()
*/
static public function getIMAPServerTypes($extended=true)
{
return emailadmin_base::getIMAPServerTypes($extended);
}
/**
* Query user data from incomming (IMAP) and outgoing (SMTP) mail-server
*
* @param int $_accountID
* @return array
*/
function getUserData($_accountID)
{
return false;
}
function restoreSessionData()
{
$GLOBALS['egw_info']['flags']['autoload'] = array(__CLASS__,'autoload');
//echo function_backtrace()."<br>";
//unserializing the sessiondata, since they are serialized for objects sake
self::$sessionData = (array) unserialize($GLOBALS['egw']->session->appsession('session_data','emailadmin'));
}
/**
* Autoload classes from emailadmin, 'til they get autoloading conform names
*
* @param string $class
*/
static function autoload($class)
{
if (strlen($class)<100)
{
if (file_exists($file=EGW_INCLUDE_ROOT.'/emailadmin/inc/class.'.$class.'.inc.php'))
{
include_once($file);
}
elseif (strpos($class,'activesync')===0)
{
//temporary solution/hack to fix the false loading of activesync stuff, even as we may not need it for ui
//but trying to load it blocks the mail app
//error_log(__METHOD__.__LINE__.' '.$class);
include_once(EGW_INCLUDE_ROOT.'/activesync/backend/egw.php');
}
}
}
function saveSMTPForwarding($_accountID, $_forwardingAddress, $_keepLocalCopy)
{
if (is_object($this->smtpClass))
{
#$smtpClass = CreateObject('emailadmin.'.$this->smtpClass,$this->profileID);
#$smtpClass->saveSMTPForwarding($_accountID, $_forwardingAddress, $_keepLocalCopy);
$this->smtpClass->saveSMTPForwarding($_accountID, $_forwardingAddress, $_keepLocalCopy);
}
}
/**
* called by the validation hook in setup
*
* @param array $settings following keys: mail_server, mail_server_type {IMAP|IMAPS|POP-3|POP-3S},
* mail_login_type {standard|vmailmgr}, mail_suffix (domain), smtp_server, smtp_port, smtp_auth_user, smtp_auth_passwd
*/
function setDefaultProfile($settings)
{
return false;
}
function saveSessionData()
{
// serializing the session data, for the sake of objects
if (is_object($GLOBALS['egw']->session)) // otherwise setup(-cli) fails
{
$GLOBALS['egw']->session->appsession('session_data','emailadmin',serialize(self::$sessionData));
}
#$GLOBALS['egw']->session->appsession('user_session_data','',$this->userSessionData);
}
function updateAccount($_hookValues) {
if (is_object($this->imapClass)) {
#ExecMethod("emailadmin.".$this->imapClass.".updateAccount",$_hookValues,3,$this->profileData);
$this->imapClass->updateAccount($_hookValues);
}
if (is_object($this->smtpClass)) {
#ExecMethod("emailadmin.".$this->smtpClass.".updateAccount",$_hookValues,3,$this->profileData);
$this->smtpClass->updateAccount($_hookValues);
}
self::$sessionData = array();
$this->saveSessionData();
}
/**
* Get ID of default new account profile
*
* @return int
* @deprecated use emailadmin_account::get_default_acc_id()
*/
static function getDefaultAccID()
{
return emailadmin_account::get_default_acc_id();
}
/**
* Get ID of User specific default new account profile
*
* @return int
* @deprecated use emailadmin_account::get_default_acc_id()
*/
static function getUserDefaultAccID()
{
return emailadmin_account::get_default_acc_id();
}
}

View File

@ -0,0 +1,460 @@
<?php
/**
* EGroupware EMailAdmin: Mail account credentials
*
* @link http://www.stylite.de
* @package emailadmin
* @author Ralf Becker <rb@stylite.de>
* @copyright (c) 2013-14 by Ralf Becker <rb@stylite.de>
* @author Stylite AG <info@stylite.de>
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
/**
* Mail account credentials are stored in egw_ea_credentials for given
* acocunt-id, users and types (imap, smtp and optional admin connection).
*
* Passwords in credentials are encrypted with either user password from session
* or the database password.
*/
class emailadmin_credentials
{
const APP = 'emailadmin';
const TABLE = 'egw_ea_credentials';
const USER_EDITABLE_JOIN = 'JOIN egw_ea_accounts ON egw_ea_accounts.acc_id=egw_ea_credentials.acc_id AND acc_user_editable=1';
/**
* Credentials for type IMAP
*/
const IMAP = 1;
/**
* Credentials for type SMTP
*/
const SMTP = 2;
/**
* Credentials for admin connection
*/
const ADMIN = 8;
/**
* All credentials IMAP|SMTP|ADMIN
*/
const ALL = 11;
/**
* Password in cleartext
*/
const CLEARTEXT = 0;
/**
* Password encrypted with user password
*/
const USER = 1;
/**
* Password encrypted with system secret
*/
const SYSTEM = 2;
/**
* Translate type to prefix
*
* @var array
*/
protected static $type2prefix = array(
self::IMAP => 'acc_imap_',
self::SMTP => 'acc_smtp_',
self::ADMIN => 'acc_imap_admin_',
);
/**
* Reference to global db object
*
* @var egw_db
*/
static protected $db;
/**
* Mcrypt instance initialised with system specific key
*
* @var ressource
*/
static protected $system_mcrypt;
/**
* Mcrypt instance initialised with user password from session
*
* @var ressource
*/
static protected $user_mcrypt;
/**
* Cache for credentials to minimize database access
*
* @var array
*/
protected static $cache = array();
/**
* Read credentials for a given mail account
*
* @param int $acc_id
* @param int $type=null default return all credentials
* @param int|array $account_id=null default use current user or all (in that order)
* @return array with values for (imap|smtp|admin)_(username|password|cred_id)
*/
public static function read($acc_id, $type=null, $account_id=null)
{
if (is_null($type)) $type = self::ALL;
if (is_null($account_id))
{
$account_id = array(0, $GLOBALS['egw_info']['user']['account_id']);
}
// check cache, if nothing found, query database
// check assumes always same accounts (eg. 0=all plus own account_id) are asked
if (!isset(self::$cache[$acc_id]) ||
!($rows = array_intersect_key(self::$cache[$acc_id], array_flip((array)$account_id))))
{
$rows = self::$db->select(self::TABLE, '*', array(
'acc_id' => $acc_id,
'account_id' => $account_id,
'(cred_type & '.(int)$type.') > 0', // postgreSQL require > 0, or gives error as it expects boolean
), __LINE__, __FILE__, false,
// account_id DESC ensures 0=all allways overwrite (old user-specific credentials)
'ORDER BY account_id ASC', self::APP);
//error_log(__METHOD__."($acc_id, $type, ".array2string($account_id).") nothing in cache");
}
else
{
ksort($rows); // ORDER BY account_id ASC
// flatten account_id => cred_type => row array again, to have format like from database
$rows = call_user_func_array('array_merge', $rows);
//error_log(__METHOD__."($acc_id, $type, ".array2string($account_id).") read from cache ".array2string($rows));
}
$results = array();
foreach($rows as $row)
{
// update cache (only if we have database-iterator and all credentials asked!)
if (!is_array($rows) && $type == self::ALL)
{
self::$cache[$acc_id][$row['account_id']][$row['cred_type']] = $row;
//error_log(__METHOD__."($acc_id, $type, ".array2string($account_id).") stored to cache ".array2string($row));
}
$password = self::decrypt($row);
foreach(self::$type2prefix as $pattern => $prefix)
{
if ($row['cred_type'] & $pattern)
{
$results[$prefix.'username'] = $row['cred_username'];
$results[$prefix.'password'] = $password;
$results[$prefix.'cred_id'] = $row['cred_id'];
$results[$prefix.'account_id'] = $row['account_id'];
}
}
}
return $results;
}
/**
* Generate username according to acc_imap_logintype and fetch password from session
*
* @param array $data values for acc_imap_logintype and acc_domain
* @param boolean $set_identity=true true: also set identity values realname&email, if not yet set
* @return array with values for keys 'acc_(imap|smtp)_(username|password|cred_id)'
*/
public static function from_session(array $data, $set_identity=true)
{
switch($data['acc_imap_logintype'])
{
case 'standard':
$username = $GLOBALS['egw_info']['user']['account_lid'];
break;
case 'vmailmgr':
$username = $GLOBALS['egw_info']['user']['account_lid'].'@'.$data['acc_domain'];
break;
case 'email':
$username = $GLOBALS['egw_info']['user']['account_email'];
break;
case 'uidNumber':
$username = 'u'.$GLOBALS['egw_info']['user']['account_id'].'@'.$data['acc_domain'];
break;
case 'admin':
// data should have been stored in credentials table
throw new egw_exception_assertion_failed('data[acc_imap_logintype]=admin and no stored username/password for data[acc_id]='.$data['acc_id'].'!');
default:
throw new egw_exception_wrong_parameter("Unknown data[acc_imap_logintype]=".array2string($data['acc_imap_logintype']).'!');
}
$password = base64_decode(egw_cache::getSession('phpgwapi', 'password'));
$realname = !$set_identity || $data['ident_realname'] ? $data['ident_realname'] :
$GLOBALS['egw_info']['user']['account_fullname'];
$email = !$set_identity || $data['ident_email'] ? $data['ident_email'] :
$GLOBALS['egw_info']['user']['account_email'];
return array(
'ident_realname' => $realname,
'ident_email' => $email,
'acc_imap_username' => $username,
'acc_imap_password' => $password,
'acc_imap_cred_id' => $data['acc_imap_logintype'], // to NOT store it
'acc_imap_account_id' => 'c',
) + ($data['acc_smtp_auth_session'] ? array(
// only set smtp
'acc_smtp_username' => $username,
'acc_smtp_password' => $password,
'acc_smtp_cred_id' => $data['acc_imap_logintype'], // to NOT store it
'acc_smtp_account_id' => 'c',
) : array());
}
/**
* Write and encrypt credentials
*
* @param int $acc_id id of account
* @param string $username
* @param string $password cleartext password to write
* @param int $type self::IMAP, self::SMTP or self::ADMIN
* @param int $account_id if of user-account for whom credentials are
* @param int $cred_id=null id of existing credentials to update
* @param ressource $mcrypt=null mcrypt ressource for user, default calling self::init_crypt(true)
* @return int cred_id
*/
public static function write($acc_id, $username, $password, $type, $account_id=0, $cred_id=null, $mcrypt=null)
{
//error_log(__METHOD__."(acc_id=$acc_id, '$username', \$password, type=$type, account_id=$account_id, cred_id=$cred_id)");
if (!empty($cred_id) && !is_numeric($cred_id) || !is_numeric($account_id))
{
error_log(__METHOD__."($acc_id, '$username', \$password, $type, $account_id, ".array2string($cred_id).") not storing session credentials!");
return; // do NOT store credentials from session of current user!
}
$pw_enc = self::CLEARTEXT;
$data = array(
'acc_id' => $acc_id,
'account_id' => $account_id,
'cred_username' => $username,
'cred_password' => self::encrypt($password, $account_id, $pw_enc, $mcrypt),
'cred_type' => $type,
'cred_pw_enc' => $pw_enc,
);
//error_log(__METHOD__."($acc_id, '$username', '$password', $type, $account_id, $cred_id, $mcrypt) storing ".array2string($data).' '.function_backtrace());
if ($cred_id > 0)
{
self::$db->update(self::TABLE, $data, array('cred_id' => $cred_id), __LINE__, __FILE__, self::APP);
}
else
{
self::$db->insert(self::TABLE, $data, array(
'acc_id' => $acc_id,
'account_id' => $account_id,
'cred_type' => $type,
), __LINE__, __FILE__, self::APP);
$cred_id = self::$db->get_last_insert_id(self::TABLE, 'cred_id');
}
// invalidate cache
unset(self::$cache[$acc_id][$account_id]);
//error_log(__METHOD__."($acc_id, '$username', \$password, $type, $account_id) returning $cred_id");
return $cred_id;
}
/**
* Delete credentials from database
*
* @param int $acc_id
* @param int|array $account_id=null
* @param int $type=self::ALL self::IMAP, self::SMTP or self::ADMIN
* @return int number of rows deleted
*/
public static function delete($acc_id, $account_id=null, $type=self::ALL)
{
if (!($acc_id > 0) && !isset($account_id))
{
throw new egw_exception_wrong_parameter(__METHOD__."() no acc_id AND no account_id parameter!");
}
$where = array();
if ($acc_id > 0) $where['acc_id'] = $acc_id;
if (isset($account_id)) $where['account_id'] = $account_id;
if ($type != self::ALL) $where[] = '(cred_type & '.(int)$type.') > 0'; // postgreSQL require > 0, or gives error as it expects boolean
self::$db->delete(self::TABLE, $where, __LINE__, __FILE__, self::APP);
// invalidate cache: we allways unset everything about an account to simplify cache handling
foreach($acc_id > 0 ? (array)$acc_id : array_keys(self::$cache) as $acc_id)
{
unset(self::$cache[$acc_id]);
}
$ret = self::$db->affected_rows();
//error_log(__METHOD__."($acc_id, ".array2string($account_id).", $type) affected $ret rows");
return $ret;
}
/**
* Encrypt password for storing in database
*
* @param string $password cleartext password
* @param int $account_id user-account password is for
* @param int &$pw_enc on return encryption used
* @param ressource $mcrypt=null mcrypt ressource for user, default calling self::init_crypt(true)
* @return string encrypted password
*/
protected static function encrypt($password, $account_id, &$pw_enc, $mcrypt=null)
{
if ($account_id > 0 && $account_id == $GLOBALS['egw_info']['user']['account_id'] &&
($mcrypt || ($mcrypt = self::init_crypt(true))))
{
$pw_enc = self::USER;
$password = mcrypt_generic($mcrypt, $password);
}
elseif (($mcrypt = self::init_crypt(false)))
{
$pw_enc = self::SYSTEM;
$password = mcrypt_generic($mcrypt, $password);
}
else
{
$pw_enc = self::CLEARTEXT;
}
//error_log(__METHOD__."(, $account_id, , $mcrypt) pw_enc=$pw_enc returning ".array2string(base64_encode($password)));
return base64_encode($password);
}
/**
* Decrypt password from database
*
* @param array $row database row
* @param ressource $mcrypt=null mcrypt ressource for user, default calling self::init_crypt(true)
*/
protected static function decrypt(array $row, $mcrypt=null)
{
switch ($row['cred_pw_enc'])
{
case self::CLEARTEXT:
return base64_decode($row['cred_password']);
case self::USER:
case self::SYSTEM:
if (($row['cred_pw_enc'] != self::USER || !$mcrypt) &&
!($mcrypt = self::init_crypt($row['cred_pw_enc'] == self::USER)))
{
throw new egw_exception_wrong_parameter("Password encryption type $row[cred_pw_enc] NOT available!");
}
return (!empty($row['cred_password'])?trim(mdecrypt_generic($mcrypt, base64_decode($row['cred_password']))):'');
}
throw new egw_exception_wrong_parameter("Unknow password encryption type $row[cred_pw_enc]!");
}
/**
* Hook called when user changes his password, to re-encode his credentials with his new password
*
* It also changes all user credentials encoded with system password!
*
* It only changes credentials from user-editable accounts, as user probably
* does NOT know password set by admin!
*
* @param array $data values for keys 'old_passwd', 'new_passwd', 'account_id'
*/
static public function changepassword(array $data)
{
if (empty($data['old_passwd'])) return;
$old_mcrypt = null;
foreach(self::$db->select(self::TABLE, self::TABLE.'.*', array(
'account_id' => $data['account_id']
),__LINE__, __FILE__, false, '', 'emailadmin', 0, self::USER_EDITABLE_JOIN) as $row)
{
if (!isset($old_mcrypt))
{
$old_mcrypt = self::init_crypt($data['old_passwd']);
$new_mcrypt = self::init_crypt($data['new_passwd']);
if (!$old_mcrypt && !$new_mcrypt) return;
}
$password = self::decrypt($row, $old_mcrypt);
self::write($row['acc_id'], $row['cred_username'], $password, $row['cred_type'],
$row['account_id'], $row['cred_id'], $new_mcrypt);
}
}
/**
* Check if session encryption is configured, possible and initialise it
*
* @param boolean|string $user=false true: use user-password from session,
* false: database password or string with password to use
* @param string $algo='tripledes'
* @param string $mode='ecb'
* @return ressource|boolean mcrypt ressource to use or false if not available
*/
static public function init_crypt($user=false, $algo='tripledes',$mode='ecb')
{
if (is_string($user))
{
// do NOT use/set/change static object
}
elseif ($user)
{
$mcrypt =& self::$user_mcrypt;
}
else
{
$mcrypt =& self::$system_mcrypt;
}
if (!isset($mcrypt))
{
if (is_string($user))
{
$key = $user;
}
elseif ($user)
{
$session_key = egw_cache::getSession('phpgwapi', 'password');
if (empty($session_key)) return false;
$key = base64_decode($session_key);
}
else
{
$key = self::$db->Password;
}
if (!check_load_extension('mcrypt'))
{
error_log(__METHOD__."() required PHP extension mcrypt not loaded and can not be loaded, passwords can be NOT encrypted!");
$mcrypt = false;
}
elseif (!($mcrypt = mcrypt_module_open($algo, '', $mode, '')))
{
error_log(__METHOD__."() could not mcrypt_module_open(algo='$algo','',mode='$mode',''), passwords can be NOT encrypted!");
$mcrypt = false;
}
else
{
$iv_size = mcrypt_enc_get_iv_size($mcrypt);
$iv = !isset($GLOBALS['egw_info']['server']['mcrypt_iv']) || strlen($GLOBALS['egw_info']['server']['mcrypt_iv']) < $iv_size ?
mcrypt_create_iv ($iv_size, MCRYPT_RAND) : substr($GLOBALS['egw_info']['server']['mcrypt_iv'],0,$iv_size);
$key_size = mcrypt_enc_get_key_size($mcrypt);
if (bytes($key) > $key_size) $key = cut_bytes($key,0,$key_size-1);
if (mcrypt_generic_init($mcrypt, $key, $iv) < 0)
{
error_log(__METHOD__."() could not initialise mcrypt, passwords can be NOT encrypted!");
$mcrypt = false;
}
}
}
//error_log(__METHOD__."(".array2string($user).") key=".array2string($key)." returning ".array2string($mcrypt));
return $mcrypt;
}
/**
* Init our static properties
*/
static public function init_static()
{
self::$db = isset($GLOBALS['egw_setup']) ? $GLOBALS['egw_setup']->db : $GLOBALS['egw']->db;
}
}
emailadmin_credentials::init_static();

View File

@ -0,0 +1,167 @@
<?php
/**
* EGroupware - eMailAdmin hooks
*
* @link http://www.egroupware.org
* @package emailadmin
* @author Klaus Leithoff <leithoff-AT-stylite.de>
* @author Ralf Becker <rb@stylite.de>
* @copyright (c) 2008-14 by leithoff-At-stylite.de
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
/**
* diverse static emailadmin hooks
*/
class emailadmin_hooks
{
/**
* Hook called to add action to user
*
* @param array $data
* @param int $data['account_id'] numerical id
*/
static function edit_user($data)
{
unset($data); // not used
$actions = array();
if ($GLOBALS['egw_info']['user']['apps']['emailadmin'])
{
$actions[] = array(
'id' => 'mail_account',
'caption' => 'mail account',
'url' => 'menuaction=emailadmin.emailadmin_wizard.edit&account_id=$id',
'popup' => '720x530',
'icon' => 'emailadmin/navbar',
);
}
return $actions;
}
/**
* Password changed hook --> unset cached objects, as password might be used for email connection
*
* @param array $hook_data
*/
public static function changepassword($hook_data)
{
if (!empty($hook_data['old_passwd']))
{
emailadmin_credentials::changepassword($hook_data);
}
}
/**
* Hook called before an account get deleted
*
* @param array $data
* @param int $data['account_id'] numerical id
* @param string $data['account_lid'] account-name
* @param int $data['new_owner'] account-id of new owner, or false if data should get deleted
*/
static function deleteaccount(array $data)
{
// as mail accounts contain credentials, we do NOT assign them to user users
emailadmin_account::delete(0, $data['account_id']);
}
/**
* Hook called before a group get deleted
*
* @param array $data
* @param int $data['account_id'] numerical id
* @param string $data['account_name'] account-name
*/
static function deletegroup(array $data)
{
emailadmin_account::delete(0, $data['account_id']);
}
/**
* Hook called when an account get added or edited
*
* @param array $data
* @param int $data['account_id'] numerical id
* @param string $data['account_lid'] account-name
* @param string $data['account_email'] email
*/
static function addaccount(array $data)
{
$method = $data['location'] == 'addaccount' ? 'addAccount' : 'updateAccount';
foreach(emailadmin_account::search((int)$data['account_id'], 'params') as $params)
{
if (!emailadmin_account::is_multiple($params)) continue; // no need to waste time on personal accounts
try {
$account = new emailadmin_account($params);
if ($account->acc_imap_type != 'emailadmin_imap' && ($imap = $account->imapServer(true)) &&
is_a($imap, 'emailadmin_imap') && get_class($imap) != 'emailadmin_imap')
{
$imap->$method($data);
}
if ($account->acc_smtp_type != 'emailadmin_smtp' && ($smtp = $account->smtpServer(true)) &&
is_a($smtp, 'emailadmin_smtp') && get_class($smtp) != 'emailadmin_smtp')
{
$smtp->$method($data);
}
}
catch(Exception $e) {
_egw_log_exception($e);
// ignore exception, without stalling other hooks
}
}
}
/**
* Detect imap and smtp server plugins from EMailAdmin's inc directory
*
* @param string|array $data location string or array with key 'location' and other params
* @return array
*/
public static function server_types($data)
{
$location = is_array($data) ? $data['location'] : $data;
$extended = is_array($data) ? $data['extended'] : false;
$types = array();
foreach(scandir($dir=EGW_INCLUDE_ROOT.'/emailadmin/inc') as $file)
{
$matches = null;
if (!preg_match('/^class\.([^.]*(smtp|imap|postfix|dovecot|dbmail)[^.*]*)\.inc\.php$/', $file, $matches)) continue;
$class_name = $matches[1];
include_once($dir.'/'.$file);
if (!class_exists($class_name)) continue;
$is_imap = $class_name == 'emailadmin_imap' || is_subclass_of($class_name, 'emailadmin_imap');
$is_smtp = $class_name == 'emailadmin_smtp' || is_subclass_of($class_name, 'emailadmin_smtp') && $class_name != 'defaultsmtp';
if ($is_smtp && $location == 'smtp_server_types' || $is_imap && $location == 'imap_server_types')
{
// only register new imap-class-names
if ($is_imap && $class_name == emailadmin_account::getIcClass ($class_name, true)) continue;
$type = array(
'classname' => $class_name,
'description' => is_callable($function=$class_name.'::description') ? call_user_func($function) : $class_name,
);
if ($is_imap) $type['protocol'] = 'imap';
$types[$class_name] = $type;
}
}
if (!$extended)
{
foreach($types as $class_name => &$type)
{
$type = $type['description'];
}
}
//error_log(__METHOD__."(".array2string($data).") returning ".array2string($types));
return $types;
}
}

View File

@ -0,0 +1,91 @@
<?php
/**
* EGroupware EMailAdmin: Horde_Cache compatible class using egw_cache
*
* @link http://www.stylite.de
* @package emailadmin
* @author Ralf Becker <rb-AT-stylite.de>
* @copyright (c) 2013 by Ralf Becker <rb-AT-stylite.de>
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
/**
* Horde_Cache compatible class using egw_cache
*/
class emailadmin_horde_cache
{
/**
* App to use
*/
const APP = 'mail';
/**
* How to cache: instance-specific
*/
const LEVEL = egw_cache::INSTANCE;
/**
* Retrieve cached data.
*
* @param string $key Object ID to query.
* @param integer $lifetime Lifetime of the object in seconds.
*
* @return mixed Cached data, or false if none was found.
*/
public function get($key, $lifetime = 0)
{
$ret = egw_cache::getCache(self::LEVEL, 'mail', $key);
return !is_null($ret) ? $ret : false;
}
/**
* Store an object in the cache.
*
* @param string $key Object ID used as the caching key.
* @param mixed $data Data to store in the cache.
* @param integer $lifetime Object lifetime - i.e. the time before the
* data becomes available for garbage
* collection. If 0 will not be GC'd.
*/
public function set($key, $data, $lifetime = 0)
{
egw_cache::setCache(self::LEVEL, 'mail', $key, $data, $lifetime);
}
/**
* Checks if a given key exists in the cache, valid for the given
* lifetime.
*
* @param string $key Cache key to check.
* @param integer $lifetime Lifetime of the key in seconds.
*
* @return boolean Existence.
*/
public function exists($key, $lifetime = 0)
{
return !is_null(egw_cache::getCache(self::LEVEL, 'mail', $key));
}
/**
* Expire any existing data for the given key.
*
* @param string $key Cache key to expire.
*
* @return boolean Success or failure.
*/
public function expire($key)
{
egw_cache::unsetCache(self::LEVEL, 'mail', $key);
}
/**
* Clears all data from the cache.
*
* @throws Horde_Cache_Exception
*/
public function clear()
{
egw_cache::flush(self::LEVEL, self::APP);
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,190 @@
<?php
/**
* EGroupware EMailAdmin: Support for Cyrus IMAP
*
* @link http://www.stylite.de
* @package emailadmin
* @author Ralf Becker <rb@stylite.de>
* @author Klaus Leithoff <kl@stylite.de>
* @author Lars Kneschke
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
/**
* Manages connection to Cyrus IMAP server
*/
class emailadmin_imap_cyrus extends emailadmin_imap
{
/**
* Label shown in EMailAdmin
*/
const DESCRIPTION = 'Cyrus';
/**
* Capabilities of this class (pipe-separated): default, sieve, admin, logintypeemail
*/
const CAPABILITIES = 'default|sieve|timedsieve|admin|logintypeemail';
/**
* prefix for groupnames, when using groups in ACL Management
*/
const ACL_GROUP_PREFIX = 'group:';
// mailbox delimiter
var $mailboxDelimiter = '.';
// mailbox prefix
var $mailboxPrefix = '';
/**
* Updates an account
*
* @param array $_hookValues only value for key 'account_lid' and 'new_passwd' is used
*/
function addAccount($_hookValues)
{
return $this->updateAccount($_hookValues);
}
/**
* Delete an account
*
* @param array $_hookValues only value for key 'account_lid' is used
*/
function deleteAccount($_hookValues)
{
// some precausion to really delete just _one_ account
if (strpos($_hookValues['account_lid'],'%') !== false ||
strpos($_hookValues['account_lid'],'*') !== false)
{
return false;
}
return !!$this->deleteUsers($_hookValues['account_lid']);
}
/**
* Delete multiple (user-)mailboxes via a wildcard, eg. '%' for whole domain
*
* Domain is the configured domain and it uses the Cyrus admin user
*
* @return string $username='%' username containing wildcards, default '%' for all users of a domain
* @return int|boolean number of deleted mailboxes on success or false on error
*/
function deleteUsers($username='%')
{
if(!$this->acc_imap_administration || empty($username))
{
return false;
}
// we need a admin connection
$this->adminConnection();
$mailboxName = $this->getUserMailboxString($username);
list($reference,$restriction) = explode($username,$mailboxName,2);
try {
$mboxes = $this->getMailboxes($reference,$username.$restriction);
//error_log(__METHOD__."('$username') getMailboxes('$reference','$username$restriction') = ".array2string($mboxes));
foreach($mboxes as $mbox)
{
// give the admin account the rights to delete this mailbox
$this->setACL($mbox, $this->adminUsername, 'lrswipcda');
$this->deleteMailbox($mbox);
}
}
catch(Horde_Imap_Client_Exception $e) {
_egw_log_exception($e);
$this->disconnect();
return false;
}
$this->disconnect();
return count($mboxes);
}
/**
* returns information about a user
* currently only supported information is the current quota
*
* @param string $_username
* @return array userdata
*/
function getUserData($_username)
{
$this->adminConnection();
$userData = array();
if(($quota = $this->getQuotaByUser($_username,'ALL')))
{
$userData['quotaLimit'] = (int)($quota['limit'] / 1024);
$userData['quotaUsed'] = (int)($quota['usage'] / 1024);
}
//error_log(__LINE__.': '.__METHOD__."('$_username') quota=".array2string($quota).' returning '.array2string($userData));
$this->disconnect();
return $userData;
}
/**
* Set information about a user
* currently only supported information is the current quota
*
* @param string $_username
* @param int $_quota
*/
function setUserData($_username, $_quota)
{
if(!$this->acc_imap_administration)
{
return false;
}
// create a admin connection
$this->adminConnection();
$mailboxName = $this->getUserMailboxString($_username);
$this->setQuota($mailboxName, array('STORAGE' => (int)$_quota > 0 ? (int)$_quota*1024 : -1));
$this->disconnect();
return true;
}
/**
* Updates an account
*
* @param array $_hookValues only value for key 'account_lid' and 'new_passwd' is used
*/
function updateAccount($_hookValues)
{
if(!$this->acc_imap_administration)
{
return false;
}
// we need a admin connection
$this->adminConnection();
// create the mailbox, with the account_lid, as it is passed from the hook values (gets transformed there if needed)
$mailboxName = $this->getUserMailboxString($_hookValues['account_lid'], $mailboxName);
// make sure we use the correct username here.
$username = $this->getMailBoxUserName($_hookValues['account_lid']);
$folderInfo = $this->getMailboxes('', $mailboxName, true);
if(empty($folderInfo))
{
try {
$this->createMailbox($mailboxName);
$this->setACL($mailboxName, $username, "lrswipcda");
}
catch(Horde_Imap_Client_Exception $e) {
_egw_log_exception($e);
}
}
$this->disconnect();
}
}

View File

@ -0,0 +1,257 @@
<?php
/**
* EGroupware EMailAdmin: Support for Dovecot IMAP
*
* @link http://www.stylite.de
* @package emailadmin
* @author Ralf Becker <rb@stylite.de>
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
/**
* Manages connection to Dovecot IMAP server
*
* Basic differences to cyrusimap:
* - no real admin user, but master user, whos password can be used to connect instead of real user
* - mailboxes have to be deleted in filesystem (no IMAP command for that)
* --> require by webserver writable user_home to be configured, otherwise deleting get ignored like with defaultimap
* - quota can be read, but not set
*/
class emailadmin_imap_dovecot extends emailadmin_imap
{
/**
* Label shown in EMailAdmin
*/
const DESCRIPTION = 'Dovecot';
/**
* Capabilities of this class (pipe-separated): default, sieve, admin, logintypeemail
*/
const CAPABILITIES = 'default|sieve|timedsieve|admin|logintypeemail';
/**
* prefix for groupnames, when using groups in ACL Management
*/
const ACL_GROUP_PREFIX = '$';
// mailbox delimiter
var $mailboxDelimiter = '.';
// mailbox prefix
var $mailboxPrefix = '';
/**
* To enable deleting of a mailbox user_home has to be set and be writable by webserver
*
* Supported placeholders are:
* - %d domain
* - %u username part of email
* - %s email address
*
* @var string
*/
var $user_home; // = '/var/dovecot/imap/%d/%u';
/**
* Ensure we use an admin connection
*
* Prefixes adminUsername with real username (separated by an asterisk)
*
* @param string $_username=null create an admin connection for given user or $this->acc_imap_username
*/
function adminConnection($_username=null)
{
// generate admin user name of $username
if (($pos = strpos($this->acc_imap_admin_username, '*')) !== false) // remove evtl. set username
{
$this->params['acc_imap_admin_username'] = substr($this->acc_imap_admin_username, $pos+1);
}
$this->params['acc_imap_admin_username'] = (is_string($_username) ? $_username : $this->acc_imap_username).
'*'.$this->acc_imap_admin_username;
parent::adminConnection($_username);
}
/**
* Updates an account
*
* @param array $_hookValues only value for key 'account_lid' and 'new_passwd' is used
*/
function addAccount($_hookValues)
{
return $this->updateAccount($_hookValues);
}
/**
* Delete an account
*
* @param array $_hookValues only value for key 'account_lid' is used
*/
function deleteAccount($_hookValues)
{
// some precausion to really delete just _one_ account
if (strpos($_hookValues['account_lid'],'%') !== false ||
strpos($_hookValues['account_lid'],'*') !== false)
{
return false;
}
return !!$this->deleteUsers($_hookValues['account_lid']);
}
/**
* Delete multiple (user-)mailboxes via a wildcard, eg. '%' for whole domain
*
* Domain is the configured domain and it uses the Cyrus admin user
*
* @return string $username='%' username containing wildcards, default '%' for all users of a domain
* @return int|boolean number of deleted mailboxes on success or false on error
*/
function deleteUsers($username='%')
{
if(!$this->acc_imap_administration || empty($username))
{
return false;
}
// dovecot can not delete mailbox, they need to be physically deleted in filesystem (webserver needs write-rights to do so!)
if (empty($this->user_home))
{
return false;
}
$replace = array('%d' => $this->domainName, '%u' => $username, '%s' => $username.'@'.$this->domainName);
if ($username == '%')
{
if (($pos = strpos($this->user_home, '%d')) === false)
{
throw new egw_exception_assertion_failed("user_home='$this->user_home' contains no domain-part '%d'!");
}
$home = strtr(substr($this->user_home, 0, $pos+2), $replace);
$ret = count(scandir($home))-2;
}
else
{
$home = strtr($this->user_home, $replace);
$ret = 1;
}
if (!is_writable(dirname($home)) || !self::_rm_recursive($home))
{
error_log(__METHOD__."('$username') Failed to delete $home!");
return false;
}
return $ret;
}
/**
* Recursively delete a directory (or file)
*
* @param string $path
* @return boolean true on success, false on failure
*/
private function _rm_recursive($path)
{
if (is_dir($path))
{
foreach(scandir($path) as $file)
{
if ($file == '.' || $file == '..') continue;
if (is_dir($path))
{
self::_rm_recursive($path.'/'.$file);
}
elseif (!unlink($path.'/'.$file))
{
return false;
}
}
if (!rmdir($path))
{
return false;
}
}
elseif(!unlink($path))
{
return false;
}
return true;
}
/**
* returns information about a user
* currently only supported information is the current quota
*
* @param string $_username
* @return array userdata
*/
function getUserData($_username)
{
if (isset($this->username)) $bufferUsername = $this->username;
if (isset($this->loginName)) $bufferLoginName = $this->loginName;
$this->username = $_username;
$nameSpaces = $this->getNameSpaces();
$mailBoxName = $this->getUserMailboxString($this->username);
$this->loginName = str_replace((is_array($nameSpaces)?$nameSpaces['others'][0]['name']:'user/'),'',$mailBoxName); // we need to strip the namespacepart
// now disconnect to be able to reestablish the connection with the targetUser while we go on
try
{
$this->adminConnection();
}
catch (Exception $e)
{
// error_log(__METHOD__.__LINE__." Could not establish admin Connection!".$e->getMessage());
return array();
}
$userData = array();
// we are authenticated with master but for current user
if(($quota = $this->getStorageQuotaRoot('INBOX')))
{
$userData['quotaLimit'] = (int) ($quota['limit'] / 1024);
$userData['quotaUsed'] = (int) ($quota['usage'] / 1024);
}
$this->username = $bufferUsername;
$this->loginName = $bufferLoginName;
$this->disconnect();
//error_log(__METHOD__."('$_username') getStorageQuotaRoot('INBOX')=".array2string($quota).' returning '.array2string($userData));
return $userData;
}
/**
* Set information about a user
* currently only supported information is the current quota
*
* Dovecot get's quota from it's user-db, but cant set it --> ignored
*
* @param string $_username
* @param int $_quota
* @return boolean
*/
function setUserData($_username, $_quota)
{
unset($_username); unset($_quota); // not used, but required by function signature
return true;
}
/**
* Updates an account
*
* @param array $_hookValues only value for key 'account_lid' and 'new_passwd' is used
*/
function updateAccount($_hookValues)
{
unset($_hookValues); // not used, but required by function signature
if(!$this->acc_imap_administration)
{
return false;
}
// mailbox get's automatic created with full rights for user
return true;
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,174 @@
<?php
/**
* EGroupware EMailAdmin: Mail account folders to notify user about arriving mail
*
* @link http://www.stylite.de
* @package emailadmin
* @author Ralf Becker <rb@stylite.de>
* @author Stylite AG <info@stylite.de>
* @copyright (c) 2014 by Ralf Becker <rb@stylite.de>
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
/**
* Mail account folders to notify user about arriving mail
*/
class emailadmin_notifications
{
const APP = 'emailadmin';
const TABLE = 'egw_ea_notifications';
/**
* Reference to global db object
*
* @var egw_db
*/
static protected $db;
/**
* Cache for credentials to minimize database access
*
* @var array
*/
protected static $cache = array();
/**
* Read credentials for a given mail account
*
* @param int $acc_id
* @param int|array $account_id=null default use current user or all (in that order)
* @param boolean $return_empty_marker=false should we return null
* @return array with values for "notify_folders", "notify_use_default"
*/
public static function read($acc_id, $account_id=null, $return_empty_marker=false)
{
if (is_null($account_id))
{
$account_id = array(0, $GLOBALS['egw_info']['user']['account_id']);
}
// check cache, if nothing found, query database
// check assumes always same accounts (eg. 0=all plus own account_id) are asked
if (!isset(self::$cache[$acc_id]) ||
!($rows = array_intersect_key(self::$cache[$acc_id], array_flip((array)$account_id))))
{
$rows = self::$db->select(self::TABLE, '*', array(
'acc_id' => $acc_id,
'account_id' => $account_id,
), __LINE__, __FILE__, false, '', self::APP);
//error_log(__METHOD__."($acc_id, ".array2string($account_id).") nothing in cache");
}
$account_specific = 0;
foreach($rows as $row)
{
if ($row['account_id'])
{
$account_specific = $row['account_id'];
}
// update cache (only if we have database-iterator)
if (!is_array($rows))
{
self::$cache[$acc_id][$row['account_id']][] = $row['notif_folder'];
}
}
$folders = (array)self::$cache[$acc_id][$account_specific];
if (!$return_empty_marker && $folders == array(null)) $folders = array();
$result = array(
'notify_folders' => $folders,
'notify_account_id' => $account_specific,
);
//error_log(__METHOD__."($acc_id, ".array2string($account_id).") returning ".array2string($result));
return $result;
}
/**
* Write notification folders
*
* @param int $acc_id id of account
* @param int $account_id if of user-account for whom folders are or 0 for default
* @param array $folders folders to store
* @return int number of changed rows
*/
public static function write($acc_id, $account_id, array $folders)
{
if (!is_numeric($account_id) || !($account_id >= 0))
{
throw new egw_exception_wrong_parameter(__METHOD__."($acc_id, ".array2string($account_id).", ...) account_id NOT >= 0!");
}
if ($account_id && !$folders && ($default = self::read($acc_id, 0)) && $default['notify_folders'])
{
$folders[] = null; // we need to write a marker, that user wants no notifications!
}
$old = self::read($acc_id, $account_id, true); // true = return empty marker
if ($account_id && !$old['notify_account_id']) $old['notify_folders'] = array(); // ignore returned default
$changed = 0;
// insert newly added ones
foreach(array_diff($folders, $old['notify_folders']) as $folder)
{
self::$db->insert(self::TABLE, array(
'acc_id' => $acc_id,
'account_id' => $account_id,
'notif_folder' => $folder,
), false, __LINE__, __FILE__, self::APP);
$changed += self::$db->affected_rows();
}
// delete removed ones
if (($to_delete = array_diff($old['notify_folders'], $folders)))
{
self::$db->delete(self::TABLE, array(
'acc_id' => $acc_id,
'account_id' => $account_id,
'notif_folder' => $to_delete,
), __LINE__, __FILE__, self::APP);
$changed += self::$db->affected_rows();
}
// update cache
self::$cache[$acc_id][(int)$account_id] = $folders;
//error_log(__METHOD__."(acc_id=$acc_id, account_id=".array2string($account_id).", folders=".array2string($folders).") returning $changed");
return $changed;
}
/**
* Delete credentials from database
*
* @param int $acc_id
* @param int|array $account_id=null
* @return int number of rows deleted
*/
public static function delete($acc_id, $account_id=null)
{
if (!($acc_id > 0) && !isset($account_id))
{
throw new egw_exception_wrong_parameter(__METHOD__."() no acc_id AND no account_id parameter!");
}
$where = array();
if ($acc_id > 0) $where['acc_id'] = $acc_id;
if (isset($account_id)) $where['account_id'] = $account_id;
self::$db->delete(self::TABLE, $where, __LINE__, __FILE__, self::APP);
// invalidate cache: we allways unset everything about an account to simplify cache handling
foreach($acc_id > 0 ? (array)$acc_id : array_keys(self::$cache) as $acc_id)
{
unset(self::$cache[$acc_id]);
}
$ret = self::$db->affected_rows();
//error_log(__METHOD__."($acc_id, ".array2string($account_id).", $type) affected $ret rows");
return $ret;
}
/**
* Init our static properties
*/
static public function init_static()
{
self::$db = isset($GLOBALS['egw_setup']) ? $GLOBALS['egw_setup']->db : $GLOBALS['egw']->db;
}
}
emailadmin_notifications::init_static();

View File

@ -0,0 +1,603 @@
<?php
/**
* EGroupware EMailAdmin: Support for Sieve scripts
*
* See the inclosed smartsieve-NOTICE file for conditions of use and distribution.
*
* @link http://www.egroupware.org
* @package emailadmin
* @author Stephen Grier <stephengrier@users.sourceforge.net>
* @author Hadi Nategh <hn@stylite.de>
* @copyright 2002 by Stephen Grier <stephengrier@users.sourceforge.net>
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
/**
* Support for Sieve scripts
*/
class emailadmin_script {
var $name; /* filename of script. */
var $script; /* full ascii text of script from server. */
var $size; /* size of script in bytes. */
var $so; /* boolean: is it safe to overwrite script?
* only safe if we recognise encoding. */
var $mode; /* basic or advanced. Smartsieve can only read/write basic. */
var $rules; /* array of sieve rules. */
var $vacation; /* vacation settings. */
var $emailNotification; /* email notification settings. */
var $pcount; /* highest priority value in ruleset. */
var $errstr; /* error text. */
/**
* Body transform content types
*
* @static array
*/
static $btransform_ctype_array = array(
'0' => 'Non',
'1' => 'image',
'2' => 'multipart',
'3' => 'text',
'4' => 'media',
'5' => 'message',
'6' => 'application',
'7' => 'audio',
);
/**
* Switch on some error_log debug messages
*
* @var boolean
*/
var $debug=false;
// class constructor
function __construct ($scriptname) {
$this->name = $scriptname;
$this->script = '';
$this->size = 0;
$this->so = true;
$this->mode = '';
$this->rules = array();
$this->vacation = array();
$this->emailNotification = array(); // Added email notifications
$this->pcount = 0;
$this->errstr = '';
}
// get sieve script rules for this user
/**
* Retrieve the rules
*
* @param bosieve $connection
* @return boolean true, if script written successfull
*/
function retrieveRules ($connection) {
#global $_SESSION;
$continuebit = 1;
$sizebit = 2;
$anyofbit = 4;
$keepbit = 8;
$regexbit = 128;
if (!isset($this->name)){
$this->errstr = 'retrieveRules: no script name specified';
if ($this->debug) error_log(__CLASS__.'::'.__METHOD__.": no script name specified");
return false;
}
if (!is_object($connection)) {
$this->errstr = "retrieveRules: no sieve session open";
if ($this->debug) error_log(__CLASS__.'::'.__METHOD__.": no sieve session open");
return false;
}
// if script doesn't yet exist, nothing to retrieve.
// safe to write to this script file.
#LK if (!AppSession::scriptExists($this->name)) {
#LK $this->so = true;
#LK return true;
#LK }
#print "<br><br><br><br>get Script ". $this->name ."<bR>";
if(PEAR::isError($script = $connection->getScript($this->name))) {
if ($this->debug) error_log(__CLASS__.'::'.__METHOD__.": error retrieving script: ".$script->getMessage());
return $script;
}
#print "<br>AAA: Script is ". htmlentities($script) ."<br>";
$lines = array();
$lines = preg_split("/\n/",$script); //,PREG_SPLIT_NO_EMPTY);
$rules = array();
$vacation = array();
$emailNotification = array(); // Added email notifications
/* first line should be the script size. eg: {123}. */
#$line = array_shift($lines);
#if (!preg_match("/^\{(\d+)\}$/", $line, $bits)){
# print 'retrieveRules: unexpected value: ' . $line .'<br>';
# $this->errstr = 'retrieveRules: unexpected value: ' . $line;
# return false;
#}
#LK $this->size = $bits[1];
/* next line should be the recognised encoded head. if not, the script
* is of an unrecognised format, and we should not overwrite it. */
$line = array_shift($lines);
if (!preg_match("/^# ?Mail(.*)rules for/", $line)){
$this->errstr = 'retrieveRules: encoding not recognised';
$this->so = false;
if ($this->debug) error_log(__CLASS__.'::'.__METHOD__.": encoding not recognised");
return false;
}
$this->so = true;
$line = array_shift($lines);
while (isset($line)){
if (preg_match("/^ *#(#PSEUDO|rule|vacation|mode|notify)/i",$line,$matches)){
$line = rtrim($line);
switch ($matches[1]){
case "rule":
$bits = explode("&&", $line);
$rule = array();
$rule['priority'] = $bits[1];
$rule['status'] = $bits[2];
$rule['from'] = stripslashes($bits[3]);
$rule['to'] = stripslashes($bits[4]);
$rule['subject'] = stripslashes($bits[5]);
$rule['action'] = $bits[6];
$rule['action_arg'] = $bits[7];
// <crnl>s will be encoded as \\n. undo this.
$rule['action_arg'] = preg_replace("/\\\\n/","\r\n",$rule['action_arg']);
$rule['action_arg'] = stripslashes($rule['action_arg']);
$rule['flg'] = $bits[8]; // bitwise flag
$rule['field'] = stripslashes($bits[9]);
$rule['field_val'] = stripslashes($bits[10]);
$rule['size'] = $bits[11];
$rule['continue'] = ($bits[8] & $continuebit);
$rule['gthan'] = ($bits[8] & $sizebit); // use 'greater than'
$rule['anyof'] = ($bits[8] & $anyofbit);
$rule['keep'] = ($bits[8] & $keepbit);
$rule['regexp'] = ($bits[8] & $regexbit);
$rule['bodytransform'] = ($bits[12]);
$rule['field_bodytransform'] = ($bits[13]);
$rule['ctype'] = ($bits[14]);
$rule['field_ctype_val'] = ($bits[15]);
$rule['unconditional'] = 0;
if (!$rule['from'] && !$rule['to'] && !$rule['subject'] &&
!$rule['field'] && !$rule['size'] && $rule['action']) {
$rule['unconditional'] = 1;
}
array_push($rules,$rule);
if ($rule['priority'] > $this->pcount) {
$this->pcount = $rule['priority'];
}
break;
case "vacation" :
if (preg_match("/^ *#vacation&&(.*)&&(.*)&&(.*)&&(.*)&&(.*)/i",$line,$bits) ||
preg_match("/^ *#vacation&&(.*)&&(.*)&&(.*)&&(.*)/i",$line,$bits)) {
$vacation['days'] = $bits[1];
$vaddresslist = $bits[2];
$vaddresslist = preg_replace("/\"|\s/","",$vaddresslist);
$vaddresses = array();
$vaddresses = preg_split("/,/",$vaddresslist);
$vacation['text'] = $bits[3];
// <crnl>s will be encoded as \\n. undo this.
$vacation['text'] = preg_replace("/\\\\n/","\r\n",$vacation['text']);
if (strpos($bits[4],'-')!== false)
{
$vacation['status'] = 'by_date';
list($vacation['start_date'],$vacation['end_date']) = explode('-',$bits[4]);
}
else
{
$vacation['status'] = $bits[4];
}
$vacation['addresses'] = &$vaddresses;
$vacation['forwards'] = $bits[5];
}
break;
case "notify":
if (preg_match("/^ *#notify&&(.*)&&(.*)&&(.*)/i",$line,$bits)) {
$emailNotification['status'] = $bits[1];
$emailNotification['externalEmail'] = $bits[2];
$emailNotification['displaySubject'] = $bits[3];
}
break;
case "mode" :
if (preg_match("/^ *#mode&&(.*)/i",$line,$bits)){
if ($bits[1] == 'basic')
$this->mode = 'basic';
elseif ($bits[1] == 'advanced')
$this->mode = 'advanced';
else
$this->mode = 'unknown';
}
}
}
$line = array_shift($lines);
}
$this->script = $script;
$this->rules = $rules;
$this->vacation = $vacation;
$this->emailNotification = $emailNotification; // Added email notifications
if ($this->debug) error_log(__CLASS__.'::'.__METHOD__.": Script succesful retrieved: ".print_r($vacation,true));
return true;
}
// update and save sieve script
function updateScript ($connection)
{
#global $_SESSION,$default,$sieve;
global $default,$sieve;
$activerules = 0;
$regexused = 0;
$rejectused = 0;
$vacation_active = false;
$username = $GLOBALS['egw_info']['user']['account_lid'];
$version = $GLOBALS['egw_info']['apps']['felamimail']['version'];
//include "$default->lib_dir/version.php";
if (!is_object($connection))
{
$this->errstr = "updateScript: no sieve session open";
return false;
}
// don't overwrite a file if not created by SmartSieve,
// unless configured to do so.
#LK if (!$this->so && !$default->allow_write_unrecognised_scripts) {
#LK $this->errstr = 'updateScript: encoding not recognised: not safe to overwrite ' . $this->name;
#LK return false;
#LK }
// lets generate the main body of the script from our rules
$enotify = $variables= $supportsbody = false;
if (in_array('enotify',$connection->_capability['extensions'])|| in_array('ENOTIFY', $connection->_capability['extensions'])) $enotify = true;
if (in_array('variables',$connection->_capability['extensions'])|| in_array('VARIABLES', $connection->_capability['extensions'])) $variables = true;
if (in_array('body', $connection->_capability['extensions']) || in_array('BODY', $connection->_capability['extensions'])) $supportsbody = true;
$newscriptbody = "";
$continue = 1;
foreach ($this->rules as $rule) {
$newruletext = "";
// don't print this rule if disabled.
if ($rule['status'] != 'ENABLED') {
} else {
$activerules = 1;
// conditions
$anyall = "allof";
if ($rule['anyof']) $anyall = "anyof";
if ($rule['regexp']) {
$regexused = 1;
}
$started = 0;
if (!$rule['unconditional']) {
if (!$continue) $newruletext .= "els";
$newruletext .= "if " . $anyall . " (";
if ($rule['from']) {
if (preg_match("/^\s*!/", $rule['from'])){
$newruletext .= 'not ';
$rule['from'] = preg_replace("/^\s*!/","",$rule['from']);
}
$match = ':contains';
if (preg_match("/\*|\?/", $rule['from'])) $match = ':matches';
if ($rule['regexp']) $match = ':regex';
$newruletext .= "address " . $match . " [\"From\"]";
$newruletext .= " \"" . addslashes($rule['from']) . "\"";
$started = 1;
}
if ($rule['to']) {
if ($started) $newruletext .= ", ";
if (preg_match("/^\s*!/", $rule['to'])){
$newruletext .= 'not ';
$rule['to'] = preg_replace("/^\s*!/","",$rule['to']);
}
$match = ':contains';
if (preg_match("/\*|\?/", $rule['to'])) $match = ':matches';
if ($rule['regexp']) $match = ':regex';
$newruletext .= "address " . $match . " [\"To\",\"TO\",\"Cc\",\"CC\"]";
$newruletext .= " \"" . addslashes($rule['to']) . "\"";
$started = 1;
}
if ($rule['subject']) {
if ($started) $newruletext .= ", ";
if (preg_match("/^\s*!/", $rule['subject'])){
$newruletext .= 'not ';
$rule['subject'] = preg_replace("/^\s*!/","",$rule['subject']);
}
$match = ':contains';
if (preg_match("/\*|\?/", $rule['subject'])) $match = ':matches';
if ($rule['regexp']) $match = ':regex';
$newruletext .= "header " . $match . " \"subject\"";
$newruletext .= " \"" . addslashes($rule['subject']) . "\"";
$started = 1;
}
if ($rule['field'] && $rule['field_val']) {
if ($started) $newruletext .= ", ";
if (preg_match("/^\s*!/", $rule['field_val'])){
$newruletext .= 'not ';
$rule['field_val'] = preg_replace("/^\s*!/","",$rule['field_val']);
}
$match = ':contains';
if (preg_match("/\*|\?/", $rule['field_val'])) $match = ':matches';
if ($rule['regexp']) $match = ':regex';
$newruletext .= "header " . $match . " \"" . addslashes($rule['field']) . "\"";
$newruletext .= " \"" . addslashes($rule['field_val']) . "\"";
$started = 1;
}
if ($rule['size']) {
$xthan = " :under ";
if ($rule['gthan']) $xthan = " :over ";
if ($started) $newruletext .= ", ";
$newruletext .= "size " . $xthan . $rule['size'] . "K";
$started = 1;
}
if ($supportsbody){
if (!empty($rule['field_bodytransform'])){
if ($started) $newruletext .= ", ";
$btransform = " :raw ";
$match = ' :contains';
if ($rule['bodytransform']) $btransform = " :text ";
if (preg_match("/\*|\?/", $rule['field_bodytransform'])) $match = ':matches';
if ($rule['regexp']) $match = ':regex';
$newruletext .= "body " . $btransform . $match . " \"" . $rule['field_bodytransform'] . "\"";
$started = 1;
}
if ($rule['ctype']!= '0' && !empty($rule['ctype'])){
if ($started) $newruletext .= ", ";
$btransform_ctype = emailadmin_script::$btransform_ctype_array[$rule['ctype']];
$ctype_subtype = "";
if ($rule['field_ctype_val']) $ctype_subtype = "/";
$newruletext .= "body :content " . " \"" . $btransform_ctype . $ctype_subtype . $rule['field_ctype_val'] . "\"" . " :contains \"\"";
$started = 1;
//error_log(__CLASS__."::".__METHOD__.array2string(emailadmin_script::$btransform_ctype_array));
}
}
}
// actions
if (!$rule['unconditional']) $newruletext .= ") {\n\t";
if (preg_match("/folder/i",$rule['action'])) {
$newruletext .= "fileinto \"" . $rule['action_arg'] . "\";";
}
if (preg_match("/reject/i",$rule['action'])) {
$newruletext .= "reject text: \n" . $rule['action_arg'] . "\n.\n;";
$rejectused = 1;
}
if (preg_match("/address/i",$rule['action'])) {
foreach(preg_split('/, ?/',$rule['action_arg']) as $addr)
{
$newruletext .= "\tredirect \"".trim($addr)."\";\n";
}
}
if (preg_match("/discard/i",$rule['action'])) {
$newruletext .= "discard;";
}
if ($rule['keep']) $newruletext .= "\n\tkeep;";
if (!$rule['unconditional']) $newruletext .= "\n}";
$continue = 0;
if ($rule['continue']) $continue = 1;
if ($rule['unconditional']) $continue = 1;
$newscriptbody .= $newruletext . "\n\n";
} // end 'if ! ENABLED'
}
// vacation rule
if ($this->vacation) {
$vacation = $this->vacation;
if (!$vacation['days']) $vacation['days'] = ($default->vacation_days ? $default->vacation_days:'');
if (!$vacation['text']) $vacation['text'] = ($default->vacation_text ? $default->vacation_text:'');
if (!$vacation['status']) $vacation['status'] = 'on';
// filter out invalid addresses.
$ok_vaddrs = array();
foreach($vacation['addresses'] as $addr){
if ($addr != '' && preg_match("/\@/",$addr))
array_push($ok_vaddrs,$addr);
}
$vacation['addresses'] = $ok_vaddrs;
if (!$vacation['addresses'][0]){
$defaultaddr = $sieve->user . '@' . $sieve->maildomain;
array_push($vacation['addresses'],$defaultaddr);
}
if ($vacation['status'] == 'on' || $vacation['status'] == 'by_date' &&
$vacation['start_date'] <= time() && time() < $vacation['end_date']+24*3600) // +24*3600 to include the end_date day
{
if (trim($vacation['forwards'])) {
$if = array();
foreach($vacation['addresses'] as $addr) {
$if[] = 'address :contains ["To","TO","Cc","CC"] "'.trim($addr).'"';
}
$newscriptbody .= 'if anyof ('.implode(', ',$if).") {\n";
foreach(preg_split('/, ?/',$vacation['forwards']) as $addr) {
$newscriptbody .= "\tredirect \"".trim($addr)."\";\n";
}
$newscriptbody .= "\tkeep;\n}\n";
}
$vacation_active = true;
$newscriptbody .= "if header :contains ".'"X-Spam-Status" '.'"YES"'."{\n\tstop;\n}\n"; //stop vacation reply if it is spam
$newscriptbody .= "vacation :days " . $vacation['days'] . " :addresses [";
$first = 1;
foreach ($vacation['addresses'] as $vaddress) {
if (!$first) $newscriptbody .= ", ";
$newscriptbody .= "\"" . trim($vaddress) . "\"";
$first = 0;
}
$message = $vacation['text'];
if ($vacation['start_date'] || $vacation['end_date'])
{
$format_date = 'd M Y'; // see to it, that there is always a format, because if it is missing - no date will be output
if (!empty($GLOBALS['egw_info']['user']['preferences']['common']['dateformat'])) $format_date = $GLOBALS['egw_info']['user']['preferences']['common']['dateformat'];
$message = str_replace(array('$$start$$','$$end$$'),array(
date($format_date,$vacation['start_date']),
date($format_date,$vacation['end_date']),
),$message);
}
$newscriptbody .= "] text:\n" . $message . "\n.\n;\n\n";
}
// update with any changes.
$this->vacation = $vacation;
}
if ($this->emailNotification && $this->emailNotification['status'] == 'on') {
// format notification email header components
$notification_email = $this->emailNotification['externalEmail'];
// format notification body
$egw_site_title = $GLOBALS['egw_info']['server']['site_title'];
if ($enotify==true)
{
$notification_body = lang("You have received a new message on the")." {$egw_site_title}";
if ($variables)
{
$notification_body .= ", ";
$notification_body .= 'From: ${from}';
if ($this->emailNotification['displaySubject']) {
$notification_body .= ', Subject: ${subject}';
}
//$notification_body .= 'Size: $size$'."\n";
$newscriptbody .= 'if header :matches "subject" "*" {'."\n\t".'set "subject" "${1}";'."\n".'}'."\n\n";
$newscriptbody .= 'if header :matches "from" "*" {'."\n\t".'set "from" "${1}";'."\n".'}'."\n\n";
}
else
{
$notification_body ="[SIEVE] ".$notification_body;
}
$newscriptbody .= 'notify :message "'.$notification_body.'"'."\n\t".'"mailto:'.$notification_email.'";'."\n";
//$newscriptbody .= 'notify :message "'.$notification_body.'" :method "mailto" :options "'.$notification_email.'?subject='.$notification_subject.'";'."\n";
}
else
{
$notification_body = lang("You have received a new message on the")." {$egw_site_title}"."\n";
$notification_body .= "\n";
$notification_body .= 'From: $from$'."\n";
if ($this->emailNotification['displaySubject']) {
$notification_body .= 'Subject: $subject$'."\n";
}
//$notification_body .= 'Size: $size$'."\n";
$newscriptbody .= 'notify :message "'.$notification_body.'" :method "mailto" :options "'.$notification_email.'";'."\n";
//$newscriptbody .= 'notify :message "'.$notification_body.'" :method "mailto" :options "'.$notification_email.'?subject='.$notification_subject.'";'."\n";
}
$newscriptbody .= 'keep;'."\n\n";
}
// generate the script head
$newscripthead = "";
$newscripthead .= "#Mail filter rules for " . $username . "\n";
$newscripthead .= '#Generated by ' . $username . ' using FeLaMiMail ' . $version . ' ' . date($default->script_date_format);
$newscripthead .= "\n";
if ($activerules) {
$newscripthead .= "require [\"fileinto\"";
if ($regexused) $newscripthead .= ",\"regex\"";
if ($rejectused) $newscripthead .= ",\"reject\"";
if ($this->vacation && $vacation_active) {
$newscripthead .= ",\"vacation\"";
}
if ($supportsbody) $newscripthead .= ",\"body\"";
if ($this->emailNotification && $this->emailNotification['status'] == 'on') $newscripthead .= ',"'.($enotify?'e':'').'notify"'.($variables?',"variables"':''); // Added email notifications
$newscripthead .= "];\n\n";
} else {
// no active rules, but might still have an active vacation rule
if ($this->vacation && $vacation_active)
$newscripthead .= "require [\"vacation\"];\n\n";
if ($this->emailNotification && $this->emailNotification['status'] == 'on') $newscripthead .= "require [\"".($enotify?'e':'')."notify\"".($variables?',"variables"':'')."];\n\n"; // Added email notifications
}
// generate the encoded script foot
$newscriptfoot = "";
$pcount = 1;
$newscriptfoot .= "##PSEUDO script start\n";
foreach ($this->rules as $rule) {
// only add rule to foot if status != deleted. this is how we delete a rule.
if ($rule['status'] != 'DELETED') {
$rule['action_arg'] = addslashes($rule['action_arg']);
// we need to handle \r\n here.
$rule['action_arg'] = preg_replace("/\r?\n/","\\n",$rule['action_arg']);
/* reset priority value. note: we only do this
* for compatibility with Websieve. */
$rule['priority'] = $pcount;
$newscriptfoot .= "#rule&&" . $rule['priority'] . "&&" . $rule['status'] . "&&" .
addslashes($rule['from']) . "&&" . addslashes($rule['to']) . "&&" . addslashes($rule['subject']) . "&&" . $rule['action'] . "&&" .
$rule['action_arg'] . "&&" . $rule['flg'] . "&&" . addslashes($rule['field']) . "&&" . addslashes($rule['field_val']) . "&&" . $rule['size'];
if ($supportsbody && (!empty($rule['field_bodytransform']) || ($rule['ctype']!= '0' && !empty($rule['ctype'])))) $newscriptfoot .= "&&" . $rule['bodytransform'] . "&&" . $rule['field_bodytransform']. "&&" . $rule['ctype'] . "&&" . $rule['field_ctype_val'];
$newscriptfoot .= "\n";
$pcount = $pcount+2;
//error_log(__CLASS__."::".__METHOD__.__LINE__.array2string($newscriptfoot));
}
}
if ($this->vacation)
{
$vacation = $this->vacation;
$newscriptfoot .= "#vacation&&" . $vacation['days'] . "&&";
$first = 1;
foreach ($vacation['addresses'] as $address) {
if (!$first) $newscriptfoot .= ", ";
$newscriptfoot .= "\"" . trim($address) . "\"";
$first = 0;
}
$vacation['text'] = preg_replace("/\r?\n/","\\n",$vacation['text']);
$newscriptfoot .= "&&" . $vacation['text'] . "&&" .
($vacation['status']=='by_date' ? $vacation['start_date'].'-'.$vacation['end_date'] : $vacation['status']);
if ($vacation['forwards']) $newscriptfoot .= '&&' . $vacation['forwards'];
$newscriptfoot .= "\n";
}
if ($this->emailNotification) {
$emailNotification = $this->emailNotification;
$newscriptfoot .= "#notify&&" . $emailNotification['status'] . "&&" . $emailNotification['externalEmail'] . "&&" . $emailNotification['displaySubject'] . "\n";
}
$newscriptfoot .= "#mode&&basic\n";
$newscript = $newscripthead . $newscriptbody . $newscriptfoot;
$this->script = $newscript;
//error_log(__METHOD__.__LINE__.array2string($newscript));
//print "<pre>$newscript</pre>"; exit;
$scriptfile = $this->name;
//print "<hr><pre>".htmlentities($newscript)."</pre><hr>";
$ret = $connection->installScript($this->name, $newscript, true);
if (!$ret || PEAR::isError($ret)) {
$this->errstr = 'updateScript: putscript failed: ' . (PEAR::isError($ret)?$ret->message:$connection->errstr);
error_log(__METHOD__.__LINE__.' # Error: ->'.$this->errstr);
error_log(__METHOD__.__LINE__.' # ScriptName:'.$this->name.' Script:'.$newscript);
error_log(__METHOD__.__LINE__.' # Instance='.$GLOBALS['egw_info']['user']['domain'].', User='.$GLOBALS['egw_info']['user']['account_lid']);
return false;
}
return true;
}
}

View File

@ -0,0 +1,480 @@
<?php
/**
* EGroupware EMailAdmin: Support for Sieve scripts
*
* @link http://www.egroupware.org
* @package emailadmin
* @author Ralf Becker <rb@stylite.de>
* @author Klaus Leithoff <kl@stylite.de>
* @author Lars Kneschke
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
include_once('Net/Sieve.php');
/**
* Support for Sieve scripts
*
* Class can be switched to use exceptions by calling
*
* PEAR::setErrorHandling(PEAR_ERROR_EXCEPTION);
*
* In which case constructor and setters will throw exceptions for connection, login or other errors.
*
* retriveRules and getters will not throw an exception, if there's no script currently.
*
* Most methods incl. constructor accept a script-name, but by default current active script is used
* and if theres no script emailadmin_sieve::DEFAULT_SCRIPT_NAME.
*/
class emailadmin_sieve extends Net_Sieve
{
/**
* reference to emailadmin_imap object
*
* @var emailadmin_imap
*/
var $icServer;
/**
* @var string name of active script queried from Sieve server
*/
var $scriptName;
/**
* @var $rules containing the rules
*/
var $rules;
/**
* @var $vacation containing the vacation
*/
var $vacation;
/**
* @var $emailNotification containing the emailNotification
*/
var $emailNotification;
/**
* @var object $error the last PEAR error object
*/
var $error;
/**
* The timeout for the connection to the SIEVE server.
* @var int
*/
var $_timeout = 10;
/**
* Switch on some error_log debug messages
*
* @var boolean
*/
var $debug = false;
/**
* Default script name used if no active script found on server
*/
const DEFAULT_SCRIPT_NAME = 'mail';
/**
* Constructor
*
* @param emailadmin_imap $_icServer
* @param string $_euser effictive user, if given the Cyrus admin account is used to login on behalf of $euser
* @param string $_scriptName
*/
function __construct(emailadmin_imap $_icServer=null, $_euser='', $_scriptName=null)
{
parent::Net_Sieve();
if ($_scriptName) $this->scriptName = $_scriptName;
// TODO: since we seem to have major problems authenticating via DIGEST-MD5 and CRAM-MD5 in SIEVE, we skip MD5-METHODS for now
if (!is_null($_icServer))
{
$_icServer->supportedAuthMethods = array('PLAIN' , 'LOGIN');
}
else
{
$this->supportedAuthMethods = array('PLAIN' , 'LOGIN');
}
$this->displayCharset = translation::charset();
if (!is_null($_icServer) && $this->_connect($_icServer, $_euser) === 'die') {
die('Sieve not activated');
}
}
/**
* Open connection to the sieve server
*
* @param emailadmin_imap $_icServer
* @param string $euser effictive user, if given the Cyrus admin account is used to login on behalf of $euser
* @return mixed 'die' = sieve not enabled, false=connect or login failure, true=success
*/
function _connect(emailadmin_imap $_icServer, $euser='')
{
static $isConError = null;
static $sieveAuthMethods = null;
$_icServerID = $_icServer->acc_id;
if (is_null($isConError))
{
$isConError = egw_cache::getCache(egw_cache::INSTANCE, 'email', 'icServerSIEVE_connectionError' . trim($GLOBALS['egw_info']['user']['account_id']));
}
if ( isset($isConError[$_icServerID]) )
{
$this->error = new PEAR_Error($isConError[$_icServerID]);
return false;
}
if ($this->debug)
{
error_log(__METHOD__ . array2string($euser));
}
if($_icServer->acc_sieve_enabled)
{
if ($_icServer->acc_sieve_host)
{
$sieveHost = $_icServer->acc_sieve_host;
}
else
{
$sieveHost = $_icServer->acc_imap_host;
}
//error_log(__METHOD__.__LINE__.'->'.$sieveHost);
$sievePort = $_icServer->acc_sieve_port;
$useTLS = false;
switch($_icServer->acc_sieve_ssl)
{
case emailadmin_account::SSL_SSL:
$sieveHost = 'ssl://'.$sieveHost;
break;
case emailadmin_account::SSL_TLS:
$sieveHost = 'tls://'.$sieveHost;
break;
case emailadmin_account::SSL_STARTTLS:
$useTLS = true;
}
if ($euser)
{
$username = $_icServer->acc_imap_admin_username;
$password = $_icServer->acc_imap_admin_password;
}
else
{
$username = $_icServer->acc_imap_username;
$password = $_icServer->acc_imap_password;
}
$this->icServer = $_icServer;
}
else
{
egw_cache::setCache(egw_cache::INSTANCE,'email','icServerSIEVE_connectionError'.trim($GLOBALS['egw_info']['user']['account_id']),$isConError,$expiration=60*15);
return 'die';
}
$this->_timeout = 10; // socket::connect sets the/this timeout on connection
$timeout = emailadmin_imap::getTimeOut('SIEVE');
if ($timeout > $this->_timeout)
{
$this->_timeout = $timeout;
}
if(PEAR::isError($this->error = $this->connect($sieveHost , $sievePort, $options=null, $useTLS) ) )
{
if ($this->debug)
{
error_log(__METHOD__ . ": error in connect($sieveHost,$sievePort, " . array2string($options) . ", $useTLS): " . $this->error->getMessage());
}
$isConError[$_icServerID] = $this->error->getMessage();
egw_cache::setCache(egw_cache::INSTANCE,'email','icServerSIEVE_connectionError'.trim($GLOBALS['egw_info']['user']['account_id']),$isConError,$expiration=60*15);
return false;
}
// we cache the supported AuthMethods during session, to be able to speed up login.
if (is_null($sieveAuthMethods))
{
$sieveAuthMethods = & egw_cache::getSession('email', 'sieve_supportedAuthMethods');
}
if (isset($sieveAuthMethods[$_icServerID]))
{
$this->supportedAuthMethods = $sieveAuthMethods[$_icServerID];
}
if(PEAR::isError($this->error = $this->login($username, $password, null, $euser) ) )
{
if ($this->debug)
{
error_log(__METHOD__ . ": error in login($username,$password,null,$euser): " . $this->error->getMessage());
}
$isConError[$_icServerID] = $this->error->getMessage();
egw_cache::setCache(egw_cache::INSTANCE,'email','icServerSIEVE_connectionError'.trim($GLOBALS['egw_info']['user']['account_id']),$isConError,$expiration=60*15);
return false;
}
// query active script from Sieve server
if (empty($this->scriptName))
{
try {
$this->scriptName = $this->getActive();
}
catch(Exception $e) {
unset($e); // ignore NOTEXISTS exception
}
if (empty($this->scriptName))
{
$this->scriptName = self::DEFAULT_SCRIPT_NAME;
}
}
//error_log(__METHOD__.__LINE__.array2string($this->_capability));
return true;
}
/**
* Handles connecting to the server and checks the response validity.
* overwritten function from Net_Sieve to respect timeout
*
* @param string $host Hostname of server.
* @param string $port Port of server.
* @param array $options List of options to pass to
* stream_context_create().
* @param boolean $useTLS Use TLS if available.
*
* @return boolean True on success, PEAR_Error otherwise.
*/
function connect($host, $port, $options = null, $useTLS = true)
{
if ($this->debug)
{
error_log(__METHOD__ . __LINE__ . "$host, $port, " . array2string($options) . ", $useTLS");
}
$this->_data['host'] = $host;
$this->_data['port'] = $port;
$this->_useTLS = $useTLS;
if (is_array($options)) {
$this->_options = array_merge((array)$this->_options, $options);
}
if (NET_SIEVE_STATE_DISCONNECTED != $this->_state) {
return PEAR::raiseError('Not currently in DISCONNECTED state', 1);
}
if (PEAR::isError($res = $this->_sock->connect($host, $port, false, ($this->_timeout?$this->_timeout:10), $options))) {
return $res;
}
if ($this->_bypassAuth) {
$this->_state = NET_SIEVE_STATE_TRANSACTION;
} else {
$this->_state = NET_SIEVE_STATE_AUTHORISATION;
if (PEAR::isError($res = $this->_doCmd())) {
return $res;
}
}
// Explicitly ask for the capabilities in case the connection is
// picked up from an existing connection.
if (PEAR::isError($res = $this->_cmdCapability())) {
return PEAR::raiseError(
'Failed to connect, server said: ' . $res->getMessage(), 2
);
}
// Check if we can enable TLS via STARTTLS.
if ($useTLS && !empty($this->_capability['starttls'])
&& function_exists('stream_socket_enable_crypto')
) {
if (PEAR::isError($res = $this->_startTLS())) {
return $res;
}
}
return true;
}
/**
* Handles the authentication using any known method
* overwritten function from Net_Sieve to support fallback
*
* @param string $uid The userid to authenticate as.
* @param string $pwd The password to authenticate with.
* @param string $userMethod The method to use ( if $userMethod == '' then the class chooses the best method (the stronger is the best ) )
* @param string $euser The effective uid to authenticate as.
*
* @return mixed string or PEAR_Error
*
* @access private
* @since 1.0
*/
function _cmdAuthenticate($uid , $pwd , $userMethod = null , $euser = '' )
{
if ( PEAR::isError( $method = $this->_getBestAuthMethod($userMethod) ) ) {
return $method;
}
//error_log(__METHOD__.__LINE__.' using AuthMethod: '.$method);
switch ($method) {
case 'DIGEST-MD5':
$result = $this->_authDigest_MD5( $uid , $pwd , $euser );
if (!PEAR::isError($result))
{
break;
}
$res = $this->_doCmd();
unset($this->_error);
$this->supportedAuthMethods = array_diff($this->supportedAuthMethods,array($method,'CRAM-MD5'));
return $this->_cmdAuthenticate($uid , $pwd, null, $euser);
case 'CRAM-MD5':
$result = $this->_authCRAM_MD5( $uid , $pwd, $euser);
if (!PEAR::isError($result))
{
break;
}
$res = $this->_doCmd();
unset($this->_error);
$this->supportedAuthMethods = array_diff($this->supportedAuthMethods,array($method,'DIGEST-MD5'));
return $this->_cmdAuthenticate($uid , $pwd, null, $euser);
case 'LOGIN':
$result = $this->_authLOGIN( $uid , $pwd , $euser );
if (!PEAR::isError($result))
{
break;
}
$res = $this->_doCmd();
unset($this->_error);
$this->supportedAuthMethods = array_diff($this->supportedAuthMethods,array($method));
return $this->_cmdAuthenticate($uid , $pwd, null, $euser);
case 'PLAIN':
$result = $this->_authPLAIN( $uid , $pwd , $euser );
break;
default :
$result = new PEAR_Error( "$method is not a supported authentication method" );
break;
}
if (PEAR::isError($result))
{
return $result;
}
if (PEAR::isError($res = $this->_doCmd())) {
return $res;
}
// Query the server capabilities again now that we are authenticated.
if (PEAR::isError($res = $this->_cmdCapability())) {
return PEAR::raiseError(
'Failed to connect, server said: ' . $res->getMessage(), 2
);
}
return $result;
}
function getRules()
{
if (!isset($this->rules)) $this->retrieveRules();
return $this->rules;
}
function getVacation()
{
if (!isset($this->rules)) $this->retrieveRules();
return $this->vacation;
}
function getEmailNotification()
{
if (!isset($this->rules)) $this->retrieveRules();
return $this->emailNotification;
}
/**
* Set email notifications
*
* @param array $_rules
* @param string $_scriptName
*/
function setRules(array $_rules, $_scriptName=null)
{
$script = $this->retrieveRules($_scriptName);
$script->debug = $this->debug;
$script->rules = $_rules;
$ret = $script->updateScript($this);
$this->error = $script->errstr;
return $ret;
}
/**
* Set email notifications
*
* @param array $_vacation
* @param string $_scriptName
*/
function setVacation(array $_vacation, $_scriptName=null)
{
if ($this->debug)
{
error_log(__METHOD__ . "($_scriptName," . print_r($_vacation, true) . ')');
}
$script = $this->retrieveRules($_scriptName);
$script->debug = $this->debug;
$script->vacation = $_vacation;
$ret = $script->updateScript($this);
$this->error = $script->errstr;
return $ret;
}
/**
* Set email notifications
*
* @param array $_emailNotification
* @param string $_scriptName
* @return emailadmin_script
*/
function setEmailNotification(array $_emailNotification, $_scriptName=null)
{
if ($_emailNotification['externalEmail'] == '' || !preg_match("/\@/",$_emailNotification['externalEmail'])) {
$_emailNotification['status'] = 'off';
$_emailNotification['externalEmail'] = '';
}
$script = $this->retrieveRules($_scriptName);
$script->emailNotification = $_emailNotification;
$ret = $script->updateScript($this);
$this->error = $script->errstr;
return $ret;
}
/**
* Retrive rules, vacation, notifications and return emailadmin_script object to update them
*
* @param string $_scriptName
* @return emailadmin_script
*/
function retrieveRules($_scriptName=null)
{
if (!$_scriptName)
{
$_scriptName = $this->scriptName;
}
$script = new emailadmin_script($_scriptName);
try {
$script->retrieveRules($this);
}
catch (Exception $e) {
unset($e); // ignore not found script exception
}
$this->rules =& $script->rules;
$this->vacation =& $script->vacation;
$this->emailNotification =& $script->emailNotification; // Added email notifications
return $script;
}
}

View File

@ -0,0 +1,250 @@
<?php
/**
* EGroupware EMailAdmin: generic base class for SMTP
*
* @link http://www.egroupware.org
* @package emailadmin
* @author Lars Kneschke <lkneschke@linux-at-work.de>
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License Version 2+
* @version $Id$
*/
/**
* EMailAdmin generic base class for SMTP
*/
class emailadmin_smtp
{
/**
* Label shown in EMailAdmin
*/
const DESCRIPTION = 'standard SMTP-Server';
/**
* Capabilities of this class (pipe-separated): default, forward
*/
const CAPABILITIES = 'default';
/**
* Attribute value to enable mail for an account, OR false if existense of attribute is enough to enable account
*
* Logical values uses inside EGroupware, different classes might store different values internally
*/
const MAIL_ENABLED = 'active';
/**
* Attribute value to only forward mail
*
* Logical values uses inside EGroupware, different classes might store different values internally
*/
const FORWARD_ONLY = 'forwardOnly';
/**
* Reference to global account object
*
* @var accounts
*/
protected $accounts;
/**
* SmtpServerId
*
* @var int
*/
var $SmtpServerId;
var $smtpAuth = false;
var $editForwardingAddress = false;
var $host;
var $port;
var $username;
var $password;
var $defaultDomain;
/**
* Constructor
*
* @param string $defaultDomain=null
*/
function __construct($defaultDomain=null)
{
$this->defaultDomain = $defaultDomain ? $defaultDomain : $GLOBALS['egw_info']['server']['mail_suffix'];
$this->accounts = $GLOBALS['egw']->accounts;
}
/**
* Return description for EMailAdmin
*
* @return string
*/
public static function description()
{
return static::DESCRIPTION;
}
/**
* Hook called on account creation
*
* @param array $_hookValues values for keys 'account_email', 'account_firstname', 'account_lastname', 'account_lid'
* @return boolean true on success, false on error writing to ldap
*/
function addAccount($_hookValues)
{
$mailLocalAddress = $_hookValues['account_email'] ? $_hookValues['account_email'] :
common::email_address($_hookValues['account_firstname'],
$_hookValues['account_lastname'],$_hookValues['account_lid'],$this->defaultDomain);
$account_id = !empty($_hookValues['account_id']) ? $_hookValues['account_id'] :
$this->accounts->name2id($_hookValues['account_lid'], 'account_lid', 'u');
if ($this->accounts->exists($account_id) != 1)
{
throw new egw_exception_assertion_failed("Account #$account_id ({$_hookValues['account_lid']}) does NOT exist!");
}
return $this->setUserData($account_id, array(), array(), null, self::MAIL_ENABLED, $mailLocalAddress, null);
}
/**
* Hook called on account deletion
*
* @param array $_hookValues values for keys 'account_lid', 'account_id'
* @return boolean true on success, false on error writing to ldap
*/
function deleteAccount($_hookValues)
{
return true;
}
/**
* Get all email addresses of an account
*
* @param string $_accountName
* @return array
*/
function getAccountEmailAddress($_accountName)
{
$emailAddresses = array();
if (($account_id = $this->accounts->name2id($_accountName, 'account_lid', 'u')))
{
$realName = trim($GLOBALS['egw_info']['user']['account_firstname'] . (!empty($GLOBALS['egw_info']['user']['account_firstname']) ? ' ' : '') . $GLOBALS['egw_info']['user']['account_lastname']);
$emailAddresses[] = array (
'name' => $realName,
'address' => $this->accounts->id2name($account_id, 'account_email'),
'type' => 'default',
);
}
return $emailAddresses;
}
/**
* Get the data of a given user
*
* @param int|string $user numerical account-id, account-name or email address
* @param boolean $match_uid_at_domain=true true: uid@domain matches, false only an email or alias address matches
* @return array with values for keys 'mailLocalAddress', 'mailAlternateAddress' (array), 'mailForwardingAddress' (array),
* 'accountStatus' ("active"), 'quotaLimit' and 'deliveryMode' ("forwardOnly")
*/
function getUserData($user, $match_uid_at_domain=false)
{
$userData = array();
return $userData;
}
/**
* Saves the forwarding information
*
* @param int $_accountID
* @param string|array $_forwardingAddress
* @param string $_keepLocalCopy 'yes'
* @return boolean true on success, false on error writing
*/
function saveSMTPForwarding($_accountID, $_forwardingAddress, $_keepLocalCopy)
{
return $this->setUserData($_accountID, array(),
$_forwardingAddress ? (array)$_forwardingAddress : array(),
$_keepLocalCopy != 'yes' ? self::FORWARD_ONLY : null, null, null, null, true);
}
/**
* Set the data of a given user
*
* @param int $_uidnumber numerical user-id
* @param array $_mailAlternateAddress
* @param array $_mailForwardingAddress
* @param string $_deliveryMode
* @param string $_accountStatus
* @param string $_mailLocalAddress
* @param int $_quota in MB
* @param boolean $_forwarding_only=false true: store only forwarding info, used internally by saveSMTPForwarding
* @param string $_setMailbox=null used only for account migration
* @return boolean true on success, false on error writing to ldap
*/
function setUserData($_uidnumber, array $_mailAlternateAddress, array $_mailForwardingAddress, $_deliveryMode,
$_accountStatus, $_mailLocalAddress, $_quota, $_forwarding_only=false, $_setMailbox=null)
{
return true;
}
/**
* Hook called on account update
*
* @param array $_hookValues values for keys 'account_email', 'account_firstname', 'account_lastname', 'account_lid', 'account_id'
* @return boolean true on success, false on error writing to ldap
*/
function updateAccount($_hookValues)
{
return true;
}
/**
* Build mailbox address for given account and mail_addr_type
*
* If $account is an array (with values for keys account_(id|lid|email), it does NOT call accounts class
*
* @param int|array $account account_id or whole account array with values for keys
* @param string $domain=null domain, default use $this->defaultDomain
* @param string $mail_login_type=null standard(uid), vmailmgr(uid@domain), email or uidNumber,
* default use $GLOBALS['egw_info']['server']['mail_login_type']
* @return string
*/
/*static*/ public function mailbox_addr($account,$domain=null,$mail_login_type=null)
{
if (is_null($domain)) $domain = $this->defaultDomain;
if (is_null($mail_login_type)) $mail_login_type = $GLOBALS['egw_info']['server']['mail_login_type'];
switch($mail_login_type)
{
case 'email':
$mbox = is_array($account) ? $account['account_email'] : $GLOBALS['egw']->accounts->id2name($account,'account_email');
break;
case 'uidNumber':
if (is_array($account)) $account = $account['account_id'];
$mbox = 'u'.$account.'@'.$domain;
break;
case 'standard':
$mbox = is_array($account) ? $account['account_lid'] : $GLOBALS['egw']->accounts->id2name($account);
break;
case 'vmailmgr':
default:
$mbox = is_array($account) ? $account['account_lid'] : $GLOBALS['egw']->accounts->id2name($account);
$mbox .= '@'.$domain;
break;
}
//error_log(__METHOD__."(".array2string($account).",'$domain','$mail_login_type') = '$mbox'");
return $mbox;
}
}

View File

@ -0,0 +1,166 @@
<?php
/**
* EGroupware EMailAdmin: Postfix using Active Directorys Exchange attributes
*
* @link http://www.egroupware.org
* @package emailadmin
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @copyright (c) 2013 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
/**
* Postfix using Active Directorys proxyAddresses attribute
* (available without installing Exchange schemas).
*
* This plugin is NOT meant to administrate an Exchange Server using AD!
*
* Aliases, forwards, forward only and quota is stored in
* multivalued attribute proxyAddresses with different prefixes.
*
* Primary mail address is additionally stored in proxyAddresses.
* Disabling mail removes proxyAddresses completly.
*
* @link http://msdn.microsoft.com/en-us/library/ms679424(v=vs.85).aspx
* @link http://www.dovecot.org/list/dovecot/2010-February/046763.html
*/
class emailadmin_smtp_ads extends emailadmin_smtp_ldap
{
/**
* Label shown in EMailAdmin
*/
const DESCRIPTION = 'Active Directory';
/**
* Capabilities of this class (pipe-separated): default, forward
*/
const CAPABILITIES = 'default|forward';
/**
* Name of schema, has to be in the right case!
*/
const SCHEMA = 'top';
/**
* Filter for users
*
* objectCategory is indexed, while objectclass is not!
*/
const USER_FILTER = '(objectCategory=person)';
/**
* Name of schema for groups, has to be in the right case!
*/
const GROUP_SCHEMA = 'group';
/**
* Attribute to enable mail for an account, OR false if existence of ALIAS_ATTR is enough for mail delivery
*/
const MAIL_ENABLE_ATTR = false;
/**
* Attribute for aliases OR false to use mail
*/
const ALIAS_ATTR = 'proxyaddresses';
/**
* Caseinsensitive prefix for aliases (eg. "smtp:"), aliases get added with it and only aliases with it are reported
*/
const ALIAS_PREFIX = 'smtp:';
/**
* Primary mail address required as an alias too: true or false
*/
const REQUIRE_MAIL_AS_ALIAS = true;
/**
* Attribute for forwards OR false if not possible
*/
const FORWARD_ATTR = 'proxyaddresses';
/**
* Caseinsensitive prefix for forwards (eg. "forward:"), forwards get added with it and only forwards with it are reported
*/
const FORWARD_PREFIX = 'forward:';
/**
* Attribute to only forward mail, OR false if not available
*/
const FORWARD_ONLY_ATTR = 'proxyaddresses';
/**
* Value of forward-only attribute, if not set any value will switch forward only on (checked with =*)
*/
const FORWARD_ONLY_VALUE = 'forwardOnly';
/**
* Attribute for mailbox, to which mail gets delivered OR false if not supported
*/
const MAILBOX_ATTR = false;
/**
* Attribute for quota limit of user in MB
*/
const QUOTA_ATTR = 'proxyaddresses';
/**
* Caseinsensitive prefix for quota (eg. "quota:"), quota get added with it and only quota with it are reported
*/
const QUOTA_PREFIX = 'quota:';
/**
* Internal quota in MB is multiplicated with this factor before stored in LDAP
*/
const QUOTA_FACTOR = 1048576;
/**
* Attribute for user name
*/
const USER_ATTR = 'samaccountname';
/**
* Attribute for numeric user id (optional)
*
* No single uidNumber attribute, as we use RID (last part of objectSid attribute) for it.
*/
const USERID_ATTR = false;
/**
* Return LDAP connection
*/
protected function getLdapConnection()
{
static $ldap;
if (is_null($ldap))
{
if (!is_a($GLOBALS['egw']->accounts->backend, 'accounts_ads'))
{
throw new egw_exception_wrong_userinput('Postfix with Active Directory requires accounts stored in ADS!');
}
$ldap = $GLOBALS['egw']->accounts->backend->ldap_connection();
}
return $ldap;
}
/**
* Constructor
*
* @param string $defaultDomain=null
*/
function __construct($defaultDomain=null)
{
parent::__construct($defaultDomain);
$this->setBase($GLOBALS['egw']->accounts->backend->ads_context());
}
/**
* Return description for EMailAdmin
*
* @return string
*/
public static function description()
{
return static::DESCRIPTION;
}
}

View File

@ -0,0 +1,783 @@
<?php
/**
* EGroupware EMailAdmin: generic base class for SMTP configuration via LDAP
*
* @link http://www.stylite.de
* @package emailadmin
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @copyright (c) 2010-13 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
/**
* Generic base class for SMTP configuration via LDAP
*
* This class uses just inetOrgPerson schema to store primary mail address and aliases
*
* Aliases are stored as aditional mail Attributes. The primary mail address is the first one.
* This schema does NOT support forwarding or disabling of an account for mail.
*
* Aliases, forwards, forward-only and quota attribute can be stored in same multivalued attribute
* with different prefixes.
*
* Please do NOT copy this class! Extend it and set the constants different.
*
* Please note: schema names muse use correct case (eg. "inetOrgPerson"),
* while attribute name muse use lowercase, as LDAP returns them as keys in lowercase!
*/
class emailadmin_smtp_ldap extends emailadmin_smtp
{
/**
* Name of schema, has to be in the right case!
*/
const SCHEMA = 'inetOrgPerson';
/**
* Filter for users
*/
const USER_FILTER = '(objectClass=posixAccount)';
/**
* Name of schema for groups, has to be in the right case!
*/
const GROUP_SCHEMA = 'posixGroup';
/**
* Attribute to enable mail for an account, OR false if existence of ALIAS_ATTR is enough for mail delivery
*/
const MAIL_ENABLE_ATTR = false;
/**
* Attribute for aliases OR false to use mail
*/
const ALIAS_ATTR = false;
/**
* Caseinsensitive prefix for aliases (eg. "smtp:"), aliases get added with it and only aliases with it are reported
*/
const ALIAS_PREFIX = '';
/**
* Primary mail address required as an alias too: true or false
*/
const REQUIRE_MAIL_AS_ALIAS = false;
/**
* Attribute for forwards OR false if not possible
*/
const FORWARD_ATTR = false;
/**
* Caseinsensitive prefix for forwards (eg. "forward:"), forwards get added with it and only forwards with it are reported
*/
const FORWARD_PREFIX = '';
/**
* Attribute to only forward mail, OR false if not available
*/
const FORWARD_ONLY_ATTR = false;
/**
* Value of forward-only attribute, if empty any value will switch forward only on (checked with =*)
*/
const FORWARD_ONLY = 'forwardOnly';
/**
* Attribute for mailbox, to which mail gets delivered OR false if not supported
*/
const MAILBOX_ATTR = false;
/**
* Attribute for quota limit of user in MB
*/
const QUOTA_ATTR = false;
/**
* Caseinsensitive prefix for quota (eg. "quota:"), quota get added with it and only quota with it are reported
*/
const QUOTA_PREFIX = '';
/**
* Internal quota in MB is multiplicated with this factor before stored in LDAP
*/
const QUOTA_FACTOR = 1048576;
/**
* Attribute for user name
*/
const USER_ATTR = 'uid';
/**
* Attribute for numeric user id (optional)
*/
const USERID_ATTR = 'uidnumber';
/**
* Base for all searches, defaults to $GLOBALS['egw_info']['server']['ldap_context'] and can be set via setBase($base)
*
* @var string
*/
protected $search_base;
/**
* Special search filter for getUserData only
*
* @var string
*/
protected $search_filter;
/**
* Log all LDAP writes / actions to error_log
*/
var $debug = false;
/**
* from here on implementation, please do NOT copy but extend it!
*/
/**
* Constructor
*
* @param string $defaultDomain=null
*/
function __construct($defaultDomain=null)
{
parent::__construct($defaultDomain);
if (empty($this->search_base))
{
$this->setBase($GLOBALS['egw_info']['server']['ldap_context']);
}
}
/**
* Return description for EMailAdmin
*
* @return string
*/
public static function description()
{
return 'LDAP ('.static::SCHEMA.')';
}
/**
* Set ldap search filter for aliases and forwards (getUserData)
*
* @param string $filter
*/
function setFilter($filter)
{
$this->search_filter = $filter;
}
/**
* Set ldap search base, default $GLOBALS['egw_info']['server']['ldap_context']
*
* @param string $base
*/
function setBase($base)
{
$this->search_base = $base;
}
/**
* Hook called on account creation
*
* @param array $_hookValues values for keys 'account_email', 'account_firstname', 'account_lastname', 'account_lid'
* @return boolean true on success, false on error writing to ldap
*/
function addAccount($_hookValues)
{
$mailLocalAddress = $_hookValues['account_email'] ? $_hookValues['account_email'] :
common::email_address($_hookValues['account_firstname'],
$_hookValues['account_lastname'],$_hookValues['account_lid'],$this->defaultDomain);
$ds = $this->getLdapConnection();
$filter = static::USER_ATTR."=".ldap::quote($_hookValues['account_lid']);
if (!($sri = @ldap_search($ds, $this->search_base, $filter)))
{
return false;
}
$allValues = ldap_get_entries($ds, $sri);
$accountDN = $allValues[0]['dn'];
$objectClasses = $allValues[0]['objectclass'];
unset($objectClasses['count']);
// add our mail schema, if not already set
if(!in_array(static::SCHEMA,$objectClasses) && !in_array(strtolower(static::SCHEMA),$objectClasses))
{
$objectClasses[] = static::SCHEMA;
}
// the new code for postfix+cyrus+ldap
$newData = array(
'mail' => $mailLocalAddress,
'objectclass' => $objectClasses
);
// does schema have explicit alias attribute AND require mail added as alias too
if (static::ALIAS_ATTR && static::REQUIRE_MAIL_AS_ALIAS)
{
$newData[static::ALIAS_ATTR] = static::ALIAS_PREFIX.$mailLocalAddress;
}
// does schema support enabling/disabling mail via attribute
if (static::MAIL_ENABLE_ATTR)
{
$newData[static::MAIL_ENABLE_ATTR] = static::MAIL_ENABLED;
}
// does schema support an explicit mailbox name --> set it
if (static::MAILBOX_ATTR)
{
$newData[static::MAILBOX_ATTR] = self::mailbox_addr($_hookValues);
}
if (!($ret = ldap_mod_replace($ds, $accountDN, $newData)) || $this->debug)
{
error_log(__METHOD__.'('.array2string(func_get_args()).") --> ldap_mod_replace(,'$accountDN',".
array2string($newData).') returning '.array2string($ret).
(!$ret?' ('.ldap_error($ds).')':''));
}
return $ret;
}
/**
* Get all email addresses of an account
*
* @param string $_accountName
* @return array
*/
function getAccountEmailAddress($_accountName)
{
$emailAddresses = array();
$ds = $this->getLdapConnection();
$filter = '(&'.static::USER_FILTER.'('.static::USER_ATTR.'='.ldap::quote($_accountName).'))';
$attributes = array('dn', 'mail', static::ALIAS_ATTR);
$sri = @ldap_search($ds, $this->search_base, $filter, $attributes);
if ($sri)
{
$realName = trim($GLOBALS['egw_info']['user']['account_firstname'] . (!empty($GLOBALS['egw_info']['user']['account_firstname']) ? ' ' : '') . $GLOBALS['egw_info']['user']['account_lastname']);
$allValues = ldap_get_entries($ds, $sri);
if(isset($allValues[0]['mail']))
{
foreach($allValues[0]['mail'] as $key => $value)
{
if ($key === 'count') continue;
$emailAddresses[] = array (
'name' => $realName,
'address' => $value,
'type' => !$key ? 'default' : 'alternate',
);
}
}
if (static::ALIAS_ATTR && isset($allValues[0][static::ALIAS_ATTR]))
{
foreach(self::getAttributePrefix($allValues[0][static::ALIAS_ATTR], static::ALIAS_PREFIX) as $value)
{
$emailAddresses[] = array(
'name' => $realName,
'address' => $value,
'type' => 'alternate'
);
}
}
}
if ($this->debug) error_log(__METHOD__."('$_accountName') returning ".array2string($emailAddresses));
return $emailAddresses;
}
/**
* Get the data of a given user
*
* Multiple accounts may match, if an email address is specified.
* In that case only mail routing fields "uid", "mailbox" and "forward" contain values
* from all accounts!
*
* @param int|string $user numerical account-id, account-name or email address
* @param boolean $match_uid_at_domain=true true: uid@domain matches, false only an email or alias address matches
* @return array with values for keys 'mailLocalAddress', 'mailAlternateAddress' (array), 'mailForwardingAddress' (array),
* 'accountStatus' ("active"), 'quotaLimit' and 'deliveryMode' ("forwardOnly")
*/
function getUserData($user, $match_uid_at_domain=false)
{
$userData = array(
'mailbox' => array(),
'forward' => array(),
);
$ldap = $this->getLdapConnection();
if (is_numeric($user) && static::USERID_ATTR)
{
$filter = '('.static::USERID_ATTR.'='.(int)$user.')';
}
elseif (strpos($user, '@') === false)
{
if (is_numeric($user)) $user = $GLOBALS['egw']->accounts->id2name($user);
$filter = '(&'.static::USER_FILTER.'('.static::USER_ATTR.'='.ldap::quote($user).'))';
}
else // email address --> build filter by attributes defined in config
{
list($namepart, $domain) = explode('@', $user);
if (!empty($this->search_filter))
{
$filter = strtr($this->search_filter, array(
'%s' => ldap::quote($user),
'%u' => ldap::quote($namepart),
'%d' => ldap::quote($domain),
));
}
else
{
$to_or = array('(mail='.ldap::quote($user).')');
if ($match_uid_at_domain) $to_or[] = '('.static::USER_ATTR.'='.ldap::quote($namepart).')';
if (static::ALIAS_ATTR)
{
$to_or[] = '('.static::ALIAS_ATTR.'='.static::ALIAS_PREFIX.ldap::quote($user).')';
}
$filter = count($to_or) > 1 ? '(|'.explode('', $to_or).')' : $to_or[0];
// if an enable attribute is set, only return enabled accounts
if (static::MAIL_ENABLE_ATTR)
{
$filter = '(&('.static::MAIL_ENABLE_ATTR.'='.
(static::MAIL_ENABLED ? static::MAIL_ENABLED : '*').")$filter)";
}
}
}
$attributes = array_values(array_diff(array(
'mail', 'objectclass', static::USER_ATTR, static::MAIL_ENABLE_ATTR, static::ALIAS_ATTR,
static::MAILBOX_ATTR, static::FORWARD_ATTR, static::FORWARD_ONLY_ATTR, static::QUOTA_ATTR,
), array(false, '')));
$sri = ldap_search($ldap, $this->search_base, $filter, $attributes);
if ($sri)
{
$allValues = ldap_get_entries($ldap, $sri);
if ($this->debug) error_log(__METHOD__."('$user') --> ldap_search(, '$this->search_base', '$filter') --> ldap_get_entries=".array2string($allValues[0]));
foreach($allValues as $key => $values)
{
if ($key === 'count') continue;
// groups are always active (if they have an email) and allways forwardOnly
if (in_array(static::GROUP_SCHEMA, $values['objectclass']))
{
$accountStatus = emailadmin_smtp::MAIL_ENABLED;
$deliveryMode = emailadmin_smtp::FORWARD_ONLY;
}
else // for users we have to check the attributes
{
if (static::MAIL_ENABLE_ATTR)
{
$accountStatus = isset($values[static::MAIL_ENABLE_ATTR]) &&
(static::MAIL_ENABLED && !strcasecmp($values[static::MAIL_ENABLE_ATTR][0], static::MAIL_ENABLED) ||
!static::MAIL_ENABLED && $values[static::ALIAS_ATTR ? static::ALIAS_ATTR : 'mail']['count'] > 0) ?
emailadmin_smtp::MAIL_ENABLED : '';
}
else
{
$accountStatus = $values[static::ALIAS_ATTR ? static::ALIAS_ATTR : 'mail']['count'] > 0 ?
emailadmin_smtp::MAIL_ENABLED : '';
}
if (static::FORWARD_ONLY_ATTR)
{
if (static::FORWARD_ONLY) // check caseinsensitiv for existence of that value
{
$deliveryMode = self::getAttributePrefix($values[static::FORWARD_ONLY_ATTR], static::FORWARD_ONLY) ?
emailadmin_smtp::FORWARD_ONLY : '';
}
else // check for existence of any value
{
$deliveryMode = $values[static::FORWARD_ONLY_ATTR]['count'] > 0 ?
emailadmin_smtp::FORWARD_ONLY : '';
}
}
else
{
$deliveryMode = '';
}
}
// collect mail routing data (can be from multiple (active) accounts and groups!)
if ($accountStatus)
{
// groups never have a mailbox, accounts can have a deliveryMode of "forwardOnly"
if ($deliveryMode != emailadmin_smtp::FORWARD_ONLY)
{
$userData[static::USER_ATTR][] = $values[static::USER_ATTR][0];
if (static::MAILBOX_ATTR && isset($values[static::MAILBOX_ATTR]))
{
$userData['mailbox'][] = $values[static::MAILBOX_ATTR][0];
}
}
if (static::FORWARD_ATTR && $values[static::FORWARD_ATTR])
{
$userData['forward'] = array_merge($userData['forward'],
self::getAttributePrefix($values[static::FORWARD_ATTR], static::FORWARD_PREFIX, false));
}
}
// regular user-data can only be from users, NOT groups
if (in_array(static::GROUP_SCHEMA, $values['objectclass'])) continue;
$userData['mailLocalAddress'] = $values['mail'][0];
$userData['accountStatus'] = $accountStatus;
if (static::ALIAS_ATTR)
{
$userData['mailAlternateAddress'] = self::getAttributePrefix($values[static::ALIAS_ATTR], static::ALIAS_PREFIX);
}
else
{
$userData['mailAlternateAddress'] = (array)$values['mail'];
unset($userData['mailAlternateAddress']['count']);
unset($userData['mailAlternateAddress'][0]);
$userData['mailAlternateAddress'] = array_values($userData['mailAlternateAddress']);
}
if (static::FORWARD_ATTR)
{
$userData['mailForwardingAddress'] = self::getAttributePrefix($values[static::FORWARD_ATTR], static::FORWARD_PREFIX);
}
if (static::MAILBOX_ATTR) $userData['mailMessageStore'] = $values[static::MAILBOX_ATTR][0];
$userData['deliveryMode'] = $deliveryMode;
// eg. suse stores all email addresses as aliases
if (static::REQUIRE_MAIL_AS_ALIAS &&
($k = array_search($userData['mailLocalAddress'],$userData['mailAlternateAddress'])) !== false)
{
unset($userData['mailAlternateAddress'][$k]);
}
if (static::QUOTA_ATTR && isset($values[static::QUOTA_ATTR]))
{
$userData['quotaLimit'] = self::getAttributePrefix($values[static::QUOTA_ATTR], static::QUOTA_PREFIX);
$userData['quotaLimit'] = array_shift($userData['quotaLimit']);
$userData['quotaLimit'] = $userData['quotaLimit'] ? $userData['quotaLimit'] / static::QUOTA_FACTOR : null;
}
}
}
if ($this->debug) error_log(__METHOD__."('$user') returning ".array2string($userData));
return $userData;
}
/**
* Set the data of a given user
*
* @param int $_uidnumber numerical user-id
* @param array $_mailAlternateAddress
* @param array $_mailForwardingAddress
* @param string $_deliveryMode
* @param string $_accountStatus
* @param string $_mailLocalAddress
* @param int $_quota in MB
* @param boolean $_forwarding_only=false not used as we have our own addAccount method
* @param string $_setMailbox=null used only for account migration
* @return boolean true on success, false on error writing to ldap
*/
function setUserData($_uidnumber, array $_mailAlternateAddress, array $_mailForwardingAddress, $_deliveryMode,
$_accountStatus, $_mailLocalAddress, $_quota, $_forwarding_only=false, $_setMailbox=null)
{
unset($_forwarding_only); // not used
if (static::USERID_ATTR)
{
$filter = static::USERID_ATTR.'='.(int)$_uidnumber;
}
else
{
$uid = $GLOBALS['egw']->accounts->id2name($_uidnumber);
$filter = static::USER_ATTR.'='.ldap::quote($uid);
}
$ldap = $this->getLdapConnection();
if (!($sri = @ldap_search($ldap, $this->search_base, $filter)))
{
return false;
}
$allValues = ldap_get_entries($ldap, $sri);
$accountDN = $allValues[0]['dn'];
$uid = $allValues[0][static::USER_ATTR][0];
$objectClasses = $allValues[0]['objectclass'];
unset($objectClasses['count']);
if(!in_array(static::SCHEMA,$objectClasses) && !in_array(strtolower(static::SCHEMA),$objectClasses))
{
$objectClasses[] = static::SCHEMA;
$newData['objectclass'] = $objectClasses;
}
sort($_mailAlternateAddress);
sort($_mailForwardingAddress);
$newData['mail'] = $_mailLocalAddress;
// does schema have explicit alias attribute
if (static::ALIAS_ATTR)
{
self::setAttributePrefix($newData[static::ALIAS_ATTR], $_mailAlternateAddress, static::ALIAS_PREFIX);
// all email must be stored as alias for suse
if (static::REQUIRE_MAIL_AS_ALIAS && !in_array($_mailLocalAddress,(array)$_mailAlternateAddress))
{
self::setAttributePrefix($newData[static::ALIAS_ATTR], $_mailLocalAddress, static::ALIAS_PREFIX);
}
}
// or de we add them - if existing - to mail attr
elseif ($_mailAlternateAddress)
{
self::setAttributePrefix($newData['mail'], $_mailAlternateAddress, static::ALIAS_PREFIX);
}
// does schema support to store forwards
if (static::FORWARD_ATTR)
{
self::setAttributePrefix($newData[static::FORWARD_ATTR], $_mailForwardingAddress, static::FORWARD_PREFIX);
}
// does schema support only forwarding incomming mail
if (static::FORWARD_ONLY_ATTR)
{
self::setAttributePrefix($newData[static::FORWARD_ONLY_ATTR],
$_deliveryMode ? (static::FORWARD_ONLY ? static::FORWARD_ONLY : 'forwardOnly') : array());
}
// does schema support an explicit mailbox name --> set it with $uid@$domain
if (static::MAILBOX_ATTR && empty($allValues[0][static::MAILBOX_ATTR][0]))
{
$newData[static::MAILBOX_ATTR] = $this->mailbox_addr(array(
'account_id' => $_uidnumber,
'account_lid' => $uid,
'account_email' => $_mailLocalAddress,
));
}
if (static::QUOTA_ATTR)
{
self::setAttributePrefix($newData[static::QUOTA_ATTR],
(int)$_quota > 0 ? (int)$_quota*static::QUOTA_FACTOR : array(), static::QUOTA_PREFIX);
}
// does schema support enabling/disabling mail via attribute
if (static::MAIL_ENABLE_ATTR)
{
$newData[static::MAIL_ENABLE_ATTR] = $_accountStatus ? static::MAIL_ENABLED : array();
}
// if we have no mail-enabled attribute, but require primary mail in aliases-attr
// we do NOT write aliases, if mail is not enabled
if (!$_accountStatus && !static::MAIL_ENABLE_ATTR && static::REQUIRE_MAIL_AS_ALIAS)
{
$newData[static::ALIAS_ATTR] = array();
}
// does schema support an explicit mailbox name --> set it, $_setMailbox is given
if (static::MAILBOX_ATTR && $_setMailbox)
{
$newData[static::MAILBOX_ATTR] = $_setMailbox;
}
if ($this->debug) error_log(__METHOD__.'('.array2string(func_get_args()).") --> ldap_mod_replace(,'$accountDN',".array2string($newData).')');
return ldap_mod_replace($ldap, $accountDN, $newData);
}
/**
* Saves the forwarding information
*
* @param int $_accountID
* @param string $_forwardingAddress
* @param string $_keepLocalCopy 'yes'
* @return boolean true on success, false on error writing to ldap
*/
function saveSMTPForwarding($_accountID, $_forwardingAddress, $_keepLocalCopy)
{
$ds = $this->getLdapConnection();
if (static::USERID_ATTR)
{
$filter = '(&'.static::USER_FILTER.'('.static::USERID_ATTR.'='.(int)$_accountID.'))';
}
else
{
$uid = $GLOBALS['egw']->accounts->id2name($_accountID);
$filter = '(&'.static::USER_FILTER.'('.static::USER_ATTR.'='.ldap::quote($uid).'))';
}
$attributes = array('dn', static::FORWARD_ATTR, 'objectclass');
if (static::FORWARD_ONLY_ATTR)
{
$attributes[] = static::FORWARD_ONLY_ATTR;
}
$sri = ldap_search($ds, $this->search_base, $filter, $attributes);
if ($sri)
{
$newData = array();
$allValues = ldap_get_entries($ds, $sri);
$objectClasses = $allValues[0]['objectclass'];
$newData['objectclass'] = $allValues[0]['objectclass'];
unset($newData['objectclass']['count']);
if(!in_array(static::SCHEMA,$objectClasses))
{
$newData['objectclass'][] = static::SCHEMA;
}
if (static::FORWARD_ATTR)
{
// copy all non-forward data (different prefix) to newData, all existing forwards to $forwards
$newData[static::FORWARD_ATTR] = $allValues[0][static::FORWARD_ATTR];
$forwards = self::getAttributePrefix($newData[static::FORWARD_ATTR], static::FORWARD_PREFIX);
if(!empty($_forwardingAddress))
{
if($forwards)
{
if (!is_array($_forwardingAddress))
{
// replace the first forwarding address (old behavior)
$forwards[0] = $_forwardingAddress;
}
else
{
// replace all forwarding Addresses
$forwards = $_forwardingAddress;
}
}
else
{
$forwards = (array)$_forwardingAddress;
}
if (static::FORWARD_ONLY_ATTR)
{
self::getAttributePrefix($newData[static::FORWARD_ONLY_ATTR], static::FORWARD_ONLY);
self::setAttributePrefix($newData[static::FORWARD_ONLY_ATTR],
$_keepLocalCopy == 'yes' ? array() : static::FORWARD_ONLY);
}
}
else
{
$forwards = array();
}
// merge in again all new set forwards incl. opt. prefix
self::getAttributePrefix($newData[static::FORWARD_ATTR], $forwards, static::FORWARD_PREFIX);
}
if ($this->debug) error_log(__METHOD__.'('.array2string(func_get_args()).") --> ldap_mod_replace(,'{$allValues[0]['dn']}',".array2string($newData).')');
return ldap_modify ($ds, $allValues[0]['dn'], $newData);
}
}
/**
* Get configured mailboxes of a domain
*
* @param boolean $return_inactive return mailboxes NOT marked as accountStatus=active too
* @return array uid => name-part of mailMessageStore
*/
function getMailboxes($return_inactive)
{
$ds = $this->getLdapConnection();
$filter = array("(mail=*)");
$attrs = array(static::USER_ATTR, 'mail');
if (static::MAILBOX_ATTR)
{
$filter[] = '('.static::MAILBOX_ATTR.'=*)';
$attrs[] = static::MAILBOX_ATTR;
}
if (!$return_inactive && static::MAIL_ENABLE_ATTR)
{
$filter[] = '('.static::MAIL_ENABLE_ATTR.'='.static::MAIL_ENABLED.')';
}
if (count($filter) > 1)
{
$filter = '(&'.implode('', $filter).')';
}
else
{
$filter = $filter[0];
}
if (!($sr = @ldap_search($ds, $this->search_base, $filter, $attrs)))
{
//error_log("Error ldap_search(\$ds, '$base', '$filter')!");
return array();
}
$entries = ldap_get_entries($ds, $sr);
unset($entries['count']);
$mailboxes = array();
foreach($entries as $entry)
{
if ($entry[static::USER_ATTR][0] == 'anonymous') continue; // anonymous is never a mail-user!
list($mailbox) = explode('@', $entry[static::MAILBOX_ATTR ? static::MAILBOX_ATTR : 'mail'][0]);
$mailboxes[$entry[static::USER_ATTR][0]] = $mailbox;
}
return $mailboxes;
}
/**
* Set values in a given LDAP attribute using an optional prefix
*
* @param array &$attribute on return array with values set and existing values preseved
* @param string|array $values value(s) to set
* @param string $prefix='' prefix to use or ''
*/
protected static function setAttributePrefix(&$attribute, $values, $prefix='')
{
//$attribute_in = $attribute;
if (!isset($attribute)) $attribute = array();
if (!is_array($attribute)) $attribute = array($attribute);
foreach((array)$values as $value)
{
$attribute[] = $prefix.$value;
}
//error_log(__METHOD__."(".array2string($attribute_in).", ".array2string($values).", '$prefix') attribute=".array2string($attribute));
}
/**
* Get values having an optional prefix from a given LDAP attribute
*
* @param array &$attribute only "count" and prefixed values get removed, get's reindexed, if values have been removed
* @param string $prefix='' prefix to use or ''
* @param boolean $remove=true remove returned values from $attribute
* @return array with values (prefix removed) or array() if nothing found
*/
protected static function getAttributePrefix(&$attribute, $prefix='', $remove=true)
{
//$attribute_in = $attribute;
$values = array();
if (isset($attribute))
{
unset($attribute['count']);
foreach($attribute as $key => $value)
{
if (!$prefix || stripos($value, $prefix) === 0)
{
if ($remove) unset($attribute[$key]);
$values[] = substr($value, strlen($prefix));
}
}
// reindex $attribute, if neccessary
if ($values && $attribute) $attribute = array_values($attribute);
}
//error_log(__METHOD__."(".array2string($attribute_in).", '$prefix', $remove) attribute=".array2string($attribute).' returning '.array2string($values));
return $values;
}
/**
* Return LDAP connection
*/
protected function getLdapConnection()
{
static $ldap=null;
if (is_null($ldap)) $ldap = $GLOBALS['egw']->ldap->ldapConnect();
return $ldap;
}
}

View File

@ -0,0 +1,84 @@
<?php
/**
* EGroupware: Postfix with Mandriva mailAccount schema
*
* @link http://www.egroupware.org
* @package emailadmin
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @copyright (c) 2010-13 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @version $Id$
*/
/**
* Postfix with Mandriva mailAccount schema
*/
class emailadmin_smtp_mandriva extends emailadmin_smtp_ldap
{
/**
* Capabilities of this class (pipe-separated): default, forward
*/
const CAPABILITIES = 'default|forward';
/**
* Name of schema, has to be in the right case!
*/
const SCHEMA = 'mailAccount';
/**
* Attribute to enable mail for an account, OR false if existence of ALIAS_ATTR is enough for mail delivery
*/
const MAIL_ENABLE_ATTR = 'mailenable';
/**
* Attribute value to enable mail for an account, OR false if existense of attribute is enough to enable account
*/
const MAIL_ENABLED = 'OK';
/**
* Attribute for aliases OR false to use mail
*/
const ALIAS_ATTR = 'mailalias';
/**
* Primary mail address required as an alias too: true or false
*/
const REQUIRE_MAIL_AS_ALIAS=false;
/**
* Attribute for forwards OR false if not possible
*/
const FORWARD_ATTR = 'maildrop';
/**
* Attribute to only forward mail, OR false if not available
*/
const FORWARD_ONLY_ATTR = false;
/**
* Attribute value to only forward mail
*/
const FORWARD_ONLY = false;
/**
* Attribute for mailbox, to which mail gets delivered OR false if not supported
*/
const MAILBOX_ATTR = 'mailbox';
/**
* Attribute for quota limit of user in MB
*/
const QUOTA_ATTR = 'mailuserquota';
/**
* Log all LDAP writes / actions to error_log
*/
var $debug = false;
/**
* Return description for EMailAdmin
*
* @return string
*/
public static function description()
{
return 'LDAP (Mandriva '.static::SCHEMA.')';
}
}

View File

@ -0,0 +1,76 @@
<?php
/**
* EGroupware EMailAdmin: Postfix with new qmailUser schema
*
* @link http://www.egroupware.org
* @package emailadmin
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @copyright (c) 2013 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
/**
* Postfix with new qmailUser schema (mailQuotaSize instead of mailQuota)
*/
class emailadmin_smtp_qmail extends emailadmin_smtp_ldap
{
/**
* Capabilities of this class (pipe-separated): default, forward
*/
const CAPABILITIES = 'default|forward';
/**
* Name of schema, has to be in the right case!
*/
const SCHEMA = 'qmailUser';
/**
* Attribute to enable mail for an account, OR false if existence of ALIAS_ATTR is enough for mail delivery
*/
const MAIL_ENABLE_ATTR = 'accountstatus';
/**
* Attribute value to enable mail for an account, OR false if existense of attribute is enough to enable account
*/
const MAIL_ENABLED = 'active';
/**
* Attribute for aliases OR false to use mail
*/
const ALIAS_ATTR = 'mailalternateaddress';
/**
* Primary mail address required as an alias too: true or false
*/
const REQUIRE_MAIL_AS_ALIAS=false;
/**
* Attribute for forwards OR false if not possible
*/
const FORWARD_ATTR = 'mailforwardingaddress';
/**
* Attribute to only forward mail, OR false if not available
*/
const FORWARD_ONLY_ATTR = 'deliverymode';
/**
* Attribute for mailbox, to which mail gets delivered OR false if not supported
*/
const MAILBOX_ATTR = 'mailmessagestore';
/**
* Attribute for quota limit of user in MB
*/
const QUOTA_ATTR = 'mailquotasize';
/**
* Return description for EMailAdmin
*
* @return string
*/
public static function description()
{
return 'LDAP (new '.static::SCHEMA.')';
}
}

View File

@ -0,0 +1,376 @@
<?php
/**
* EGroupware EMailAdmin: SMTP configuration / mail accounts via SQL
*
* @link http://www.stylite.de
* @package emailadmin
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @copyright (c) 2012-13 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
/**
* SMTP configuration / mail accounts via SQL
*/
class emailadmin_smtp_sql extends emailadmin_smtp
{
/**
* Label shown in EMailAdmin
*/
const DESCRIPTION = 'SQL';
/**
* Capabilities of this class (pipe-separated): default, forward
*/
const CAPABILITIES = 'default|forward';
/**
* Reference to global db object
*
* @var egw_db
*/
protected $db;
/**
* Name of table
*/
const TABLE = 'egw_mailaccounts';
/**
* Name of app our table belongs to
*/
const APP = 'emailadmin';
/**
* Values for mail_type column
*
* enabled and delivery must have smaller values then alias, forward or mailbox (getUserData depend on it)!
*/
const TYPE_ENABLED = 0;
const TYPE_DELIVERY = 1;
const TYPE_QUOTA = 2;
const TYPE_ALIAS = 3;
const TYPE_FORWARD = 4;
const TYPE_MAILBOX = 5;
/**
* Constructor
*
* @param string $defaultDomain=null
*/
function __construct($defaultDomain=null)
{
parent::__construct($defaultDomain);
$this->db = $GLOBALS['egw']->db;
}
/**
* Get all email addresses of an account
*
* @param string $_accountName
* @return array
*/
function getAccountEmailAddress($_accountName)
{
$emailAddresses = parent::getAccountEmailAddress($_accountName);
if (($account_id = $this->accounts->name2id($_accountName, 'account_lid', 'u')))
{
foreach($this->db->select(self::TABLE, 'mail_value', array(
'account_id' => $account_id,
'mail_type' => self::TYPE_ALIAS,
), __LINE__, __FILE__, false, 'ORDER BY mail_value', self::APP) as $row)
{
$emailAddresses[] = array (
'name' => $emailAddresses[0]['name'],
'address' => $row['mail_value'],
'type' => 'alternate',
);
}
}
if ($this->debug) error_log(__METHOD__."('$_accountName') returning ".array2string($emailAddresses));
return $emailAddresses;
}
/**
* Get the data of a given user
*
* Multiple accounts may match, if an email address is specified.
* In that case only mail routing fields "uid", "mailbox" and "forward" contain values
* from all accounts!
*
* @param int|string $user numerical account-id, account-name or email address
* @param boolean $match_uid_at_domain=true true: uid@domain matches, false only an email or alias address matches
* @return array with values for keys 'mailLocalAddress', 'mailAlternateAddress' (array), 'mailForwardingAddress' (array),
* 'accountStatus' ("active"), 'quotaLimit' and 'deliveryMode' ("forwardOnly")
*/
function getUserData($user, $match_uid_at_domain=false)
{
$userData = array();
if (is_numeric($user) && $this->accounts->exists($user))
{
$account_id = $user;
}
elseif (strpos($user, '@') === false)
{
$account_id = $this->accounts->name2id($user, 'account_lid', 'u');
}
else // email address
{
// check with primary email address
if (($account_id = $this->accounts->name2id($user, 'account_email')))
{
$account_id = array($account_id);
}
else
{
$account_id = array();
}
// always allow username@domain
list($account_lid) = explode('@', $user);
if ($match_uid_at_domain && ($id = $this->accounts->name2id($account_lid, 'account_lid')) && !in_array($id, $account_id))
{
$account_id[] = $id;
}
foreach($this->db->select(self::TABLE, 'account_id', array(
'mail_type' => self::TYPE_ALIAS,
'mail_value' => $user,
), __LINE__, __FILE__, false, '', self::APP) as $row)
{
if (!in_array($row['account_id'], $account_id)) $account_id[] = $row['account_id'];
}
//error_log(__METHOD__."('$user') account_id=".array2string($account_id));
}
if ($account_id)
{
if (!is_array($account_id))
{
$userData['mailLocalAddress'] = $this->accounts->id2name($account_id, 'account_email');
}
$enabled = $forwardOnly = array();
foreach($this->db->select(self::TABLE, '*', array(
'account_id' => $account_id,
), __LINE__, __FILE__, false, 'ORDER BY mail_type,mail_value', self::APP) as $row)
{
switch($row['mail_type'])
{
case self::TYPE_ENABLED:
$userData['accountStatus'] = $row['mail_value'];
$enabled[$row['account_id']] = $row['mail_value'] == self::MAIL_ENABLED;
break;
case self::TYPE_DELIVERY:
$userData['deliveryMode'] = !strcasecmp($row['mail_value'], self::FORWARD_ONLY) ? emailadmin_smtp::FORWARD_ONLY : '';
$forwardOnly[$row['account_id']] = !strcasecmp($row['mail_value'], self::FORWARD_ONLY);
break;
case self::TYPE_QUOTA:
$userData['quotaLimit'] = $row['mail_value'];
break;
case self::TYPE_ALIAS:
$userData['mailAlternateAddress'][] = $row['mail_value'];
break;
case self::TYPE_FORWARD:
$userData['mailForwardingAddress'][] = $row['mail_value'];
if ($row['account_id'] < 0 || $enabled[$row['account_id']])
{
$userData['forward'][] = $row['mail_value'];
}
break;
case self::TYPE_MAILBOX:
$userData['mailMessageStore'] = $row['mail_value'];
//error_log(__METHOD__."('$user') row=".array2string($row).', enabled[$row[account_id]]='.array2string($enabled[$row['account_id']]).', forwardOnly[$row[account_id]]='.array2string($forwardOnly[$row['account_id']]));
if ($row['account_id'] > 0 && $enabled[$row['account_id']] && !$forwardOnly[$row['account_id']])
{
$userData['uid'][] = $this->accounts->id2name($row['account_id'], 'account_lid');
$userData['mailbox'][] = $row['mail_value'];
}
break;
}
}
// if query by email-address (not a regular call from fmail)
if (is_array($account_id))
{
// add group-members for groups as forward (that way we dont need to store&update them)
foreach($account_id as $id)
{
if ($id < 0 && ($members = $this->accounts->members($id, true)))
{
foreach($members as $member)
{
if (($email = $this->accounts->id2name($member, 'account_email')) && !in_array($email, (array)$userData['forward']))
{
$userData['forward'][] = $email;
}
}
}
}
}
}
if ($this->debug) error_log(__METHOD__."('$user') returning ".array2string($userData));
return $userData;
}
/**
* Set the data of a given user
*
* @param int $_uidnumber numerical user-id
* @param array $_mailAlternateAddress
* @param array $_mailForwardingAddress
* @param string $_deliveryMode
* @param string $_accountStatus
* @param string $_mailLocalAddress
* @param int $_quota in MB
* @param boolean $_forwarding_only=false true: store only forwarding info, used internally by saveSMTPForwarding
* @param string $_setMailbox=null used only for account migration
* @return boolean true on success, false on error writing to ldap
*/
function setUserData($_uidnumber, array $_mailAlternateAddress, array $_mailForwardingAddress, $_deliveryMode,
$_accountStatus, $_mailLocalAddress, $_quota, $_forwarding_only=false, $_setMailbox=null)
{
if ($this->debug) error_log(__METHOD__."($_uidnumber, ".array2string($_mailAlternateAddress).', '.array2string($_mailForwardingAddress).", '$_deliveryMode', '$_accountStatus', '$_mailLocalAddress', $_quota, forwarding_only=".array2string($_forwarding_only).') '.function_backtrace());
if (!$_forwarding_only && $this->accounts->id2name($_uidnumber, 'account_email') !== $_mailLocalAddress)
{
$account = $this->accounts->read($_uidnumber);
$account['account_email'] = $_mailLocalAddress;
$this->accounts->save($account);
}
$flags = array(
self::TYPE_DELIVERY => $_deliveryMode,
self::TYPE_ENABLED => $_accountStatus,
self::TYPE_QUOTA => $_quota,
);
$where = array('account_id' => $_uidnumber);
if ($_forwarding_only) $where['mail_type'] = array(self::TYPE_FORWARD, self::TYPE_DELIVERY);
// find all invalid values: either delete or update them
$delete_ids = array();
foreach($this->db->select(self::TABLE, '*', $where, __LINE__, __FILE__, false, '', self::APP) as $row)
{
switch($row['mail_type'])
{
case self::TYPE_ALIAS:
$new_addresses =& $_mailAlternateAddress;
// fall-throught
case self::TYPE_FORWARD:
if ($row['mail_type'] == self::TYPE_FORWARD) $new_addresses =& $_mailForwardingAddress;
if (($key = array_search($row['mail_value'], $new_addresses)) === false)
{
$delete_ids[] = $row['mail_id'];
}
else
{
unset($new_addresses[$key]); // no need to store
}
break;
case self::TYPE_MAILBOX:
$mailbox = $row['mail_value'];
break;
case self::TYPE_QUOTA:
case self::TYPE_DELIVERY:
case self::TYPE_ENABLED:
//error_log(__METHOD__.": ".__LINE__." row=".array2string($row).", flags['$row[mail_type]']=".array2string($flags[$row['mail_type']]));
if ($row['mail_value'] != $flags[$row['mail_type']])
{
if ($flags[$row['mail_type']])
{
$this->db->update(self::TABLE, array(
'mail_value' => $flags[$row['mail_type']],
), array(
'mail_id' => $row['mail_id'],
), __LINE__, __FILE__, self::APP);
}
else
{
$delete_ids[] = $row['mail_id'];
}
}
unset($flags[$row['mail_type']]);
break;
}
}
if ($delete_ids)
{
$this->db->delete(self::TABLE, array('mail_id' => $delete_ids), __LINE__, __FILE__, self::APP);
}
// set mailbox address, if explicitly requested by $_setMailbox parameter
if ($_setMailbox)
{
$flags[self::TYPE_MAILBOX] = $_setMailbox;
}
// set mailbox address, if not yet set
elseif (!$_forwarding_only && empty($mailbox))
{
$flags[self::TYPE_MAILBOX] = $this->mailbox_addr(array(
'account_id' => $_uidnumber,
'account_lid' => $this->accounts->id2name($_uidnumber, 'account_lid'),
'account_email' => $_mailLocalAddress,
));
}
// store all new values
foreach($flags+array(
self::TYPE_ALIAS => $_mailAlternateAddress,
self::TYPE_FORWARD => $_mailForwardingAddress,
) as $type => $values)
{
if ($values && (!$_forwarding_only || in_array($type, array(self::TYPE_FORWARD, self::TYPE_DELIVERY))))
{
foreach((array)$values as $value)
{
$this->db->insert(self::TABLE, array(
'account_id' => $_uidnumber,
'mail_type' => $type,
'mail_value' => $value,
), false, __LINE__, __FILE__, self::APP);
}
}
}
return true;
}
/**
* Get configured mailboxes of a domain
*
* @param boolean $return_inactive return mailboxes NOT marked as accountStatus=active too
* @return array uid => name-part of mailMessageStore
*/
function getMailboxes($return_inactive)
{
$join = 'JOIN '.accounts_sql::TABLE.' ON '.self::TABLE.'.account_id='.accounts_sql::TABLE.'.account_id';
if (!$return_inactive)
{
$join .= ' JOIN '.self::TABLE.' active ON active.account_id='.self::TABLE.'.account_id AND active.mail_type='.self::TYPE_ENABLED;
}
$mailboxes = array();
foreach($this->db->select(self::TABLE, 'account_lid AS uid,'.self::TABLE.'.mail_value AS mailbox',
self::TABLE.'.mail_type='.self::TYPE_MAILBOX,
__LINE__, __FILE__, false, 'ORDER BY account_lid', self::APP, 0, $join) as $row)
{
if ($row['uid'] == 'anonymous') continue; // anonymous is never a mail-user!
list($mailbox) = explode('@', $row['mailbox']);
$mailboxes[$row['uid']] = $mailbox;
}
return $mailboxes;
}
/**
* Hook called on account deletion
*
* @param array $_hookValues values for keys 'account_lid', 'account_id'
* @return boolean true on success, false on error
*/
function deleteAccount($_hookValues)
{
$this->db->delete(self::TABLE, array('account_id' => $_hookValues['account_id']), __LINE__, __FILE__);
return true;
}
}

View File

@ -0,0 +1,72 @@
<?php
/**
* EGroupware: SUSE Mailserver support Postfix MTA
*
* @link http://www.egroupware.org
* @package emailadmin
* @subpackage emailadmin
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @copyright (c) 2009-13 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @version $Id$
*/
/**
* Support for Postfix with suse-mailserver schemas
*
* Used in SLES and openSUSE 10+
*/
class emailadmin_smtp_suse extends emailadmin_smtp_ldap
{
/**
* Capabilities of this class (pipe-separated): default, forward
*/
const CAPABILITIES = 'default|forward';
/**
* Name of schema, has to be in the right case
*/
const SCHEMA = 'suseMailRecipient';
/**
* Attribute to enable mail for an account, OR false if existence of ALIAS_ATTR is enough for mail delivery
*/
const MAIL_ENABLE_ATTR = false;
/**
* Attribute value to enable mail for an account, OR false if existense of attribute is enough to enable account
*/
const MAIL_ENABLED = false;
/**
* Attribute for aliases OR false to use mail
*/
const ALIAS_ATTR = 'susemailacceptaddress';
/**
* Primary mail address required as an alias too: true or false
*/
const REQUIRE_MAIL_AS_ALIAS = true;
/**
* Attribute for forwards OR false if not possible
*/
const FORWARD_ATTR = 'susemailforwardaddress';
/**
* Attribute to only forward mail, OR false if not available
*/
const FORWARD_ONLY_ATTR = false;
/**
* Attribute value to only forward mail
*/
const FORWARD_ONLY = false;
/**
* Attribute for mailbox, to which mail gets delivered OR false if not supported
*/
const MAILBOX_ATTR = false;
/**
* Log all LDAP writes / actions to error_log
*/
var $debug = false;
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,64 @@
<?php
/**
* EGroupware EMailAdmin: Postfix with dbmailUser schema
*
* @link http://www.egroupware.org
* @package emailadmin
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @copyright (c) 2010-13 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
/**
* Postfix with dbmailUser schema
*/
class postfixdbmailuser extends emailadmin_smtp_ldap
//class emailadmin_smtp_dbmailuser extends emailadmin_smtp_ldap
{
/**
* Capabilities of this class (pipe-separated): default, forward
*/
const CAPABILITIES = 'default|forward';
/**
* Name of schema, has to be the correct case!
*/
const SCHEMA = 'dbmailUser';
/**
* Attribute to enable mail for an account, OR false if existence of ALIAS_ATTR is enough for mail delivery
*/
const MAIL_ENABLE_ATTR = 'accountstatus';
/**
* Attribute value to enable mail for an account, OR false if existense of attribute is enough to enable account
*/
const MAIL_ENABLED = 'active';
/**
* Attribute for aliases OR false to use mail
*/
const ALIAS_ATTR = 'mailalternateaddress';
/**
* Primary mail address required as an alias too: true or false
*/
const REQUIRE_MAIL_AS_ALIAS=false;
/**
* Attribute for forwards OR false if not possible
*/
const FORWARD_ATTR = 'mailforwardingaddress';
/**
* Attribute to only forward mail, OR false if not available
*/
const FORWARD_ONLY_ATTR = 'deliverymode';
/**
* Attribute for mailbox, to which mail gets delivered OR false if not supported
*/
//const MAILBOX_ATTR = 'deliveryprogrampath';
//const MAILBOX_ATTR = 'dbmailuid';
const MAILBOX_ATTR = false;
}

View File

@ -0,0 +1,16 @@
<?php
/**
* eGroupWare EmailAdmin - old Postfix with inetOrgPerson schema
*
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @package emailadmin
* @link http://www.egroupware.org
* @version $Id$
*/
/**
* @deprecated use emailadmin_smtp_ldap class
*/
class postfixinetorgperson extends emailadmin_smtp_ldap
{
}

View File

@ -0,0 +1,67 @@
<?php
/**
* EGroupware EMailAdmin: Postfix with old qmailUser schema
*
* @link http://www.egroupware.org
* @package emailadmin
* @author Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @copyright (c) 2010-13 by Ralf Becker <RalfBecker-AT-outdoor-training.de>
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
/**
* Postfix with old qmailUser schema
*/
class postfixldap extends emailadmin_smtp_ldap
//class emailadmin_smtp_qmailuser extends emailadmin_smtp_ldap
{
/**
* Capabilities of this class (pipe-separated): default, forward
*/
const CAPABILITIES = 'default|forward';
/**
* Name of schema, has to be in the right case!
*/
const SCHEMA = 'qmailUser';
/**
* Attribute to enable mail for an account, OR false if existence of ALIAS_ATTR is enough for mail delivery
*/
const MAIL_ENABLE_ATTR = 'accountstatus';
/**
* Attribute value to enable mail for an account, OR false if existense of attribute is enough to enable account
*/
const MAIL_ENABLED = 'active';
/**
* Attribute for aliases OR false to use mail
*/
const ALIAS_ATTR = 'mailalternateaddress';
/**
* Primary mail address required as an alias too: true or false
*/
const REQUIRE_MAIL_AS_ALIAS=false;
/**
* Attribute for forwards OR false if not possible
*/
const FORWARD_ATTR = 'mailforwardingaddress';
/**
* Attribute to only forward mail, OR false if not available
*/
const FORWARD_ONLY_ATTR = 'deliverymode';
/**
* Attribute for mailbox, to which mail gets delivered OR false if not supported
*/
const MAILBOX_ATTR = 'mailmessagestore';
/**
* Attribute for quota limit of user in MB
*/
const QUOTA_ATTR = 'mailquota';
}

13
emailadmin/index.php Normal file
View File

@ -0,0 +1,13 @@
<?php
/***************************************************************************\
* EGroupWare - EMailAdmin
* @link http://www.egroupware.org
* @package emailadmin
* @author Klaus Leithoff <kl-AT-stylite.de>
* @copyright (c) 2009-10 by Klaus Leithoff <kl-AT-stylite.de>
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
\***************************************************************************/
header('Location: ../index.php?menuaction=emailadmin.emailadmin_ui.index'.
(isset($_GET['sessionid']) ? '&sessionid='.$_GET['sessionid'].'&kp3='.$_GET['kp3'] : ''));

318
emailadmin/js/app.js Normal file
View File

@ -0,0 +1,318 @@
/**
* EGroupware emailadmin static javascript code
*
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @package emailadmin
* @link http://www.egroupware.org
* @author Klaus Leithoff <kl@stylite.de>
* @author Ralf Becker <rb@stylite.de>
* @version $Id$
*/
/**
* UI for emailadmin
*
* @augments AppJS
*/
app.classes.emailadmin = AppJS.extend(
{
appname: 'emailadmin',
/**
* No SSL
*/
SSL_NONE: 0,
/**
* STARTTLS on regular tcp connection/port
*/
SSL_STARTTLS: 1,
/**
* SSL (inferior to TLS!)
*/
SSL_SSL: 3,
/**
* require TLS version 1+, no SSL version 2 or 3
*/
SSL_TLS: 2,
/**
* if set, verify certifcate (currently not implemented in Horde_Imap_Client!)
*/
SSL_VERIFY: 8,
/**
* Constructor
*
* @memberOf app.emailadmin
*/
init: function()
{
// call parent
this._super.apply(this, arguments);
},
/**
* Destructor
*/
destroy: function()
{
// call parent
this._super.apply(this, arguments);
},
/**
* This function is called when the etemplate2 object is loaded
* and ready. If you must store a reference to the et2 object,
* make sure to clean it up in destroy().
*
* @param et2 etemplate2 Newly ready object
*/
et2_ready: function(et2)
{
// call parent
this._super.apply(this, arguments);
for (var t in et2.templates)
{
//alert(t); // as we iterate through this more than once, ... we separate trigger and action
switch (t)
{
case 'emailadmin.account':
this.account_hide_not_applying();
break;
}
}
},
/**
* Switch account wizard to manual entry
*/
wizard_manual: function()
{
jQuery('.emailadmin_manual').fadeToggle();// not sure how to to this et2-isch
},
/**
* onclick for continue button to show progress animation
*
* @param {object} _event event-object or information about event
* @param {et2_baseWidget} _widget widget causing the event
*/
wizard_detect: function(_event, _widget)
{
// we need to do a manual asynchronious submit to show progress animation
// default synchronious submit stops animation!
if (this.et2._inst.submit('button[continue]', true)) // true = async submit
{
var sieve_enabled = this.et2.getWidgetById('acc_sieve_enabled');
if (!sieve_enabled || sieve_enabled.get_value())
{
jQuery('td.emailadmin_progress').show();
}
}
return false;
},
/**
* Set default port, if imap ssl-type changes
*
* @param {object} _event event-object or information about event
* @param {et2_baseWidget} _widget widget causing the event
*/
wizard_imap_ssl_onchange: function(_event, _widget)
{
var ssl_type = _widget.get_value();
this.et2.getWidgetById('acc_imap_port').set_value(
ssl_type == this.SSL_SSL || ssl_type == this.SSL_TLS ? 993 : 143);
},
/**
* Set default port, if imap ssl-type changes
*
* @param {object} _event event-object or information about event
* @param {et2_baseWidget} _widget widget causing the event
*/
wizard_smtp_ssl_onchange: function(_event, _widget)
{
var ssl_type = _widget.get_value();
this.et2.getWidgetById('acc_smtp_port').set_value(
ssl_type == 'no' ? 25 : (ssl_type == this.SSL_SSL || ssl_type == this.SSL_TLS ? 465 : 587));
},
/**
* Set default port, if imap ssl-type changes
*
* @param {object} _event event-object or information about event
* @param {et2_baseWidget} _widget widget causing the event
*/
wizard_sieve_ssl_onchange: function(_event, _widget)
{
var ssl_type = _widget.get_value();
this.et2.getWidgetById('acc_sieve_port').set_value(
ssl_type == this.SSL_SSL || ssl_type == this.SSL_TLS ? 5190 : 4190);
this.wizard_sieve_onchange(_event, _widget);
},
/**
* Enable sieve, if user changes some setting
*
* @param {object} _event event-object or information about event
* @param {et2_baseWidget} _widget widget causing the event
*/
wizard_sieve_onchange: function(_event, _widget)
{
this.et2.getWidgetById('acc_sieve_enabled').set_value(1);
},
/**
* Switch to select multiple accounts
*
* @param {object} _event event-object or information about event
* @param {et2_baseWidget} _widget widget causing the event
*/
edit_multiple: function(_event, _widget)
{
// hide multiple button
_widget.set_disabled(true);
// switch account-selection to multiple
var account_id = this.et2.getWidgetById('account_id');
account_id.set_multiple(true);
},
/**
* Hide not applying fields, used as:
* - onchange handler on account_id
* - called from et2_ready for emailadmin.account template
*
* @param {object} _event event-object or information about event
* @param {et2_baseWidget} _widget widget causing the event
*/
account_hide_not_applying: function(_event, _widget)
{
var account_id = this.et2.getWidgetById('account_id');
var ids = account_id && account_id.get_value ? account_id.get_value() : [];
if (typeof ids == 'string') ids = ids.split(',');
var multiple = ids.length >= 2 || ids[0] === '' || ids[0] < 0;
//alert('multiple='+(multiple?'true':'false')+': '+ids.join(','));
// initial call
if (typeof _widget == 'undefined')
{
if (!multiple)
{
jQuery('.emailadmin_no_single').hide();
}
if (!this.egw.user('apps').emailadmin)
{
jQuery('.emailadmin_no_user,#button\\[multiple\\]').hide();
}
if (ids.length == 1)
{
// switch back to single selectbox
account_id.set_multiple(false);
this.et2.getWidgetById('button[multiple]').set_disabled(false);
}
}
// switched to single user
else if (!multiple)
{
jQuery('.emailadmin_no_single').fadeOut();
// switch back to single selectbox
account_id.set_multiple(false);
this.et2.getWidgetById('button[multiple]').set_disabled(false);
}
// switched to multiple user
else
{
jQuery('.emailadmin_no_single').fadeIn();
}
if (_event && _event.stopPropagation) _event.stopPropagation();
return false;
},
/**
* Callback if user changed account selction
*
* @param {object} _event event-object or information about event
* @param {et2_baseWidget} _widget widget causing the event
*/
change_account: function(_event, _widget)
{
// todo check dirty and query user to a) save changes, b) discard changes, c) cancel selection
_widget.getInstanceManager().submit();
}
});
function disableGroupSelector()
{
//alert('Group'+document.getElementById('exec[ea_group]').value+' User'+document.getElementById('eT_accountsel_exec_ea_user').value);
if (document.getElementById('eT_accountsel_exec_ea_user').value != '')
{
if (document.getElementById('exec[ea_group]').value != '') document.getElementById('exec[ea_group]').value = '';
document.getElementById('exec[ea_group]').disabled = true;
}
else
{
document.getElementById('exec[ea_group]').disabled = false;
}
}
function addRow(_selectBoxName, _prompt) {
result = prompt(_prompt, '');
if((result == '') || (result == null)) {
return false;
}
var newOption = new Option(result, result);
selectBox = document.getElementById(_selectBoxName);
var length = selectBox.length;
selectBox.options[length] = newOption;
selectBox.selectedIndex = length;
}
function editRow(_selectBoxName, _prompt) {
selectBox = document.getElementById(_selectBoxName);
selectedItem = selectBox.selectedIndex;
if(selectedItem != null && selectedItem != -1) {
value = selectBox.options[selectedItem].text;
result = prompt(_prompt, value);
if((result == '') || (result == null)) {
return false;
}
var newOption = new Option(result, result);
selectBox.options[selectedItem] = newOption;
selectBox.selectedIndex = selectedItem;
}
}
function removeRow(_selectBoxName) {
selectBox = document.getElementById(_selectBoxName);
selectedItem = selectBox.selectedIndex;
if(selectedItem != null) {
selectBox.options[selectedItem] = null;
}
selectedItem--;
if(selectedItem >= 0) {
selectBox.selectedIndex = selectedItem;
} else if (selectBox.length > 0) {
selectBox.selectedIndex = 0;
}
}
function selectAllOptions(_selectBoxName) {
selectBox = document.getElementById(_selectBoxName);
for(var i=0;i<selectBox.length;i++) {
selectBox[i].selected=true;
}
}

View File

@ -0,0 +1,42 @@
admin password emailadmin bg Парола на администратора
admin username emailadmin bg Потребителско име на администратора
bad login name or password. emailadmin bg Невалидно име или парола.
bad or malformed request. server responded: %s emailadmin bg Некоректна заявка. Сървърът отговори: %s
bad request: %s emailadmin bg Некоректна заявка: %s
connection dropped by imap server. emailadmin bg Връзката е прекъсната от IMAP сървъра.
continue emailadmin bg Продължаване
could not complete request. reason given: %s emailadmin bg Неуспешно изпълнение на заявката поради: %s
could not open secure connection to the imap server. %s : %s. emailadmin bg Неуспешно изграждане на криптирана връзка с IMAP сървъра. %s : %s.
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin bg CRAM-MD5 или DIGEST-MD5 изискват инсталиране на пакета Auth_SASL.
default emailadmin bg по подразбиране
do not validate certificate emailadmin bg не проверявай сертификати
email address emailadmin bg E-Mail адрес
encrypted connection emailadmin bg криптирана връзка
entry saved emailadmin bg Записът е запазен
error connecting to imap server. %s : %s. emailadmin bg Грешка при връзка с IMAP сървъра. %s : %s.
error connecting to imap server: [%s] %s. emailadmin bg Грешка при връзка с IMAP сървъра: [%s] %s.
error saving the entry!!! emailadmin bg Грешка при запис!!!
if using ssl or tls, you must have the php openssl extension loaded. emailadmin bg Ако използвате SSL или TLS, трябва да заредите OpenSSL разширението на PHP.
imap server emailadmin bg IMAP сървър
imap server closed the connection. emailadmin bg IMAP сървъра прекрати връзката.
imap server closed the connection. server responded: %s emailadmin bg IMAP сървъра прекрати връзката с отговор: %s
mail settings admin bg Настройки на пощата
no encryption emailadmin bg без криптиране
no message returned. emailadmin bg Не са открити съобщения
no supported imap authentication method could be found. emailadmin bg Не се поддържа зададеният метод за IMAP оторизация.
order emailadmin bg Ред
organisation emailadmin bg организация
port emailadmin bg порт
remove emailadmin bg премахване
sieve settings emailadmin bg Настройки на Sieve
smtp settings emailadmin bg SMTP настройки
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin bg IMAP сървъра вероятно не поддържа избрания метод на оторизация. Моля, свържете се с Вашия системен Администратор!
this php has no imap support compiled in!! emailadmin bg PHP няма включена поддръжка за IMAP!!!
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin bg За да използвате TLS е необходима версия на PHP 5.1.0 или по-висока.
unexpected response from server to authenticate command. emailadmin bg Неочакван отговор от сървъра на команда AUTHENTICATE.
unexpected response from server to digest-md5 response. emailadmin bg Неочакван отговор от сървъра на Digest-MD5.
unexpected response from server to login command. emailadmin bg Неочакван отговор от сървъра на команда LOGIN.
unknown imap response from the server. server responded: %s emailadmin bg Неизвестен отговор от IMAP сървъра: %s
use smtp auth emailadmin bg използвай SMTP оторизация
users can define their own emailaccounts emailadmin bg Потребителите могат да дефинират собствени E-Mail акаунти
you have received a new message on the emailadmin bg Получено е ново съобщение на

View File

@ -0,0 +1,75 @@
add profile emailadmin ca Afegir perfil
admin dn emailadmin ca dn del administrador
admin password emailadmin ca Contrasenya del administrador
admin username emailadmin ca Mom d'usuari del administrador
advanced options emailadmin ca Opcions avançades
alternate email address emailadmin ca Adreça de correu alternativa
continue emailadmin ca Continuar
cyrus imap server emailadmin ca Servidor IMAP Cyrus
cyrus imap server administration emailadmin ca Administració del servidor IMAP Cyrus
default emailadmin ca predeterminada
deliver extern emailadmin ca entrega externa
do you really want to delete this profile emailadmin ca Realmente voleu esborrar aquest perfil?
domainname emailadmin ca Nom del domini
edit email settings emailadmin ca Editar configuració del compte
email account active emailadmin ca Compte de correu electrònic actiu
email address emailadmin ca Adreça de correu electrònic
enable cyrus imap server administration emailadmin ca activar administració del servidor Cyrus IMAP
enable sieve emailadmin ca Activar Sieve
enter your default mail domain (from: user@domain) emailadmin ca Entreu el domini predeterminat (de usuari@domini)
entry saved emailadmin ca Entrada guardada
forward also to emailadmin ca Reenviar també a
forward email's to emailadmin ca Reenviar correus a
forward only emailadmin ca Només reenviar
imap admin password admin ca Contrasenya de l'administrador IMAP
imap admin user admin ca Usuari administrador IMAP
imap c-client version < 2001 emailadmin ca Versió C-Client IMAP < 2001
imap server emailadmin ca Servidor IMAP
imap server hostname or ip address emailadmin ca Servidor IMAP o adreça IP
imap server logintyp emailadmin ca Tipus de sessió del servidor IMAP
imap server port emailadmin ca Port del servidor IMAP
imap/pop3 server name emailadmin ca Nom del servidor POP/IMAP
in mbyte emailadmin ca en MBytes
ldap basedn emailadmin ca basedn per a LDAP
ldap server emailadmin ca Aervidor LDAP
ldap server accounts dn emailadmin ca Comptes DN del servidor LDAP
ldap server admin dn emailadmin ca Administrador DN del servidor LDAP
ldap server admin password emailadmin ca Contrasenya del administrador del servidor LDAP
ldap server hostname or ip address emailadmin ca Nom del servidor LDAP o adreça IP
ldap settings emailadmin ca Configuració LDAP
leave empty for no quota emailadmin ca Deixar en blanc per a no posar quota
mail settings admin ca Configuració del correu
name of organisation emailadmin ca Nom de l'organització
no alternate email address emailadmin ca sense adreça de correu alternativa
no forwarding email address emailadmin ca sense adreça de correu per a reenviar
order emailadmin ca Ordre
organisation emailadmin ca Organització
pop3 server hostname or ip address emailadmin ca Nom del servidor POP3 o adreça IP
pop3 server port emailadmin ca Port del servidor POP3
postfix with ldap emailadmin ca Postfix amb LDAP
profile list emailadmin ca Llista de perfils
profile name emailadmin ca Nom del perfil
qmaildotmode emailadmin ca Modus de punt de qmail
quota settings emailadmin ca Configuració de les quotas
quota size in mbyte emailadmin ca mida de la cita en MByte
remove emailadmin ca Esborrar
select type of imap/pop3 server emailadmin ca Seleccioneu el tipus de servidor IMAP/POP3
select type of smtp server emailadmin ca Seleccioneu el tipus de servidor SMTP
sieve server hostname or ip address emailadmin ca Nom del servidor Sieve o adreça IP
sieve server port emailadmin ca Port del servidor Sieve
sieve settings emailadmin ca Configuració de Sieve
smtp server name emailadmin ca Nom del servidor SMTP
smtp settings emailadmin ca Opcions SMTP
smtp-server hostname or ip address emailadmin ca Nom del servidor SMTP o adreça IP
smtp-server port emailadmin ca Port del servidor SMTP
standard emailadmin ca Estàndar
standard imap server emailadmin ca Servidor IMAP estàndar
standard pop3 server emailadmin ca Servidor POP3 estàndar
standard smtp-server emailadmin ca Servidor SMTP estàndar
this php has no imap support compiled in!! emailadmin ca Aquesta instal·lació de PHP no té suport IMAP!
use ldap defaults emailadmin ca Usar les opcions predeterminades per LDAP
use smtp auth emailadmin ca Usar identificació SMTP
use tls authentication emailadmin ca Usar identificació TLS
use tls encryption emailadmin ca Usar xifrat TLS
users can define their own emailaccounts emailadmin ca Els usuaris poden definir els seus propis comptes de correu
virtual mail manager emailadmin ca Gestor de correu virtual

149
emailadmin/lang/egw_cs.lang Normal file
View File

@ -0,0 +1,149 @@
account '%1' not found !!! emailadmin cs Účet '%1' nebyl nalezen !!!
active templates emailadmin cs Aktivní šablony
add new email address: emailadmin cs Přidat novou e-mailovou adresu:
add profile emailadmin cs Přidat profil
admin dn emailadmin cs Dn (distiguished name) administrátora
admin password emailadmin cs Heslo administrátora
admin username emailadmin cs Uživatelské jméno administrátora
advanced options emailadmin cs Rozšířené volby
alternate email address emailadmin cs Alternativní e-mailová adresa
any application emailadmin cs Kterákoli aplikace
any group emailadmin cs Kterákoli skupina
any user emailadmin cs Kterýkoli uživatel
back to admin/grouplist emailadmin cs Zpět na Administrátor/Skupiny uživatelů
back to admin/userlist emailadmin cs Zpět na Administrátor/Uživatelské účty
bad login name or password. emailadmin cs Chybné přihlašovací jméno nebo heslo.
bad or malformed request. server responded: %s emailadmin cs Chybný nebo špatně fomulovaný požadavek. Server odpověděl: %s
bad request: %s emailadmin cs Chybný požadavek: %s
can be used by application emailadmin cs Může být použit aplikací
can be used by group emailadmin cs Může být použit skupinou
can be used by user emailadmin cs Může být použit uživatelem
connection dropped by imap server. emailadmin cs Připojení ukončeno IMAP serverem.
continue emailadmin cs Pokračovat
could not complete request. reason given: %s emailadmin cs Nemohu dokončit požadavek. Důvod: %s
could not open secure connection to the imap server. %s : %s. emailadmin cs Nemohu otevřít zabezpečené připojení na IMAP server. %s : %s.
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin cs CRAM-MD5 nebo DIGEST-MD5 vyžadují nainstalovaný balíček Auth_SASL.
cyrus imap server emailadmin cs Cyrus IMAP Server
cyrus imap server administration emailadmin cs Administrace Cyrus IMAP serveru
default emailadmin cs výchozí
deliver extern emailadmin cs doručit externě
do not validate certificate emailadmin cs Neověřovat certifikát
do you really want to delete this profile emailadmin cs Opravdu chcete smazat tento profil
do you really want to reset the filter for the profile listing emailadmin cs Opravdu chcete vyresetovat filtr pro seznam profilů
domainname emailadmin cs Doménové jméno
edit email settings emailadmin cs Editovat nastavení e-mailu
email account active emailadmin cs E-mailový účet aktivní
email address emailadmin cs E-mailová adresa
email settings common cs Nastavení e-mailu
emailadmin emailadmin cs Administrátor pošty
emailadmin: group assigned profile common cs Administrátor pošty: profil přidělený skupině
emailadmin: user assigned profile common cs Administrátor pošty: profil přidělený uživateli
enable cyrus imap server administration emailadmin cs Povolit administraci Cyrus IMAP serveru
enable sieve emailadmin cs Povolit Sieve
encrypted connection emailadmin cs Šifrované připojení
encryption settings emailadmin cs Nastavení šifrování
enter your default mail domain (from: user@domain) emailadmin cs Zadejte Vaši výchozí poštovní doménu (z: uživatel@doména)
entry saved emailadmin cs Záznam uložen
error connecting to imap server. %s : %s. emailadmin cs Chyba spojení na IMAP server. %s : %s.
error connecting to imap server: [%s] %s. emailadmin cs Chyba spojení na IMAP server: [%s] %s.
error saving the entry!!! emailadmin cs Chyba při ukládání záznamu!!!
filtered by account emailadmin cs filtrováno podle účtu
filtered by group emailadmin cs filtrováno podle skupiny
forward also to emailadmin cs Přeposlat také na
forward email's to emailadmin cs Přeposílat e-maily na
forward only emailadmin cs Jen přeposlat
global options emailadmin cs Globální volby
if using ssl or tls, you must have the php openssl extension loaded. emailadmin cs Pokud chcete používat SSL nebo TLS, musíte mít nahráno openssl rozšíření PHP.
imap admin password admin cs Heslo IMAP administrátora
imap admin user admin cs Uživatelský účet IMAP administrátora
imap c-client version < 2001 emailadmin cs IMAP C-klient verze < 2001
imap server emailadmin cs IMAP Server
imap server closed the connection. emailadmin cs IMAP server ukončil spojení.
imap server closed the connection. server responded: %s emailadmin cs IMAP server ukončil spojení. Server odpověděl: %s
imap server hostname or ip address emailadmin cs DNS jméno nebo IP adresa IMAP serveru
imap server logintyp emailadmin cs Typ přihlášení na IMAP server
imap server name emailadmin cs Název IMAP serveru
imap server port emailadmin cs Port IMAP serveru
imap/pop3 server name emailadmin cs Název IMAP/POP3 serveru
in mbyte emailadmin cs v MBytech
inactive emailadmin cs neaktivní
ldap basedn emailadmin cs LDAP basedn
ldap server emailadmin cs LDAP server
ldap server accounts dn emailadmin cs DN (distinguished name) účtů na LDAP serveru
ldap server admin dn emailadmin cs DN (distinguished name) administrátora LDAP serveru
ldap server admin password emailadmin cs Heslo administrátora LDAP serveru
ldap server hostname or ip address emailadmin cs DNS jméno nebo IP adresa LDAP serveru
ldap settings emailadmin cs LDAP nastavení
leave empty for no quota emailadmin cs ponechte prázdné, nechcete-li kvótu
mail settings admin cs Nastavení pošty
manage stationery templates emailadmin cs Spravovat šablony dopisů
name of organisation emailadmin cs Název organizace
no alternate email address emailadmin cs bez alternativní e-mailové adresy
no encryption emailadmin cs bez šifrování
no forwarding email address emailadmin cs bez e-mailové adresy pro přeposílání
no message returned. emailadmin cs Žádná zpráva se nevrátila.
no supported imap authentication method could be found. emailadmin cs Nebyla nalezena žádná podporovaná metoda IMAP autentikace.
order emailadmin cs Pořadí
organisation emailadmin cs Organizace
plesk can't rename users --> request ignored emailadmin cs Plesk nemůže přejmenovávat uživatele --> požadavek ignorován
plesk imap server (courier) emailadmin cs Plesk IMAP server (Courier)
plesk mail script '%1' not found !!! emailadmin cs Plesk poštovní skript '%1' nebyl nalezen !!!
plesk requires passwords to have at least 5 characters and not contain the account-name --> password not set!!! emailadmin cs Plesk vyžaduje, aby měla hesla nejméně 5 znaků a neobsahovala název účtu --> heslo nebylo nastaveno!!!
plesk smtp-server (qmail) emailadmin cs Plesk SMTP server (Qmail)
pop3 server hostname or ip address emailadmin cs DNS jméno nebo IP adresa POP3 serveru
pop3 server port emailadmin cs Port POP3 serveru
port emailadmin cs port
postfix with ldap emailadmin cs Postfix s LDAP
profile access rights emailadmin cs přístupová práva profilu
profile is active emailadmin cs Profil je aktivní
profile list emailadmin cs Seznam profilů
profile name emailadmin cs Název profilu
qmaildotmode emailadmin cs Tečkový režim Qmail
quota settings emailadmin cs Nastavení kvóty
quota size in mbyte emailadmin cs velikost kvóty v MBytech
remove emailadmin cs Odstranit
reset filter emailadmin cs vyresetovat filtr
select type of imap server emailadmin cs Vyberte typ IMAP serveru
select type of imap/pop3 server emailadmin cs Vyberte typ IMAP/POP3 serveru
select type of smtp server emailadmin cs Vyberte typ SMTP serveru
send using this email-address emailadmin cs Odeslat s touto e-mailovou adresou
server settings emailadmin cs Nastavení serveru
sieve server hostname or ip address emailadmin cs DNS jméno nebo IP adresa Sieve serveru
sieve server port emailadmin cs Port Sieve serveru
sieve settings emailadmin cs Nastavení sieve
smtp authentication emailadmin cs SMTP autentikace
smtp options emailadmin cs Volby SMTP
smtp server name emailadmin cs Jméno SMTP serveru
smtp settings emailadmin cs Nastavení SMTP
smtp-server hostname or ip address emailadmin cs DNS jméno nebo IP adresa SMTP serveru
smtp-server port emailadmin cs Port SMTP serveru
standard emailadmin cs Standardní
standard imap server emailadmin cs Standardní IMAP server
standard pop3 server emailadmin cs Standardní POP3 server
standard smtp-server emailadmin cs Standardní SMTP server
stationery emailadmin cs Šablony
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin cs Vypadá to, že IMAP server nepodporuje vybranou autentikační metodu. Zkontaktujte prosím Vašeho systémového administrátora.
this php has no imap support compiled in!! emailadmin cs Toto PHP nemá zkompilovanou podporu IMAPu.
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin cs Pro použití TLS připojení musíte provozovat verzi PHP 5.1.0 nebo vyšší.
unexpected response from server to authenticate command. emailadmin cs Neočekávaná odpověď serveru na příkaz AUTHENTICATE.
unexpected response from server to digest-md5 response. emailadmin cs Neočekávaná odpověď serveru na Digest-MD5 odpověď.
unexpected response from server to login command. emailadmin cs Neočekávaná odpověď serveru na příkaz LOGIN.
unknown imap response from the server. server responded: %s emailadmin cs Neznámá IMAP odpověď server. Odpověděl: %s
unsupported action '%1' !!! emailadmin cs Nepodporovaná akce '%1' !!!
update current email address: emailadmin cs Aktualizovat současnou e-mailovou adresu:
use ldap defaults emailadmin cs Použít výchozí hodnoty LDAP
use predefined username and password defined below emailadmin cs Použít předdefinované uživatelské jméno a heslo uvedené níže
use smtp auth emailadmin cs Použít SMTP autentikaci
use tls authentication emailadmin cs Použít TLS autentikaci
use tls encryption emailadmin cs Použít TLS šifrování
user can edit forwarding address emailadmin cs Uživatel smí editovat adresu pro přeposílání
username (standard) emailadmin cs uživatelské jméno (standardní)
username/password defined by admin emailadmin cs Uživatelské jméno/Heslo definované administrátorem
username@domainname (virtual mail manager) emailadmin cs uživatelskéjméno@doména (Virtuální správce pošty)
users can define their own emailaccounts emailadmin cs Uživatelé smí definovat vlastní poštovní účty
users can define their own identities emailadmin cs Uživatelé smí definovat své vlastní identity
users can define their own signatures emailadmin cs Uživatelé smí definovat své vlastní podpisy
users can utilize these stationery templates emailadmin cs Uživatelé mohou využívat tyto šablony dopisů
virtual mail manager emailadmin cs Virtuální správce pošty
you have received a new message on the emailadmin cs Přišla Vám nová zpráva na
your name emailadmin cs Vaše jméno

View File

@ -0,0 +1,72 @@
add profile emailadmin da Tilføj Profil
admin dn emailadmin da admin dn
admin password emailadmin da admin adgangskode
admin username emailadmin da admin brugernavn
advanced options emailadmin da avanceret indstillinger
alternate email address emailadmin da alternativ e-mail adresse
cyrus imap server emailadmin da Cyrus IMAP Server
cyrus imap server administration emailadmin da Cyrus IMAP server administration
default emailadmin da standart
deliver extern emailadmin da lever ekstern
do you really want to delete this profile emailadmin da Vil du virkelig slette denne profil
domainname emailadmin da domæne navn
edit email settings emailadmin da redigere e-mail indstillingerne
email account active emailadmin da e-mail konto aktiv
email address emailadmin da e-mail adresse
enable cyrus imap server administration emailadmin da aktivere Cyrus IMAP server administration
enable sieve emailadmin da aktiver Sieve
enter your default mail domain (from: user@domain) emailadmin da Indtast dit standart post domæne (fra: bruger@domæne)
forward also to emailadmin da videresend også til
forward email's to emailadmin da videresend e-mails til
forward only emailadmin da videresend kun
imap admin password admin da IMAP admin adgangskode
imap admin user admin da IMAP admin bruger
imap c-client version < 2001 emailadmin da IMAP C-Klient Version < 2001
imap server emailadmin da IMAP Server
imap server hostname or ip address emailadmin da IMAP server domænenavn eller IP adresse
imap server logintyp emailadmin da IMAP server login type
imap server port emailadmin da IMAP server port
imap/pop3 server name emailadmin da IMAP/POP3 server navn
in mbyte emailadmin da i Megabytes
ldap basedn emailadmin da LDAP basedn
ldap server emailadmin da LDAP server
ldap server accounts dn emailadmin da LDAP server konto DN
ldap server admin dn emailadmin da LDAP server admin DN
ldap server admin password emailadmin da LDAP server admin adgangskode
ldap server hostname or ip address emailadmin da LDAP server domænenavn eller IP adresse
ldap settings emailadmin da LDAP indstillinger
leave empty for no quota emailadmin da efterlad tom hvis ingen citat
mail settings admin da Post indstillinger
name of organisation emailadmin da Navn på organisation
no alternate email address emailadmin da ingen alternativ e-mail adresse
no forwarding email address emailadmin da ingen viderestillet e-mail adresse
order emailadmin da Rækkefølge
organisation emailadmin da Organisation
pop3 server hostname or ip address emailadmin da POP3 server domænenavn eller IP adresse
pop3 server port emailadmin da POP server port
postfix with ldap emailadmin da Postfix med LDAP
profile list emailadmin da Profil liste
profile name emailadmin da Profil navn
qmaildotmode emailadmin da qmaildotmode
quota settings emailadmin da quota indstillinger
remove emailadmin da fjern
select type of imap/pop3 server emailadmin da Vælg type IMAP/POP3 server
select type of smtp server emailadmin da Vælg time POP3 server
sieve server hostname or ip address emailadmin da Sieve server domænenavn eller IP adresse
sieve server port emailadmin da Sieve server port
sieve settings emailadmin da Sieve indstillinger
smtp server name emailadmin da SMTP server navn
smtp settings emailadmin da SMTP indstillinger
smtp-server hostname or ip address emailadmin da SMTP server domænenavn eller IP adresse
smtp-server port emailadmin da SMTP server port
standard emailadmin da Standart
standard imap server emailadmin da Standart IMAP server
standard pop3 server emailadmin da Standart POP3 server
standard smtp-server emailadmin da Standart SMTP server
this php has no imap support compiled in!! emailadmin da Der er ikke understøttelse for IMAP i din PHP kode.
use ldap defaults emailadmin da brug LDAP standarter
use smtp auth emailadmin da Brug SMTP autorisation
use tls authentication emailadmin da Brug TLS autorisation
use tls encryption emailadmin da Brug TLS kryptering
users can define their own emailaccounts emailadmin da Brugere kan selv definere deres egne e-mail kontoer
virtual mail manager emailadmin da Virtuel post håndtering

208
emailadmin/lang/egw_de.lang Normal file
View File

@ -0,0 +1,208 @@
%1 entries deleted. emailadmin de %1 Einträge gelöscht
(imapclass must support this feature by querying the corresponding config value and pass it as defaultquota to the imapserver) emailadmin de (Die IMAP Klasse muss dieses Verfahren unterstützen indem es den entsprechenden Konfigurationswert der Instanz ausliest und als Default Quota an den IMAP Server meldet.)
(no subject) emailadmin de (Kein Betreff)
account '%1' not found !!! emailadmin de Mailkonto '%1' nicht gefunden !
account deleted. emailadmin de Mailkonto gelöscht.
account not found! common de Mailkonto nicht gefunden!
account saved. emailadmin de Mailkonto gespeichert.
active templates emailadmin de Aktive Vorlagen
add new email address: emailadmin de Neue E-Mailadresse hinzufügen
add profile emailadmin de Profil hinzufügen
admin dn emailadmin de Admin DN
admin password emailadmin de Admin Passwort
admin username emailadmin de Administrator Benutzername
advanced options emailadmin de erweiterte Einstellungen
alternate email address emailadmin de zusätzliche E-Mail-Adressen
and logged in emailadmin de und eingeloggt
any application emailadmin de jede Anwendung
any group emailadmin de jede Gruppe
any user emailadmin de jeder Benutzer
back to admin/grouplist emailadmin de Zurück zu: Admin / Gruppenverwaltung
back to admin/userlist emailadmin de Zurück zu: Admin / Benutzerverwaltung
bad login name or password. emailadmin de Falscher Benutzername oder Passwort.
bad or malformed request. server responded: %s emailadmin de Falsche oder ungültige Anfrage. Server antwortet: %s
bad request: %s emailadmin de Falsche Anfrage: %s
can be used by application emailadmin de Kann von folgender Anwendung verwendet werden
can be used by group emailadmin de Kann von folgender Gruppe verwendet werden
can be used by user emailadmin de Kann von folgendem Benutzer verwendet werden
connection dropped by imap server. emailadmin de Verbindung von IMAP-Server beendet.
connection is not secure! everyone can read eg. your credentials. emailadmin de Die Verbindung ist NICHT sicher! Jeder kann zB. Ihr Passwort lesen.
continue emailadmin de Weiter
could not append message: emailadmin de Diese Mail lässt sich nicht anzeigen
could not complete request. reason given: %s emailadmin de Konnte Anfrage nicht beenden. Grund: %s
could not open secure connection to the imap server. %s : %s. emailadmin de Konnte keine sichere Verbindung zum IMAP Server aufbauen. %s: %s.
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin de CRAM-MD5 oder DIGEST-MD5 erfordert, das das Auth_SASL Packet installiert ist.
create new account emailadmin de Neues Mailkonto erstellen
create new identity emailadmin de Neue Identität erstellen
cyrus imap server emailadmin de Cyrus IMAP-Server
cyrus imap server administration emailadmin de Cyrus IMAP-Server Administration
default emailadmin de Vorgabe
delete identity emailadmin de Identität löschen
delete this account emailadmin de Diese Konto löschen
deliver extern emailadmin de extern ausliefern
displaying html messages is disabled emailadmin de Das Anzeigen von HTML Nachrichten ist deaktiviert
displaying plain messages is disabled emailadmin de Das Anzeigen von Text Nachrichten ist deaktiviert
do not validate certificate emailadmin de Zertifikat nicht überprüfen
do you really want to delete this profile emailadmin de Wollen Sie dieses Profil wirklich löschen
do you really want to reset the filter for the profile listing emailadmin de Möchten Sie den Filter für die Profilliste wirklich zurücksetzen?
domainname emailadmin de Domänenname
edit email settings emailadmin de E-Mail-Einstellungen
email account active emailadmin de E-Mail-Konto aktiv
email address emailadmin de E-Mail-Adresse
email settings common de E-Mail-Konto
emailadmin emailadmin de E-Mail-Admin
emailadmin: group assigned profile common de E-Mail-Admin: Vordefiniertes Gruppenprofil
emailadmin: user assigned profile common de E-Mail-Admin: Vordefiniertes Benutzerprofil
enable cyrus imap server administration emailadmin de Cyrus IMAP-Server Administration aktivieren
enable sieve emailadmin de Sieve aktivieren
encrypted connection emailadmin de verschlüsselte Verbindung
encryption settings emailadmin de Verschlüsselungseinstellungen
enter your default mail domain (from: user@domain) emailadmin de Standard E-Mail-Domain (Von: benutzer@domain)
entry saved emailadmin de Eintrag gespeichert
error connecting to imap server. %s : %s. emailadmin de Fehler beim Verbinden mit dem IMAP Server. %s : %s.
error connecting to imap server: [%s] %s. emailadmin de Fehler beim Verbinden mit dem IMAP Server. [%s] %s.
error deleting entry! emailadmin de Fehler beim Löschen des Eintrags
error saving account! emailadmin de Fehler beim Speichern des Mailkontos!
error saving the entry!!! emailadmin de Fehler beim Speichern !
error, no username! emailadmin de Fehler, kein Benutzername!
event details follow emailadmin de Hier die Details des Termins
failed to delete account! emailadmin de Fehler beim Löschen des Mailkontos!
file rejected, no %2. is:%1 emailadmin de Datei wurde abgewiesen, kein %2. ist:%1
filtered by account emailadmin de Suche nach Benutzerprofilen
filtered by group emailadmin de Suche nach Gruppenprofilen
forward also to emailadmin de zusätzlich weiterleiten
forward email's to emailadmin de E-Mails weiterleiten an
forward only emailadmin de nur weiterleiten
forward only disables imap mailbox / storing of mails and just forwards them to given address. emailadmin de Nur weiterleiten schaltet die IMAP Mailbox / das Speichern der Mails aus und leitet diese an die angegebene Adresse weiter.
global options emailadmin de Globale Optionen
hostname or ip emailadmin de Hostname oder IP
how username get constructed emailadmin de Wie wird der Benutzername gebildet
identity deleted emailadmin de Identität gelöscht.
identity saved. emailadmin de Identität gespeichert.
if different from email address emailadmin de falls unterschiedlich zu E-Mail-Adresse
if using ssl or tls, you must have the php openssl extension loaded. emailadmin de Wenn Sie SSL oder TLS benutzen, müssen Sie die openssl PHP Erweiterung geladen haben.
if you specify port 5190 as sieve server port, you enforce ssl for sieve (server must support that) emailadmin de Wenn Sie als SIEVE Server Port 5190 eintragen, wird für die Kommunikation mit dem SIEVE-Server eine SSL-Verbindung verwendet (der Server muss das natürlich unterstützen)
imap admin password admin de IMAP Administrator Passwort
imap admin user admin de IMAP Administrator Benutzer
imap c-client version < 2001 emailadmin de IMAP C-Client Version < 2001
imap server emailadmin de IMAP Server
imap server closed the connection. emailadmin de IMAP Server hat die Verbindung beendet.
imap server closed the connection. server responded: %s emailadmin de IMAP Server hat die Verbindung beendet. Server Antwort: %s
imap server hostname or ip address emailadmin de IMAP-Server Hostname oder IP-Adresse
imap server logintyp emailadmin de IMAP-Server Loginverfahren
imap server name emailadmin de IMAP-Server Name
imap server port emailadmin de IMAP-Server Port
imap/pop3 server name emailadmin de IMAP/POP3-Server Name
importance emailadmin de wichtig
in mbyte emailadmin de in MByte
inactive emailadmin de inaktiv
ldap basedn emailadmin de LDAP BaseDN
ldap server emailadmin de LDAP Server
ldap server accounts dn emailadmin de LDAP-Server Benutzerkonten DN
ldap server admin dn emailadmin de LDAP-Server Administrator DN
ldap server admin password emailadmin de LDAP-Server Administrator-Passwort
ldap server hostname or ip address emailadmin de LDAP-Server Hostname oder IP-Adresse
ldap settings emailadmin de LDAP-Einstellungen
leave empty for no quota emailadmin de leer lassen um Quota zu deaktivieren
mail settings admin de E-Mail-Einstellungen
manage stationery templates emailadmin de Briefpapiervorlagen verwalten
manual entry emailadmin de Manuelle Eingabe
mb used emailadmin de MB belegt
name of organisation emailadmin de Name der Organisation
no alternate email address emailadmin de keine zusätzlichen E-Mail-Adressen
no encryption emailadmin de keine Verschlüsselung
no forwarding email address emailadmin de keine Weiterleitungsadresse definiert
no message returned. emailadmin de Keine Nachricht zurückgeliefert.
no plain text part found emailadmin de Kein Nachrichten Text-Teil gefunden
no sieve support detected, either fix configuration manually or leave it switched off. emailadmin de Keine Sieve-Unterstützung gefunden. Konfiguration entweder manuell anpassen oder Sieve ausgeschalten lassen.
no supported imap authentication method could be found. emailadmin de Keine unterstützte IMAP-Authentifizierungsmethode gefunden.
order emailadmin de Reihenfolge
organisation emailadmin de Organisation
plesk can't rename users --> request ignored emailadmin de Plesk kann keine Benutzer umbenennen --> Anforderung ignoriert
plesk imap server (courier) emailadmin de Plesk IMAP Server (Courier)
plesk mail script '%1' not found !!! emailadmin de Plesk Mail Skript '%1' nicht gefunden !!!
plesk requires passwords to have at least 5 characters and not contain the account-name --> password not set!!! emailadmin de Plesk verlangt, dass Passwörter mindestens 5 Zeichen lang sind und nicht den Benutzernamen enthalten --> Passwort nicht gesetzt!!!
plesk smtp-server (qmail) emailadmin de Plesk SMTP-Server (Qmail)
pop3 server hostname or ip address emailadmin de POP3-Server Hostname oder IP-Adresse
pop3 server port emailadmin de POP3-Server Port
port emailadmin de Port
postfix with ldap emailadmin de Postfix mit LDAP
processing of file %1 failed. failed to meet basic restrictions. emailadmin de Die Verarbeitung der Datei %1 fehlgeschlagen. Die Basis Voraussetzungen wurden nicht erfülltt
profile access rights emailadmin de Profilzugriffsrechte
profile is active emailadmin de Profil ist aktiv
profile list emailadmin de Profilliste
profile name emailadmin de Profilname
qmaildotmode emailadmin de qmaildotmode
quota settings emailadmin de Quota Einstellungen
quota size in mbyte emailadmin de Quota Größe in MByte
relay access checked emailadmin de nicht angemeldetes Senden überprüft
remove emailadmin de Entfernen
required pear class mail/mimedecode.php not found. emailadmin de Die benötigte Classe PEAR (Mail/mimeDecode.php) wurde nicht gefunden.
reset filter emailadmin de Filter zurücksetzen
save of message %1 failed. could not save message to folder %2 due to: %3 emailadmin de Das Speichern der Nachricht %1 ist fehlgeschlagen. Die Nachricht konnte nicht in das Verzeichniss %2 bzw.: %3
saving of message %1 failed. destination folder %2 does not exist. emailadmin de Das Speichern der Nachricht %1 ist fehlgeschlagen. Der Ordner %2 ist nicht vorhanden.
secure connection emailadmin de Sichere Verbindung
select type of imap server emailadmin de IMAP-Server Typ auswählen
select type of imap/pop3 server emailadmin de IMAP/POP3-Server Typ auswählen
select type of smtp server emailadmin de SMTP-Server Typ auswählen
send using this email-address emailadmin de zum Versenden wird diese E-Mail Adresse benutzt
server settings emailadmin de Server-Einstellungen
sieve server hostname or ip address emailadmin de Sieve-Server Hostname oder IP-Adresse
sieve server port emailadmin de Sieve-Server Port
sieve settings emailadmin de Sieve Einstellungen
skip imap emailadmin de IMAP auslassen
skipping imap configuration! emailadmin de IMAP Konfiguration ausgelassen!
smtp authentication emailadmin de SMTP Anmeldung
smtp options emailadmin de SMTP Optionen
smtp server emailadmin de SMTP Server
smtp server name emailadmin de SMTP Server Name
smtp settings emailadmin de SMTP Einstellungen
smtp-server hostname or ip address emailadmin de SMTP Server Hostname oder IP-Adresse
smtp-server port emailadmin de SMTP Server Port
standard emailadmin de Vorgabe
standard identity emailadmin de Standard Identität
standard imap server emailadmin de Standard IMAP-Server
standard pop3 server emailadmin de Standard POP3-Server
standard smtp-server emailadmin de Standard SMTP-Server
starts with emailadmin de startet mit
stationery emailadmin de Briefpapier
successful connected to %1 server%2. emailadmin de Erfolgreich zu %1 Server verbunden%2.
switch back to standard identity to save account. emailadmin de Kehren Sie zur Standard-Identität zurück um das Konto zu speichern.
switch back to standard identity to save other account data. emailadmin de Kehren Sie zur Standard-Identität zurück um andere Kontendaten zu speichern.
templates emailadmin de Templates
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin de Der IMAP Server scheint die eingestellte Authentifizierungsmethode nicht zu unterstützen. Bitte fragen Sie Ihren Systemadministrator.
the mimeparser can not parse this message. emailadmin de Der Mimiparser versteht diese Nachricht nicht
this is not a personal mail account!\n\naccount will be deleted for all users!\n\nare you really sure you want to do that? emailadmin de Das ist KEIN persönliches Mailkonto!\n\nDas Konto wird für ALLE Benutzer gelöscht!\n\nSind Sie wirklich sicher, dass Sie das wollen?
this php has no imap support compiled in!! emailadmin de Dieses PHP hat keine IMAP Unterstützung!!!
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin de Um eine TLS Verbindung zu verwenden, benötigen Sie PHP 5.1.0 oder aktueller.
unexpected response from server to authenticate command. emailadmin de Unerwartete Antwort des Servers auf das AUTHENTICATE Kommando.
unexpected response from server to digest-md5 response. emailadmin de Unerwartete Antwort des Servers auf die Digest-MD5 Antwort.
unexpected response from server to login command. emailadmin de Unerwartete Antwort des Servers auf das LOGIN Kommando.
unknown imap response from the server. server responded: %s emailadmin de Unbekannte IMAP Antwort vom Server. Server antwortet: %s
unsupported action '%1' !!! emailadmin de Nicht unterstützte Aktion '%1' !!!
update current email address: emailadmin de Aktualisiere aktuelle E-Mailadresse
use ldap defaults emailadmin de LDAP Standardeinstellungen benutzen
use predefined username and password defined below emailadmin de Verwende den unten vordefinierten Benutzernamen und Passwort
use smtp auth emailadmin de SMTP Authentifizierung benutzen
use tls authentication emailadmin de TLS Authentifizierung benutzen
use tls encryption emailadmin de TLS Verschlüsselung benutzen
use users email-address (as seen in useraccount) emailadmin de Benutzt E-Mail Adresse des Benutzers (Die unter seinem Mailkonto angezeigt wird)
user can edit forwarding address emailadmin de Anwender können ihre Weiterleitungsadresse bearbeiten
userid@domain eg. u1234@domain emailadmin de UserId@domain z.B. u1234@domain
username (standard) emailadmin de Benutzername (Standard)
username specified below for all emailadmin de Unter angegebener Benutzername für alle
username/password defined by admin emailadmin de Benutzername / Passwort vordefiniert
username@domainname (virtual mail manager) emailadmin de Benutzername@Domänenname (Virtual MAIL ManaGeR)
users can define their own emailaccounts emailadmin de Anwender können ihre eigenen Konten definieren
users can define their own identities emailadmin de Anwender können ihre eigenen Identitäten definieren
users can define their own signatures emailadmin de Anwender können ihre eigenen Signaturen definieren
users can utilize these stationery templates emailadmin de Benutzer können diese Briefpapiervorlagen verwenden
using data from mozilla ispdb for provider %1 emailadmin de Benutzer Mozilla ISPDB für Provider %1
vacation messages with start- and end-date require an admin account to be set emailadmin de Abwesenheitsnotizen mit Start- und Enddatum benötigen einen gesetzten Administrator Benutzer!
virtual mail manager emailadmin de Virtual MAIL ManaGeR
yes, use credentials below only for alarms and notifications, otherwise use credentials of current user emailadmin de Ja, die Daten darunter nur für Alarme und Benachrichtigungen verwenden, ansonsten die Daten des aktiven Benutzers.
yes, use credentials of current user or if given credentials below emailadmin de Ja, benutze Daten des aktuellen Benutzers oder wenn angegeben die Daten darunter
you have received a new message on the emailadmin de Sie haben eine neue Nachricht erhalten.
you need to specify a forwarding address, when checking "%1"! emailadmin de Sie müssen eine Weiterleitungsadresse angeben, wenn "%1" abgehackt ist!
your message to %1 was displayed. emailadmin de Ihre Nachricht %1 wurde angezeigt
your name emailadmin de Ihr Name

View File

@ -0,0 +1,51 @@
advanced options emailadmin el επιλογές για προχωρημένους
alternate email address emailadmin el εναλλακτική διεύθυνση email
bad login name or password. emailadmin el Λάθος όνομα ή κωδικός πρόσβασης
bad request: %s emailadmin el Άκυρη απαίτηση: %
connection dropped by imap server. emailadmin el Έπεσε η σύνδεση από τον IMAP server
could not complete request. reason given: %s emailadmin el Δεν ολοκληρώθηκε το αίτημα. Αιτία: %s
could not open secure connection to the imap server. %s : %s. emailadmin el Δεν έγινε ασφαλής σύνδεση με τον IMAP server. %s : %s.
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin el CRAM-MD5 ή DIGEST-MD5 απαιτεί το Auth_SASL πακέτο να εγκατασταθεί.
default emailadmin el προκαθορισμένο
deliver extern emailadmin el παράδοση εξωτερ
do not validate certificate emailadmin el μην επικυρώνετε το πιστοποιητικό
edit email settings emailadmin el επεξεργασία ρυθμίσεων email
email account active emailadmin el ενεργός κατάλογος email
email address emailadmin el διεύθυνση email
encrypted connection emailadmin el αποκρυπτογραφημένη σύνδεση
error connecting to imap server. %s : %s. emailadmin el Σφάλμα κατά τη σύνδεση με τον IMAP server. %s : %s.
error connecting to imap server: [%s] %s. emailadmin el Σφάλμα κατά τη σύνδεση με τον IMAP server. [%s] : %s.
forward also to emailadmin el προώθηση επίσης στο
forward only emailadmin el μόνο προώθηση
if using ssl or tls, you must have the php openssl extension loaded. emailadmin el Αν χρησιμοποιείται SSL ή TLS, πρέπει να έχετε την PHP openssl επέκταση φορτωμένη.
imap server emailadmin el IMAP Server
imap server closed the connection. emailadmin el Ο IMAP Server έκλεισε τη σύνδεση
imap server closed the connection. server responded: %s emailadmin el Ο IMAP Server έκλεισε τη σύνδεση. Ο Server απάντησε: %s
in mbyte emailadmin el σε MByte
leave empty for no quota emailadmin el να μείνει κενό για μη ποσοστόσεις
mail settings admin el Ρυθμίσεις μηνυμάτων
no alternate email address emailadmin el δεν υπάρχει εναλλακτική διεύθυνση email
no encryption emailadmin el Καμία κρυπτογράφηση
no message returned. emailadmin el Δεν επεστράφη κάποιο μήνυμα.
no supported imap authentication method could be found. emailadmin el Δεν βρέθηκε καμία υποστηριζόμενη IMAP επικυρωμένη μέθοδος.
order emailadmin el Ταξινόμηση
organisation emailadmin el οργανισμός
port emailadmin el θύρα
quota settings emailadmin el ρυθμίσεις ποσοστών
quota size in mbyte emailadmin el μέγεθος ποσοστών σε MByte
remove emailadmin el αφαίρεση
sieve settings emailadmin el Ρυθμίσεις Sieve
smtp settings emailadmin el Ρυθμίσεις SMTP
standard emailadmin el συνήθης
standard imap server emailadmin el συνήθης IMAP server
standard pop3 server emailadmin el συνήθης POP3 server
standard smtp-server emailadmin el συνήθης SMTP-server
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin el Ο IMAP server δεν υποστηρίζει την επιλεγμένη μέθοδο αυθεντικότητας.Παρακαλώ επικοινωνήστε με τον διαχειριστή σας.
this php has no imap support compiled in!! emailadmin el Αυτό το PHP δεν έχει καθόλου IMAP υποστήριξη μεταφρασμένη!!
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin el Για τη χρησιμοποίηση TLS σύνδεσης, πρέπει να έχετε PHP 5.1.0 ή υψηλότερη έκδοση.
unexpected response from server to authenticate command. emailadmin el Απρόσμενη απάντηση από τον server στην ΕΞΑΚΡΙΒΩΣΗ ΓΝΗΣΙΟΤΗΤΑΣ εντολής.
unexpected response from server to digest-md5 response. emailadmin el Απρόσμενη απάντηση από τον server στην Digest-MD5 απάντηση.
unexpected response from server to login command. emailadmin el Απρόσμενη απάντηση από τον server στην εντολή ΕΙΣΟΔΟΥ
unknown imap response from the server. server responded: %s emailadmin el Άγνωστη IMAP απάντηση από τον server.Απάντηση Server:%s
use smtp auth emailadmin el Χρήση SMTP αυθ
users can define their own emailaccounts emailadmin el Οι χρήστες μπορούν να ορίσουν τους δικούς τους email λογαριασμούς

208
emailadmin/lang/egw_en.lang Executable file
View File

@ -0,0 +1,208 @@
%1 entries deleted. emailadmin en %1 entries deleted.
(imapclass must support this feature by querying the corresponding config value and pass it as defaultquota to the imapserver) emailadmin en (imapclass must support this feature by querying the corresponding config value and pass it as defaultquota to the imapserver)
(no subject) emailadmin en (no subject)
account '%1' not found !!! emailadmin en Account '%1' not found!
account deleted. emailadmin en Account deleted.
account not found! common en Account not found!
account saved. emailadmin en Account saved.
active templates emailadmin en Active templates
add new email address: emailadmin en Add new email address:
add profile emailadmin en Add profile
admin dn emailadmin en Admin dn
admin password emailadmin en Admin password
admin username emailadmin en Admin user name
advanced options emailadmin en Advanced options
alternate email address emailadmin en Alternate email address
and logged in emailadmin en and logged in
any application emailadmin en Any application
any group emailadmin en Any group
any user emailadmin en Any user
back to admin/grouplist emailadmin en Back to Admin / Group list
back to admin/userlist emailadmin en Back to Admin / User list
bad login name or password. emailadmin en Bad login name or password.
bad or malformed request. server responded: %s emailadmin en Bad or malformed request. %s
bad request: %s emailadmin en Bad request: %s
can be used by application emailadmin en Can be used by application
can be used by group emailadmin en Can be used by group
can be used by user emailadmin en Can be used by user
connection dropped by imap server. emailadmin en Connection dropped by IMAP server.
connection is not secure! everyone can read eg. your credentials. emailadmin en Connection is NOT secure! Everyone can read eg. your credentials.
continue emailadmin en Continue
could not append message: emailadmin en Could not append Message:
could not complete request. reason given: %s emailadmin en Could not complete request. %s
could not open secure connection to the imap server. %s : %s. emailadmin en Could not open secure connection to the IMAP server. %s : %s.
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin en CRAM-MD5 or DIGEST-MD5 requires the Auth_SASL package to be installed.
create new account emailadmin en Create new account
create new identity emailadmin en Create new identity
cyrus imap server emailadmin en Cyrus IMAP server
cyrus imap server administration emailadmin en Cyrus IMAP server administration
default emailadmin en Default
delete identity emailadmin en Delete identity
delete this account emailadmin en Delete this account
deliver extern emailadmin en Deliver extern
displaying html messages is disabled emailadmin en displaying html messages is disabled
displaying plain messages is disabled emailadmin en displaying plain messages is disabled
do not validate certificate emailadmin en Do not validate certificate
do you really want to delete this profile emailadmin en Do you really want to delete this profile?
do you really want to reset the filter for the profile listing emailadmin en Do you really want to reset the filter for the profile listing?
domainname emailadmin en Domain name
edit email settings emailadmin en Edit email settings
email account active emailadmin en Email account active
email address emailadmin en Email address
email settings common en Email settings
emailadmin emailadmin en eMailAdmin
emailadmin: group assigned profile common en eMailAdmin: Group assigned profile
emailadmin: user assigned profile common en eMailAdmin: User assigned profile
enable cyrus imap server administration emailadmin en Enable Cyrus IMAP server administration
enable sieve emailadmin en Enable Sieve
encrypted connection emailadmin en Encrypted connection
encryption settings emailadmin en Encryption settings
enter your default mail domain (from: user@domain) emailadmin en Enter your default mail domain from: user@domain
entry saved emailadmin en Entry saved
error connecting to imap server. %s : %s. emailadmin en Error connecting to IMAP server. %s : %s.
error connecting to imap server: [%s] %s. emailadmin en Error connecting to IMAP server: [%s] %s.
error deleting entry! emailadmin en Error deleting entry!
error saving account! emailadmin en Error saving account!
error saving the entry!!! emailadmin en Error saving the entry!
error, no username! emailadmin en Error, no username!
event details follow emailadmin en Event Details follow
failed to delete account! emailadmin en Failed to delete account!
file rejected, no %2. is:%1 emailadmin en File rejected, no %2. Is:%1
filtered by account emailadmin en Filtered by account
filtered by group emailadmin en Filtered by group
forward also to emailadmin en Forward also to
forward email's to emailadmin en Forward email's to
forward only emailadmin en Forward only
forward only disables imap mailbox / storing of mails and just forwards them to given address. emailadmin en Forward only disables IMAP mailbox / storing of mails and just forwards them to given address.
global options emailadmin en Global options
hostname or ip emailadmin en Hostname or IP
how username get constructed emailadmin en How username get constructed
identity deleted emailadmin en Identity deleted
identity saved. emailadmin en Identity saved.
if different from email address emailadmin en if different from EMail address
if using ssl or tls, you must have the php openssl extension loaded. emailadmin en If using SSL or TLS, you must have the PHP openssl extension loaded.
if you specify port 5190 as sieve server port, you enforce ssl for sieve (server must support that) emailadmin en if you specify port 5190 as sieve server port, you enforce ssl for sieve (server must support that)
imap admin password admin en IMAP admin password
imap admin user admin en IMAP admin user
imap c-client version < 2001 emailadmin en IMAP C-Client Version < 2001
imap server emailadmin en IMAP server
imap server closed the connection. emailadmin en IMAP server closed the connection.
imap server closed the connection. server responded: %s emailadmin en IMAP Server closed the connection. Server Responded: %s
imap server hostname or ip address emailadmin en IMAP server hostname or ip address
imap server logintyp emailadmin en IMAP server login type
imap server name emailadmin en IMAP server name
imap server port emailadmin en IMAP server port
imap/pop3 server name emailadmin en IMAP/POP3 server name
importance emailadmin en importance
in mbyte emailadmin en in MByte
inactive emailadmin en Inactive
ldap basedn emailadmin en LDAP basedn
ldap server emailadmin en LDAP server
ldap server accounts dn emailadmin en LDAP server accounts DN
ldap server admin dn emailadmin en LDAP server admin DN
ldap server admin password emailadmin en LDAP server admin password
ldap server hostname or ip address emailadmin en LDAP server host name or IP address
ldap settings emailadmin en LDAP settings
leave empty for no quota emailadmin en Leave empty for no quota
mail settings admin en Mail settings
manage stationery templates emailadmin en Manage stationery templates
manual entry emailadmin en Manual entry
mb used emailadmin en MB used
name of organisation emailadmin en Name of organization
no alternate email address emailadmin en No alternate email address
no encryption emailadmin en No encryption
no forwarding email address emailadmin en No forwarding email address
no message returned. emailadmin en No message returned
no plain text part found emailadmin en no plain text part found
no sieve support detected, either fix configuration manually or leave it switched off. emailadmin en No sieve support detected, either fix configuration manually or leave it switched off.
no supported imap authentication method could be found. emailadmin en No supported IMAP authentication method could be found.
order emailadmin en Order
organisation emailadmin en Organisation
plesk can't rename users --> request ignored emailadmin en Plesk can't rename users --> request ignored
plesk imap server (courier) emailadmin en Plesk IMAP Server (Courier)
plesk mail script '%1' not found !!! emailadmin en Plesk mail script '%1' not found!
plesk requires passwords to have at least 5 characters and not contain the account-name --> password not set!!! emailadmin en Plesk requires passwords to have at least 5 characters and not contain the account name --> password NOT set!
plesk smtp-server (qmail) emailadmin en Plesk SMTP-Server (Qmail)
pop3 server hostname or ip address emailadmin en POP3 server hostname or IP address
pop3 server port emailadmin en POP3 server port
port emailadmin en Port
postfix with ldap emailadmin en Postfix with LDAP
processing of file %1 failed. failed to meet basic restrictions. emailadmin en Processing of file %1 failed. Failed to meet basic restrictions.
profile access rights emailadmin en Profile access rights
profile is active emailadmin en Profile is active
profile list emailadmin en Profile list
profile name emailadmin en Profile name
qmaildotmode emailadmin en qmaildotmode
quota settings emailadmin en Quota settings
quota size in mbyte emailadmin en Quota size in MByte
relay access checked emailadmin en Relay access checked
remove emailadmin en Remove
required pear class mail/mimedecode.php not found. emailadmin en Required PEAR class Mail/mimeDecode.php not found.
reset filter emailadmin en Reset filter
save of message %1 failed. could not save message to folder %2 due to: %3 emailadmin en Save of message %1 failed. Could not save message to folder %2 due to: %3
saving of message %1 failed. destination folder %2 does not exist. emailadmin en Saving of message %1 failed. Destination Folder %2 does not exist.
secure connection emailadmin en Secure connection
select type of imap server emailadmin en Select type of IMAP server
select type of imap/pop3 server emailadmin en Select type of IMAP/POP3 server
select type of smtp server emailadmin en Select type of SMTP server
send using this email-address emailadmin en Send using this email address
server settings emailadmin en Server settings
sieve server hostname or ip address emailadmin en Sieve server hostname or IP address
sieve server port emailadmin en Sieve server port
sieve settings emailadmin en Sieve settings
skip imap emailadmin en Skip IMAP
skipping imap configuration! emailadmin en Skipping IMAP configuration!
smtp authentication emailadmin en SMTP authentication
smtp options emailadmin en SMTP options
smtp server emailadmin en SMTP server
smtp server name emailadmin en SMTP server name
smtp settings emailadmin en SMTP settings
smtp-server hostname or ip address emailadmin en SMTP server hostname or IP address
smtp-server port emailadmin en SMTP server port
standard emailadmin en Standard
standard identity emailadmin en Standard identity
standard imap server emailadmin en Standard IMAP server
standard pop3 server emailadmin en Standard POP3 server
standard smtp-server emailadmin en Standard SMTP server
starts with emailadmin en Starts with
stationery emailadmin en Stationery
successful connected to %1 server%2. emailadmin en Successful connected to %1 server%2.
switch back to standard identity to save account. emailadmin en Switch back to standard identity to save account.
switch back to standard identity to save other account data. emailadmin en Switch back to standard identity to save other account data.
templates emailadmin en Templates
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin en The IMAP server does not appear to support the authentication method selected. Contact your system administrator.
the mimeparser can not parse this message. emailadmin en The mimeparser can not parse this message.
this is not a personal mail account!\n\naccount will be deleted for all users!\n\nare you really sure you want to do that? emailadmin en This is NOT a personal mail account!\n\nAccount will be deleted for ALL users!\n\nAre you really sure you want to do that?
this php has no imap support compiled in!! emailadmin en This PHP has no IMAP support compiled in!!
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin en To use a TLS connection, you must be running a version of PHP 5.1.0 or higher.
unexpected response from server to authenticate command. emailadmin en Unexpected response from server to AUTHENTICATE command.
unexpected response from server to digest-md5 response. emailadmin en Unexpected response from server to Digest-MD5 response.
unexpected response from server to login command. emailadmin en Unexpected response from server to LOGIN command.
unknown imap response from the server. server responded: %s emailadmin en Unknown IMAP response from the server. %s
unsupported action '%1' !!! emailadmin en Unsupported action '%1' !
update current email address: emailadmin en Update current email address:
use ldap defaults emailadmin en Use LDAP defaults
use predefined username and password defined below emailadmin en Use predefined username and password defined below
use smtp auth emailadmin en Use SMTP authentication
use tls authentication emailadmin en Use TLS authentication
use tls encryption emailadmin en Use TLS encryption
use users email-address (as seen in useraccount) emailadmin en Use users email address, as set in user account
user can edit forwarding address emailadmin en User can edit forwarding address
userid@domain eg. u1234@domain emailadmin en UserId@domain eg. u1234@domain
username (standard) emailadmin en Username (standard)
username specified below for all emailadmin en Username specified below for all
username/password defined by admin emailadmin en Username / Password defined by admin
username@domainname (virtual mail manager) emailadmin en username@domainname (Virtual MAIL ManaGeR)
users can define their own emailaccounts emailadmin en Users can define their own email accounts
users can define their own identities emailadmin en Users can define their own identities
users can define their own signatures emailadmin en Users can define their own signatures
users can utilize these stationery templates emailadmin en Users can utilize these stationery templates
using data from mozilla ispdb for provider %1 emailadmin en Using data from Mozilla ISPDB for provider %1
vacation messages with start- and end-date require an admin account to be set emailadmin en Vacation messages with start and end date require an admin account to be set!
virtual mail manager emailadmin en Virtual MAIL ManaGeR
yes, use credentials below only for alarms and notifications, otherwise use credentials of current user emailadmin en Yes, use credentials below only for alarms and notifications, otherwise use credentials of current user
yes, use credentials of current user or if given credentials below emailadmin en Yes, use credentials of current user or if given credentials below
you have received a new message on the emailadmin en You have received a new message on the
you need to specify a forwarding address, when checking "%1"! emailadmin en You need to specify a forwarding address, when checking "%1"!
your message to %1 was displayed. emailadmin en Your message to %1 was displayed.
your name emailadmin en Your name

View File

@ -0,0 +1,149 @@
account '%1' not found !!! emailadmin es-es ¡No se encontró la cuenta '%1'!
active templates emailadmin es-es Plantillas activas
add new email address: emailadmin es-es Añadir nueva dirección de correo
add profile emailadmin es-es Añadir perfil
admin dn emailadmin es-es dn del administrador
admin password emailadmin es-es contraseña del administrador
admin username emailadmin es-es usuario del administrador
advanced options emailadmin es-es opciones avanzadas
alternate email address emailadmin es-es dirección de correo alternativa
any application emailadmin es-es cualquier aplicación
any group emailadmin es-es cualquier grupo
any user emailadmin es-es cualquier usuario
back to admin/grouplist emailadmin es-es Volver a Administración/Lista de grupos
back to admin/userlist emailadmin es-es Volver a Administración/Lista de usuarios
bad login name or password. emailadmin es-es Nombre de usuario o contraseña incorrectos
bad or malformed request. server responded: %s emailadmin es-es Petición errónea o mal formado. El servidor respondió: %s
bad request: %s emailadmin es-es Petición errónea: %s
can be used by application emailadmin es-es puede usarse por la aplicación
can be used by group emailadmin es-es puede usarse por el grupo
can be used by user emailadmin es-es puede usarse por el usuario
connection dropped by imap server. emailadmin es-es El servidor IMAP ha interrumpido la conexión
continue emailadmin es-es Continuar
could not complete request. reason given: %s emailadmin es-es No se pudo completar la solicitud. Motivo: %s
could not open secure connection to the imap server. %s : %s. emailadmin es-es No se pudo abrir una conexión segura con el servidor IMAP. %s: %s.
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin es-es CRAM-MD5 o DIGEST-MD5 necesitan el paquete Auth_SASL para estar instalado.
cyrus imap server emailadmin es-es Servidor IMAP Cyrus
cyrus imap server administration emailadmin es-es Administración del servidor IMAP Cyrus
default emailadmin es-es predeterminada
deliver extern emailadmin es-es entrega externa
do not validate certificate emailadmin es-es No validar el certificado
do you really want to delete this profile emailadmin es-es ¿Realmente desea borrar este perfil?
do you really want to reset the filter for the profile listing emailadmin es-es Realmente desea restablecer el filtro para la lista de perfiles
domainname emailadmin es-es nombre del dominio
edit email settings emailadmin es-es editar configuración de la cuenta
email account active emailadmin es-es cuenta de correo electrónico activa
email address emailadmin es-es dirección de correo electrónico
email settings common es-es Configuración del correo electrónico
emailadmin emailadmin es-es Administración del correo electrónico
emailadmin: group assigned profile common es-es eMailAdmin: perfil asignado al grupo
emailadmin: user assigned profile common es-es eMailAdmin: perfil asignado al usuario
enable cyrus imap server administration emailadmin es-es activar administración del servidor Cyrus IMAP
enable sieve emailadmin es-es activar Sieve
encrypted connection emailadmin es-es conexión cifrada
encryption settings emailadmin es-es configuración del cifrado
enter your default mail domain (from: user@domain) emailadmin es-es introduzca el dominio predeterminado (de usuario@dominio)
entry saved emailadmin es-es La entrada ha sido guardada
error connecting to imap server. %s : %s. emailadmin es-es Error al conectar con el servidor IMAP. %s: %s.
error connecting to imap server: [%s] %s. emailadmin es-es Error al conectar con el servidor IMAP: [%s] %s.
error saving the entry!!! emailadmin es-es Error guardando el elemento!!!
filtered by account emailadmin es-es filtrado por cuenta
filtered by group emailadmin es-es filtrado por grupo
forward also to emailadmin es-es reenviar también a
forward email's to emailadmin es-es reenviar correos a
forward only emailadmin es-es sólo reenviar
global options emailadmin es-es opciones globales
if using ssl or tls, you must have the php openssl extension loaded. emailadmin es-es Si usa SSL o TLS, debe tener cargada la extensión openssl de PHP.
imap admin password admin es-es contraseña del administrador IMAP
imap admin user admin es-es usuario administrador IMAP
imap c-client version < 2001 emailadmin es-es Versión C-Cliente IMAP < 2001
imap server emailadmin es-es Servidor IMAP
imap server closed the connection. emailadmin es-es El servidor IMAP cerró la conexión.
imap server closed the connection. server responded: %s emailadmin es-es El servidor IMAP cerró la conexión. El servidor respondió: %s
imap server hostname or ip address emailadmin es-es Servidor IMAP o dirección IP
imap server logintyp emailadmin es-es Tipo de sesión del servidor IMAP
imap server name emailadmin es-es Nombre del servidor IMAP
imap server port emailadmin es-es Puerto del servidor IMAP
imap/pop3 server name emailadmin es-es Nombre del servidor POP/IMAP
in mbyte emailadmin es-es en MBytes
inactive emailadmin es-es inactivo
ldap basedn emailadmin es-es basedn para LDAP
ldap server emailadmin es-es servidor LDAP
ldap server accounts dn emailadmin es-es DN para cuentas del servidor LDAP
ldap server admin dn emailadmin es-es DN del administrador del servidor LDAP
ldap server admin password emailadmin es-es contraseña del administrador del servidor LDAP
ldap server hostname or ip address emailadmin es-es Nombre del servidor LDAP o dirección IP
ldap settings emailadmin es-es Configuración LDAP
leave empty for no quota emailadmin es-es Dejar en blanco para no poner cuota
mail settings admin es-es Configuración del correo.
manage stationery templates emailadmin es-es Gestionar plantillas preimpresas
name of organisation emailadmin es-es Nombre de la organización
no alternate email address emailadmin es-es Sin dirección de correo alternativa
no encryption emailadmin es-es Sin cifrar
no forwarding email address emailadmin es-es Sin dirección de correo para reenviar
no message returned. emailadmin es-es No se devolvió ningún mensaje.
no supported imap authentication method could be found. emailadmin es-es No se pudo encontrar ningún método soportado de identificación IMAP.
order emailadmin es-es orden
organisation emailadmin es-es organización
plesk can't rename users --> request ignored emailadmin es-es Plesk no puede renombrar usuarios --> Se ignora la solicitud
plesk imap server (courier) emailadmin es-es Servidor IMAP Plesk (Courier)
plesk mail script '%1' not found !!! emailadmin es-es ¡No se encontró el script de correo de Plesk '%1'!
plesk requires passwords to have at least 5 characters and not contain the account-name --> password not set!!! emailadmin es-es Plesk requiere que las contraseñas tengan al menos 5 caracteres y no contengan el nombre de la cuenta --> NO se establece la contraseña
plesk smtp-server (qmail) emailadmin es-es Servidor SMTP de Plesk (Qmail)
pop3 server hostname or ip address emailadmin es-es Nombre del servidor POP3 o dirección IP
pop3 server port emailadmin es-es Puerto del servidor POP3
port emailadmin es-es puerto
postfix with ldap emailadmin es-es Postfix con LDAP
profile access rights emailadmin es-es Derechos de acceso del perfil
profile is active emailadmin es-es el perfil está activo
profile list emailadmin es-es Lista de perfiles
profile name emailadmin es-es Nombre del perfil
qmaildotmode emailadmin es-es Modo de punto de qmail
quota settings emailadmin es-es Configuración de las cuotas
quota size in mbyte emailadmin es-es tamaño de la cuota en MBytes
remove emailadmin es-es borrar
reset filter emailadmin es-es restablecer filtro
select type of imap server emailadmin es-es Seleccione el tipo de servidor IMAP
select type of imap/pop3 server emailadmin es-es Seleccione el tipo de servidor IMAP/POP3
select type of smtp server emailadmin es-es Seleccione el tipo de servidor SMTP
send using this email-address emailadmin es-es enviar usando esta dirección de correo electrónico
server settings emailadmin es-es configuración del servidor
sieve server hostname or ip address emailadmin es-es Nombre del servidor Sieve o dirección IP
sieve server port emailadmin es-es Puerto del servidor Sieve
sieve settings emailadmin es-es Configuración de Sieve
smtp authentication emailadmin es-es identificación SMTP
smtp options emailadmin es-es opciones SMTP
smtp server name emailadmin es-es Nombre del servidor SMTP
smtp settings emailadmin es-es configuración SMTP
smtp-server hostname or ip address emailadmin es-es Nombre del servidor SMTP o dirección IP
smtp-server port emailadmin es-es Puerto del servidor SMTP
standard emailadmin es-es Estándar
standard imap server emailadmin es-es Servidor IMAP estándar
standard pop3 server emailadmin es-es Servidor POP3 estándar
standard smtp-server emailadmin es-es Servidor SMTP estándar
stationery emailadmin es-es material preimpreso
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin es-es El servidor IMAP no parece soportar el método de identificación seleccionado. Por favor, póngase en contacto el administrador de su sistema.
this php has no imap support compiled in!! emailadmin es-es ¡¡Esta instalación de PHP no tiene soporte IMAP!!
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin es-es Para usar una conexión TLS, debe ejecutar una versión de PHP 5.1.0 o superior.
unexpected response from server to authenticate command. emailadmin es-es Respuesta inesperada del servidor al comando AUTHENTICATE.
unexpected response from server to digest-md5 response. emailadmin es-es Respuesta inesperada del servidor a la respuesta Digest-MD5.
unexpected response from server to login command. emailadmin es-es Respuesta inesperada del servidor al comando LOGIN.
unknown imap response from the server. server responded: %s emailadmin es-es Respuesta IMAP desconocida del servidor. El servidor respondió: %s
unsupported action '%1' !!! emailadmin es-es ¡La acción '%1' no está soportada!
update current email address: emailadmin es-es Actualizar la dirección de correo actual:
use ldap defaults emailadmin es-es usar las opciones predeterminadas para LDAP
use predefined username and password defined below emailadmin es-es Usar el usuario predefinido y las contraseñas definidas debajo
use smtp auth emailadmin es-es Usar identificación SMTP
use tls authentication emailadmin es-es Usar identificación TLS
use tls encryption emailadmin es-es Usar cifrado TLS
user can edit forwarding address emailadmin es-es El usuario puede editar la dirección de reenvío
username (standard) emailadmin es-es usuario (estándar)
username/password defined by admin emailadmin es-es Usuario/contraseña definida por el administrador
username@domainname (virtual mail manager) emailadmin es-es usuario@dominio (Gestor de correo virtual)
users can define their own emailaccounts emailadmin es-es Los usuarios pueden definir sus propias cuentas de correo
users can define their own identities emailadmin es-es Los usuarios pueden definir sus propias identidades
users can define their own signatures emailadmin es-es Los usuarios pueden definir sus propias firmas
users can utilize these stationery templates emailadmin es-es Los usuarios pueden utilizar estas plantillas preimpresas
virtual mail manager emailadmin es-es Gestor de correo virtual
you have received a new message on the emailadmin es-es Ha recibido un mensaje nuevo en la
your name emailadmin es-es Su nombre

50
emailadmin/lang/egw_et.lang Executable file
View File

@ -0,0 +1,50 @@
account '%1' not found !!! emailadmin et Kontot '%1' ei leitud !!!
add new email address: emailadmin et Lisa uus email aadress
add profile emailadmin et Lisa Profiil
admin password emailadmin et admin parool
admin username emailadmin et admin kasutajanimi
alternate email address emailadmin et Alternatiivne email aadress
bad login name or password. emailadmin et Vale kasutajanimi või parool
continue emailadmin et Jätka
cyrus imap server emailadmin et Cyrus IMAP Server
cyrus imap server administration emailadmin et Cyrus IMAP server administreerimine
default emailadmin et vaikimisi
do not validate certificate emailadmin et ära valideeri sertifikaati
do you really want to delete this profile emailadmin et Tahad tõesti kustutada seda Profiili
domainname emailadmin et Doomeninimi
edit email settings emailadmin et muuda emaili setinguid
email account active emailadmin et email konto aktiivne
email address emailadmin et email aadress
email settings common et Email setingud
encrypted connection emailadmin et krüpteeritud ühendus
encryption settings emailadmin et Krüpteerimise setingud
enter your default mail domain (from: user@domain) emailadmin et Sisesta oma vaikimisi mail doomen (kasutaja@doomen)
entry saved emailadmin et Kirje salvestatud
error saving the entry!!! emailadmin et Viga kirje salvestamisel !!!
global options emailadmin et Globaalsed omadused
imap admin password admin et IMAP admin parool
imap admin user admin et IMAP admin kasutaja
imap c-client version < 2001 emailadmin et IMAP C-Client Versioon < 2001
imap server emailadmin et IMAP Server
imap server closed the connection. emailadmin et IMAP server sulges ühenduse.
imap server closed the connection. server responded: %s emailadmin et IMAP Server sulges ühenduse. Server Vastas: %s
imap server name emailadmin et imap serveri nimi
imap server port emailadmin et IMAP serveri port
imap/pop3 server name emailadmin et IMAP/POP3 server nimi
ldap settings emailadmin et LDAP setingud
mail settings admin et Mail setingud
no alternate email address emailadmin et pole alternatiivset email aadressi
no encryption emailadmin et ilna krüpteeringutta
organisation emailadmin et Organisatsioon
pop3 server port emailadmin et POP3 serveri port
port emailadmin et port
remove emailadmin et eemalda
select type of imap server emailadmin et vali IMAP serveri tüüp
select type of imap/pop3 server emailadmin et vali IMAP/POP3 serveri tüüp
select type of smtp server emailadmin et Vali SMTP serveri tüüp
server settings emailadmin et Serveri setingud
sieve server port emailadmin et Sieve serveri port
sieve settings emailadmin et Sieve setingud
smtp server name emailadmin et SMTP serveri nimi
smtp settings emailadmin et SMTP setingud
smtp-server port emailadmin et SMTP serveri port

View File

@ -0,0 +1,31 @@
advanced options emailadmin eu Aukera aurreratuak
alternate email address emailadmin eu Helbide elektroniko alternatiboa
bad login name or password. emailadmin eu Izen edo pasahitz okerra
default emailadmin eu Lehenetsia
email address emailadmin eu Helbide elektronikoa
encrypted connection emailadmin eu konexioa enkriptatua
entry saved emailadmin eu Sarrera gordeta
error saving the entry!!! emailadmin eu Errorea sarrera gordetzerakoan
imap server emailadmin eu IMAP Zerbitzaria
imap server closed the connection. emailadmin eu IMAP zerbitzariak konexioa itxi du
in mbyte emailadmin eu MByte-sen
leave empty for no quota emailadmin eu zurian utzi kuotarik ez badago
mail settings admin eu Posta elektronikoaren konfigurazioa
no alternate email address emailadmin eu ez da ordezko helbide elektronikorik
no message returned. emailadmin eu Ez da mezurik itzuli
order emailadmin eu Ordena
organisation emailadmin eu antolaketa
port emailadmin eu ataka
postfix with ldap emailadmin eu Postfix-ak LDAP-arekin
quota settings emailadmin eu kuotaren konfigurazioa
quota size in mbyte emailadmin eu kuotaren tamaina MBytes-etan
remove emailadmin eu ezabatu
sieve settings emailadmin eu SIEVE ren lehentasunak
smtp settings emailadmin eu SMTP lehentasunak
standard emailadmin eu estandar
standard imap server emailadmin eu IMAP zerbitzari estandarra
standard pop3 server emailadmin eu POP3 zerbitzari estandarra
standard smtp-server emailadmin eu SMTP zerbitzari estandarra
this php has no imap support compiled in!! emailadmin eu PHParendako IMAPa konpilatu gabe
use smtp auth emailadmin eu SMTP autentifikazioa erabili
users can define their own emailaccounts emailadmin eu Erabiltzaileek euren posta kontuak defini ditzazkete

View File

@ -0,0 +1,71 @@
add profile emailadmin fa افزودن مجموعه تنظیمات
admin dn emailadmin fa dn مدیر
admin password emailadmin fa گذرواژه مدیر
admin username emailadmin fa نام کاربری مدیر
advanced options emailadmin fa تنظیمات پیشرفته
alternate email address emailadmin fa نشانی پست الکترونیکی دیگر
any application emailadmin fa همه کاربردها
any group emailadmin fa همه گروهها
can be used by application emailadmin fa استفاده شود توسط کاربرد
can be used by group emailadmin fa استفاده شود توسط گروه
continue emailadmin fa ادامه
default emailadmin fa پیش فرض
deliver extern emailadmin fa حمل بیرونی
do you really want to delete this profile emailadmin fa آیا واقعا می خواهید این مجموعه تنظیمات را حذف کنید؟
domainname emailadmin fa نام حوزه
edit email settings emailadmin fa ویرایش تنظیمات نامه الکترونیکی
email account active emailadmin fa حساب نامه الکترونیکی فعال
email address emailadmin fa نشانی الکترونیکی
emailadmin emailadmin fa مدیر رایانامه
enable sieve emailadmin fa فعالسازی Sieve
encryption settings emailadmin fa تنظیمات رمز نگاری
enter your default mail domain (from: user@domain) emailadmin fa حوزه پیش فرض خود را وارد کنید:(مثلا: fgpars.net)
entry saved emailadmin fa ورودی ذخیره شد
error saving the entry!!! emailadmin fa خطای ذخیره ورودی!!!
forward also to emailadmin fa همچنین ارسال به
forward email's to emailadmin fa ارسال نامه ها به
forward only emailadmin fa فقط ارسال به
global options emailadmin fa گزینه های عمومی
imap admin password admin fa گذرواژه مدیر IMAP
imap admin user admin fa کاربر مدیر IMAP
imap server emailadmin fa کارگزار آی مپ
imap server hostname or ip address emailadmin fa نام میزبان یا نشانی IP کارگزار IMAP
imap server logintyp emailadmin fa نوع ورود کارگزار IMAP
imap server port emailadmin fa درگاه کارگزار IMAP
imap/pop3 server name emailadmin fa نام کارگزار IMAP/POP3
in mbyte emailadmin fa به مگابایت
leave empty for no quota emailadmin fa برای بدون سهمیه بودن، خالی بگذارید
mail settings admin fa تنظیمات نامه
name of organisation emailadmin fa نام سازمان
no alternate email address emailadmin fa بدون نشانی نامه الکترونیکی دیگر
no forwarding email address emailadmin fa بدون نشانی نامه الکترونیکی ارسال به دیگری
order emailadmin fa ترتیب
organisation emailadmin fa سازمان
pop3 server hostname or ip address emailadmin fa نام میزبان یا نشانی IP کارگزار POP3
pop3 server port emailadmin fa درگاه کارگزار POP3
profile access rights emailadmin fa حقوق دسترسی مجموعه تنظیمات
profile list emailadmin fa لیست مجموعه تنظیمات
profile name emailadmin fa نام مجموعه تنظیمات
quota settings emailadmin fa تنظیمات سهمیه
quota size in mbyte emailadmin fa سهمیه به مگابایت
remove emailadmin fa حذف
select type of imap/pop3 server emailadmin fa نوع کارگزار IMAP/POP3 را انتخاب کنید
select type of smtp server emailadmin fa نوع کارگزار SMTP را انتخاب کنید
server settings emailadmin fa تنظیمات کارگزار
sieve server hostname or ip address emailadmin fa نام میزبان یا نشانی IP کارگزار Sieve
sieve server port emailadmin fa درگاه کارگزار Sieve
sieve settings emailadmin fa تنظیمات Sieve
smtp authentication emailadmin fa تصدیق smtp
smtp server name emailadmin fa نام کارگزار SMTP
smtp settings emailadmin fa تنظیمات smtp
smtp-server hostname or ip address emailadmin fa نشانی IP یا نام میزبان SMTP
smtp-server port emailadmin fa درگاه کارگزار SMTP
standard emailadmin fa استاندارد
standard imap server emailadmin fa کارگزار استاندارد IMAP
standard pop3 server emailadmin fa کارگزار استاندارد POP3
standard smtp-server emailadmin fa کارگزار استاندارد SMTP
this php has no imap support compiled in!! emailadmin fa این PHP پشتیبانی از آی مپ را در خود ندارد!
use ldap defaults emailadmin fa از پیش فرضهای LDAP استفاده شود
use smtp auth emailadmin fa استفاده از تصدیق در SMTP
users can define their own emailaccounts emailadmin fa کاربران می توانند حسابهای کاربری را خودشان تعریف کنند
your name emailadmin fa نام شما

157
emailadmin/lang/egw_fi.lang Normal file
View File

@ -0,0 +1,157 @@
%1 entries deleted. emailadmin fi %1 tapahtumaa poistettu
account '%1' not found !!! emailadmin fi Tiliä '%1' ei löytynyt!
active templates emailadmin fi Aktiiviset mallipohjat
add new email address: emailadmin fi Lisää uusi sähköpostiosoite
add profile emailadmin fi Lisää profiili
admin dn emailadmin fi Ylläpitäjän dn
admin password emailadmin fi Ylläpitäjän salasana
admin username emailadmin fi Ylläpitäjän käyttäjätunnus
advanced options emailadmin fi Lisäasetukset
alternate email address emailadmin fi Vaihtoehtoinen sähköpostiosoite
any application emailadmin fi Mikä tahansa sovellus
any group emailadmin fi Mikä tahansa ryhmä
any user emailadmin fi Kuka tahansa käyttäjä
back to admin/grouplist emailadmin fi Takaisin ylläpitoon / Ryhmäluetteloon
back to admin/userlist emailadmin fi Takaisin ylläpitoon / Käyttäjäluetteloon
bad login name or password. emailadmin fi Väärä käyttäjätunnus tai salasana
bad or malformed request. server responded: %s emailadmin fi Väärä tai viallinen pyyntö. %s
bad request: %s emailadmin fi Väärä pyyntö: %s
can be used by application emailadmin fi Sovellukselle
can be used by group emailadmin fi Ryhmälle
can be used by user emailadmin fi Käyttäjälle
connection dropped by imap server. emailadmin fi Yhteys IMAP palvelimeen katkesi.
continue emailadmin fi Jatka
could not complete request. reason given: %s emailadmin fi Pyyntöä ei voitu toteuttaa. %s
could not open secure connection to the imap server. %s : %s. emailadmin fi Turvattua yhteyttä IMAP palvelimeen ei voitu avata. %s : %s.
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin fi CRAM-MD5 tai DIGEST-MD5 käyttö edellyttää Auth_SASL paketin asentamista.
cyrus imap server emailadmin fi Cyrus IMAP -palvelin
cyrus imap server administration emailadmin fi Cyrus IMAP -palvelimen hallinta
default emailadmin fi Oletus
deliver extern emailadmin fi Deliver extern
do not validate certificate emailadmin fi Älä tarkista sertifikaattia
do you really want to delete this profile emailadmin fi Haluatko varmasti poistaa tämän profiilin?
do you really want to reset the filter for the profile listing emailadmin fi Haluatko varmasti uudelleenasettaa suotimen profiililuetteloon?
domainname emailadmin fi Verkkotunnus
edit email settings emailadmin fi Muokkaa sähköpostin asetuksia
email account active emailadmin fi Sähköpostitili käytössä
email address emailadmin fi Sähköpostiosoite
email settings common fi Sähköpostin asetukset
emailadmin emailadmin fi Sähköpostin ylläpito
emailadmin: group assigned profile common fi Sähköpostin ylläpito: Ryhmälle suunnattu profiili
emailadmin: user assigned profile common fi Sähköpostin ylläpito: Käyttäjälle suunnattu profiili
enable cyrus imap server administration emailadmin fi Ota Cyrus IMAP -palvelimen hallinta käyttöön
enable sieve emailadmin fi Ota Sieve käyttöön
encrypted connection emailadmin fi Yhteyden suojaus
encryption settings emailadmin fi Yhteyden suojausasetukset
enter your default mail domain (from: user@domain) emailadmin fi Anna oletusverkkotunnus (käyttäjä@verkkotunnus)
entry saved emailadmin fi Tallennettu
error connecting to imap server. %s : %s. emailadmin fi Virhe yhdistettäessä IMAP palvelimeen. %s : %s.
error connecting to imap server: [%s] %s. emailadmin fi Virhe yhdistettäessä IMAP palvelimeen. [%s] %s.
error deleting entry! emailadmin fi Virhe poistettaessa!
error saving the entry!!! emailadmin fi Virhe tallennettaessa!
filtered by account emailadmin fi Käyttäjätilien mukaan
filtered by group emailadmin fi Ryhmän mukaan
forward also to emailadmin fi Välitä osoitteeseen
forward email's to emailadmin fi Välitä osoitteeseen
forward only emailadmin fi Ainoastaan edelleenlähetys
global options emailadmin fi Yleiset asetukset
if using ssl or tls, you must have the php openssl extension loaded. emailadmin fi Jos SSL tai TLS on käytössä, PHP openssl lisäosa pitää olla ladattuna.
imap admin password admin fi IMAP admin salasana
imap admin user admin fi IMAP admin käyttäjätunnus
imap c-client version < 2001 emailadmin fi IMAP C-Client versio < 2001
imap server emailadmin fi IMAP -palvelin
imap server closed the connection. emailadmin fi IMAP palvelin katkaisi yhteyden.
imap server closed the connection. server responded: %s emailadmin fi IMAP palvelin katkaisi yhteyden. %s
imap server hostname or ip address emailadmin fi IMAP -palvelimen nimi tai IP-osoite
imap server logintyp emailadmin fi IMAP -palvelimen käyttäjätunnistus
imap server name emailadmin fi IMAP -palvelimen nimi
imap server port emailadmin fi IMAP -palvelimen portti
imap/pop3 server name emailadmin fi IMAP / POP3 -palvelimen nimi
in mbyte emailadmin fi Megatavua
inactive emailadmin fi Ei käytössä
ldap basedn emailadmin fi LDAP basedn
ldap server emailadmin fi LDAP -palvelin
ldap server accounts dn emailadmin fi LDAP -tunnusten DN
ldap server admin dn emailadmin fi LDAP -ylläpidon DN
ldap server admin password emailadmin fi LDAP -hallinnan salasana
ldap server hostname or ip address emailadmin fi LDAP -palvelimen nimi tai IP-osoite
ldap settings emailadmin fi LDAP -asetukset
leave empty for no quota emailadmin fi Jätä tyhjäksi, jos ei rajoiteta
mail settings admin fi Sähköpostin asetukset
manage stationery templates emailadmin fi Hallitse sähköpostin taustakuvamallipohjia
mb used emailadmin fi MB käytetty
name of organisation emailadmin fi Organisaation nimi
no alternate email address emailadmin fi Ei vaihtoehtoista osoitetta
no encryption emailadmin fi Ei suojausta
no forwarding email address emailadmin fi Välityksen sähköpostiosoitetta ei löytynyt
no message returned. emailadmin fi Viestiä ei palautettu
no supported imap authentication method could be found. emailadmin fi Tuettua IMAP tunnistustapaa ei löydetty.
order emailadmin fi Järjestys
organisation emailadmin fi Organisaatio
plesk can't rename users --> request ignored emailadmin fi Plesk ei voi nimetä käyttäjiä --> pyyntö hylätty
plesk imap server (courier) emailadmin fi Plesk IMAP palvelin (Courier)
plesk mail script '%1' not found !!! emailadmin fi Plesk sähköpostiskriptiä '%1' ei löydy !!!
plesk requires passwords to have at least 5 characters and not contain the account-name --> password not set!!! emailadmin fi Plesk:n salasanassa pitää olla vähintään 5 merkkiä, eikä se saa olla käyttäjätilin nimi --> salasanaa EI ole asetettu !!!
plesk smtp-server (qmail) emailadmin fi Plesk SMTP-palvelin (Qmail)
pop3 server hostname or ip address emailadmin fi POP3 -palvelimen nimi tai IP-osoite
pop3 server port emailadmin fi POP3 -palvelimen portti
port emailadmin fi Portti
postfix with ldap emailadmin fi Postfix ja LDAP
profile access rights emailadmin fi Profiilin käyttöoikeudet
profile is active emailadmin fi Profiili on aktiivinen
profile list emailadmin fi Profiileiluettelo
profile name emailadmin fi Profiilin nimi
qmaildotmode emailadmin fi qmaildotmode
quota settings emailadmin fi Tallennuskiintiön asetukset
quota size in mbyte emailadmin fi Rajoituksen koko Mb:nä
remove emailadmin fi Poista
reset filter emailadmin fi Poista suodatin
select type of imap server emailadmin fi Valitse IMAP -palvelimen tyyppi
select type of imap/pop3 server emailadmin fi Valitse IMAP / POP3 -palvelimen tyyppi
select type of smtp server emailadmin fi Valitse SMTP -palvelimen tyyppi
send using this email-address emailadmin fi Lähetä käyttäen tätä sähköpostiosoitetta
server settings emailadmin fi Palvelimen asetukset
sieve server hostname or ip address emailadmin fi Sieve -palvelimen nimi tai IP-osoite
sieve server port emailadmin fi Sieve -palvelimen portti
sieve settings emailadmin fi Sieven asetukset
smtp authentication emailadmin fi SMTP -tunnistus
smtp options emailadmin fi SMTP -asetukset
smtp server name emailadmin fi SMTP -palvelimen nimi
smtp settings emailadmin fi SMTP -asetukset
smtp-server hostname or ip address emailadmin fi SMTP -palvelimen nimi tai IP-osoite
smtp-server port emailadmin fi SMTP -palvelimen portti
standard emailadmin fi Vakio
standard imap server emailadmin fi Vakio IMAP -palvelin
standard pop3 server emailadmin fi Vakio POP3 -palvelin
standard smtp-server emailadmin fi Vakio SMTP -palvelin
starts with emailadmin fi Alkaa:
stationery emailadmin fi Sähköpostin taustakuvamallipohjat
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin fi IMAP palvelimelta ei löydy tukea valitulle tunnistusmuodolle, ota yhteyttä järjestelmän pääkäyttäjään.
this php has no imap support compiled in!! emailadmin fi Tämä PHP ei sisällä IMAP tukea!!
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin fi Käyttääksesi TLS yhteyttä, sinulla pitää olla käytössä PHP 5.1.0 tai uudempi versio.
unexpected response from server to authenticate command. emailadmin fi Odottamaton vastaus palvelimen AUTHENTICATE komennolta.
unexpected response from server to digest-md5 response. emailadmin fi Odottamaton vastaus palvelimen Digest-MD5 vastauksesta.
unexpected response from server to login command. emailadmin fi Odottamaton vastaus palvelimen LOGIN komennolta.
unknown imap response from the server. server responded: %s emailadmin fi Tuntematon IMAP vastaus palvelimelta. Palvelin vastasi: %s
unsupported action '%1' !!! emailadmin fi Toiminto, jota ei tueta '%1' !!!
update current email address: emailadmin fi Päivitä nykyinen sähköpostiosoite:
use ldap defaults emailadmin fi Käytä LDAP -oletuksia
use predefined username and password defined below emailadmin fi Käytä esimääriteltyä käyttäjänimeä ja salasanaa
use smtp auth emailadmin fi Käytä SMTP -käyttäjätunnistusta
use tls authentication emailadmin fi Käytä TLS -käyttäjätunnistusta
use tls encryption emailadmin fi Käytä TLS -salausta
use users email-address (as seen in useraccount) emailadmin fi Käytä käyttäjän sähköpostiosoitetta
user can edit forwarding address emailadmin fi Käyttäjä voi muokata välitys osoitetta
userid@domain eg. u1234@domain emailadmin fi käyttäjätunnus@verkkotunnus
username (standard) emailadmin fi Käyttäjätunnus (standardi)
username/password defined by admin emailadmin fi Ylläpidon määrittelemä käyttäjätunnus/salasana
username@domainname (virtual mail manager) emailadmin fi käyttäjätunnus@verkkotunnus (Virtual MAIL ManaGeR)
users can define their own emailaccounts emailadmin fi Käyttäjät voivat määritellä omia sähköpostitilejä
users can define their own identities emailadmin fi Käyttäjät voivat määritellä omia identiteettejä
users can define their own signatures emailadmin fi Käyttäjät voivat määritellä omia allekirjoituksia
users can utilize these stationery templates emailadmin fi Käyttäjät voivat määritellä omia sähköpostin taustakuvamallipohjia
virtual mail manager emailadmin fi Virtual MAIL ManaGeR
yes, use credentials below only for alarms and notifications, otherwise use credentials of current user emailadmin fi Kyllä, Käytä annettua salasanaa vain hälytyksiin ja huomautusviesteihin, muulloin käyttäjän tunnuksia
yes, use credentials of current user or if given credentials below emailadmin fi Kyllä, käyttäjän tunnukset, tai mahdolliset allaolevat tunnukset
you have received a new message on the emailadmin fi Sinulle on uusi viesti
your name emailadmin fi Nimesi

157
emailadmin/lang/egw_fr.lang Normal file
View File

@ -0,0 +1,157 @@
%1 entries deleted. emailadmin fr %1 éléments supprimés.
account '%1' not found !!! emailadmin fr Le compte %1 n'a pas été trouvé!!!
active templates emailadmin fr Modèles actifs
add new email address: emailadmin fr Ajouter une nouvelle adresse email:
add profile emailadmin fr Ajouter un profil
admin dn emailadmin fr DN administrateur
admin password emailadmin fr Mot de passe administrateur
admin username emailadmin fr Nom d'utilisateur de l'administrateur
advanced options emailadmin fr Options avancées
alternate email address emailadmin fr Adresse email alternative
any application emailadmin fr Toutes les applications
any group emailadmin fr Tous les groupes
any user emailadmin fr Tous les utilisateurs
back to admin/grouplist emailadmin fr Retour à l'admin / liste des groupes
back to admin/userlist emailadmin fr Retour à l'admin / liste des utilisateurs
bad login name or password. emailadmin fr ID login ou mot de passe erroné
bad or malformed request. server responded: %s emailadmin fr Requête invalide ou erronnée. Réponse serveur: %s
bad request: %s emailadmin fr Requête invalide: %s
can be used by application emailadmin fr Peut être utilisée par application
can be used by group emailadmin fr Peut être utilisée par un groupe
can be used by user emailadmin fr Peut être utilisée par un utilisateur
connection dropped by imap server. emailadmin fr Connexion interrompue par le serveur IMAP.
continue emailadmin fr Continuer
could not complete request. reason given: %s emailadmin fr Impossible d'effectuer la requête. Raison invoquée: %s
could not open secure connection to the imap server. %s : %s. emailadmin fr Impossible d'ouvrir la connexion sécurisée avec le serveur IMAP. %s: %s
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin fr CRAM-MD5 ou DIGEST-MD5 requiert l'installation du progiciel Auth_SASL
cyrus imap server emailadmin fr Serveur Cyrus IMAP
cyrus imap server administration emailadmin fr Administration du serveur Cyrus IMAP
default emailadmin fr défaut
deliver extern emailadmin fr Relais de messagerie
do not validate certificate emailadmin fr ne pas valider le certificat
do you really want to delete this profile emailadmin fr Voulez-vous vraiment supprimer ce profil ?
do you really want to reset the filter for the profile listing emailadmin fr Voulez-vous vraiment réinitialiser le filtre pour le listage des profils ?
domainname emailadmin fr Nom de domaine
edit email settings emailadmin fr Modifier les paramètres de messagerie
email account active emailadmin fr Compte de messagerie actif
email address emailadmin fr Adresse de messagerie
email settings common fr Paramètres de messagerie
emailadmin emailadmin fr Administration de la messagerie
emailadmin: group assigned profile common fr eMailAdmin : profil assigné par groupe
emailadmin: user assigned profile common fr eMailAdmin : profil assigné par utilisateur
enable cyrus imap server administration emailadmin fr Activer la gestion du serveur Cyrus IMAP
enable sieve emailadmin fr Activer Sieve
encrypted connection emailadmin fr connexion chiffrée
encryption settings emailadmin fr Paramètres de chiffrement
enter your default mail domain (from: user@domain) emailadmin fr Introduisez votre domaine par défaut (utilisateur@domaine.com)
entry saved emailadmin fr Entrée enregistrée
error connecting to imap server. %s : %s. emailadmin fr Erreur de connexion avec le serveur IMAP. %s: %s.
error connecting to imap server: [%s] %s. emailadmin fr Erreur de connexion avec le serveur IMAP. [%s] %s.
error deleting entry! emailadmin fr Erreur à la suppression de l'entrée !
error saving the entry!!! emailadmin fr Erreur à l'enregistrement de l'entrée !
filtered by account emailadmin fr Filtrage par compte
filtered by group emailadmin fr Filtrage par groupe
forward also to emailadmin fr Transférer aussi à
forward email's to emailadmin fr Transférer les emails à
forward only emailadmin fr Seulement transférer
global options emailadmin fr Options globales
if using ssl or tls, you must have the php openssl extension loaded. emailadmin fr Si vous utilisez SSl ou TLS, vous devez avoir chargé l'extension PHP openssl
if you specify port 5190 as sieve server port, you enforce ssl for sieve (server must support that) emailadmin fr Si vous spécifiez le port 5190 comme port du serveur SIEVE, vous forcer le SSL pour SIEVE (et le serveur doit le supporter...)
imap admin password admin fr Mot de passe de l'administrateur IMAP
imap admin user admin fr ID administrateur IMAP
imap c-client version < 2001 emailadmin fr IMAP C-Client Version < 2001
imap server emailadmin fr Serveur IMAP
imap server closed the connection. emailadmin fr Le serveur IMAP a interrompu la connexion.
imap server closed the connection. server responded: %s emailadmin fr Le serveur IMAP a interrompu la connexion. Réponse du serveur: %s.
imap server hostname or ip address emailadmin fr Nom du serveur IMAP ou adresse IP
imap server logintyp emailadmin fr Type d'authentification IMAP
imap server name emailadmin fr Nom du serveur IMAP
imap server port emailadmin fr Port IMAP
imap/pop3 server name emailadmin fr Nom du serveur IMAP/POP3
in mbyte emailadmin fr en Mo
inactive emailadmin fr Inactif
ldap basedn emailadmin fr LDAP DN de base
ldap server emailadmin fr LDAP Serveur
ldap server accounts dn emailadmin fr LDAP DN contenant les comptes utilisateurs
ldap server admin dn emailadmin fr LDAP DN administrateur
ldap server admin password emailadmin fr LDAP Mot de passe administateur
ldap server hostname or ip address emailadmin fr LDAP Nom du serveur ou adresse IP
ldap settings emailadmin fr LDAP Paramètres
leave empty for no quota emailadmin fr Laisser vide pour ne pas avoir de quota
mail settings admin fr Paramètres de messagerie
mb used emailadmin fr Mo utilisés
name of organisation emailadmin fr Nom de l'organisation
no alternate email address emailadmin fr Pas d'adresse email alternative
no encryption emailadmin fr Pas de chiffrement
no forwarding email address emailadmin fr Pas d'adresse email de transfert
no message returned. emailadmin fr Aucun message n'est retourné.
no supported imap authentication method could be found. emailadmin fr Il n'a été trouvé aucune méthode d'authentification IMAP supportée
order emailadmin fr Ordre
organisation emailadmin fr Organisation
plesk can't rename users --> request ignored emailadmin fr Plesk ne peut pas renommer les utilisateurs --> requête ignorée
plesk imap server (courier) emailadmin fr Serveur IMAP Plesk (Courier)
plesk mail script '%1' not found !!! emailadmin fr Le script email Plesk '%1' introuvable!!!
plesk requires passwords to have at least 5 characters and not contain the account-name --> password not set!!! emailadmin fr Plesk requiert des mots de passe d'au moins 5 caractères qui ne comprennent pas le nom du compte --> le mot de passe n'est PAS fixé!!!
plesk smtp-server (qmail) emailadmin fr Serveur SMTP Plesk (Qmail)
pop3 server hostname or ip address emailadmin fr Nom d'hôte ou adresse IP du serveur POP3
pop3 server port emailadmin fr Port du serveur POP3
port emailadmin fr port
postfix with ldap emailadmin fr Postfix avec support LDAP
profile access rights emailadmin fr Droits d'accès du profil
profile is active emailadmin fr Le profil est actif
profile list emailadmin fr Liste des profils
profile name emailadmin fr Nom de profil
qmaildotmode emailadmin fr qmaildotmode
quota settings emailadmin fr Paramètres de quota
quota size in mbyte emailadmin fr Taille des quota en Mo
remove emailadmin fr Supprimer
reset filter emailadmin fr Réinitialiser le filtre
select type of imap server emailadmin fr Sélectionner le type de serveur IMAP
select type of imap/pop3 server emailadmin fr Sélectionner le type de serveur IMAP/POP3
select type of smtp server emailadmin fr Sélectionner le type de serveur SMTP
send using this email-address emailadmin fr Envoyer en utilisant cette adresse email
server settings emailadmin fr Configuration du serveur
sieve server hostname or ip address emailadmin fr Nom ou adresse IP du serveur Sieve
sieve server port emailadmin fr Port Sieve
sieve settings emailadmin fr Paramètres Sieve
smtp authentication emailadmin fr Authentication SMTP
smtp options emailadmin fr Options SMTP
smtp server name emailadmin fr Nom du serveur SMTP
smtp settings emailadmin fr Paramètres SMTP
smtp-server hostname or ip address emailadmin fr Nom ou adresse IP du serveur SMTP
smtp-server port emailadmin fr Port SMTP
standard emailadmin fr Standard
standard imap server emailadmin fr Serveur IMAP standard
standard pop3 server emailadmin fr Serveur POP3 standard
standard smtp-server emailadmin fr Serveur SMTP standard
starts with emailadmin fr commence par
stationery emailadmin fr Entrepôt
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin fr Le serveur IMAP ne supporterait pas la méthode d'authentication sélectionnée. Veuillez contacter votre administrateur système.
this php has no imap support compiled in!! emailadmin fr Ce PHP n'est pas compilé avec le support de l'IMAP !!
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin fr Pour utiliser une connexion TLS, vous devez utiliser une version PHP 5.1.0 ou supérieure.
unexpected response from server to authenticate command. emailadmin fr Réponse inattendue du serveur à la commande AUTHENTICATE.
unexpected response from server to digest-md5 response. emailadmin fr Réponse inattendue du serveur à la réponse Digest-MD5.
unexpected response from server to login command. emailadmin fr Réponse inattendue du serveur à la commande LOGIN.
unknown imap response from the server. server responded: %s emailadmin fr Réponse IMAP inconnue du serveur. Le serveur a répondu: %s
unsupported action '%1' !!! emailadmin fr Action '%1' non supportée !
update current email address: emailadmin fr Mettre à jour l'adresse email actuelle :
use ldap defaults emailadmin fr Utiliser les paramètres LDAP par défaut
use predefined username and password defined below emailadmin fr Utiliser les login/mots de passe pré-définis ci-dessous
use smtp auth emailadmin fr Utiliser l'authentification SMTP
use tls authentication emailadmin fr Utiliser l'authentification TLS
use tls encryption emailadmin fr Utiliser le cryptage TLS
use users email-address (as seen in useraccount) emailadmin fr Utiliser les adresses email des utilisateurs, tel que défini dans leur profil de compte
user can edit forwarding address emailadmin fr L'utilisateur peut modifier l'adresse de transfert.
userid@domain eg. u1234@domain emailadmin fr UserId@domain ie. u1234@domain
username (standard) emailadmin fr nom de l'utilisateur (standard)
username/password defined by admin emailadmin fr Login / mot de passe définis par l'administrateur
username@domainname (virtual mail manager) emailadmin fr utilisateur@domaine (Virtual MAIL ManaGeR)
users can define their own emailaccounts emailadmin fr Les utilisateurs peuvent définir leurs propres comptes de messagerie
users can define their own identities emailadmin fr Les utilisateurs peuvent définir leurs propres identités
users can define their own signatures emailadmin fr les utilisateurs peuvent définir leurs propres signatures
vacation messages with start- and end-date require an admin account to be set emailadmin fr Les messages d'absence avec date de début et de fin doivent être définis par un administrateur !
virtual mail manager emailadmin fr Virtual MAIL ManaGeR
yes, use credentials below only for alarms and notifications, otherwise use credentials of current user emailadmin fr Oui, utiliser les infos ci-dessous seulement pour les alarmes et les notifications, autrement utiliser les informations du compte utilisateur actif.
yes, use credentials of current user or if given credentials below emailadmin fr Oui, utiliser les informations du compte utilisateur actif ou bien de ces informations ci-dessous si elles sont renseignées
you have received a new message on the emailadmin fr Vous avez reçu un nouveau message sur le
your name emailadmin fr Votre nom

73
emailadmin/lang/egw_hr.lang Executable file
View File

@ -0,0 +1,73 @@
add profile emailadmin hr Add Profile
admin dn emailadmin hr admin dn
admin password emailadmin hr admin password
admin username emailadmin hr admin username
advanced options emailadmin hr advanced options
alternate email address emailadmin hr alternate email address
continue emailadmin hr Continue
cyrus imap server emailadmin hr Cyrus IMAP Server
cyrus imap server administration emailadmin hr Cyrus IMAP server administration
default emailadmin hr default
deliver extern emailadmin hr deliver extern
do you really want to delete this profile emailadmin hr Do you really want to delete this Profile
domainname emailadmin hr domainname
edit email settings emailadmin hr edit email settings
email account active emailadmin hr email account active
email address emailadmin hr email address
enable cyrus imap server administration emailadmin hr enable Cyrus IMAP server administration
enable sieve emailadmin hr enable Sieve
enter your default mail domain (from: user@domain) emailadmin hr Enter your default mail domain (from: user@domain)
entry saved emailadmin hr Entry saved
forward also to emailadmin hr forward also to
forward email's to emailadmin hr forward email's to
forward only emailadmin hr forward only
imap admin password admin hr IMAP admin password
imap admin user admin hr IMAP admin user
imap server emailadmin hr IMAP Poslužitelj
imap server hostname or ip address emailadmin hr IMAP server hostname or ip address
imap server logintyp emailadmin hr IMAP server login type
imap server port emailadmin hr IMAP server port
imap/pop3 server name emailadmin hr IMAP/POP3 server name
in mbyte emailadmin hr in MByte
ldap basedn emailadmin hr LDAP basedn
ldap server emailadmin hr LDAP server
ldap server accounts dn emailadmin hr LDAP server accounts DN
ldap server admin dn emailadmin hr LDAP server admin DN
ldap server admin password emailadmin hr LDAP server admin password
ldap server hostname or ip address emailadmin hr LDAP server hostname or ip address
ldap settings emailadmin hr LDAP settings
leave empty for no quota emailadmin hr leave empty for no quota
mail settings admin hr Mail settings
name of organisation emailadmin hr Name of organization
no alternate email address emailadmin hr no alternate email address
no forwarding email address emailadmin hr no forwarding email address
order emailadmin hr Naredba
organisation emailadmin hr organizacija
pop3 server hostname or ip address emailadmin hr POP3 server hostname or ip address
pop3 server port emailadmin hr POP3 server port
postfix with ldap emailadmin hr Postfix with LDAP
profile list emailadmin hr Profile List
profile name emailadmin hr Profile Name
qmaildotmode emailadmin hr qmaildotmode
quota settings emailadmin hr quota settings
remove emailadmin hr remove
select type of imap/pop3 server emailadmin hr Select type of IMAP/POP3 server
select type of smtp server emailadmin hr Select type of SMTP Server
sieve server hostname or ip address emailadmin hr Sieve server hostname or ip address
sieve server port emailadmin hr Sieve server port
sieve settings emailadmin hr Sieve settings
smtp server name emailadmin hr SMTP server name
smtp settings emailadmin hr Postavke SMTP
smtp-server hostname or ip address emailadmin hr SMTP server hostname or IP address
smtp-server port emailadmin hr SMTP server port
standard emailadmin hr Standard
standard imap server emailadmin hr Standard IMAP server
standard pop3 server emailadmin hr Standard POP3 server
standard smtp-server emailadmin hr Standard SMTP server
this php has no imap support compiled in!! emailadmin hr Ovaj PHP nema ugrađenu podršku za IMAP!!
use ldap defaults emailadmin hr use LDAP defaults
use smtp auth emailadmin hr Use SMTP auth
use tls authentication emailadmin hr Use TLS authentication
use tls encryption emailadmin hr Use TLS encryption
users can define their own emailaccounts emailadmin hr Users can define their own email accounts
virtual mail manager emailadmin hr Virtual MAIL ManaGeR

149
emailadmin/lang/egw_hu.lang Normal file
View File

@ -0,0 +1,149 @@
account '%1' not found !!! emailadmin hu '%1' felhasználói azonosító nem található!
active templates emailadmin hu Aktív vázlatok
add new email address: emailadmin hu Új email cím hozzáadása:
add profile emailadmin hu Profil hozzáadása
admin dn emailadmin hu Admin dn
admin password emailadmin hu adminisztrátor jelszava
admin username emailadmin hu adminisztrátor neve
advanced options emailadmin hu haladó beállítások
alternate email address emailadmin hu alternatív emailcím
any application emailadmin hu Bármelyik modul
any group emailadmin hu Bármelyik csoport
any user emailadmin hu bármely felhasználó
back to admin/grouplist emailadmin hu Vissza az csoportok adminisztráláshoz
back to admin/userlist emailadmin hu Vissza a felhasználók adminisztráláshoz
bad login name or password. emailadmin hu Hibás belépési név vagy jelszó.
bad or malformed request. server responded: %s emailadmin hu Hibás kérés. Szerver válasza: %s
bad request: %s emailadmin hu Hibás kérés: %s
can be used by application emailadmin hu Ez a modul használhatja
can be used by group emailadmin hu Ez a csoport használhatja
can be used by user emailadmin hu a felhasználó alkalmazhatja
connection dropped by imap server. emailadmin hu A kapcsolatot az IMAP szerver eldobta.
continue emailadmin hu Folytat
could not complete request. reason given: %s emailadmin hu Kérést nem lehet teljesíteni. Az ok: %s
could not open secure connection to the imap server. %s : %s. emailadmin hu Nem létesíthető titkos csatorna az IMAP szerverhez. %s : %s
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin hu CRAM-MD5 vagy DIGEST-MD5 használatához az Auth_SASL csomagot telepíteni kell.
cyrus imap server emailadmin hu Cyrus IMAP-kiszolgáló
cyrus imap server administration emailadmin hu Cyrus IMAP-kiszolgáló adminisztrációja
default emailadmin hu Alapértelmezett
deliver extern emailadmin hu külső kézbesítés
do not validate certificate emailadmin hu ne ellenőrizze a tanúsítványt
do you really want to delete this profile emailadmin hu Valóban törölni kívánja ezt a profilt
do you really want to reset the filter for the profile listing emailadmin hu Valóban törölni szeretnéd a profillista szűrőt?
domainname emailadmin hu tartománynév
edit email settings emailadmin hu email beállítások szerkesztése
email account active emailadmin hu email azonosító aktív
email address emailadmin hu email cím
email settings common hu Email beállítások
emailadmin emailadmin hu EmailAdmin
emailadmin: group assigned profile common hu eMailAdmin: csoport a profilhoz hozzárendelve
emailadmin: user assigned profile common hu eMailAdmin: felhasználó a profilhoz hozzárendelve
enable cyrus imap server administration emailadmin hu Cyrus IMAP-kiszolgáló adminisztrációjának engedélyezése
enable sieve emailadmin hu Sieve engedélyezése
encrypted connection emailadmin hu titkosított kapcsolat
encryption settings emailadmin hu Titkosítás beállításai
enter your default mail domain (from: user@domain) emailadmin hu Adja meg az alapértelmezett levelezési tartományt (a felhasználó@tartomány-ból)
entry saved emailadmin hu Bejegyzés elmentve
error connecting to imap server. %s : %s. emailadmin hu Hiba történt az IMAP szerverhez csatlakozás közben. %s : %s
error connecting to imap server: [%s] %s. emailadmin hu Hiba történt az IMAP szerverhez csatlakozás közben. [%s ]: %s
error saving the entry!!! emailadmin hu Bejegyzés mentése közben hiba történt!!!
filtered by account emailadmin hu Fiók szerint szűrve
filtered by group emailadmin hu Csoport szerint szűrve
forward also to emailadmin hu továbbítsd ide is
forward email's to emailadmin hu email továbbítása ide
forward only emailadmin hu továbbítás csak ide
global options emailadmin hu Globális opciók
if using ssl or tls, you must have the php openssl extension loaded. emailadmin hu SSL vagy TLS használatához a PHP openssl kiterjesztését telepíteni kell.
imap admin password admin hu IMAP adminisztrátor jelszava
imap admin user admin hu IMAP adminisztrátor felhasználóneve
imap c-client version < 2001 emailadmin hu IMAP C-Client verzió < 2001
imap server emailadmin hu IMAP szerver
imap server closed the connection. emailadmin hu Az IMAP szerver lezárta a kapcsolatot.
imap server closed the connection. server responded: %s emailadmin hu Az IMAP szerver lezárta a kapcsolatot: %s
imap server hostname or ip address emailadmin hu IMAP szerver hosztneve vagy IP címe
imap server logintyp emailadmin hu IMAP szerver bejelentkezési típusa
imap server name emailadmin hu IMAP szerver neve
imap server port emailadmin hu IMAP szerver portja
imap/pop3 server name emailadmin hu IMAP/POP3 szerver neve
in mbyte emailadmin hu MBájtban
inactive emailadmin hu inaktív
ldap basedn emailadmin hu LDAP basedn
ldap server emailadmin hu LDAP szerver
ldap server accounts dn emailadmin hu LDAP szerver accounts DN
ldap server admin dn emailadmin hu LDAP szerver admin DN
ldap server admin password emailadmin hu LDAP szerver adminisztrátorának jelszava
ldap server hostname or ip address emailadmin hu LDAP szerver hosztneve vagy IP címe
ldap settings emailadmin hu LDAP beállítások
leave empty for no quota emailadmin hu hagyja üresen a kvóta figyelmen kívül hagyásához
mail settings admin hu Levelezési beállítások
manage stationery templates emailadmin hu Irodaszer minták kezelése
name of organisation emailadmin hu Szervezet neve
no alternate email address emailadmin hu nincs alternatív email cím
no encryption emailadmin hu titkosítás nélkül
no forwarding email address emailadmin hu nincs továbbküldési email cím
no message returned. emailadmin hu Nincs visszaadott üzenet.
no supported imap authentication method could be found. emailadmin hu Nem található támogatott IMAP hitelesítés.
order emailadmin hu Rendezés
organisation emailadmin hu Szervezet
plesk can't rename users --> request ignored emailadmin hu A Plesk nem tudja átnevezni a felhasználókat -> kérés figyelmen kívül hagyva
plesk imap server (courier) emailadmin hu Plesk IMAP Szerver (Courier)
plesk mail script '%1' not found !!! emailadmin hu Plesk levél szkript '%1' nem található!!!
plesk requires passwords to have at least 5 characters and not contain the account-name --> password not set!!! emailadmin hu Plesk megköveteli, hogy a jelszó legalább 5 karakter legyen és ne tartalmazza a felhasználói nevet --> jelszó beállítása NEM történt meg!!!
plesk smtp-server (qmail) emailadmin hu Plesk SMTP-Szerver (Qmail)
pop3 server hostname or ip address emailadmin hu POP3 szerver hosztneve vagy IP címe
pop3 server port emailadmin hu POP3 szerver portja
port emailadmin hu portcím
postfix with ldap emailadmin hu Postfix LDAP-vel
profile access rights emailadmin hu profil elérési jogosultságok
profile is active emailadmin hu a profil inaktív
profile list emailadmin hu Profil lista
profile name emailadmin hu Profilnév
qmaildotmode emailadmin hu qmaildotmode
quota settings emailadmin hu kvóta beállításai
quota size in mbyte emailadmin hu kvóta Mbájtokban
remove emailadmin hu eltávolítás
reset filter emailadmin hu szűrö törlése
select type of imap server emailadmin hu IMAP szerver típusának kiválasztása
select type of imap/pop3 server emailadmin hu Válassza ki az IMAP/POP3 szerver típusát
select type of smtp server emailadmin hu Válassza ki az SMTP szerver típusát
send using this email-address emailadmin hu Küldés erről az e-mail címről
server settings emailadmin hu Szerver beállítások
sieve server hostname or ip address emailadmin hu Sieve szerver hosztneve vagy IP címe
sieve server port emailadmin hu Sieve szerver port
sieve settings emailadmin hu SIEVE beállítások
smtp authentication emailadmin hu SMTP azonosítás
smtp options emailadmin hu SMTP opciók
smtp server name emailadmin hu SMTP szerver neve
smtp settings emailadmin hu SMTP beállítások
smtp-server hostname or ip address emailadmin hu SMTP szerver hosztneve vagy IP címe
smtp-server port emailadmin hu SMTP szerver portja
standard emailadmin hu Szabványos
standard imap server emailadmin hu Szabványos IMAP-kiszolgáló
standard pop3 server emailadmin hu Szabványos POP3-kiszolgáló
standard smtp-server emailadmin hu Szabványos SMTP-kiszolgáló
stationery emailadmin hu Irodaszer
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin hu Az IMAP szerver úgy tűnik nem támogatja a kiválasztott hitelesítést. Lépjen kapcsolatba az adminisztrátorral.
this php has no imap support compiled in!! emailadmin hu A használt PHP verzió nem tartalmaz IMAP támogatást! (telepíteni kell)
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin hu TLS kapcsolat használatához legalább PHP 5.1.0-val kell rendelkeznie.
unexpected response from server to authenticate command. emailadmin hu Váratlan válasz a szervertől az AUTHENTICATE parancsra.
unexpected response from server to digest-md5 response. emailadmin hu Váratlan válasz a szervertől a Digest-MD5 parancsra.
unexpected response from server to login command. emailadmin hu Váratlan válasz a szervertől a LOGIN parancsra.
unknown imap response from the server. server responded: %s emailadmin hu Váratlan válasz a szervertől: %s
unsupported action '%1' !!! emailadmin hu Nem támogatott művelet '%1' !!!
update current email address: emailadmin hu Jelenlegi email cím frissítése:
use ldap defaults emailadmin hu használja az LDAP alapbeállításokat
use predefined username and password defined below emailadmin hu Használd a lent megadott felhasználónevet és jelszót
use smtp auth emailadmin hu SMTP hitelesítés használata
use tls authentication emailadmin hu TLS hitelesítés használata
use tls encryption emailadmin hu TLS kódolás használata
user can edit forwarding address emailadmin hu Felhasználó szerkesztheti a továbbításkor a címeket
username (standard) emailadmin hu felhasználó név (standard)
username/password defined by admin emailadmin hu Az adminisztrátok által meghatározott felhasználó és jelszó
username@domainname (virtual mail manager) emailadmin hu felhasználónév@tartománynév (Virtual MAIL ManaGeR)
users can define their own emailaccounts emailadmin hu A felhasználók saját maguk állíthatják be az email postafiókjaikat
users can define their own identities emailadmin hu A felhasználók beállíthatják a saját azonosítójukat
users can define their own signatures emailadmin hu A felhasználók beállíthatják a saját aláírásukat
users can utilize these stationery templates emailadmin hu A felhasználók alkalmazhatják az irodaszer mintákat
virtual mail manager emailadmin hu Virtuális MAIL ManaGeR
you have received a new message on the emailadmin hu Új üzenet érkezett a
your name emailadmin hu Az ön neve

View File

@ -0,0 +1,93 @@
%1 entries deleted. emailadmin id %1 entri dihapus.
account '%1' not found !!! emailadmin id Akoun '%1' tidak ditemukan !!!
active templates emailadmin id Templat yang aktif
add new email address: emailadmin id Tambah alamat email baru:
add profile emailadmin id Tambah Profil
admin dn emailadmin id Admin dn
admin password emailadmin id Password Admin
admin username emailadmin id Nama Admin
advanced options emailadmin id Opsi Canggih
alternate email address emailadmin id Alamat email pengganti
any application emailadmin id Semua aplikasi
any group emailadmin id Semua kelompok
any user emailadmin id semua pengguna
back to admin/grouplist emailadmin id Kembali ke Admin/Daftar Kelompok
back to admin/userlist emailadmin id Kembali ke Admin/Daftar pengguna
bad login name or password. emailadmin id Nama atau password tidak benar.
continue emailadmin id Lanjutkan
could not open secure connection to the imap server. %s : %s. emailadmin id Could not open secure connection to the IMAP server. %s : %s.
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin id CRAM-MD5 or DIGEST-MD5 requires the Auth_SASL package to be installed.
cyrus imap server emailadmin id Server Cyrus IMAP
cyrus imap server administration emailadmin id Administrasi server Cyrus IMAP
default emailadmin id bawaan
deliver extern emailadmin id pengiriman eksternal
domainname emailadmin id Nama Domain
edit email settings emailadmin id Edit pengaturan email
email account active emailadmin id Akoun Email aktif
email address emailadmin id Alamat Email
email settings common id Pengaturan Email
emailadmin emailadmin id AdminEMail
emailadmin: group assigned profile common id AdminEMail: Profil menurut kelompok
emailadmin: user assigned profile common id AdminEMail: Profil menurut pengguna
enable sieve emailadmin id Bolehkan Sieve
encrypted connection emailadmin id koneksi ter-enkripsi
encryption settings emailadmin id Pengaturan Enkripsi
enter your default mail domain (from: user@domain) emailadmin id Berikan nama domain email anda (dari: pengguna@domain)
entry saved emailadmin id Entri disimpan
error saving the entry!!! emailadmin id Error saving the entry!!!
filtered by account emailadmin id saringan menurut Akoun
filtered by group emailadmin id saringan menurut Kelompok
forward only emailadmin id Hanya Forward
global options emailadmin id Opsi Global
imap admin password admin id password admin IMAP
imap admin user admin id admin IMAP
imap c-client version < 2001 emailadmin id IMAP C-Client Version < 2001
imap server emailadmin id IMAP Server
in mbyte emailadmin id dalam MByte
inactive emailadmin id tidak aktif
ldap basedn emailadmin id LDAP basedn
ldap server emailadmin id LDAP server
ldap settings emailadmin id Pengaturan LDAP
leave empty for no quota emailadmin id kosongkan bila tanpa kuota
mail settings admin id Pengaturan Mail
name of organisation emailadmin id Nama Organisasi
no alternate email address emailadmin id tanpa alamat email pengganti
no encryption emailadmin id tanpa enkripsi
order emailadmin id Urutan
organisation emailadmin id Organisasi
port emailadmin id port
postfix with ldap emailadmin id Postfix with LDAP
profile list emailadmin id Daftar Profil
profile name emailadmin id Nama Profil
qmaildotmode emailadmin id qmaildotmode
quota settings emailadmin id Pengaturan Kuota
quota size in mbyte emailadmin id ukuran kuota dalam MByte
remove emailadmin id Buang
reset filter emailadmin id ulangi penyaringan
select type of imap server emailadmin id Pilih tipe Server IMAP
select type of imap/pop3 server emailadmin id Pilih tipe Server IMAP/POP3
select type of smtp server emailadmin id Pilih tipe Server SMTP
send using this email-address emailadmin id kirim menggunakan alamat eMail ini
server settings emailadmin id Pengaturan Server
sieve server hostname or ip address emailadmin id Sieve server hostname or ip address
sieve server port emailadmin id Sieve server port
sieve settings emailadmin id Pengaturan Sieve
smtp authentication emailadmin id Otentikasi SMTP
smtp options emailadmin id Opsi SMTP
smtp server name emailadmin id Nama server SMTP
smtp settings emailadmin id Pengaturan SMTP
smtp-server hostname or ip address emailadmin id Nama atau alamat IP server SMTP
smtp-server port emailadmin id Port server SMTP
standard emailadmin id Standar
standard imap server emailadmin id Server IMAP Standar
standard pop3 server emailadmin id Server POP3 Standar
standard smtp-server emailadmin id Server SMTP Standar
starts with emailadmin id diawali dengan
stationery emailadmin id Stationery
unexpected response from server to login command. emailadmin id Unexpected response from server to LOGIN command.
update current email address: emailadmin id Memperbarui alamat email saat ini:
username (standard) emailadmin id namapengguna (standar)
username/password defined by admin emailadmin id Namapengguna/Password dibuat oleh admin
username@domainname (virtual mail manager) emailadmin id username@domainname (Virtual MAIL ManaGeR)
virtual mail manager emailadmin id Virtual MAIL ManaGeR
your name emailadmin id Your name

156
emailadmin/lang/egw_it.lang Normal file
View File

@ -0,0 +1,156 @@
%1 entries deleted. emailadmin it %1 inserimenti cancellati
account '%1' not found !!! emailadmin it Account '%1' non trovato !!!
active templates emailadmin it Modelli attivi
add new email address: emailadmin it Aggiungi un nuovo indirizzo di posta elettronica
add profile emailadmin it Aggiungi Profilo
admin dn emailadmin it dn amministratore
admin password emailadmin it password amministratore
admin username emailadmin it username amministratore
advanced options emailadmin it opzioni avanzate
alternate email address emailadmin it indirizzo email alternativo
any application emailadmin it ogni applicazione
any group emailadmin it ogni gruppo
any user emailadmin it Qualsiasi utente
back to admin/grouplist emailadmin it Indietro alla lista Admin / Group
back to admin/userlist emailadmin it Indietro alla lista Admin / User
bad login name or password. emailadmin it Nome utente o password errati.
bad or malformed request. server responded: %s emailadmin it Richiesta errata o mal composta. Il Server ha risposto: %s
bad request: %s emailadmin it Richiesta errata: %s
can be used by application emailadmin it può essere usato da applicazione
can be used by group emailadmin it può essere usato da gruppo
can be used by user emailadmin it può essere usato dall'utente
connection dropped by imap server. emailadmin it Connessione interrotta dal sever IMAP.
continue emailadmin it Continua
could not complete request. reason given: %s emailadmin it Impossibile completare la richiesta. Motivazione data: %s
could not open secure connection to the imap server. %s : %s. emailadmin it Non è possibile aprire una connessione sicura al server IMAP. %s : %s.
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin it CRAM-MD5 o DIGEST-MD5 richiede che il pacchetto Auth_SASL sia installato.
cyrus imap server emailadmin it Server IMAP Cyrus
cyrus imap server administration emailadmin it Amministrazione Server IMAP Cyrus
default emailadmin it predefinito
deliver extern emailadmin it Consegna esterna
do not validate certificate emailadmin it Non convalidare il certificato
do you really want to delete this profile emailadmin it Vuoi davvero cancellare questo profilo?
do you really want to reset the filter for the profile listing emailadmin it Vuoi davvero reimpostare il filtro per l'elenco dei profili?
domainname emailadmin it nome dominio
edit email settings emailadmin it modifica impostazioni email
email account active emailadmin it account email attivo
email address emailadmin it indirizzo email
email settings common it Impostazioni email
emailadmin emailadmin it Gestione Email
emailadmin: group assigned profile common it eMailAdmin: Profilo assegnato al gruppo
emailadmin: user assigned profile common it eMailAdmin: Profilo assegnato all'utente
enable cyrus imap server administration emailadmin it abilita amministrazione Server IMAP Cyrus
enable sieve emailadmin it abilita Sieve
encrypted connection emailadmin it Connessione criptata
encryption settings emailadmin it impostazioni cifratura
enter your default mail domain (from: user@domain) emailadmin it Inserisci il tuo dominio di posta predefinito (da: utente@dominio)
entry saved emailadmin it Inserimento salvato
error connecting to imap server. %s : %s. emailadmin it Errore in connessione al server IMAP. %s : %s.
error connecting to imap server: [%s] %s. emailadmin it Errore in connessione al server IMAP: [%s] %s.
error deleting entry! emailadmin it Errore durante l'eliminazione dell'inserimento!
error saving the entry!!! emailadmin it Errore durante il salvataggio dell'inserimento
filtered by account emailadmin it Filtrati per account
filtered by group emailadmin it Filtrati per gruppo
forward also to emailadmin it Inoltra anche a
forward email's to emailadmin it Inoltra email a
forward only emailadmin it Inoltra solo
global options emailadmin it Opzioni globali
if using ssl or tls, you must have the php openssl extension loaded. emailadmin it Se stai usando SSL oppure TLS, devi aver caricato l'estensione SSL in PHP
imap admin password admin it Password amministratore IMAP
imap admin user admin it User amministratore IMAP
imap c-client version < 2001 emailadmin it Versione C-Cliente < 2001
imap server emailadmin it Server IMAP
imap server closed the connection. emailadmin it Il server IMAP ha chiuso la connessione
imap server closed the connection. server responded: %s emailadmin it Il server IMAP ha chiuso la connessione. Risposta del server: %s
imap server hostname or ip address emailadmin it Nome Host o IP del server IMAP
imap server logintyp emailadmin it Tipo login server IMAP
imap server name emailadmin it Nome del server IMAP
imap server port emailadmin it Porta server IMAP
imap/pop3 server name emailadmin it Nome server IMAP/POP3
in mbyte emailadmin it in MByte
inactive emailadmin it Inattivo
ldap basedn emailadmin it LDAP basedn
ldap server emailadmin it server LDAP
ldap server accounts dn emailadmin it DN account server LDAP
ldap server admin dn emailadmin it DN amministratore server LDAP
ldap server admin password emailadmin it password amministratore server LDAP
ldap server hostname or ip address emailadmin it Nome host o IP server LDAP
ldap settings emailadmin it impostazioni LDAP
leave empty for no quota emailadmin it lascia vuoto per nessuna quota
mail settings admin it Impostazioni Posta
manage stationery templates emailadmin it Amministra i modelli
name of organisation emailadmin it Nome dell'organizzazione
no alternate email address emailadmin it nessun indirizzo email alternativo
no encryption emailadmin it Nessuna cifratura
no forwarding email address emailadmin it nessun indirizzo email di inoltro
no message returned. emailadmin it nessun messaggio ricevuto
no supported imap authentication method could be found. emailadmin it Non è stato trovato alcun metodo di autenticazione supportato da IMAP
order emailadmin it ordine
organisation emailadmin it organizzazione
plesk can't rename users --> request ignored emailadmin it Plesk non può rinominare gli utenti --> richiesta ignorata
plesk imap server (courier) emailadmin it IMAP server Plesk (Courier)
plesk mail script '%1' not found !!! emailadmin it Script Plesk '%1' non trovato
plesk requires passwords to have at least 5 characters and not contain the account-name --> password not set!!! emailadmin it Plesk richiede password con almeno 5 caratteri e che non deve contenere il nome account --> password NON impostata
plesk smtp-server (qmail) emailadmin it Server SMTP Plesk (Qmail)
pop3 server hostname or ip address emailadmin it Nome host o IP server POP3
pop3 server port emailadmin it porta server POP3
port emailadmin it Porta
postfix with ldap emailadmin it Postfix con LDAP
profile access rights emailadmin it diritti di accesso profilo
profile is active emailadmin it Il profilo è attivo
profile list emailadmin it Elenco Profili
profile name emailadmin it Nome Profilo
qmaildotmode emailadmin it qmaildotmode
quota settings emailadmin it impostazioni quota
quota size in mbyte emailadmin it dimensione quota in MByte
remove emailadmin it rimuovi
reset filter emailadmin it Reimposta filtro
select type of imap server emailadmin it Seleziona il tipo di server IMAP
select type of imap/pop3 server emailadmin it Seleziona il tipo si server IMAP/POP3
select type of smtp server emailadmin it Seleziona il tipo di server SMTP
send using this email-address emailadmin it Invia utilizzando questo indirizzo email
server settings emailadmin it impostazioni server
sieve server hostname or ip address emailadmin it Nome host o IP server Sieve
sieve server port emailadmin it porta server Sieve
sieve settings emailadmin it impostazioni SIeve
smtp authentication emailadmin it autenticazione smtp
smtp options emailadmin it opzioni smtp
smtp server name emailadmin it nome server SMTP
smtp settings emailadmin it impostazioni smtp
smtp-server hostname or ip address emailadmin it Nome host o IP server SMTP
smtp-server port emailadmin it porta server SMTP
standard emailadmin it Standard
standard imap server emailadmin it Server IMAP standard
standard pop3 server emailadmin it Server POP3 standard
standard smtp-server emailadmin it Server SMTP standard
starts with emailadmin it Comincia con
stationery emailadmin it Modeillo
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin it Il server IMAP sembra non supportare il metodo di autenticazione scelto. Contatta il tuo amministratore di sistema.
this php has no imap support compiled in!! emailadmin it PHP non è stato compilato con supporto IMAP!
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin it Per utilizzare una connessione TLS devi utilizzare una versione PHP 5.1.0 o superiore
unexpected response from server to authenticate command. emailadmin it Risposta inaspettata dal server al comando AUTHENTICATE
unexpected response from server to digest-md5 response. emailadmin it Risposta inaspettata dal server alla risposta Digest-MD5
unexpected response from server to login command. emailadmin it Risposta inaspettata dal server al comando LOGIN
unknown imap response from the server. server responded: %s emailadmin it Riposta non riconosciuta dal server IMAP %s
unsupported action '%1' !!! emailadmin it Azione non supportata '%1' !!!
update current email address: emailadmin it Aggiorna l'indirizzo email attuale:
use ldap defaults emailadmin it usa predefiniti LDAP
use predefined username and password defined below emailadmin it Utilizza il nome utente e la password definiti qui sotto
use smtp auth emailadmin it usa autenticazione SMTP
use tls authentication emailadmin it usa autenticazione TLS
use tls encryption emailadmin it usa crittografia TLS
use users email-address (as seen in useraccount) emailadmin it Utilizza l'indirizzo email come impostato nell'account utente
user can edit forwarding address emailadmin it l'utente può modificare indirizzo di inoltro
userid@domain eg. u1234@domain emailadmin it UserId@dominio p.es. u1234@dominio
username (standard) emailadmin it Nome utente (standard)
username/password defined by admin emailadmin it Nome utente / password definiti dall'amministratore
username@domainname (virtual mail manager) emailadmin it nomeutente@nome dominio (ManaGeR MAIL Virtuale)
users can define their own emailaccounts emailadmin it Gli utenti possono definire i propri account email
users can define their own identities emailadmin it Gli utenti possono definire le loro identità personali
users can define their own signatures emailadmin it Gli utenti possono definire le loro firme personali
users can utilize these stationery templates emailadmin it Gli utenti possono utilizzare questi modelli
virtual mail manager emailadmin it ManaGeR MAIL Virtuale
yes, use credentials below only for alarms and notifications, otherwise use credentials of current user emailadmin it Sì, utilizza le credenziali sottostanti solo per allarmi e notifiche, altrimenti usa le credenziali dell'utente attuale
yes, use credentials of current user or if given credentials below emailadmin it Sì, utilizza le credenziali dell'utente attuale oppure, se date, e credenziali qui sotto
you have received a new message on the emailadmin it Hai ricevuto un nuovo messaggio sul
your name emailadmin it Il tuo nome

74
emailadmin/lang/egw_iw.lang Executable file
View File

@ -0,0 +1,74 @@
add profile emailadmin iw הוסף פרופיל
admin dn emailadmin iw של המנהל dn
admin password emailadmin iw סיסמת מנהל
admin username emailadmin iw שם משתמש של המנהל
advanced options emailadmin iw אופציות מתקדמות
alternate email address emailadmin iw כתובת דואר אלקטרוני חילופי
continue emailadmin iw המשך
cyrus imap server emailadmin iw Cyrus IMAP שרת
cyrus imap server administration emailadmin iw Cyrus IMAP ניהול שרת
default emailadmin iw ברירת מחדל
deliver extern emailadmin iw מסירה חיצונית
do you really want to delete this profile emailadmin iw בטוח שברצונך למחוק פרופיל זה
domainname emailadmin iw שם הדומיין
edit email settings emailadmin iw ערוך הגדרות דואר אלקטרוני
email account active emailadmin iw חשבון דואר אלקטרוני פעיל
email address emailadmin iw כתובת דואר אלקטרוני
enable cyrus imap server administration emailadmin iw Cyrus IMAP איפשור ניהול שרת
enable sieve emailadmin iw Sieve אישפור
enter your default mail domain (from: user@domain) emailadmin iw (user@domain :ציין את דומיין דואר המחדלי שלך (לדוגמא
entry saved emailadmin iw הרשומה נשמרה
forward also to emailadmin iw להעביר גם אל
forward email's to emailadmin iw להעביר דואר אלקטרוני אל
forward only emailadmin iw העבר בלבד
imap admin password admin iw IMAP סיסמת ניהול
imap admin user admin iw IMAP שם מנהל
imap c-client version < 2001 emailadmin iw IMAP C-Client Version < 2001
imap server emailadmin iw שרת IMAP
imap server hostname or ip address emailadmin iw שלו IP- או כתובת הIMAP שם שרת
imap server logintyp emailadmin iw IMAP סוג כניסה לשרת
imap server port emailadmin iw IMAP פורט שרת
imap/pop3 server name emailadmin iw IMAP/POP3 שם שרת
in mbyte emailadmin iw MB-ב
ldap basedn emailadmin iw dn הביסי של LDAP
ldap server emailadmin iw LDAP שרת
ldap server accounts dn emailadmin iw LDAP של שרת חשבונות DN
ldap server admin dn emailadmin iw LDAP מנהל שרת של DN
ldap server admin password emailadmin iw LDAP סיסמה של מנהל שרת
ldap server hostname or ip address emailadmin iw IP או כתובת LDAP שם שרת
ldap settings emailadmin iw LDAP הגדרות
leave empty for no quota emailadmin iw השאר ריק ללא הקצאה
mail settings admin iw הגדרות דואר
name of organisation emailadmin iw שם האירגון
no alternate email address emailadmin iw אין כתובת דואר אלקטרוני חלופי
no forwarding email address emailadmin iw אין כתובת להעברת דואר אלקטרוני
order emailadmin iw סדר
organisation emailadmin iw אירגון
pop3 server hostname or ip address emailadmin iw IP או כתובת pop3 שם שרת
pop3 server port emailadmin iw POP3 פורט שרת
postfix with ldap emailadmin iw LDAP עם Postfix
profile list emailadmin iw רשימת פרופילים
profile name emailadmin iw שם פרופיל
qmaildotmode emailadmin iw qmaildotmode
quota settings emailadmin iw הגדרות הקצאה
remove emailadmin iw הסר
select type of imap/pop3 server emailadmin iw IMAP/POP3 בחר סוג שרת
select type of smtp server emailadmin iw SMTP בחר סוג שרת
sieve server hostname or ip address emailadmin iw IP או כתובת Sieve שם שרת
sieve server port emailadmin iw Sieve פורט שרת
sieve settings emailadmin iw Sieve הגדרות
smtp server name emailadmin iw SMTP שם שרת
smtp settings emailadmin iw הגדרות SMTP
smtp-server hostname or ip address emailadmin iw IP או כתובת SMTP שם שרת
smtp-server port emailadmin iw SMTP פורת שרת
standard emailadmin iw תקני
standard imap server emailadmin iw תקני IMAP שרת
standard pop3 server emailadmin iw תקני POP3 שרת
standard smtp-server emailadmin iw תקני SMTP שרת
use ldap defaults emailadmin iw LDAP השתמש בברירות מחדל של
use smtp auth emailadmin iw LDAP השתמש באימות משתמשים של
use tls authentication emailadmin iw TLS השתמש באימות
use tls encryption emailadmin iw TLS השתמש בהצפנת
users can define their own emailaccounts emailadmin iw משתמשים יכולים להגדיר בעצמם את חשבונות דואר האלקטרוני שלהם
virtual mail manager emailadmin iw מלהל דואר וירטואלי
your name emailadmin iw השם שלך

View File

@ -0,0 +1,7 @@
admin password emailadmin ja パスワード
admin username emailadmin ja ユーザID
email settings common ja 電子メール設定
mail settings admin ja 電子メール設定
order emailadmin ja 順序
remove emailadmin ja 削除
standard emailadmin ja 標準

View File

@ -0,0 +1,7 @@
admin password emailadmin ko 관리자 암호
admin username emailadmin ko 관리사용자 이름
continue emailadmin ko 계속
default emailadmin ko 기본
mail settings admin ko 메일 설정
remove emailadmin ko 삭제
standard emailadmin ko 기본

View File

@ -0,0 +1,24 @@
advanced options emailadmin lo ການຕັ້ງຄ່າແບບພິເສດ
alternate email address emailadmin lo ທີ່ຢູ່ email ອື່ນ
cyrus imap server emailadmin lo Cyrus IMAP Server
default emailadmin lo ຄ່າເລີ່ມຕົ້ນ
deliver extern emailadmin lo ສົ່ງ extern
edit email settings emailadmin lo ແກ້ໄຂການຕັ້ງຄ່າ email
email account active emailadmin lo email ບັນຊີທີ່ໃຊ້ຢູ່
email address emailadmin lo ທີ່ຢູ່ email
forward also to emailadmin lo ສົ່ງຕໍ່ໄປຫາ
forward only emailadmin lo ສົ່ງຕໍ່ເທົ່ານັ້ນ
in mbyte emailadmin lo ໃນ Mbyte
leave empty for no quota emailadmin lo ອອກຈາກລະບົບສໍາລັບບໍ່ມີໂກຕ້າ
mail settings admin lo ຕັ້ງຄ່າ mail
no alternate email address emailadmin lo ບໍ່ມີ email ສະຫຼັບກັນ
order emailadmin lo Order
postfix with ldap emailadmin lo Postfix ດ້ວຍ LDAP
qmaildotmode emailadmin lo qmaildotmode
quota settings emailadmin lo ໂກຕ້າການຕັ້ງຄ່າ
quota size in mbyte emailadmin lo ຂະໜາດໂກຕ້າໃນ ເມກະໄບທ
remove emailadmin lo ລຶບອອກ
standard emailadmin lo ມາດຕະຖານ
standard imap server emailadmin lo ມາດຕະຖານ IMAP ເຊີເວີ້
standard pop3 server emailadmin lo ມາດຕະຖານ POP3 ເຊີເວີ້
standard smtp-server emailadmin lo ມາດຕະຖານ SMTP-ເຊີເວີ້

View File

View File

@ -0,0 +1,68 @@
add profile emailadmin lv Pievienot profilu
admin dn emailadmin lv administratora dn
admin password emailadmin lv administratora parole
admin username emailadmin lv administratora lietotājvārds
advanced options emailadmin lv uzlabotās iespējas
alternate email address emailadmin lv alternatīvas e-pasta adreses
continue emailadmin lv Turpināt
cyrus imap server emailadmin lv Cyrus IMAP serveris
cyrus imap server administration emailadmin lv Cyrus IMAP servera administrēšana
default emailadmin lv noklusējums
do you really want to delete this profile emailadmin lv Vai tu tiešām vēlies dzēst šo profilu?
domainname emailadmin lv domēna vārds
edit email settings emailadmin lv rediģēt e-pasta uzstādījumus
email account active emailadmin lv e-pasta konts aktīvs
email address emailadmin lv e-pasta adrese
enable cyrus imap server administration emailadmin lv atļaut Cyrus IMAP servera administrēšanu
enable sieve emailadmin lv atļaut Sieve
enter your default mail domain (from: user@domain) emailadmin lv Ievadi noklusēto pasta domēnu (no: lietotājs@domēns)
entry saved emailadmin lv Ieraksts saglabāts
forward also to emailadmin lv pārsūtīt arī
forward email's to emailadmin lv pārsūtīt e-pasta vēstules
forward only emailadmin lv tikai pārsūtīt
imap admin password admin lv IMAP administratora parole
imap admin user admin lv IMAP administrators
imap c-client version < 2001 emailadmin lv IMAP C-Client Version <2001
imap server emailadmin lv IMAP serveris
imap server hostname or ip address emailadmin lv IMAP servera hosta vārds vai IP adrese
imap server logintyp emailadmin lv IMAP servera autorizācijas veids
imap server port emailadmin lv IMAP servera ports
imap/pop3 server name emailadmin lv IMAP/POP3 servera nosaukums
ldap basedn emailadmin lv LDAP bāzes dn
ldap server emailadmin lv LDAP serveris
ldap server accounts dn emailadmin lv LDAP servera konti DN
ldap server admin dn emailadmin lv LDAP servera administratora DN
ldap server admin password emailadmin lv LDAP servera administratora parole
ldap server hostname or ip address emailadmin lv LDAP servera hosta vārds vai IP adrese
ldap settings emailadmin lv LDAP uzstādījumi
mail settings admin lv Pasta uzstādījumi
name of organisation emailadmin lv Organizācijas nosaukums
no alternate email address emailadmin lv nav alternatīvas e-pasta adreses
no forwarding email address emailadmin lv nav pārsūtāmās e-pasta adreses
order emailadmin lv Kārtība
pop3 server hostname or ip address emailadmin lv POP3 servera hosta vārds vai IP adrese
pop3 server port emailadmin lv POP3 servera ports
profile list emailadmin lv Profila saraksts
profile name emailadmin lv Profila vārds
remove emailadmin lv pārvietot
select type of imap/pop3 server emailadmin lv Atzīmēt IMAP/POP3 servera tipu
select type of smtp server emailadmin lv Atzīmēt SMTP servera tipu
sieve server hostname or ip address emailadmin lv <b>?Sieve?</b> servera hosta vārds vai IP adrese
sieve server port emailadmin lv Sieve servera ports
sieve settings emailadmin lv Sieve uzstadījumi
smtp server name emailadmin lv SMTP servera nosaukums
smtp settings emailadmin lv SMTP uzstādījumi
smtp-server hostname or ip address emailadmin lv SMTP servera hosta vārds vai IP adrese
smtp-server port emailadmin lv SMTP servera ports
standard emailadmin lv Standarta
standard imap server emailadmin lv Standarta IMAP serveris
standard pop3 server emailadmin lv Standarta POP3 serveris
standard smtp-server emailadmin lv Standarta SMTP serveris
this php has no imap support compiled in!! emailadmin lv Šim PHP nav IMAP nokompilēts atbalsts
use ldap defaults emailadmin lv lieto LDAP noklusējumus
use smtp auth emailadmin lv Lieto SMTP autentifikāciju
use tls authentication emailadmin lv Lieto TLS autentifikāciju
use tls encryption emailadmin lv Lieto TLS šifrēšanu
users can define their own emailaccounts emailadmin lv LIetotāji paši var definēt savus e-pasta kontus
virtual mail manager emailadmin lv VIrtuālais MAIL ManaGeR
your name emailadmin lv Tavs vārds

145
emailadmin/lang/egw_nl.lang Normal file
View File

@ -0,0 +1,145 @@
account '%1' not found !!! emailadmin nl Account '%1' niet gevonden !!!
add new email address: emailadmin nl Voeg nieuw emailadres toe:
add profile emailadmin nl Profiel toevoegen
admin dn emailadmin nl admin dn
admin password emailadmin nl Admin wachtwoord
admin username emailadmin nl Admin gebruikersnaam
advanced options emailadmin nl Geavanceerde opties
alternate email address emailadmin nl Alternatief emailadres
any application emailadmin nl Iedere toepassing
any group emailadmin nl Iedere groep
any user emailadmin nl iedere gebruiker
back to admin/grouplist emailadmin nl Terug naar Beheer/Groepslijst
back to admin/userlist emailadmin nl Terug naar Beheer/Gebruikerslijst
bad login name or password. emailadmin nl Ongeldige login of paswoord
bad or malformed request. server responded: %s emailadmin nl Ongeldig of slecht geformuleerde aanvraag. Server reageerde: %s
bad request: %s emailadmin nl Slechte vraag: %s
can be used by application emailadmin nl Kan gebruikt worden door toepassing
can be used by group emailadmin nl Kan gebruikt worden door groep
can be used by user emailadmin nl kan door gebruiker gebruikt worden
connection dropped by imap server. emailadmin nl Verbinding viel uit door IMAP server
continue emailadmin nl Doorgaan
could not complete request. reason given: %s emailadmin nl Kan verzoek niet afmaken. Opgegeven reden: %s
could not open secure connection to the imap server. %s : %s. emailadmin nl Kon geen veilige verbinding openen met de IMAP server. %s : %s
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin nl CRAM-MDS of DIGEST-MDS vereist de installatie van het Auth_SASL pakket.
cyrus imap server emailadmin nl Cyrus IMAP-server
cyrus imap server administration emailadmin nl Cyrus IMAP-serverbeheer
default emailadmin nl standaard
deliver extern emailadmin nl bezorg extern
do not validate certificate emailadmin nl het certificaat niet valideren
do you really want to delete this profile emailadmin nl Weet u zeker dat u dit profiel wilt verwijderen
do you really want to reset the filter for the profile listing emailadmin nl Wilt u werkelijk het filter voor de profielenlijst opnieuw instellen
domainname emailadmin nl Domeinnaam
edit email settings emailadmin nl Wijzig emailinstellingen
email account active emailadmin nl Emailaccount actief
email address emailadmin nl Emailadres
email settings common nl Emailinstellingen
emailadmin emailadmin nl EmailAdmin
emailadmin: group assigned profile common nl eMailAdmin: Groep heeft profiel toegewezen gekregen
emailadmin: user assigned profile common nl eMailAdmin: Gebruiker heeft profiel toegewezen gekregen
enable cyrus imap server administration emailadmin nl activier Cyrus IMAP serverbeheer
enable sieve emailadmin nl activeer Sieve
encrypted connection emailadmin nl versleutelde verbinding
encryption settings emailadmin nl encryptie instellingen
enter your default mail domain (from: user@domain) emailadmin nl Voer uw standaard emaildomein in (uit: gebruiker@domein)
entry saved emailadmin nl Record opgeslagen
error connecting to imap server. %s : %s. emailadmin nl Fout verbinden met de IMAP server. %s : %s
error connecting to imap server: [%s] %s. emailadmin nl Fout verbinden met de IMAP server: [%s] %s
error saving the entry!!! emailadmin nl Fout bij het bewaren van de invoer!!!
filtered by account emailadmin nl gefilterd op Account
filtered by group emailadmin nl gefilterd op Groep
forward also to emailadmin nl Ook doorsturen naar
forward email's to emailadmin nl Emails doorsturen naar
forward only emailadmin nl Alleen doorsturen
global options emailadmin nl Algemene opties
if using ssl or tls, you must have the php openssl extension loaded. emailadmin nl Indien SSL of TSL wordt gebruikt, moet u de PHP openssl extensie opgeladen hebben
imap admin password admin nl IMAP beheerders wachtwoord
imap admin user admin nl IMAP beheerdersgebruiker
imap c-client version < 2001 emailadmin nl IMAP C-Client Versie < 2001
imap server emailadmin nl IMAP server
imap server closed the connection. emailadmin nl IMAP server sloot de verbinding
imap server closed the connection. server responded: %s emailadmin nl IMAP Server sloot de verbinding. Server reageerde: %s
imap server hostname or ip address emailadmin nl IMAP-server hostnaam of IP-adres
imap server logintyp emailadmin nl IMAP-server logintype
imap server name emailadmin nl imap server naam
imap server port emailadmin nl IMAP-serverpoort
imap/pop3 server name emailadmin nl IMAP/POP3-servernaam
in mbyte emailadmin nl in MBytes
inactive emailadmin nl inactief
ldap basedn emailadmin nl LDAP basedn
ldap server emailadmin nl LDAP-server
ldap server accounts dn emailadmin nl LDAP server accounts DN
ldap server admin dn emailadmin nl LDAP server admin DN
ldap server admin password emailadmin nl LDAP-server admin wachtwoord
ldap server hostname or ip address emailadmin nl LDAP-serverhostnaam of IP-adres
ldap settings emailadmin nl LDAP-instellingen
leave empty for no quota emailadmin nl Laat leeg voor geen quota
mail settings admin nl Mailinstellingen
name of organisation emailadmin nl Naam van de Organisatie
no alternate email address emailadmin nl geen alternatief emailadres
no encryption emailadmin nl geen versleuteling
no forwarding email address emailadmin nl geen emailadres om naar door te sturen
no message returned. emailadmin nl Geen bericht teruggekomen.
no supported imap authentication method could be found. emailadmin nl Geen ondersteunde IMAP authenticatiemethode kon gevonden worden.
order emailadmin nl Volgorde
organisation emailadmin nl Organisatie
plesk can't rename users --> request ignored emailadmin nl Plesk kan gebruikers niet hernoemen --> verzoek genegeerd
plesk imap server (courier) emailadmin nl Plesk IMAP Server (Courier)
plesk mail script '%1' not found !!! emailadmin nl Plesk mail script '%1' niet gevonden !!!
plesk requires passwords to have at least 5 characters and not contain the account-name --> password not set!!! emailadmin nl Plesk vereist dat wachtwoorden minstens 5 karakters bevatten en niet de accountnaam mogen bevatten --> wachtwoord niet gewijzigd !!!
plesk smtp-server (qmail) emailadmin nl Plesk SMTP-Server (Qmail)
pop3 server hostname or ip address emailadmin nl POP3-server hostnaam of IP-adres
pop3 server port emailadmin nl POP3-serverpoort
port emailadmin nl poort
postfix with ldap emailadmin nl Postfix met LDAP
profile access rights emailadmin nl profiel toegangsrechten
profile is active emailadmin nl profiel is actief
profile list emailadmin nl Profiellijst
profile name emailadmin nl Profielnaam
qmaildotmode emailadmin nl qmaildotmode
quota settings emailadmin nl Quota-installingen
quota size in mbyte emailadmin nl quota grootte in MByte
remove emailadmin nl Verwijderen
reset filter emailadmin nl filter opnieuw instellen
select type of imap server emailadmin nl selecteer IMAP servertype
select type of imap/pop3 server emailadmin nl Selecteer IMAP/POP3-servertype
select type of smtp server emailadmin nl Selecteer SMTP-servertype
server settings emailadmin nl server instellingen
sieve server hostname or ip address emailadmin nl Sieve-serverhostnaam of IP-adres
sieve server port emailadmin nl Sieve-serverpoort
sieve settings emailadmin nl Sieve instellingen
smtp authentication emailadmin nl SMTP authenticatie
smtp options emailadmin nl SMTP opties
smtp server name emailadmin nl SMTP-servernaam
smtp settings emailadmin nl SMTP instellingen
smtp-server hostname or ip address emailadmin nl SMTP-serverhostnaam of IP-adres
smtp-server port emailadmin nl SMTP-serverpoort
standard emailadmin nl Standaard
standard imap server emailadmin nl Standaard IMAP-server
standard pop3 server emailadmin nl Standaard POP3-server
standard smtp-server emailadmin nl Standaard SMTP-server
stationery emailadmin nl stationery
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin nl The IMAP server blijkt geen authenticatiemethode te ondersteunen. Gelieve uw systeembeheerder te contacteren.
this php has no imap support compiled in!! emailadmin nl Deze PHP heeft geen IMAP ondersteuning verzamelt in!!
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin nl Om een TLS verbinding te gebruiken, moet u een versie van PHP 5.1.0 of hoger gebruiken.
unexpected response from server to authenticate command. emailadmin nl Onverwachte reactie van de server om de opdracht te AUTHENTICEREN.
unexpected response from server to digest-md5 response. emailadmin nl Onverwachte reactie van de server op Digest-MD5 reactie.
unexpected response from server to login command. emailadmin nl Onverwachte reactie van de server op LOGIN opdracht.
unknown imap response from the server. server responded: %s emailadmin nl Onverwachte IMAP reactie van de server. Server reageerde: %s
unsupported action '%1' !!! emailadmin nl Niet-ondersteunde actie '%1'
update current email address: emailadmin nl Huidige emailadres bijwerken:
use ldap defaults emailadmin nl gebruik LDAP standaard instellingen
use predefined username and password defined below emailadmin nl Gebruik voorgekozen gebruikersnaam en wachtwoord zoals hieronder is ingesteld
use smtp auth emailadmin nl Gebruik SMTP authenticatie
use tls authentication emailadmin nl Gebruik TLS authenticatie
use tls encryption emailadmin nl Gebruik TLS-encryptie
user can edit forwarding address emailadmin nl Gebruiker kan het doorstuuradres aanpassen
username (standard) emailadmin nl gebruikersnaam (standaard)
username/password defined by admin emailadmin nl Gebruikersnaam/Wachtwoord ingesteld door beheerder
username@domainname (virtual mail manager) emailadmin nl gebruikersnaam@domeinnaam (Virtual MAIL ManaGeR)
users can define their own emailaccounts emailadmin nl Gebruikers kunnen hun eigen emailaccounts definiëren
users can define their own identities emailadmin nl gebruikers kunnen hun eigen identiteit instellen
users can define their own signatures emailadmin nl gebruikers kunnen hun eigen ondertekening instellen
virtual mail manager emailadmin nl Virtual MAIL ManaGeR
you have received a new message on the emailadmin nl U heeft een nieuw bericht ontvangen op de
your name emailadmin nl Uw naam

View File

@ -0,0 +1,77 @@
add profile emailadmin no Legg til profil
admin dn emailadmin no Admin dn
admin password emailadmin no Admin passord
admin username emailadmin no Admin brukernavn
advanced options emailadmin no Avanserte valg
alternate email address emailadmin no Alternativ e-mailadresse
continue emailadmin no Fortsette
cyrus imap server emailadmin no Cyrus IMAP tjener
cyrus imap server administration emailadmin no Cyrys IMAP tjeneradministrasjon
default emailadmin no standard
deliver extern emailadmin no lever eksternt
do you really want to delete this profile emailadmin no Ønsker du virkelig å slette denne profilen
domainname emailadmin no Domenenavn
edit email settings emailadmin no Rediger e-mail oppsett
email account active emailadmin no E-mailkonto aktiv
email address emailadmin no E-mailadresse
enable cyrus imap server administration emailadmin no Tillat Cyrus IMAP-tjener administrasjon
enable sieve emailadmin no Tillat Sieve
enter your default mail domain (from: user@domain) emailadmin no Registrer ditt standard Emaildomene (fra: bruker@domene)
entry saved emailadmin no Registrering lagret
error saving the entry!!! emailadmin no Feil ved lagring av forekomst!
forward also to emailadmin no videresend også til
forward email's to emailadmin no videresend e-mailer til
forward only emailadmin no bare videresending
imap admin password admin no IMAP Administrasjonspassord
imap admin user admin no IMAP Administrasjonsbruker
imap c-client version < 2001 emailadmin no IMAP C-klient versjon < 2001
imap server emailadmin no IMAP Tjener
imap server hostname or ip address emailadmin no Tjenernavn eller IP-adresse for IMAP tjener
imap server logintyp emailadmin no IMAP Tjener påloggingstype
imap server port emailadmin no IMAP Tjenerport
imap/pop3 server name emailadmin no IMAP/POP3 tjenernavn
in mbyte emailadmin no i MByte
ldap basedn emailadmin no LDAP basedn
ldap server emailadmin no LDAP Tjener
ldap server accounts dn emailadmin no LDAP Tjenerkonti DN
ldap server admin dn emailadmin no LDAP Tjeneradmin. DN
ldap server admin password emailadmin no LDAP Tjeneradmin. passord
ldap server hostname or ip address emailadmin no Tjenernavn eller IP-adresse for LDAP tjener
ldap settings emailadmin no LDAP Instillinger
leave empty for no quota emailadmin no La stå tomt for ingen begrensning.
mail settings admin no E-post innstillinger
name of organisation emailadmin no Navn på organisasjon
no alternate email address emailadmin no ingen alternativ e-mailadresse
no forwarding email address emailadmin no ingen e-mailadresse for videresending
order emailadmin no Ordre
organisation emailadmin no Organisasjon
pop3 server hostname or ip address emailadmin no Tjenernavn eller IP-adresse for POP3 tjener
pop3 server port emailadmin no POP3 Tjenerport
postfix with ldap emailadmin no Postfix med LDAP
profile list emailadmin no Profilliste
profile name emailadmin no Profilnavn
qmaildotmode emailadmin no qmaildotmodus
quota settings emailadmin no Grenseinstillinger
quota size in mbyte emailadmin no Grense Str. i Mbyte
remove emailadmin no fjern
select type of imap/pop3 server emailadmin no Velg type for IMAP/POP3 Tjener
select type of smtp server emailadmin no Velg type SMTP Tjener
sieve server hostname or ip address emailadmin no Tjenernavn eller IP-adresse for Sieve-tjener
sieve server port emailadmin no Sieve tjenerport
sieve settings emailadmin no Sieve innstillinger
smtp server name emailadmin no SMTP Tjenernavn
smtp settings emailadmin no SMTP innstillinger
smtp-server hostname or ip address emailadmin no Tjenernavn eller IP-Adresse for SMTP-Tjener
smtp-server port emailadmin no SMTP Tjenerport
standard emailadmin no standard
standard imap server emailadmin no Standard IMAP tjener
standard pop3 server emailadmin no Standard POP3 tjener
standard smtp-server emailadmin no Standard SMTP tjener
this php has no imap support compiled in!! emailadmin no PHP versjonen har ingen IMAP-støtte kompilert inn
use ldap defaults emailadmin no Bruk LDAP standaroppsett
use smtp auth emailadmin no Bruk SMTP autentisering
use tls authentication emailadmin no Bruk TLS autentisering
use tls encryption emailadmin no Bruk TLS kryptering
users can define their own emailaccounts emailadmin no Brukere kan definere egne e-post kontoer
virtual mail manager emailadmin no Virtuell Mail Manager
your name emailadmin no Ditt navn

150
emailadmin/lang/egw_pl.lang Normal file
View File

@ -0,0 +1,150 @@
account '%1' not found !!! emailadmin pl Konto '%1' nie zostało znalezione!
active templates emailadmin pl Aktywne szablony
add new email address: emailadmin pl Dodaj nowy adres poczty elektronicznej:
add profile emailadmin pl Dodaj profil
admin dn emailadmin pl DN (nazwa wyróżniająca) administratora
admin password emailadmin pl Hasło administratora
admin username emailadmin pl Nazwa użytkownika konta administratora
advanced options emailadmin pl Ustawienia zaawansowane
alternate email address emailadmin pl Alternatywny adres email
any application emailadmin pl Dowolna aplikacja
any group emailadmin pl Dowolna grupa
any user emailadmin pl Dowolny użytkownik
back to admin/grouplist emailadmin pl Powrót do konta administratora/ listy grup
back to admin/userlist emailadmin pl Powrót do konta administratora/ listy użytkowników
bad login name or password. emailadmin pl Zła nazwa użytkownika lub hasło
bad or malformed request. server responded: %s emailadmin pl Nieprawidłowe lub źle skonstruowane żądane. Serwer odpowiedział: %s
bad request: %s emailadmin pl Nieprawidłowe żądanie: %s
can be used by application emailadmin pl Może być używane przez aplikację
can be used by group emailadmin pl Może byc używane przez grupę
can be used by user emailadmin pl Może być używane przez użytkownika
connection dropped by imap server. emailadmin pl Połączenie zerwane przez serwer IMAP
continue emailadmin pl Kontunuj
could not complete request. reason given: %s emailadmin pl Nie udało się zrealizować żądania. Powód: %s
could not open secure connection to the imap server. %s : %s. emailadmin pl Nie udało się stworzyć bezpiecznego połączenia do serwera IMAP. %s : %s.
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin pl CRAM-MD5 lub DIGEST-MD5 wymagają, aby pakiet Auth_SASL (Perl) był zainstalowany
cyrus imap server emailadmin pl Serwer IMAP Cyrus
cyrus imap server administration emailadmin pl Administracja serwerem IMAP Cyrus
default emailadmin pl domyślny
deliver extern emailadmin pl dostarczanie na zewnątrz
do not validate certificate emailadmin pl nie sprawdzaj poprawności certyfikatu
do you really want to delete this profile emailadmin pl Czy na pewno chcesz usunąć ten profil?
do you really want to reset the filter for the profile listing emailadmin pl Czy na pewno chcesz zresetować filtr w liście profilu?
domainname emailadmin pl Nazwa domeny
edit email settings emailadmin pl Edytuj ustawienia poczty elektronicznej
email account active emailadmin pl Konto poczty aktywne
email address emailadmin pl Adres poczty elektronicznej
email settings common pl Ustawienia poczty elektronicznej
emailadmin emailadmin pl Poczta Elektroniczna - Administracja
emailadmin: group assigned profile common pl Administrator Poczty: Grupa przypisana do profilu
emailadmin: user assigned profile common pl Administrator Poczty: użytkownik przypisany do profilu
enable cyrus imap server administration emailadmin pl aktywuj administrację serwerem IMAP Cyrus
enable sieve emailadmin pl aktywuj sito (Sieve)
encrypted connection emailadmin pl połączenie szyfrowane
encryption settings emailadmin pl ustawienia szyfrowania
enter your default mail domain (from: user@domain) emailadmin pl Wprowadź domyślną domenę pocztową (z użytkownik@domena)
entry saved emailadmin pl Wpis zachowany
error connecting to imap server. %s : %s. emailadmin pl Błąd połączenia do serwera IMAP. %s : %s
error connecting to imap server: [%s] %s. emailadmin pl Błąd połączenia do serwera IMAP. [%s] %s
error saving the entry!!! emailadmin pl Błąd przy zachowywaniu wpisu !!!
filtered by account emailadmin pl Filtrowane przez konto
filtered by group emailadmin pl Filtrowane przez grupe
forward also to emailadmin pl Prześlij również do
forward email's to emailadmin pl Prześlij wiadomości do
forward only emailadmin pl Prześlij tylko
global options emailadmin pl Ustawienia globalne
if using ssl or tls, you must have the php openssl extension loaded. emailadmin pl Jeżeli korzystasz z SSL lub TLS, musisz zapewnić obsługę OpenSSL w PHP.
imap admin password admin pl Hasło administratora IMAP
imap admin user admin pl Login administratora IMAP
imap c-client version < 2001 emailadmin pl Wersja C-Client IMAP < 2001
imap server emailadmin pl Serwer IMAP
imap server closed the connection. emailadmin pl Serwer IMAP zakończył połączenie.
imap server closed the connection. server responded: %s emailadmin pl Serwer IMAP zakończył połączenie. Jego odpowiedź: %s
imap server hostname or ip address emailadmin pl Nazwa hosta lub IP serwera IMAP
imap server logintyp emailadmin pl Sposób logowania do serwera IMAP
imap server name emailadmin pl Nazwa serwera IMAP
imap server port emailadmin pl Port serwera IMAP
imap/pop3 server name emailadmin pl Nazwa serwera IMAP/POP3
in mbyte emailadmin pl w megabajtach
inactive emailadmin pl nieaktywny
ldap basedn emailadmin pl Bazowy DN w LDAP
ldap server emailadmin pl Serwer LDAP
ldap server accounts dn emailadmin pl DN dla kont w LDAP
ldap server admin dn emailadmin pl DN administratora w LDAP
ldap server admin password emailadmin pl Hasło administratora serwera LDAP
ldap server hostname or ip address emailadmin pl Nazwa hosta lub IP serwera LDAP
ldap settings emailadmin pl Ustawienia LDAP
leave empty for no quota emailadmin pl zostaw puste aby wyłączyć quota
mail settings admin pl Ustawienia poczty elektronicznej
manage stationery templates emailadmin pl Zarządzaj szablonami stacjonarnymi
name of organisation emailadmin pl Nazwa lub organizacja
no alternate email address emailadmin pl brak zapasowego adresu e-mail
no encryption emailadmin pl brak szyfrowania
no forwarding email address emailadmin pl brak adresu poczty przesyłanej
no message returned. emailadmin pl Nie otrzymano wiadomości.
no supported imap authentication method could be found. emailadmin pl Nie znaleziono obsługiwanej metody autentykacji dla IMAP
order emailadmin pl Porządek
organisation emailadmin pl Organizacja
plesk can't rename users --> request ignored emailadmin pl Plesk nie może zmienić nazwy użytkowników --> prośba odrzucona
plesk imap server (courier) emailadmin pl Plesk IMAP Serwea (Kurier)
plesk mail script '%1' not found !!! emailadmin pl Skrypt %1 mail Plesk nie został znaleziony!!!
plesk requires passwords to have at least 5 characters and not contain the account-name --> password not set!!! emailadmin pl Plesk wymaga hasła składającego się z przynajmniej pięciu znaków i nie zawierającego nazwy konta --> hasło nie ustalone!!!
plesk smtp-server (qmail) emailadmin pl Plesk Serwera SMTP (Qmail)
pop3 server hostname or ip address emailadmin pl Nazwa hosta lub IP serwera POP3
pop3 server port emailadmin pl Port serwera POP3
port emailadmin pl port
postfix with ldap emailadmin pl Postfix z LDAP
profile access rights emailadmin pl prawa dostępu do profilu
profile is active emailadmin pl Profil jest aktywny
profile list emailadmin pl Lista profili
profile name emailadmin pl Nazwa Profilu
qmaildotmode emailadmin pl qmaildotmode
quota settings emailadmin pl ustawnienia quoty
quota size in mbyte emailadmin pl ograniczenie w megabajtach
remove emailadmin pl Usuń
reset filter emailadmin pl Resetuj filtr
select type of imap server emailadmin pl Wybierz rodzaj serwera IMAP
select type of imap/pop3 server emailadmin pl Wybierz rodzaj serwera IMAP/POP3
select type of smtp server emailadmin pl Wybierz rodzaj serwera SMTP
send using this email-address emailadmin pl Prześlij za pomocą tego adresu e-mail
server settings emailadmin pl Ustawienia serwera
sieve server hostname or ip address emailadmin pl Adres IP lub nazwa Sieve
sieve server port emailadmin pl Port serwera Sieve
sieve settings emailadmin pl Ustawienia Sieve
smtp authentication emailadmin pl Autentykacja SMTP
smtp options emailadmin pl Opcje SMTP
smtp server name emailadmin pl Nazwa serwera SMTP
smtp settings emailadmin pl Ustawienia SMTP
smtp-server hostname or ip address emailadmin pl Nazwa hosta lub IP serwera SMTP
smtp-server port emailadmin pl Port serwera SMTP
standard emailadmin pl Standard
standard imap server emailadmin pl Standardowy serwer IMAP
standard pop3 server emailadmin pl Standardowy serwer POP3
standard smtp-server emailadmin pl Standardowy serwer SMTP
stationery emailadmin pl Stacjonarny
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin pl Serwer IMAP nie obsługuje wskazanej metody autentykacji. Proszę skontaktować się z administratorem.
this php has no imap support compiled in!! emailadmin pl Interpreter PHP nie posiada obsługi IMAP!
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin pl Aby skorzystać z połączenia TLS, musisz posiadać wersję PHP 5.1.0 lub wyższą.
unexpected response from server to authenticate command. emailadmin pl Niespodziewana odpowiedź serwera na polecenie AUTHENTICATE.
unexpected response from server to digest-md5 response. emailadmin pl Niespodziewana odpowiedź serwera na zapytanie Digest-MD5
unexpected response from server to login command. emailadmin pl Niespodziewana odpowiedź serwera na polecenie LOGIN.
unknown imap response from the server. server responded: %s emailadmin pl Nieznana odpowiedź z serwera IMAP. Serwer przesłał: %s
unsupported action '%1' !!! emailadmin pl Operacja nieobsługiwana '%1'!
update current email address: emailadmin pl Uaktualnij bieżący adres pocztowy
use ldap defaults emailadmin pl Skorzystaj z domyślnych wartości LDAP
use predefined username and password defined below emailadmin pl Skorzystaj z predefiniowanych nazw użytkownika i hasła podanego poniżej
use smtp auth emailadmin pl Skorzystaj z autentykacji SMTP
use tls authentication emailadmin pl Skorzystaj z autentykacji TLS
use tls encryption emailadmin pl Skorzystaj z szyfrowania TLS
use users email-address (as seen in useraccount) emailadmin pl użyj adresu użytkownika (taki jak widoczny w opcjach konta)
user can edit forwarding address emailadmin pl Użytkownik może zmieniać adres przekazywania
username (standard) emailadmin pl login (standardowo)
username/password defined by admin emailadmin pl Nazwa uzytkownika/Hasło określone przez administratora
username@domainname (virtual mail manager) emailadmin pl login@domena (wirtualny zarządca kont)
users can define their own emailaccounts emailadmin pl Użytkownicy mogą definiować swoje własne konta poczty elektronicznej
users can define their own identities emailadmin pl Użytkownicy mogą definiować swoje własne tożsamości
users can define their own signatures emailadmin pl Użytkownicy mogą definiować swoje własne podpisy
users can utilize these stationery templates emailadmin pl Użytkownicy mogą użyć tych szablonów stacjonarnych
virtual mail manager emailadmin pl Wirtualny Serwer Pocztowy - zarządca
you have received a new message on the emailadmin pl Otrzymałeś nową wiadomość o
your name emailadmin pl Twoje Imę

View File

@ -0,0 +1,144 @@
account '%1' not found !!! emailadmin pt-br Conta '%1' não encontrada !!!
add new email address: emailadmin pt-br Adicionar novo e-mail:
add profile emailadmin pt-br Adicionar Perfil
admin dn emailadmin pt-br dn do administrador
admin password emailadmin pt-br senha do administrador
admin username emailadmin pt-br nome de usuário do administrador
advanced options emailadmin pt-br opções avançadas
alternate email address emailadmin pt-br endereço de e-mail alternativo
any application emailadmin pt-br qualquer aplicação
any group emailadmin pt-br qualquer grupo
any user emailadmin pt-br qualquer usuário
back to admin/grouplist emailadmin pt-br Voltar para Administração/Lista de Grupos
back to admin/userlist emailadmin pt-br Voltar para Administração/Lista de Usuários
bad login name or password. emailadmin pt-br Nome de usuário ou senha inválido(s).
bad or malformed request. server responded: %s emailadmin pt-br Solicitação inválida. Resposta do servidor: %s
bad request: %s emailadmin pt-br Solicitação inválida: %s
can be used by application emailadmin pt-br pode ser usado pela aplicação
can be used by group emailadmin pt-br pode ser usado pelo grupo
can be used by user emailadmin pt-br pode ser usado pelo usuário
connection dropped by imap server. emailadmin pt-br Conexão interrompida pelo servidor IMAP.
continue emailadmin pt-br Continuar
could not complete request. reason given: %s emailadmin pt-br Não foi possível completar a solicitação. Resposta do servidor: %s
could not open secure connection to the imap server. %s : %s. emailadmin pt-br Não foi possível abrir conexão segura com o servidor IMAP. %s : %s.
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin pt-br CRAM-MD5 ou DIGEST-MD5 necessitam que o pacote Auth_SASL esteja instalado.
cyrus imap server emailadmin pt-br Servidor Cyrus IMAP
cyrus imap server administration emailadmin pt-br Administração do Servidor Cyrus IMAP
default emailadmin pt-br padrão
deliver extern emailadmin pt-br entrega externa
do not validate certificate emailadmin pt-br não validar certificado
do you really want to delete this profile emailadmin pt-br Tem certeza que deseja remover esse perfil?
do you really want to reset the filter for the profile listing emailadmin pt-br Tem certeza que deseja reiniciar o filtro para a listagem do perfil
domainname emailadmin pt-br nome do domínio
edit email settings emailadmin pt-br editar configurações de e-mail
email account active emailadmin pt-br conta de e-mail ativa
email address emailadmin pt-br endrereço de e-mail
email settings common pt-br Configurações do E-mail
emailadmin emailadmin pt-br Administração do E-Mail
emailadmin: group assigned profile common pt-br Administração de eMail: Perfil de Grupo
emailadmin: user assigned profile common pt-br Administração de eMail: Perfil de Usuário
enable cyrus imap server administration emailadmin pt-br habilitar administração do Servidor Cyrus IMAP
enable sieve emailadmin pt-br habilitar Sieve
encrypted connection emailadmin pt-br conexão criptografada
encryption settings emailadmin pt-br configurações de criptografia
enter your default mail domain (from: user@domain) emailadmin pt-br Entre com o domínio de e-mail padrão (de: usuario@dominio)
entry saved emailadmin pt-br Registro salvo
error connecting to imap server. %s : %s. emailadmin pt-br Erro conectando ao servidor IMAP. %s : %s.
error connecting to imap server: [%s] %s. emailadmin pt-br Erro conectando ao servidor IMAP: [%s] %s.
error saving the entry!!! emailadmin pt-br Erro salvando o registro!!
filtered by account emailadmin pt-br filtrado por Conta
filtered by group emailadmin pt-br filtrado por Grupo
forward also to emailadmin pt-br encaminhar também para
forward email's to emailadmin pt-br encaminhar mensagens para
forward only emailadmin pt-br encaminhar somente
global options emailadmin pt-br opções globais
if using ssl or tls, you must have the php openssl extension loaded. emailadmin pt-br Se estiver usando SSL ou TLS, você deverá ter a extensão PHP 'openssl' carretada.
imap admin password admin pt-br Senha do administrador IMAP
imap admin user admin pt-br Usuário administrador do IMAP
imap c-client version < 2001 emailadmin pt-br IMAP C-Cliente Versão < 2001
imap server emailadmin pt-br Servidor IMAP
imap server closed the connection. emailadmin pt-br O servidor IMAP fechou a conexão.
imap server closed the connection. server responded: %s emailadmin pt-br O servidor IMAP fechou a conexão. Resposta do servidor: %s
imap server hostname or ip address emailadmin pt-br Nome ou IP do servidor IMAP
imap server logintyp emailadmin pt-br Tipo de login do servidor IMAP
imap server name emailadmin pt-br nome do servidor imap
imap server port emailadmin pt-br Porta do servidor IMAP
imap/pop3 server name emailadmin pt-br Nome do servidor IMAP/POP3
in mbyte emailadmin pt-br em Mbytes
inactive emailadmin pt-br inativo
ldap basedn emailadmin pt-br DN Base do LDAP
ldap server emailadmin pt-br Servidor LDAP
ldap server accounts dn emailadmin pt-br Contas DN de servidores LDAP
ldap server admin dn emailadmin pt-br Administrador DN de servidor LDAP
ldap server admin password emailadmin pt-br Senha do administrador DN de servidor LDAP
ldap server hostname or ip address emailadmin pt-br Nome ou endereço IP do servidor LDAP
ldap settings emailadmin pt-br Configurações do LDAP
leave empty for no quota emailadmin pt-br deixe em branco para nenhuma quota
mail settings admin pt-br Configurações de E-Mail
name of organisation emailadmin pt-br Nome da organização
no alternate email address emailadmin pt-br sem conta de e-mail alternativa
no encryption emailadmin pt-br sem criptografia
no forwarding email address emailadmin pt-br sem conta de e-mail para encaminhar
no message returned. emailadmin pt-br Nenhuma mensagem retornada.
no supported imap authentication method could be found. emailadmin pt-br Nenhum método de autenticação IMAP suportado pôde ser encontrado.
order emailadmin pt-br ordem
organisation emailadmin pt-br organização
plesk can't rename users --> request ignored emailadmin pt-br Plesk não pode renomear usuários --> solicitação ignorada
plesk imap server (courier) emailadmin pt-br Servidor IMAP Plesk (Courier)
plesk mail script '%1' not found !!! emailadmin pt-br Script de e-mail Plesk '%1' não encontrado !!!
plesk requires passwords to have at least 5 characters and not contain the account-name --> password not set!!! emailadmin pt-br Plesk exige que senhas tenha no mínimo 5 caracteres e não contenham o nome da conta --> senha NÃO configurada!!!
plesk smtp-server (qmail) emailadmin pt-br Servidor SMTP Plesk (Qmail)
pop3 server hostname or ip address emailadmin pt-br Nome ou endereço IP do servidor POP3
pop3 server port emailadmin pt-br Porta do servidor POP3
port emailadmin pt-br porta
postfix with ldap emailadmin pt-br Postfix com LDAP
profile access rights emailadmin pt-br direito de acesso aos perfis
profile is active emailadmin pt-br perfil está ativo
profile list emailadmin pt-br Lista de perfis
profile name emailadmin pt-br Nome do perfil
qmaildotmode emailadmin pt-br modo dos arquivos qmail (.qmail)
quota settings emailadmin pt-br configurações de quota
quota size in mbyte emailadmin pt-br tamanho da cota em MByte
remove emailadmin pt-br remover
reset filter emailadmin pt-br reiniciar filtro
select type of imap server emailadmin pt-br selecione o tipo de servidor IMAP
select type of imap/pop3 server emailadmin pt-br Selecione o tipo de servidor IMAP/POP3
select type of smtp server emailadmin pt-br Selecione o tipo de servidor SMTP
server settings emailadmin pt-br configurações do servidor
sieve server hostname or ip address emailadmin pt-br Nome ou endereço IP do servidor Sieve
sieve server port emailadmin pt-br Porta do Servidor Sieve
sieve settings emailadmin pt-br Configurações Sieve
smtp authentication emailadmin pt-br autenticação smtp
smtp options emailadmin pt-br opções smtp
smtp server name emailadmin pt-br Nome do Servidor SMTP
smtp settings emailadmin pt-br configurações SMTP
smtp-server hostname or ip address emailadmin pt-br Nome ou endereço IP do servidor SMTP
smtp-server port emailadmin pt-br Porta do servidor SMTP
standard emailadmin pt-br Padrão
standard imap server emailadmin pt-br Servidor IMAP padrão
standard pop3 server emailadmin pt-br Servidor POP3 padrão
standard smtp-server emailadmin pt-br Servidor SMTP padrão
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin pt-br O servidor IMAP não parece suportar o método de autenticação selecionado. Por favor contacte o administrador do seu sistema.
this php has no imap support compiled in!! emailadmin pt-br Este PHP não tem suporte a IMAP compilado nele!
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin pt-br Para usar uma conexão TLS, você deve estar rodando PHP versão 5.1.0 ou maior.
unexpected response from server to authenticate command. emailadmin pt-br Resposta inesperada do servidor para o comando AUTHENTICATE.
unexpected response from server to digest-md5 response. emailadmin pt-br Resposta inesperada do servidor para a resposta Digest-MD5.
unexpected response from server to login command. emailadmin pt-br Resposta inesperada do servidor para o comando LOGIN.
unknown imap response from the server. server responded: %s emailadmin pt-br Resposta desconhecida do servidor IMAP. Resposta do servidor: %s
unsupported action '%1' !!! emailadmin pt-br Ação não suportada: '%1' !!!
update current email address: emailadmin pt-br Atualizar e-mail atual:
use ldap defaults emailadmin pt-br usar padrões LDAP
use predefined username and password defined below emailadmin pt-br Usar usuário e senha pré-definidos abaixo
use smtp auth emailadmin pt-br usar SMTP Autenticado
use tls authentication emailadmin pt-br Usar autenticação TLS
use tls encryption emailadmin pt-br Usar encriptação TLS
user can edit forwarding address emailadmin pt-br usuário pode editar endereço de encaminhamento
username (standard) emailadmin pt-br nome do usuário (padrão)
username/password defined by admin emailadmin pt-br Nome de usuário/Senha definidos pelo administrador
username@domainname (virtual mail manager) emailadmin pt-br nomedousuario@nomedodominio (Gerenciador Virtual Mail)
users can define their own emailaccounts emailadmin pt-br Os usuários podem definir sua próprias contas de correio
users can define their own identities emailadmin pt-br usuários podem definir suas próprias identidades
users can define their own signatures emailadmin pt-br usuários podem definir suas próprias assinaturas
virtual mail manager emailadmin pt-br Gerenciador Virtual Mail
you have received a new message on the emailadmin pt-br Você recebeu uma nova mensagem na
your name emailadmin pt-br Seu nome

View File

@ -0,0 +1,90 @@
add profile emailadmin pt Adicionar perfil
admin dn emailadmin pt DN do administrador
admin password emailadmin pt Senha do administrador
admin username emailadmin pt Nome do utilizador do administrador
advanced options emailadmin pt Opções avançadas
alternate email address emailadmin pt Endereço de correio electrónico alternativo
any application emailadmin pt Qualquer aplicação
any group emailadmin pt Qualquer grupo
can be used by application emailadmin pt Pode ser utilizado pela aplicação
can be used by group emailadmin pt Pode ser utilizado pelo grupo
continue emailadmin pt Continuar
cyrus imap server emailadmin pt Servidor IMAP Cyrus
cyrus imap server administration emailadmin pt Administração do servidor IMAP Cyrus
default emailadmin pt Por omissão
deliver extern emailadmin pt Entrega externa
do you really want to delete this profile emailadmin pt Deseja relamente eliminar este perfil
domainname emailadmin pt Nome de domínio
edit email settings emailadmin pt Editar configurações do correio electrónico
email account active emailadmin pt Conta de correio electrónico activa
email address emailadmin pt Endereço de correio electrónico
enable cyrus imap server administration emailadmin pt Activar administração do servidor IMAP Cyrus
enable sieve emailadmin pt Activar Sieve
encryption settings emailadmin pt Definições de cifragem
enter your default mail domain (from: user@domain) emailadmin pt Insira o seu domínio de correio electrónico por omissão (de: utilizador@domínio)
entry saved emailadmin pt Registo guardado
error saving the entry!!! emailadmin pt Erro ao guardar o registo!!!
forward also to emailadmin pt Reencaminhar também para
forward email's to emailadmin pt Reencaminhar mensagens para
forward only emailadmin pt Reencaminhar apenas
global options emailadmin pt Opções gerais
imap admin password admin pt Senha do administrador IMAP
imap admin user admin pt Utilizador do administrador IMAP
imap c-client version < 2001 emailadmin pt Versão C-Client IMAP < 2001
imap server emailadmin pt Servidor IMAP
imap server hostname or ip address emailadmin pt Nome do servidor ou endereço IP do servidor IMAP
imap server logintyp emailadmin pt Tipo de acesso do servidor IMAP
imap server port emailadmin pt Porto do servidor IMAP
imap/pop3 server name emailadmin pt Nome do servidor IMAP/POP3
in mbyte emailadmin pt em MBytes
ldap basedn emailadmin pt Base DN LDAP
ldap server emailadmin pt Servidor LDAP
ldap server accounts dn emailadmin pt DN das contas de servidor LDAP
ldap server admin dn emailadmin pt DN do administrador de servidor LDAP
ldap server admin password emailadmin pt Senha do administrador de servidor LDAP
ldap server hostname or ip address emailadmin pt Nome do servidor ou endereço IP do servidor LDAP
ldap settings emailadmin pt Configurações do LDAP
leave empty for no quota emailadmin pt Deixar vazio para quota sem limites
mail settings admin pt Configurações do correio electrónico
name of organisation emailadmin pt Nome da empresa
no alternate email address emailadmin pt Sem endereço de correio electrónico alternativo
no forwarding email address emailadmin pt Sem endereço de correio electrónico para reencaminhamento
order emailadmin pt Ordem
organisation emailadmin pt Empresa
pop3 server hostname or ip address emailadmin pt Nome do servidor ou endereço IP do servidor POP3
pop3 server port emailadmin pt Porto de servidor POP3
postfix with ldap emailadmin pt Postfix com LDAP
profile access rights emailadmin pt Perfil de direitos de acesso
profile list emailadmin pt Lista de perfis
profile name emailadmin pt Nome do perfil
qmaildotmode emailadmin pt Quota do correio electrónico no modo Idot
quota settings emailadmin pt Configurações da quota
quota size in mbyte emailadmin pt tamanho da quota em MBytes
remove emailadmin pt Remover
select type of imap/pop3 server emailadmin pt Seleccionar tipo de servidor IMAP/POP3
select type of smtp server emailadmin pt Seleccionar tipo de servidor SMTP
server settings emailadmin pt Definições do servidor
sieve server hostname or ip address emailadmin pt Nome do servidor ou endereço IP do servidor Sieve
sieve server port emailadmin pt Porto do servidor Sieve
sieve settings emailadmin pt Configurações do SIeve
smtp authentication emailadmin pt Autenticação SMTP
smtp options emailadmin pt Opções do SMTP
smtp server name emailadmin pt Nome do servidor SMTP
smtp settings emailadmin pt Definições do SMTP
smtp-server hostname or ip address emailadmin pt Nome do servidor ou endereço IP do servidor SMTP
smtp-server port emailadmin pt Porto do servidor SMTP
standard emailadmin pt Por omissão
standard imap server emailadmin pt Servidor IMAP por omissão
standard pop3 server emailadmin pt Servidor POP3 por omissão
standard smtp-server emailadmin pt Servidor SMTP por omissão
this php has no imap support compiled in!! emailadmin pt O PHP não tem suporte de IMAP compilado!!
use ldap defaults emailadmin pt Utilizar definições por omissão do LDAP
use smtp auth emailadmin pt Utilizar autenticação SMTP
use tls authentication emailadmin pt Utilizar autenticação TLS
use tls encryption emailadmin pt Utilizar cifra TLS
user can edit forwarding address emailadmin pt O utilizador pode editar endereços reencaminhados
username (standard) emailadmin pt Nome de utilizador (por omissão)
username@domainname (virtual mail manager) emailadmin pt utilizador@dominio (Gestor virtual de correio electrónico)
users can define their own emailaccounts emailadmin pt Os utilizadores podem definir as suas contas de correio electrónico
virtual mail manager emailadmin pt Gestor virtual de correio electrónico
your name emailadmin pt O seu nome

159
emailadmin/lang/egw_ru.lang Normal file
View File

@ -0,0 +1,159 @@
%1 entries deleted. emailadmin ru %1 записи удалены.
(imapclass must support this feature by querying the corresponding config value and pass it as defaultquota to the imapserver) emailadmin ru (класс IMAP должен поддерживать возможность запроса соответствующего параметра конфигурации и передачи серверу IMAP как квоту по умолчанию)
account '%1' not found !!! emailadmin ru Учетная запись '%1' не найдена !!!
active templates emailadmin ru Активные шаблоны
add new email address: emailadmin ru Добавить новый адрес эл. почты:
add profile emailadmin ru Добавить Профиль
admin dn emailadmin ru администратор домена
admin password emailadmin ru Пароль администратора
admin username emailadmin ru Имя входа администратора
advanced options emailadmin ru Расширенные настройки
alternate email address emailadmin ru Добавочный адрес эл. почты
any application emailadmin ru Любое приложение
any group emailadmin ru Любая группа
any user emailadmin ru любой пользователь
back to admin/grouplist emailadmin ru Назад к Администрированию/Списку групп
back to admin/userlist emailadmin ru Назад к Администрированию/Списку пользователей
bad login name or password. emailadmin ru Неверное имя пользователя или пароль.
bad or malformed request. server responded: %s emailadmin ru Неверный или нераспознанный запрос. Ответ Сервера: %s
bad request: %s emailadmin ru Неверный запрос: %s
can be used by application emailadmin ru Может быть использовано приложением
can be used by group emailadmin ru Может быть использовано группой
can be used by user emailadmin ru может быть использовано пользователем
connection dropped by imap server. emailadmin ru Соединение разорвано сервером IMAP
continue emailadmin ru Продолжить
could not complete request. reason given: %s emailadmin ru Не могу завершить запрос. Возможная Причина: %s
could not open secure connection to the imap server. %s : %s. emailadmin ru Не могу установить защищенное соединение с сервером IMAP. %s : %s.
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin ru CRAM-MD5 и DIGEST-MD5 требуют установленного пакета Auth_SASL.
cyrus imap server emailadmin ru IMAP сервер Cyrus
cyrus imap server administration emailadmin ru администрирование IMAP сервера Cyrus
default emailadmin ru по умолчанию
deliver extern emailadmin ru доставить внешний
do not validate certificate emailadmin ru не проверять сертификат
do you really want to delete this profile emailadmin ru Вы уверены, что хотите удалить этот Профиль
do you really want to reset the filter for the profile listing emailadmin ru Вы уверены что хотите очистить фильтр для создания списка Профилей
domainname emailadmin ru Имя Домена
edit email settings emailadmin ru Редактировать настройки почты
email account active emailadmin ru Учетная запись включена
email address emailadmin ru Адрес эл. почты
email settings common ru Настройки почты
emailadmin emailadmin ru Администрирование Почты
emailadmin: group assigned profile common ru Администрирование почты: Назначение профиля группы.
emailadmin: user assigned profile common ru Администрирование почты: Назначения профиля пользователя
enable cyrus imap server administration emailadmin ru включить администрирование IMAP сервера Cyrus
enable sieve emailadmin ru Включить Sieve
encrypted connection emailadmin ru зашифрованное соединение
encryption settings emailadmin ru Настройки шифрования
enter your default mail domain (from: user@domain) emailadmin ru Укажите ваш почтовый домен по умолчанию (от: user@domain)
entry saved emailadmin ru Запись сохранена.
error connecting to imap server. %s : %s. emailadmin ru Ошибка соединения с сервером IMAP. %s : %s.
error connecting to imap server: [%s] %s. emailadmin ru Ошибка соединения с сервером IMAP: [%s] %s.
error deleting entry! emailadmin ru Ошибка при удалении записи!
error saving the entry!!! emailadmin ru Ошибка при сохранении записи!
filtered by account emailadmin ru отфильтровано по Учетной записи
filtered by group emailadmin ru отфильтровано по группе
forward also to emailadmin ru Переслать также в
forward email's to emailadmin ru Переслать письма в
forward only emailadmin ru Только переслать
global options emailadmin ru Общие настройки
if using ssl or tls, you must have the php openssl extension loaded. emailadmin ru При использовании SSL или TLS, у вас должен быть установлен PHP с загруженным расширением openssl
imap admin password admin ru пароль администратора IMAP
imap admin user admin ru Имя пользователя для администратора IMAP
imap c-client version < 2001 emailadmin ru Версия C-клиента IMAP < 2001
imap server emailadmin ru Сервер IMAP
imap server closed the connection. emailadmin ru Сервер IMAP разорвал соединение.
imap server closed the connection. server responded: %s emailadmin ru Сервер IMAP разорвал соединение. Сервер сообщил: %s
imap server hostname or ip address emailadmin ru Имя сервера IMAP или его ip-адрес
imap server logintyp emailadmin ru Тип входа сервера IMAP
imap server name emailadmin ru Имя сервера imap
imap server port emailadmin ru Порт сервера IMAP
imap/pop3 server name emailadmin ru Имя сервера IMAP/POP3
in mbyte emailadmin ru В мегабайтах
inactive emailadmin ru Неактивно
ldap basedn emailadmin ru Начальный DN LDAP
ldap server emailadmin ru Сервер LDAP
ldap server accounts dn emailadmin ru DN учетных записей сервера LDAP
ldap server admin dn emailadmin ru DN администратора сервера LDAP
ldap server admin password emailadmin ru Пароль администратора сервера LDAP
ldap server hostname or ip address emailadmin ru Имя сервера LDAP или его ip-адрес
ldap settings emailadmin ru Настройки LDAP
leave empty for no quota emailadmin ru Оставьте пустым для отключения квот
mail settings admin ru Настройки почты
manage stationery templates emailadmin ru Управление бланками шаблонов
mb used emailadmin ru Испоьлзуется MB
name of organisation emailadmin ru Название организации
no alternate email address emailadmin ru Нет дополнительного эл. адреса
no encryption emailadmin ru Без шифрования
no forwarding email address emailadmin ru Нет адреса перенаправления
no message returned. emailadmin ru Нет ответа
no supported imap authentication method could be found. emailadmin ru Поддерживаемый метод авторизации IMAP не найден
order emailadmin ru Упорядочить
organisation emailadmin ru Организация
plesk can't rename users --> request ignored emailadmin ru Plesk не может переименовать пользователей --> запрос проигнорирован
plesk imap server (courier) emailadmin ru Сервер IMAP Plesk (Courier)
plesk mail script '%1' not found !!! emailadmin ru Не найден скрипт '%1' почты Plesk!!!
plesk requires passwords to have at least 5 characters and not contain the account-name --> password not set!!! emailadmin ru Plesk требует длины пароля не менее 5 символов, не содержащий имени аккаунта --> пароль НЕ установлен!!!
plesk smtp-server (qmail) emailadmin ru Plesk SMTP сервер (Qmail)
pop3 server hostname or ip address emailadmin ru Имя компьютера или ip-адрес сервера POP3
pop3 server port emailadmin ru Порт сервера POP3
port emailadmin ru Порт
postfix with ldap emailadmin ru Postfix с LDAP
profile access rights emailadmin ru права доступа к профилю
profile is active emailadmin ru профиль активен
profile list emailadmin ru Список профиля
profile name emailadmin ru Название профиля
qmaildotmode emailadmin ru режим qmaildot
quota settings emailadmin ru Настройки квотирования
quota size in mbyte emailadmin ru Размер квоты в МБ
remove emailadmin ru Удалить
reset filter emailadmin ru Очистить фильтр
select type of imap server emailadmin ru Выбор типа сервера IMAP
select type of imap/pop3 server emailadmin ru Выбор типа сервера IMAP/POP3
select type of smtp server emailadmin ru Выбор типа сервера SMTP
send using this email-address emailadmin ru Отправить с этого адреса eMail
server settings emailadmin ru Настройки сервера
sieve server hostname or ip address emailadmin ru Имя компьютера или IP сервера Sieve
sieve server port emailadmin ru Порт сервера Sieve
sieve settings emailadmin ru Настройки Sieve
smtp authentication emailadmin ru Авторизация SMTP
smtp options emailadmin ru Параметры SMTP
smtp server name emailadmin ru Имя сервера SMTP
smtp settings emailadmin ru Установки SMTP
smtp-server hostname or ip address emailadmin ru Имя компьютера или IP-адрес сервера SMTP
smtp-server port emailadmin ru Порт сервера SMTP
standard emailadmin ru Стандартный
standard imap server emailadmin ru Стандартный IMAP сервер
standard pop3 server emailadmin ru Стандартный POP3 сервер
standard smtp-server emailadmin ru Стандартный SMTP сервер
starts with emailadmin ru Начинается с
stationery emailadmin ru Бланк
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin ru Сервер IMAP не сообщил о поддержке выбранного метода авторизации. Пожалуйста свяжитесь со своим системным администратором.
this php has no imap support compiled in!! emailadmin ru Эта версия PHP собрана без поддержки IMAP!!
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin ru Для использования соединения TLS, у вас должен быть запущен PHP 5.1.0 или выше.
unexpected response from server to authenticate command. emailadmin ru Непредусмотренный ответ сервера на команду AUTHENTICATE.
unexpected response from server to digest-md5 response. emailadmin ru Непредусмотренный ответ сервера на сигнал Digest-MD5.
unexpected response from server to login command. emailadmin ru Непредусмотренный ответ сервера на команду LOGIN.
unknown imap response from the server. server responded: %s emailadmin ru Неизвестный IMAP-ответ от сервера. Сервер сообщил: %s
unsupported action '%1' !!! emailadmin ru Неподдерживаемое действие '%1' !!!
update current email address: emailadmin ru Обновить текущий адрес эл.почты:
use ldap defaults emailadmin ru Использовать настройки LDAP по умолчанию
use predefined username and password defined below emailadmin ru Использовать предопределенное имя пользователя и пароль указанный ниже
use smtp auth emailadmin ru Использовать авторизацию SMTP
use tls authentication emailadmin ru Использовать авторизацию TLS
use tls encryption emailadmin ru Использовать шифрование TLS
use users email-address (as seen in useraccount) emailadmin ru Используйте адреса эл.почты пользователя, как указано в настройках аккаунта пользователя.
user can edit forwarding address emailadmin ru Ползователь может редактировать адрес пересылки.
userid@domain eg. u1234@domain emailadmin ru UserId@domain например u1234@domain
username (standard) emailadmin ru Имя пользователя (стандартное)
username/password defined by admin emailadmin ru Имя пользователя/Пароль установлены администратором
username@domainname (virtual mail manager) emailadmin ru username@domainname (Менеджер Виртуальной почты)
users can define their own emailaccounts emailadmin ru Пользователь может назначать свои собственные учетные записи эл. почты.
users can define their own identities emailadmin ru Пользователи могут устанавливать свои собственные данные идентификации
users can define their own signatures emailadmin ru Пользователи могут устанавливать свои собственные подписи
users can utilize these stationery templates emailadmin ru Пользователи могут использовать эти бланки шаблонов
vacation messages with start- and end-date require an admin account to be set emailadmin ru Сообщения автоответчика с датами начала и окончания требуют установленной учетной записи администратора!
virtual mail manager emailadmin ru Менеджер Виртуальной почты
yes, use credentials below only for alarms and notifications, otherwise use credentials of current user emailadmin ru Да, использовать учётные данные, указанные ниже только для предупреждений и напоминаний, в остальных случаях использовать учётные данные текущего пользователя.
yes, use credentials of current user or if given credentials below emailadmin ru Да, использовать учётные данные текущего пользователя, или если указаны учётные данные ниже.
you have received a new message on the emailadmin ru Вы получили сообщения на
your name emailadmin ru Ваше имя

View File

@ -0,0 +1 @@
email address emailadmin rw email

151
emailadmin/lang/egw_sk.lang Normal file
View File

@ -0,0 +1,151 @@
%1 entries deleted. emailadmin sk %1 položiek odstránených.
account '%1' not found !!! emailadmin sk Účet '%1' sa nenašiel !!!
active templates emailadmin sk Aktívne šablóny
add new email address: emailadmin sk Pridať novú E-mailovú adresu:
add profile emailadmin sk Pridať profil
admin dn emailadmin sk Správcov dn
admin password emailadmin sk Heslo správcu
admin username emailadmin sk Používateľské meno správcu
advanced options emailadmin sk Pokročilé možnosti
alternate email address emailadmin sk Alternatívna E-mailová adresa
any application emailadmin sk Ktorákoľvek aplikácia
any group emailadmin sk Ktorákoľvek skupina
any user emailadmin sk Ktorýkoľvek používateľ
back to admin/grouplist emailadmin sk Späť na Správu/Skupiny
back to admin/userlist emailadmin sk Späť na Správu/Používateľov
bad login name or password. emailadmin sk Chybné prihlasovacie meno alebo heslo.
bad or malformed request. server responded: %s emailadmin sk Chybná požiadavka. Odpoveď servera: %s
bad request: %s emailadmin sk Chybná požiadavka: %s
can be used by application emailadmin sk môže byť použité aplikáciou
can be used by group emailadmin sk môže byť použité skupinou
can be used by user emailadmin sk môže byť použité používateľom
connection dropped by imap server. emailadmin sk Spojenie prerušené IMAP serverom.
continue emailadmin sk Pokračovať
could not complete request. reason given: %s emailadmin sk Nemožno dokončiť požiadavku. Dôvod: %s
could not open secure connection to the imap server. %s : %s. emailadmin sk Nepodarilo sa nadviazať zabezpečené pripojenie k IMAP serveru. %s : %s.
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin sk CRAM-MD5 alebo DIGEST-MD5 vyžaduje, aby bol nainštalovaný balík Auth_SASL.
cyrus imap server emailadmin sk Cyrus IMAP Server
cyrus imap server administration emailadmin sk Správa servera Cyrus IMAP
default emailadmin sk predvolené
deliver extern emailadmin sk doručiť extern
do not validate certificate emailadmin sk neoveriť certifikát
do you really want to delete this profile emailadmin sk Naozaj chcete odstrániť tento Profil
do you really want to reset the filter for the profile listing emailadmin sk Naozaj chcete vynulovať filter pre výpis profilu?
domainname emailadmin sk názov domény
edit email settings emailadmin sk upraviť nastavenia E-mailu
email account active emailadmin sk E-mailový účet je aktívny
email address emailadmin sk E-mailová adresa
email settings common sk Nastavenia E-mailu
emailadmin emailadmin sk EMailAdmin
emailadmin: group assigned profile common sk eMailAdmin: skupinovo priradený Profil
emailadmin: user assigned profile common sk eMailAdmin: používateľsky priradený Profil
enable cyrus imap server administration emailadmin sk zapnúť správu servera Cyrus IMAP
enable sieve emailadmin sk zapnúť Sieve
encrypted connection emailadmin sk šifrované spojenie
encryption settings emailadmin sk nastavenia šifrovania
enter your default mail domain (from: user@domain) emailadmin sk Zadajte vašu predvolenú doménu (z tvaru: user@domain)
entry saved emailadmin sk Položka bola uložená
error connecting to imap server. %s : %s. emailadmin sk Chyba počas pripájania k IMAP serveru. %s : %s.
error connecting to imap server: [%s] %s. emailadmin sk Chyba počas pripájania k IMAP serveru: [%s] %s.
error deleting entry! emailadmin sk Chyba pri odstraňovaní položky!
error saving the entry!!! emailadmin sk Chyba pri ukladaní položky!!!
filtered by account emailadmin sk filtrované podľa Účtu
filtered by group emailadmin sk filtrované podľa Skupiny
forward also to emailadmin sk preposlať taktiež (komu)
forward email's to emailadmin sk preposlať emaily (kam)
forward only emailadmin sk preposlať iba
global options emailadmin sk Globálne možnosti
if using ssl or tls, you must have the php openssl extension loaded. emailadmin sk Ak používate SSL alebo TLS, musíte mať nahraté rozšírenie PHP openssl.
imap admin password admin sk heslo správcu IMAP
imap admin user admin sk používateľ pre správu IMAP
imap c-client version < 2001 emailadmin sk IMAP C-klient verzia < 2001
imap server emailadmin sk IMAP server
imap server closed the connection. emailadmin sk IMAP server ukončil spojenie.
imap server closed the connection. server responded: %s emailadmin sk IMAP server ukončil spojenie. Odpoveď servera: %s
imap server hostname or ip address emailadmin sk názov (hostname) alebo IP adresa IMAP servera
imap server logintyp emailadmin sk typ prihlásenia IMAP servera
imap server name emailadmin sk Názov IMAP servera
imap server port emailadmin sk port IMAP servera
imap/pop3 server name emailadmin sk názov IMAP/POP3 servera
in mbyte emailadmin sk v Megabajtoch
inactive emailadmin sk neaktívne
ldap basedn emailadmin sk LDAP basedn
ldap server emailadmin sk LDAP server
ldap server accounts dn emailadmin sk DN účtov LDAP servera
ldap server admin dn emailadmin sk DN správcu LDAP servera
ldap server admin password emailadmin sk heslo správcu LDAP servera
ldap server hostname or ip address emailadmin sk názov (hostname) alebo IP adresa LDAP servera
ldap settings emailadmin sk nastavenia LDAP
leave empty for no quota emailadmin sk ak nechcete kvóty, ponechajte prázdne
mail settings admin sk nastavenia Pošty
name of organisation emailadmin sk Názov organizácie
no alternate email address emailadmin sk žiadna alternatívna E-mailová adresa
no encryption emailadmin sk bez šifrovania
no forwarding email address emailadmin sk žiadna emailová adresa pre preposielanie
no message returned. emailadmin sk Žiadne správy sa nevrátili.
no supported imap authentication method could be found. emailadmin sk Nenašiel som žiadnu podporovanú overovaciu metódu IMAP.
order emailadmin sk Poradie
organisation emailadmin sk Organizácia
plesk can't rename users --> request ignored emailadmin sk Plesk používatelia sa nedajú premenovať --> požiadavka ignorovaná
plesk imap server (courier) emailadmin sk Plesk IMAP Server (Courier)
plesk mail script '%1' not found !!! emailadmin sk Plesk mail script '%1' sa nenašlo !!!
plesk requires passwords to have at least 5 characters and not contain the account-name --> password not set!!! emailadmin sk Plesk vyžaduje, aby heslá mali aspoň 5 znakov a neobsahovali názov účtu --> heslo NEBOLO nastavené!!!
plesk smtp-server (qmail) emailadmin sk Plesk SMTP-Server (qmail)
pop3 server hostname or ip address emailadmin sk názov (hostname) alebo IP adresa POP3 servera
pop3 server port emailadmin sk port POP3 servera
port emailadmin sk Port
postfix with ldap emailadmin sk Postfix + LDAP
profile access rights emailadmin sk prístupové práva profilu
profile is active emailadmin sk profil je aktívny
profile list emailadmin sk Zoznam profilov
profile name emailadmin sk Názov profilu
qmaildotmode emailadmin sk qmail bodkový režim
quota settings emailadmin sk Nastavenia kvóty
quota size in mbyte emailadmin sk veľkosť kvóty v Megabajtoch
remove emailadmin sk Odstrániť
reset filter emailadmin sk vynulovať filter
select type of imap server emailadmin sk Vyberte typ IMAP servera
select type of imap/pop3 server emailadmin sk Vyberte typ IMAP/POP3 servera
select type of smtp server emailadmin sk Vyberte typ SMTP servera
send using this email-address emailadmin sk odoslať pomocou tejto e-mailovej adresy
server settings emailadmin sk Nastavenia servera
sieve server hostname or ip address emailadmin sk Názov (hostname) alebo IP Sieve servera
sieve server port emailadmin sk Nort Sieve servera
sieve settings emailadmin sk Nastavenia Sieve
smtp authentication emailadmin sk SMTP overovanie
smtp options emailadmin sk SMTP možnosti
smtp server name emailadmin sk Názov SMTP servera
smtp settings emailadmin sk SMTP nastavenia
smtp-server hostname or ip address emailadmin sk názov (hostname) alebo IP adresa SMTP servera
smtp-server port emailadmin sk port SMTP servera
standard emailadmin sk Štandard
standard imap server emailadmin sk Štandardný IMAP server
standard pop3 server emailadmin sk Štandardný POP3 server
standard smtp-server emailadmin sk Štandardný SMTP server
starts with emailadmin sk začať s
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin sk Tento IMAP server, zdá sa, nepodporuje zvolenú overovaciu metódu. Prosím kontaktujte správcu systému.
this php has no imap support compiled in!! emailadmin sk Toto PHP nemá zakompilovanú podporu pre IMAP !!
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin sk Ak chcete používať pripojenie TLS, musíte fungovať na verzii PHP 5.1.0 alebo vyššej.
unexpected response from server to authenticate command. emailadmin sk Neočakávaná odpoveď od servera na príkaz AUTENTICATE.
unexpected response from server to digest-md5 response. emailadmin sk Neočakávaná odpoveď od servera na Digest-MD5 odpoveď.
unexpected response from server to login command. emailadmin sk Neočakávaná odpoveď od servera na príkaz LOGIN.
unknown imap response from the server. server responded: %s emailadmin sk Neznáma IMAP odpoveď od servera. Server odpovedal: %s
unsupported action '%1' !!! emailadmin sk Nepodporovaná akcia '%1' !!!
update current email address: emailadmin sk Aktualizovať súčasnú E-mailovú adresu:
use ldap defaults emailadmin sk Použiť predvolené hodnoty LDAP
use predefined username and password defined below emailadmin sk Použiť preddefinované používateľské meno a heslo, definované nižšie
use smtp auth emailadmin sk Použiť SMTP overovanie
use tls authentication emailadmin sk Použiť TLS overovanie
use tls encryption emailadmin sk Použiť TLS šifrovanie
use users email-address (as seen in useraccount) emailadmin sk použiť emailové adresy používateľov (ako vidno v používateľskom účte)
user can edit forwarding address emailadmin sk Používateľ môže upraviť adresu preposielania
username (standard) emailadmin sk používateľské meno (štandardné)
username/password defined by admin emailadmin sk Používateľské meno/heslo definované správcom
username@domainname (virtual mail manager) emailadmin sk používateľ@doména (Virtuálny Mail ManaGeR)
users can define their own emailaccounts emailadmin sk Používatelia môžu definovať ich vlastné E-mailové účty
users can define their own identities emailadmin sk Používatelia môžu definovať svoje vlastné identity
users can define their own signatures emailadmin sk Používatelia môžu definovať svoje vlastné podpisy
virtual mail manager emailadmin sk Virtuálny MAIL ManaGeR
yes, use credentials below only for alarms and notifications, otherwise use credentials of current user emailadmin sk Áno, použiť nižšieuvedené prístupové údaje iba pre upozornenia, ináč použiť prístupové údaje aktuálneho používateľa
yes, use credentials of current user or if given credentials below emailadmin sk Áno, použiť prístupové údaje aktuálneho používateľa, alebo prístupové údaje uvedené nižšie ak sú vyplnené
you have received a new message on the emailadmin sk Obdržali ste novú správu ohľadom

145
emailadmin/lang/egw_sl.lang Normal file
View File

@ -0,0 +1,145 @@
account '%1' not found !!! emailadmin sl Račun '%1' ni bil najden!
add new email address: emailadmin sl Dodaj nov e-naslov:
add profile emailadmin sl Dodaj profil
admin dn emailadmin sl Oskrbnikov dn
admin password emailadmin sl Oskrbnikovo geslo
admin username emailadmin sl Oskrbnikovo uporabniško ime
advanced options emailadmin sl Napredne izbire
alternate email address emailadmin sl Alternativen E-naslov
any application emailadmin sl Katerakoli aplikacija
any group emailadmin sl Katerakoli skupina
any user emailadmin sl Katerikoli uporabnik
back to admin/grouplist emailadmin sl Nazaj na Admin/Seznam skupin
back to admin/userlist emailadmin sl Nazaj na Admin/Seznam uporabnikov
bad login name or password. emailadmin sl Napačno uporabniško ime ali geslo.
bad or malformed request. server responded: %s emailadmin sl Napačna ali napačno oblikovana zahteva. Odgovor strežnika: %s
bad request: %s emailadmin sl Napačna zahteva: %s
can be used by application emailadmin sl Je lahko uporabljen iz aplikacije
can be used by group emailadmin sl Je lahko uporabljen iz skupine
can be used by user emailadmin sl Lahko uporablja uporabnik
connection dropped by imap server. emailadmin sl Strežnik IMAP je prekinil povezavo.
continue emailadmin sl Nadaljuj
could not complete request. reason given: %s emailadmin sl Ne morem dokončati zahteve. Podan vzrok: %s
could not open secure connection to the imap server. %s : %s. emailadmin sl Ne morem odpreti varne povezave s strežnikom IMAP. %s : %s.
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin sl CRAM-MD5 ali DIGEST-MD5 zahteva, da je nameščen paket Auth_SASL.
cyrus imap server emailadmin sl Cyrus IMAP strežnik
cyrus imap server administration emailadmin sl Upravljanje Cyrus IMAP strežnika
default emailadmin sl Privzeto
deliver extern emailadmin sl Zunanja dostava
do not validate certificate emailadmin sl Ne preverjaj certifikata
do you really want to delete this profile emailadmin sl Ali res želite izbrisati ta profil?
do you really want to reset the filter for the profile listing emailadmin sl Res želite ponastaviti filter za listanje profilov?
domainname emailadmin sl Ime domene
edit email settings emailadmin sl Uredi nastavitve E-pošte
email account active emailadmin sl Nabiralnik E-pošte je aktiven
email address emailadmin sl E-naslov
email settings common sl Nastavitve E-pošte
emailadmin emailadmin sl EMailAdmin
emailadmin: group assigned profile common sl eMailAdmin: profil, dodeljen skupini
emailadmin: user assigned profile common sl eMailAdmin: profil, dodeljen uprabniku
enable cyrus imap server administration emailadmin sl Omogoči upravljanje Cyrus IMAP strežnika
enable sieve emailadmin sl Omogoči Sieve
encrypted connection emailadmin sl Kodirana povezava
encryption settings emailadmin sl Nastavitve šifriranja
enter your default mail domain (from: user@domain) emailadmin sl Vnesite privzeto domeno (oblika: uporabnik@domena)
entry saved emailadmin sl Vnos shranjen
error connecting to imap server. %s : %s. emailadmin sl Napaka pri povezavi s strežnikom IMAP. %s: %s.
error connecting to imap server: [%s] %s. emailadmin sl Napaka pri povezavi s strežnikom IMAP: [%s] %s.
error saving the entry!!! emailadmin sl Napaka pri shranjevanju vnosa!
filtered by account emailadmin sl Filtrirano s strani računa
filtered by group emailadmin sl Filtrirano s strani skupine
forward also to emailadmin sl Posreduj tudi
forward email's to emailadmin sl Posreduj sporočila k
forward only emailadmin sl Samo posreduj
global options emailadmin sl Globalne možnosti
if using ssl or tls, you must have the php openssl extension loaded. emailadmin sl Če uporabljate SSL ali TLS, morate imeti naloženo razširitev PHP openssl
imap admin password admin sl Geslo oskrbnika IMAPa
imap admin user admin sl Uporabniško ime oskrbnika IMAP-a
imap c-client version < 2001 emailadmin sl IMAP C-klient različica pred 2001
imap server emailadmin sl Strežnik IMAP
imap server closed the connection. emailadmin sl Strežnik IMAP je prekinil povezavo.
imap server closed the connection. server responded: %s emailadmin sl Strežnik IMAP je prekinil povezavo. Odgovor strežnika: %s
imap server hostname or ip address emailadmin sl Ime ali IP strežnika IMAP
imap server logintyp emailadmin sl Način prijave strežnik IMAP
imap server name emailadmin sl Ime strežnika IMAP
imap server port emailadmin sl Vrata strežnika IMAP
imap/pop3 server name emailadmin sl Ime strežnika IMAP/POP3
in mbyte emailadmin sl v MB
inactive emailadmin sl Neaktivno
ldap basedn emailadmin sl Osnovni DN LDAP
ldap server emailadmin sl Strežnik LDAP
ldap server accounts dn emailadmin sl DN računov LDAP strežnika
ldap server admin dn emailadmin sl Oskrbnikov DN LDAP strežnika
ldap server admin password emailadmin sl Geslo oskrbnika LDAP strežnika
ldap server hostname or ip address emailadmin sl Ime ali IP strežnika LDAP
ldap settings emailadmin sl Nastavitve LDAP
leave empty for no quota emailadmin sl Pustite prazno za neomejeno
mail settings admin sl Nastavitve E-pošte
name of organisation emailadmin sl Ime organizacije
no alternate email address emailadmin sl Ni alternativnega E-naslova
no encryption emailadmin sl Brez šifriranja
no forwarding email address emailadmin sl Ni E-naslova za posredovanje
no message returned. emailadmin sl Ni vrnjenega sporočila.
no supported imap authentication method could be found. emailadmin sl Ni najdena metoda avtentikacije IMAP.
order emailadmin sl Vrstni red
organisation emailadmin sl Organizacija
plesk can't rename users --> request ignored emailadmin sl Plesk ne more preimenovati uporabnikov --> zahteva preslišana
plesk imap server (courier) emailadmin sl Strežnik Plesk IMAP (Courier)
plesk mail script '%1' not found !!! emailadmin sl Poštni skript Plesk '%1' ni bil najden!
plesk requires passwords to have at least 5 characters and not contain the account-name --> password not set!!! emailadmin sl Plesk zahteva geslo, dolga najmanj 5 znakov in ne sme vsebovati imena računa --> geslo ni bilo nastavljeno!
plesk smtp-server (qmail) emailadmin sl Strežnik Plesk IMAP (Qmail)
pop3 server hostname or ip address emailadmin sl Ime ali IP POP3 strežnika
pop3 server port emailadmin sl Vrata POP3 strežnika
port emailadmin sl Vrata
postfix with ldap emailadmin sl Končnica pri LDAP
profile access rights emailadmin sl Pravice dostopa do profila
profile is active emailadmin sl Profil je aktiven
profile list emailadmin sl Seznam profilov
profile name emailadmin sl Ime profila
qmaildotmode emailadmin sl Način za qmaildot
quota settings emailadmin sl Nastavitvev kvote
quota size in mbyte emailadmin sl Velikost kvote v MB
remove emailadmin sl Odstrani
reset filter emailadmin sl Ponastavi filter
select type of imap server emailadmin sl Izberite vrsto strežnika IMAP
select type of imap/pop3 server emailadmin sl Izberite tip IMAP/POP3 strežnika
select type of smtp server emailadmin sl Izberite tip SMTP strežnika
server settings emailadmin sl Nastavitve strežnika
sieve server hostname or ip address emailadmin sl IP ali naslov strežnika za sito (Sieve)
sieve server port emailadmin sl Vrata strežnika za sito (Sieve)
sieve settings emailadmin sl Nastavitve sita (Sieve)
smtp authentication emailadmin sl SMTP avtentikacija
smtp options emailadmin sl SMTP možnosti
smtp server name emailadmin sl ime SMTP strežnika
smtp settings emailadmin sl SMTP nastavitve
smtp-server hostname or ip address emailadmin sl Ime ali IP SMTP strežnika
smtp-server port emailadmin sl Vrata SMTP strežnika
standard emailadmin sl Standarden
standard imap server emailadmin sl Standardni IMAP strežnik
standard pop3 server emailadmin sl Standardni POP3 strežnik
standard smtp-server emailadmin sl Standardni SMTP strežnik
stationery emailadmin sl Stacionarno
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin sl Strežnik IMAP ne podpira izbrane metode avtentikacije. Kontaktirajte sistemskega upravitelja.
this php has no imap support compiled in!! emailadmin sl Ta PHP ne vsebuje podpore za IMAP!
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin sl Če želite uporabljati povezavo TLS, morate imeti nameščeno različico PHP 5.1.0 ali višjo.
unexpected response from server to authenticate command. emailadmin sl Nepričakovan odgovor strežnika na ukaz AUTHENTICATE.
unexpected response from server to digest-md5 response. emailadmin sl Nepričakovan odgovor strežnika na odgovor Digest-MD5.
unexpected response from server to login command. emailadmin sl Nepričakovan odgovor strežnika na ukaz LOGIN.
unknown imap response from the server. server responded: %s emailadmin sl Neznan odgovor IMAP s strani strežnika. Odgovor strežnika: %s
unsupported action '%1' !!! emailadmin sl Nepodprto dejanje '%1'!
update current email address: emailadmin sl Posodobi trenutni e-naslov:
use ldap defaults emailadmin sl Uporabi privzeto za LDAP
use predefined username and password defined below emailadmin sl Uporabi spodnje, vnaprej določeno uporabniško ime in geslo
use smtp auth emailadmin sl Uporabi SMTP avtentikacijo
use tls authentication emailadmin sl Uporabi TLS avtentikacijo
use tls encryption emailadmin sl Uporabi TLS enkripcijo
user can edit forwarding address emailadmin sl Uporabnik lahko določa posredovalni naslov
username (standard) emailadmin sl Uporabnik (standardno)
username/password defined by admin emailadmin sl Uporabniško ime/geslo dodeljeno s strani administratorja
username@domainname (virtual mail manager) emailadmin sl uporabnik@domena (Virtual MAIL ManaGeR)
users can define their own emailaccounts emailadmin sl Uporabniki lahko določajo lastne E-poštne predale
users can define their own identities emailadmin sl Uporabniki lahko določijo lastne identitete
users can define their own signatures emailadmin sl Uporabniki lahko določijo lastne podpise
virtual mail manager emailadmin sl Virtualni upravljalec E-pošte
you have received a new message on the emailadmin sl Prejeli ste novo sporočilo na
your name emailadmin sl Vaše ime

100
emailadmin/lang/egw_sv.lang Normal file
View File

@ -0,0 +1,100 @@
add profile emailadmin sv Skapa profil
admin dn emailadmin sv Admin dn
admin password emailadmin sv Admin lösenord
admin username emailadmin sv Admin användare
advanced options emailadmin sv Avanserade alternativ
alternate email address emailadmin sv Alternerande e-post adress
bad login name or password. emailadmin sv Ogiltigt användarna eller lösenord
bad or malformed request. server responded: %s emailadmin sv Ogiltig eller ofullständig förfrågan. Server svarade: %s
bad request: %s emailadmin sv Ogiltig förfrågan: %s
connection dropped by imap server. emailadmin sv Anslutningen stängd av IMAP server
continue emailadmin sv Fortsätt
could not complete request. reason given: %s emailadmin sv Kunde inte fullfölja förfrågan. Svaret: %s
could not open secure connection to the imap server. %s : %s. emailadmin sv Kunde inte öppna en söker anslutning till IMAP servern. %s: %s
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin sv CRAM-MD5 och DIGEST-MD5 kräver att Auth_SASL paketet installerats
cyrus imap server emailadmin sv Cyrus IMAP Server
cyrus imap server administration emailadmin sv Cyrus IMAP server administration
default emailadmin sv Standard
deliver extern emailadmin sv Leverera extern
do not validate certificate emailadmin sv Validera inte certifikat
do you really want to delete this profile emailadmin sv Vill du verkligen radera profilen?
domainname emailadmin sv Domän namn
edit email settings emailadmin sv Redigera e-post alternativ
email account active emailadmin sv Aktivt e-post konto
email address emailadmin sv E-post adress
enable cyrus imap server administration emailadmin sv Aktivera Cyrus IMAP server administration
enable sieve emailadmin sv Aktivera Sieve
encrypted connection emailadmin sv Krypterad anslutning
enter your default mail domain (from: user@domain) emailadmin sv Standard e-post domän (från: user@domain)
entry saved emailadmin sv Post sparad
error connecting to imap server. %s : %s. emailadmin sv Kunde inte ansluta till IMAP server %s : %s
error connecting to imap server: [%s] %s. emailadmin sv Kunde inte ansluta till IMAP server [%s] %s
error saving the entry!!! emailadmin sv Fel uppstod vid sparandet av posten!
forward also to emailadmin sv Vidarebefodra även till
forward email's to emailadmin sv Vidarebefodra e-post till
forward only emailadmin sv Vidarebefodra endast
if using ssl or tls, you must have the php openssl extension loaded. emailadmin sv Om du vill använda SSL eller TLS måste PHP openssl stödet laddas
imap admin password admin sv IMAP admin lösenord
imap admin user admin sv IMAP admin användare
imap c-client version < 2001 emailadmin sv IMAP C-Client version < 2001
imap server emailadmin sv IMAP Server
imap server closed the connection. emailadmin sv IMAP server stängde anslutningen
imap server closed the connection. server responded: %s emailadmin sv IMAP server stängde anslutningen. Serverna svarade: %s
imap server hostname or ip address emailadmin sv IMAP server hostnamn eller IP adress
imap server logintyp emailadmin sv IMAP server inloggnings typ
imap server port emailadmin sv IMAP server port
imap/pop3 server name emailadmin sv IMAP/POP3 server namn
in mbyte emailadmin sv i MByte
ldap basedn emailadmin sv LDAP basedn
ldap server emailadmin sv LDAP server
ldap server accounts dn emailadmin sv LDAP server konton DN
ldap server admin dn emailadmin sv LDAP server admin DN
ldap server admin password emailadmin sv LDAP server admin lösenord
ldap server hostname or ip address emailadmin sv LDAP server hostnamn eller IP adress
ldap settings emailadmin sv LDAP alternativ
leave empty for no quota emailadmin sv Lämna tomt för ingen kvot
mail settings admin sv E-post alternativ
name of organisation emailadmin sv Organisations namn
no alternate email address emailadmin sv Ingen alternerande e-post adress
no encryption emailadmin sv Ingen kryptering
no forwarding email address emailadmin sv Ingen e-post vidarebefodrings adress
no message returned. emailadmin sv Inget svar meddelandes
no supported imap authentication method could be found. emailadmin sv Kunde inte hitta supporterad IMAP autentiserings metod
order emailadmin sv Sortering
organisation emailadmin sv Organisation
pop3 server hostname or ip address emailadmin sv POP3 server hostnamn eller IP adress
pop3 server port emailadmin sv POP3 server port
port emailadmin sv Port
postfix with ldap emailadmin sv Postfix med LDAP
profile list emailadmin sv Profil lista
profile name emailadmin sv Profil namn
qmaildotmode emailadmin sv qmaildotmode
quota settings emailadmin sv Kvot alternativ
quota size in mbyte emailadmin sv Kvotstorlek i Mb
remove emailadmin sv Radera
select type of imap/pop3 server emailadmin sv Välj typ av IMAP/POP3 server
select type of smtp server emailadmin sv Välj typ av SMTP Server
sieve server hostname or ip address emailadmin sv Sieve server hostnamn eller IP adress
sieve server port emailadmin sv Sieve server port
sieve settings emailadmin sv Sieve alternativ
smtp server name emailadmin sv SMTP server namn
smtp settings emailadmin sv SMTP alternativ
smtp-server hostname or ip address emailadmin sv SMTP server hostnamn eller IP adress
smtp-server port emailadmin sv SMTP server port
standard emailadmin sv Standard
standard imap server emailadmin sv Standard IMAP server
standard pop3 server emailadmin sv Standard POP3 server
standard smtp-server emailadmin sv Standard SMTP server
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin sv IMAP servern verkar inte stödja den autentiserings metod du valt. Var god och kontakta administratör.
this php has no imap support compiled in!! emailadmin sv Denna installation har inte IMAP stöd kompilerat i PHP.
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin sv För att använda TLS anslutning måste du ha PHP version 5.1.0 eller högre
unexpected response from server to authenticate command. emailadmin sv Oväntat svar från servern på AUTENTISERINGS kommandot
unexpected response from server to digest-md5 response. emailadmin sv Oväntat svar från servern på Digest-MD5
unexpected response from server to login command. emailadmin sv Oväntat svar från servern på INLOGGINGS kommandot
unknown imap response from the server. server responded: %s emailadmin sv Okänt IMAP svar från server. Svarade: %s
use ldap defaults emailadmin sv använd LDAP standarder
use smtp auth emailadmin sv Använd SMTP autentisering
use tls authentication emailadmin sv Använd TLS autentisering
use tls encryption emailadmin sv Använd TLS kryptering
users can define their own emailaccounts emailadmin sv Användare kan definiera egna epost konton?
virtual mail manager emailadmin sv Virtuell E-post administration

View File

@ -0,0 +1,5 @@
default emailadmin tr Varsayýlan
mail settings admin tr Mail ayarlarý
order emailadmin tr Sýralama
remove emailadmin tr Kaldýr
standard emailadmin tr standart

View File

@ -0,0 +1,4 @@
default emailadmin uk По замовченню
order emailadmin uk Послідовність
remove emailadmin uk Видалити
standard emailadmin uk стандарт

View File

@ -0,0 +1 @@
order emailadmin vi Th&#7913; t&#7921;

View File

@ -0,0 +1,127 @@
account '%1' not found !!! emailadmin zh-tw 找不到帳號 '%1'
add new email address: emailadmin zh-tw 新增信箱:
add profile emailadmin zh-tw 新增資料
admin dn emailadmin zh-tw 管理 dn
admin password emailadmin zh-tw 管理密碼
admin username emailadmin zh-tw 管理帳號
advanced options emailadmin zh-tw 進階選項
alternate email address emailadmin zh-tw 替代郵件位址
any application emailadmin zh-tw 任何模組
any group emailadmin zh-tw 任何群組
bad login name or password. emailadmin zh-tw 帳號或密碼有誤。
bad or malformed request. server responded: %s emailadmin zh-tw 錯誤的請求,伺服器回應: %s
bad request: %s emailadmin zh-tw 錯誤的請求: %s
can be used by application emailadmin zh-tw 可以取用資料的模組
can be used by group emailadmin zh-tw 可以取用資料的群組
connection dropped by imap server. emailadmin zh-tw 連線被 IMAP 伺服器中斷了
continue emailadmin zh-tw 繼續
could not complete request. reason given: %s emailadmin zh-tw 無法完成請求,理由: %s
could not open secure connection to the imap server. %s : %s. emailadmin zh-tw 無法開啟安全連線到 IMAP 伺服器。%s : %s.
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin zh-tw CRAM-MD5 或 DIGEST-MD5 需要先安裝 Auth_SASL 才能使用。
cyrus imap server emailadmin zh-tw Cyrus IMAP伺服器
cyrus imap server administration emailadmin zh-tw Cyrus IMAP伺服器管理
default emailadmin zh-tw 預設
deliver extern emailadmin zh-tw 傳送到外部
do not validate certificate emailadmin zh-tw 沒有可用的執照
do you really want to delete this profile emailadmin zh-tw 您確定要刪除這個資料
domainname emailadmin zh-tw 網域名稱
edit email settings emailadmin zh-tw 編輯郵件設定
email account active emailadmin zh-tw 郵件帳號啟用
email address emailadmin zh-tw 郵件位址
email settings common zh-tw 郵件設定
emailadmin emailadmin zh-tw 郵件管理
enable cyrus imap server administration emailadmin zh-tw 啟用Cyrus IMAP伺服器管理
enable sieve emailadmin zh-tw 啟用Sieve
encrypted connection emailadmin zh-tw 加密連線
encryption settings emailadmin zh-tw 加密設定
enter your default mail domain (from: user@domain) emailadmin zh-tw 輸入您的預設郵件網域(小老鼠後面所有字:帳號@網域)
entry saved emailadmin zh-tw 資料儲存了
error connecting to imap server. %s : %s. emailadmin zh-tw 連線到 IMAP 伺服器時發生錯誤。 %s : %s
error connecting to imap server: [%s] %s. emailadmin zh-tw 連線到 IMAP 伺服器時發生錯誤。 [%s] %s
error saving the entry!!! emailadmin zh-tw 儲存資料時發生錯誤!
forward also to emailadmin zh-tw 同時轉寄到
forward email's to emailadmin zh-tw 轉寄信件到
forward only emailadmin zh-tw 轉寄
global options emailadmin zh-tw 全域選項
if using ssl or tls, you must have the php openssl extension loaded. emailadmin zh-tw 如果使用 SSL 或 TLS您必須先載入 PHP openssl 外掛。
imap admin password admin zh-tw IMAP管理者密碼
imap admin user admin zh-tw IMAP管理者帳號
imap c-client version < 2001 emailadmin zh-tw IMAP C-終端的版本小於2001
imap server emailadmin zh-tw IMAP伺服器
imap server closed the connection. emailadmin zh-tw IMAP伺服器關閉連線
imap server closed the connection. server responded: %s emailadmin zh-tw IMAP伺服器關閉連線伺服器回應 %s
imap server hostname or ip address emailadmin zh-tw IMAP伺服器的主機名稱或是IP位址
imap server logintyp emailadmin zh-tw IMAP伺服器登入類型
imap server name emailadmin zh-tw IMAP伺服器名稱
imap server port emailadmin zh-tw IMAP伺服器連接埠
imap/pop3 server name emailadmin zh-tw IMAP/POP3伺服器名稱
in mbyte emailadmin zh-tw 以MB顯示
ldap basedn emailadmin zh-tw LDAP basedn
ldap server emailadmin zh-tw LDAP 伺服器
ldap server accounts dn emailadmin zh-tw LDAP 伺服器帳號 DN
ldap server admin dn emailadmin zh-tw LDAP 伺服器管理者 DN
ldap server admin password emailadmin zh-tw LDAP 伺服器管理者密碼
ldap server hostname or ip address emailadmin zh-tw LDAP 伺服器主機名稱或是IP位址
ldap settings emailadmin zh-tw LDAP 設定
leave empty for no quota emailadmin zh-tw 不填入任何資料表示無限制
mail settings admin zh-tw 郵件設定
name of organisation emailadmin zh-tw 組織名稱
no alternate email address emailadmin zh-tw 沒有可替換的郵件位址
no encryption emailadmin zh-tw 沒有加密
no forwarding email address emailadmin zh-tw 沒有轉寄郵件位址
no message returned. emailadmin zh-tw 沒有訊息回應。
no supported imap authentication method could be found. emailadmin zh-tw 找不到可以支援的 IMAP 認證方式。
order emailadmin zh-tw 順序
organisation emailadmin zh-tw 組織
plesk can't rename users --> request ignored emailadmin zh-tw Plesk 無法修改使用者名稱 --> 忽略
plesk imap server (courier) emailadmin zh-tw Plesk IMAP 伺服器(Courier)
plesk mail script '%1' not found !!! emailadmin zh-tw 找不到 Plesk 郵件指令 '%1'
plesk requires passwords to have at least 5 characters and not contain the account-name --> password not set!!! emailadmin zh-tw Plesk 要求密碼至少必須有 5 個字元而且不能包含帳號名稱 --> 密碼沒有設定!
plesk smtp-server (qmail) emailadmin zh-tw Plesk SMTP伺服器 (Qmail)
pop3 server hostname or ip address emailadmin zh-tw POP3伺服器主機名稱或是IP位址
pop3 server port emailadmin zh-tw POP3伺服器連接埠
port emailadmin zh-tw 連接埠
postfix with ldap emailadmin zh-tw 使用LDAP與 Postfix
profile access rights emailadmin zh-tw 存取資料權限
profile list emailadmin zh-tw 資料清單
profile name emailadmin zh-tw 資料名稱
qmaildotmode emailadmin zh-tw qmaildotmode
quota settings emailadmin zh-tw 配額設定
quota size in mbyte emailadmin zh-tw 配額大小MB
remove emailadmin zh-tw 移除
select type of imap server emailadmin zh-tw 選擇IMAP伺服器類型
select type of imap/pop3 server emailadmin zh-tw 選擇IMAP/POP3伺服器的格式
select type of smtp server emailadmin zh-tw 選擇SMTP伺服器的格式
server settings emailadmin zh-tw 伺服器設定
sieve server hostname or ip address emailadmin zh-tw Sieve伺服器主機名稱或是IP位址
sieve server port emailadmin zh-tw Sieve伺服器連接埠
sieve settings emailadmin zh-tw Sieve設定
smtp authentication emailadmin zh-tw SMTP 認證
smtp options emailadmin zh-tw SMTP 選項
smtp server name emailadmin zh-tw SMTP伺服器名稱
smtp settings emailadmin zh-tw SMTP 設定
smtp-server hostname or ip address emailadmin zh-tw SMTP伺服器主機名稱或是IP位址
smtp-server port emailadmin zh-tw SMTP伺服器連接埠
standard emailadmin zh-tw 標準
standard imap server emailadmin zh-tw 標準IMAP伺服器
standard pop3 server emailadmin zh-tw 標準POP3伺服器
standard smtp-server emailadmin zh-tw 標準SMTP伺服器
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin zh-tw IMAP 伺服器不支援指定的認證方式,請聯絡您的系統管理員。
this php has no imap support compiled in!! emailadmin zh-tw 您的PHP並未編譯為支援IMAP的狀態
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin zh-tw 要使用 TLS 連線,您必須執行在 PHP 5.1.0 或是更新版本。
unexpected response from server to authenticate command. emailadmin zh-tw AUTHENTICATE 指令讓伺服器傳回不如預期的回應。
unexpected response from server to digest-md5 response. emailadmin zh-tw 伺服器傳回不如預期的 Digest-MD5 回應。
unexpected response from server to login command. emailadmin zh-tw 伺服器傳回不如預期的 LOGIN 指令。
unknown imap response from the server. server responded: %s emailadmin zh-tw 不知名的 IMAP 伺服器回應,回應內容: %s
unsupported action '%1' !!! emailadmin zh-tw 不支援 '%1' 這個操作!
update current email address: emailadmin zh-tw 更新目前信箱:
use ldap defaults emailadmin zh-tw 使用LDAP預設值
use smtp auth emailadmin zh-tw 使用SMTP認證
use tls authentication emailadmin zh-tw 使用TLS認證
use tls encryption emailadmin zh-tw 使用TLS加密
user can edit forwarding address emailadmin zh-tw 使用者可以編輯自動轉寄信箱
username (standard) emailadmin zh-tw 帳號(標準)
username@domainname (virtual mail manager) emailadmin zh-tw 帳號@網域(虛擬郵件管理)
users can define their own emailaccounts emailadmin zh-tw 使用者可以自行定義郵件帳號
virtual mail manager emailadmin zh-tw 虛擬郵件管理者
your name emailadmin zh-tw 您的名稱

128
emailadmin/lang/egw_zh.lang Normal file
View File

@ -0,0 +1,128 @@
account '%1' not found !!! emailadmin zh 帐户 '%1' 未发现!
add new email address: emailadmin zh 添加新邮箱地址:
add profile emailadmin zh 添加 profile
admin dn emailadmin zh 管理 DN
admin password emailadmin zh 管理密码
admin username emailadmin zh 管理帐户
advanced options emailadmin zh 高级选项
alternate email address emailadmin zh 候选邮箱地址
any application emailadmin zh 任何用用程序
any group emailadmin zh 任何组
bad login name or password. emailadmin zh 错误登录名和密码。
bad or malformed request. server responded: %s emailadmin zh 不正确的请求。服务器或应:%s
bad request: %s emailadmin zh 错误请求:%s
can be used by application emailadmin zh 可用于应用程序
can be used by group emailadmin zh 可用于群组
connection dropped by imap server. emailadmin zh 连接被 IMAP 服务器中断。
continue emailadmin zh 继续
could not complete request. reason given: %s emailadmin zh 无法完成请求。原因是:%s
could not open secure connection to the imap server. %s : %s. emailadmin zh 无法打开到 IMAP 服务器的安全连接。%s:%s。
cram-md5 or digest-md5 requires the auth_sasl package to be installed. emailadmin zh CRAM-MD5 或 DIGEST-MD5 需要安装 auth_sasl 包。
cyrus imap server emailadmin zh Cyrus IMAP 服务器
cyrus imap server administration emailadmin zh Cyrus IMAP 服务器管理
default emailadmin zh 默认
deliver extern emailadmin zh 传送外部
do not validate certificate emailadmin zh 不确认证书
do you really want to delete this profile emailadmin zh 您确定要删除这个 profile 文件
domainname emailadmin zh 域名
edit email settings emailadmin zh 编辑邮箱设置
email account active emailadmin zh 邮箱帐户激活
email address emailadmin zh 邮箱地址
email settings common zh 邮箱设置
emailadmin emailadmin zh 邮箱管理
enable cyrus imap server administration emailadmin zh 启用 Cyrus IMAP 服务器管理
enable sieve emailadmin zh 启用过滤
encrypted connection emailadmin zh 加密连接
encryption settings emailadmin zh 加密设置
enter your default mail domain (from: user@domain) emailadmin zh 输入您的默认邮箱域 (比如user@domain取@之后的所有词或字母)
entry saved emailadmin zh 条目已储存
error connecting to imap server. %s : %s. emailadmin zh 连接到 IMAP 服务器错误。%s : %s。
error connecting to imap server: [%s] %s. emailadmin zh 连接到 IMAP 服务器错误:[%s] %s。
error saving the entry!!! emailadmin zh 保存条目时发生错误!
forward also to emailadmin zh 同时转发到
forward email's to emailadmin zh 转发邮件到
forward only emailadmin zh 转发
global options emailadmin zh 全局选项
if using ssl or tls, you must have the php openssl extension loaded. emailadmin zh 如果使用 SSL 或 TLS您必须加载 PHP openssl 扩展。
imap admin password admin zh IMAP 管理者密码
imap admin user admin zh IMAP 管理者帐户
imap c-client version < 2001 emailadmin zh IMAP C-Clien 版本小 < 2001
imap server emailadmin zh IMAP 服务器
imap server closed the connection. emailadmin zh IMAP 服务器关闭连接。
imap server closed the connection. server responded: %s emailadmin zh IMAP 服务器关闭连接。服务器回应:%s
imap server hostname or ip address emailadmin zh IMAP 服务器的主机名或 IP 地址
imap server logintyp emailadmin zh IMAP 服务器登录类型
imap server name emailadmin zh IMAP 服务器名
imap server port emailadmin zh IMAP 服务器端口号
imap/pop3 server name emailadmin zh IMAP / POP3 服务器名
in mbyte emailadmin zh 以 MB 表示
ldap basedn emailadmin zh LDAP basedn
ldap server emailadmin zh LDAP 服务器
ldap server accounts dn emailadmin zh LDAP 服务器帐户 DN
ldap server admin dn emailadmin zh LDAP 服务器管理员 DN
ldap server admin password emailadmin zh LDAP 服务器管管理员密码
ldap server hostname or ip address emailadmin zh LDAP 服务器主机名或 IP 地址
ldap settings emailadmin zh LDAP 设置
leave empty for no quota emailadmin zh 留空表示无限额
mail settings admin zh 邮箱设置
name of organisation emailadmin zh 组织名称
no alternate email address emailadmin zh 无备用邮箱地址
no encryption emailadmin zh 未加密
no forwarding email address emailadmin zh 没有转发邮件地址
no message returned. emailadmin zh 无返回消息。
no supported imap authentication method could be found. emailadmin zh 无支持 IMAP 认证的方法可以找到。
order emailadmin zh 排序
organisation emailadmin zh 组织
plesk can't rename users --> request ignored emailadmin zh Plesk 不能重命名用户 --> 请求忽略
plesk imap server (courier) emailadmin zh Plesk IMAP 服务器 (Courier)
plesk mail script '%1' not found !!! emailadmin zh Plesk 邮件脚本 '%1' 未找到!
plesk requires passwords to have at least 5 characters and not contain the account-name --> password not set!!! emailadmin zh Plesk 需要至少5个字符密码并且不包含帐户名 --> 密码未设置!
plesk smtp-server (qmail) emailadmin zh Plesk SMTP-Server (Qmail)
pop3 server hostname or ip address emailadmin zh POP3 服务器主机名或 IP 地址
pop3 server port emailadmin zh POP3 服务器端口号
port emailadmin zh 端口
postfix with ldap emailadmin zh LDAP 用于 Postfix
profile access rights emailadmin zh profile 访问权限
profile list emailadmin zh profile 列表
profile name emailadmin zh profile 名
qmaildotmode emailadmin zh qmaildotmode
quota settings emailadmin zh 配额设置
quota size in mbyte emailadmin zh 配额大小(MB)
remove emailadmin zh 移除
select type of imap server emailadmin zh 选择 IMAP 服务器类型
select type of imap/pop3 server emailadmin zh 选择 IMAP / POP3 服务器类型
select type of smtp server emailadmin zh 选择 SMAP 服务器类型
server settings emailadmin zh 服务器设置
sieve server hostname or ip address emailadmin zh Sieve 服务器主机名或 IP 地址
sieve server port emailadmin zh Sieve 服务器端口号
sieve settings emailadmin zh Sieve 设置
smtp authentication emailadmin zh SMTP 认证
smtp options emailadmin zh SMTP 选项
smtp server name emailadmin zh SMTP 服务器名
smtp settings emailadmin zh SMTP 设置
smtp-server hostname or ip address emailadmin zh SMTP 服务器主机名或 IP 地址
smtp-server port emailadmin zh SMTP 服务器端口号
standard emailadmin zh 标准
standard imap server emailadmin zh 标准 IMAP 服务器
standard pop3 server emailadmin zh 标准 POP3 服务器
standard smtp-server emailadmin zh 标准 SMTP 服务器
the imap server does not appear to support the authentication method selected. please contact your system administrator. emailadmin zh IMAP 服务器似乎不支持所选择的认证方法。请联系系统管理员。
this php has no imap support compiled in!! emailadmin zh PHP 没有 IMAP 支持的编译!
to use a tls connection, you must be running a version of php 5.1.0 or higher. emailadmin zh 未使用一个 TLS 连接,您必须运行 PHP 5.1.0 或更高版本。
unexpected response from server to authenticate command. emailadmin zh 服务器为 AUTHENTICATE 指令返回不当以外回应。
unexpected response from server to digest-md5 response. emailadmin zh 服务器为 Digest-MD5 返回意外的不当的回应。
unexpected response from server to login command. emailadmin zh 服务器为 LOGIN 指令返回意外的不当回应。
unknown imap response from the server. server responded: %s emailadmin zh INAP 服务器返回未知回应。服务器回应:%s
unsupported action '%1' !!! emailadmin zh 不支持 '%1' 的操作!
update current email address: emailadmin zh 更新当前邮件地址:
use ldap defaults emailadmin zh 使用 LDAP 默认值
use smtp auth emailadmin zh 使用 SMTP 认证
use tls authentication emailadmin zh 使用TLS 认证
use tls encryption emailadmin zh 使用TLS 加密
user can edit forwarding address emailadmin zh 用户可以编辑转发地址
username (standard) emailadmin zh 用户名(标准)
username@domainname (virtual mail manager) emailadmin zh 用户名@域 (虚拟邮箱管理)
users can define their own emailaccounts emailadmin zh 用户可以自定义邮箱账户
users can define their own signatures emailadmin zh 用户可以定义他们自己的签名
virtual mail manager emailadmin zh 虚拟邮箱管理
your name emailadmin zh 您的名字

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,89 @@
<?php
/**
* EGroupware EMailAdmin - Setup
*
* @link http://www.egroupware.org
* @author Klaus Leithoff <kl@stylite.de>
* @author Ralf Becker <rb@stylite.de>
* @package emailadmin
* @subpackage setup
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
$setup_info['emailadmin']['name'] = 'emailadmin';
$setup_info['emailadmin']['title'] = 'EMailAdmin';
$setup_info['emailadmin']['version'] = '14.1';
$setup_info['emailadmin']['app_order'] = 10;
$setup_info['emailadmin']['enable'] = 2;
$setup_info['emailadmin']['author'] =
$setup_info['emailadmin']['maintainer'] = array(
'name' => 'Ralf Becker',
'email' => 'rb@stylite.de',
);
$setup_info['emailadmin']['license'] = 'GPL';
$setup_info['emailadmin']['description'] =
'A central Mailserver management application for EGroupWare. Completely rewritten by Ralf Becker in 2013/14';
$setup_info['emailadmin']['tables'][] = 'egw_emailadmin';
$setup_info['emailadmin']['tables'][] = 'egw_mailaccounts';
$setup_info['emailadmin']['tables'][] = 'egw_ea_accounts';
$setup_info['emailadmin']['tables'][] = 'egw_ea_credentials';
$setup_info['emailadmin']['tables'][] = 'egw_ea_identities';
$setup_info['emailadmin']['tables'][] = 'egw_ea_valid';
$setup_info['emailadmin']['tables'][] = 'egw_ea_notifications';
/* The hooks this app includes, needed for hooks registration */
$setup_info['emailadmin']['hooks']['edit_user'] = 'emailadmin_hooks::edit_user';
$setup_info['emailadmin']['hooks']['deleteaccount'] = 'emailadmin_hooks::deleteaccount';
$setup_info['emailadmin']['hooks']['addaccount'] = 'emailadmin_hooks::addaccount';
$setup_info['emailadmin']['hooks']['editaccount'] = 'emailadmin_hooks::addaccount';
$setup_info['emailadmin']['hooks']['deletegroup'] = 'emailadmin_hooks::deletegroup';
$setup_info['emailadmin']['hooks']['changepassword'] = 'emailadmin_hooks::changepassword';
// SMTP and IMAP support
$setup_info['emailadmin']['hooks']['smtp_server_types'] = 'emailadmin_hooks::server_types';
$setup_info['emailadmin']['hooks']['imap_server_types'] = 'emailadmin_hooks::server_types';
/* Dependencies for this app to work */
$setup_info['emailadmin']['depends'][] = array(
'appname' => 'phpgwapi',
'versions' => Array('14.1')
);
$setup_info['emailadmin']['depends'][] = array(
'appname' => 'etemplate',
'versions' => Array('14.1')
);
// installation checks
$setup_info['emailadmin']['check_install'] = array(
'' => array(
'func' => 'pear_check',
'from' => 'EMailAdmin',
),
'Net_Sieve' => array(
'func' => 'pear_check',
'from' => 'EMailAdmin',
),
'pear.horde.org/Horde_Imap_Client' => array(
'func' => 'pear_check',
'from' => 'EMailAdmin',
'version' => '2.16.0',
),
'pear.horde.org/Horde_Nls' => array(
'func' => 'pear_check',
'from' => 'EMailAdmin',
'version' => '2.0.3',
),
'pear.horde.org/Horde_Mail' => array(
'func' => 'pear_check',
'from' => 'EMailAdmin',
'version' => '2.1.2',
),
'pear.horde.org/Horde_Smtp' => array(
'func' => 'pear_check',
'from' => 'EMailAdmin',
'version' => '1.3.0',
),
);

View File

@ -0,0 +1,166 @@
<?php
/**
* eGroupware EMailAdmin - DB schema
*
* @link http://www.egroupware.org
* @author Lars Kneschke
* @author Klaus Leithoff <kl@stylite.de>
* @author Ralf Becker <rb@stylite.de>
* @package emailadmin
* @subpackage setup
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
$phpgw_baseline = array(
'egw_emailadmin' => array(
'fd' => array(
'ea_profile_id' => array('type' => 'auto','nullable' => False,'comment' => 'the id of the profile; in programm its used as its negative counterpart'),
'ea_smtp_server' => array('type' => 'varchar','precision' => '80','comment' => 'smtp server name or ip-address'),
'ea_smtp_type' => array('type' => 'varchar','precision' => '56','comment' => 'smtp server type; designed to specify the corresponding php class to be used/loaded'),
'ea_smtp_port' => array('type' => 'int','precision' => '4','comment' => 'port to be used'),
'ea_smtp_auth' => array('type' => 'varchar','precision' => '3','comment' => 'multistate flag to indicate authentication required'),
'ea_editforwardingaddress' => array('type' => 'varchar','precision' => '3','comment' => 'yes/no flag to indicate if a user is allowed to edit its own forwardingaddresses; server side restrictions must be met, and a suitable smtp server type selected'),
'ea_smtp_ldap_server' => array('type' => 'varchar','precision' => '80','comment' => 'unused'),
'ea_smtp_ldap_basedn' => array('type' => 'varchar','precision' => '200','comment' => 'unused'),
'ea_smtp_ldap_admindn' => array('type' => 'varchar','precision' => '200','comment' => 'unused'),
'ea_smtp_ldap_adminpw' => array('type' => 'varchar','precision' => '30','comment' => 'unused'),
'ea_smtp_ldap_use_default' => array('type' => 'varchar','precision' => '3','comment' => 'unused'),
'ea_imap_server' => array('type' => 'varchar','precision' => '80','comment' => 'imap server name or ip address'),
'ea_imap_type' => array('type' => 'varchar','precision' => '56','comment' => 'imap server type, designed to specify the corresponding mail class to be loaded/used'),
'ea_imap_port' => array('type' => 'int','precision' => '4','comment' => 'imap server port'),
'ea_imap_login_type' => array('type' => 'varchar','precision' => '20','comment' => 'logintype to be used for authentication vs. the imap server, for this profile'),
'ea_imap_tsl_auth' => array('type' => 'varchar','precision' => '3','comment' => 'flag to indicate wether to use certificate validation; only affects secure connections'),
'ea_imap_tsl_encryption' => array('type' => 'varchar','precision' => '3','comment' => 'wether to use encryption 0=none, 1=STARTTLS, 2=TLS, 3=SSL'),
'ea_imap_enable_cyrus' => array('type' => 'varchar','precision' => '3','comment' => 'flag to indicate if we have some server/system integration for account/email management'),
'ea_imap_admin_user' => array('type' => 'varchar','precision' => '40','comment' => 'use this username for authentication on administrative purposes; or timed actions (sieve) for a user'),
'ea_imap_admin_pw' => array('type' => 'varchar','precision' => '40','comment' => 'use this password for authentication on administrative purposes; or timed actions (sieve) for a user'),
'ea_imap_enable_sieve' => array('type' => 'varchar','precision' => '3','comment' => 'flag to indicate that sieve support is assumed, and may be allowed to be utilized by the users affected by this profile'),
'ea_imap_sieve_server' => array('type' => 'varchar','precision' => '80','comment' => 'sieve server name or ip-address'),
'ea_imap_sieve_port' => array('type' => 'int','precision' => '4','comment' => 'sieve server port'),
'ea_description' => array('type' => 'varchar','precision' => '200','comment' => 'textual descriptor used for readable distinction of profiles'),
'ea_default_domain' => array('type' => 'varchar','precision' => '100','comment' => 'default domain string, used when vmailmanager is used as auth type for imap (also for smtp if auth is required)'),
'ea_organisation_name' => array('type' => 'varchar','precision' => '100','comment' => 'textual organization string, may be used in mail header'),
'ea_user_defined_identities' => array('type' => 'varchar','precision' => '3','comment' => 'yes/no flag to indicate if this profile is allowing the utiliszation of user defined identities'),
'ea_user_defined_accounts' => array('type' => 'varchar','precision' => '3','comment' => 'yes/no flag to indicate if this profile is allowing the utilization of user defined mail accounts'),
'ea_order' => array('type' => 'int','precision' => '4','comment' => 'helper to define the order of the profiles'),
'ea_appname' => array('type' => 'varchar','precision' => '80','comment' => 'appname the profile is to be used for; of no practical use, as of my knowledge, was designed to allow notification to use a specific profile'),
'ea_group' => array('type' => 'varchar','precision' => '80','comment' => 'the usergroup (primary) the given profile should be applied to','meta' => 'group'),
'ea_user' => array('type' => 'varchar','precision' => '80','comment' => 'the user the given profile should be applied to','meta' => 'user'),
'ea_active' => array('type' => 'int','precision' => '4','comment' => 'flag to indicate that a profile is active'),
'ea_smtp_auth_username' => array('type' => 'varchar','precision' => '128','comment' => 'depending on smtp auth type, use this username for authentication; may hold a semicolon separated emailaddress, to specify the emailaddress to be used on sending e.g.:username;email@address.nfo'),
'ea_smtp_auth_password' => array('type' => 'varchar','precision' => '80','comment' => 'depending on smtp auth type, the password to be used for authentication'),
'ea_user_defined_signatures' => array('type' => 'varchar','precision' => '3','comment' => 'flag to indicate, that this profile allows its users to edit and use own signatures (rights to preferences-app needed)'),
'ea_default_signature' => array('type' => 'text','comment' => 'the default signature (text or html)'),
'ea_imap_auth_username' => array('type' => 'varchar','precision' => '80','comment' => 'depending on the imap auth type use this username for authentication purposes'),
'ea_imap_auth_password' => array('type' => 'varchar','precision' => '80','comment' => 'depending on the imap auth type use this password for authentication purposes'),
'ea_stationery_active_templates' => array('type' => 'text','comment' => 'stationery templates available for the profile')
),
'pk' => array('ea_profile_id'),
'fk' => array(),
'ix' => array('ea_appname','ea_group'),
'uc' => array()
),
'egw_mailaccounts' => array(
'fd' => array(
'mail_id' => array('type' => 'auto','nullable' => False,'comment' => 'the id'),
'account_id' => array('type' => 'int','precision' => '4','nullable' => False,'comment' => 'account id of the owner, can be user AND group','meta' => 'account'),
'mail_type' => array('type' => 'int','precision' => '1','nullable' => False,'comment' => '0=active, 1=alias, 2=forward, 3=forwardOnly, 4=quota'),
'mail_value' => array('type' => 'varchar','precision' => '128','nullable' => False,'comment' => 'the value (that should be) corresponding to the mail_type')
),
'pk' => array('mail_id'),
'fk' => array(),
'ix' => array('mail_value',array('account_id','mail_type')),
'uc' => array()
),
'egw_ea_accounts' => array(
'fd' => array(
'acc_id' => array('type' => 'auto','nullable' => False),
'acc_name' => array('type' => 'varchar','precision' => '80','comment' => 'description'),
'ident_id' => array('type' => 'int','precision' => '4','nullable' => False,'comment' => 'standard identity'),
'acc_imap_host' => array('type' => 'varchar','precision' => '128','nullable' => False,'comment' => 'imap hostname'),
'acc_imap_ssl' => array('type' => 'int','precision' => '1','nullable' => False,'default' => '0','comment' => '0=none, 1=starttls, 2=tls, 3=ssl, &8=validate certificate'),
'acc_imap_port' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '143','comment' => 'imap port'),
'acc_sieve_enabled' => array('type' => 'bool','default' => '0','comment' => 'sieve enabled'),
'acc_sieve_host' => array('type' => 'varchar','precision' => '128','comment' => 'sieve host, default imap_host'),
'acc_sieve_port' => array('type' => 'int','precision' => '4','default' => '4190'),
'acc_folder_sent' => array('type' => 'varchar','precision' => '128','comment' => 'sent folder'),
'acc_folder_trash' => array('type' => 'varchar','precision' => '128','comment' => 'trash folder'),
'acc_folder_draft' => array('type' => 'varchar','precision' => '128','comment' => 'draft folder'),
'acc_folder_template' => array('type' => 'varchar','precision' => '128','comment' => 'template folder'),
'acc_smtp_host' => array('type' => 'varchar','precision' => '128','comment' => 'smtp hostname'),
'acc_smtp_ssl' => array('type' => 'int','precision' => '1','nullable' => False,'default' => '0','comment' => '0=none, 1=starttls, 2=tls, 3=ssl, &8=validate certificate'),
'acc_smtp_port' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '25','comment' => 'smtp port'),
'acc_smtp_type' => array('type' => 'varchar','precision' => '32','default' => 'emailadmin_smtp','comment' => 'smtp class to use'),
'acc_imap_type' => array('type' => 'varchar','precision' => '32','default' => 'emailadmin_imap','comment' => 'imap class to use'),
'acc_imap_logintype' => array('type' => 'varchar','precision' => '20','comment' => 'standard, vmailmgr, admin, uidNumber'),
'acc_domain' => array('type' => 'varchar','precision' => '100','comment' => 'domain name'),
'acc_further_identities' => array('type' => 'bool','nullable' => False,'default' => '1','comment' => '0=no, 1=yes'),
'acc_user_editable' => array('type' => 'bool','nullable' => False,'default' => '1','comment' => '0=no, 1=yes'),
'acc_sieve_ssl' => array('type' => 'int','precision' => '1','default' => '1','comment' => '0=none, 1=starttls, 2=tls, 3=ssl, &8=validate certificate'),
'acc_modified' => array('type' => 'timestamp','nullable' => False,'default' => 'current_timestamp'),
'acc_modifier' => array('type' => 'int','meta' => 'user','precision' => '4'),
'acc_smtp_auth_session' => array('type' => 'bool','comment' => '0=no, 1=yes, use username/pw from current user'),
'acc_folder_junk' => array('type' => 'varchar','precision' => '128','comment' => 'junk folder'),
'acc_imap_default_quota' => array('type' => 'int','precision' => '4','comment' => 'default quota, if no user specific one set'),
'acc_imap_timeout' => array('type' => 'int','precision' => '2','comment' => 'timeout for imap connection')
),
'pk' => array('acc_id'),
'fk' => array(),
'ix' => array(),
'uc' => array()
),
'egw_ea_credentials' => array(
'fd' => array(
'cred_id' => array('type' => 'auto','nullable' => False),
'acc_id' => array('type' => 'int','precision' => '4','nullable' => False,'comment' => 'into egw_ea_accounts'),
'cred_type' => array('type' => 'int','precision' => '1','nullable' => False,'comment' => '&1=imap, &2=smtp, &4=admin'),
'account_id' => array('type' => 'int','meta' => 'user','precision' => '4','nullable' => False,'comment' => 'account_id or 0=all'),
'cred_username' => array('type' => 'varchar','precision' => '80','nullable' => False,'comment' => 'username'),
'cred_password' => array('type' => 'varchar','precision' => '80','comment' => 'password encrypted'),
'cred_pw_enc' => array('type' => 'int','precision' => '1','default' => '0','comment' => '0=not, 1=user pw, 2=system')
),
'pk' => array('cred_id'),
'fk' => array(),
'ix' => array(),
'uc' => array(array('acc_id','account_id','cred_type'))
),
'egw_ea_identities' => array(
'fd' => array(
'ident_id' => array('type' => 'auto','nullable' => False),
'acc_id' => array('type' => 'int','precision' => '4','nullable' => False,'comment' => 'for which account'),
'ident_realname' => array('type' => 'varchar','precision' => '128','nullable' => False,'comment' => 'real name'),
'ident_email' => array('type' => 'varchar','precision' => '128','comment' => 'email address'),
'ident_org' => array('type' => 'varchar','precision' => '128','comment' => 'organisation'),
'ident_signature' => array('type' => 'text','comment' => 'signature text'),
'account_id' => array('type' => 'int','meta' => 'account','precision' => '4','nullable' => False,'default' => '0','comment' => '0=all users of give mail account'),
'ident_name' => array('type' => 'varchar','precision' => '128','comment' => 'name of identity to display')
),
'pk' => array('ident_id'),
'fk' => array(),
'ix' => array(),
'uc' => array()
),
'egw_ea_valid' => array(
'fd' => array(
'acc_id' => array('type' => 'int','precision' => '4','nullable' => False),
'account_id' => array('type' => 'int','meta' => 'account','precision' => '4','nullable' => False)
),
'pk' => array(),
'fk' => array(),
'ix' => array(array('acc_id','account_id'),array('account_id','acc_id')),
'uc' => array()
),
'egw_ea_notifications' => array(
'fd' => array(
'notif_id' => array('type' => 'auto','nullable' => False),
'acc_id' => array('type' => 'int','precision' => '4','nullable' => False,'comment' => 'mail account'),
'account_id' => array('type' => 'int','meta' => 'user','precision' => '4','nullable' => False,'comment' => 'user account'),
'notif_folder' => array('type' => 'varchar','precision' => '255','nullable' => False,'comment' => 'folder name')
),
'pk' => array('notif_id'),
'fk' => array(),
'ix' => array(array('account_id','acc_id')),
'uc' => array()
)
);

View File

@ -0,0 +1,870 @@
<?php
/**
* EGroupware EMailAdmin - DB schema
*
* @link http://www.egroupware.org
* @author Lars Kneschke
* @author Klaus Leithoff <kl@stylite.de>
* @author Ralf Becker <rb@stylite.de>
* @package emailadmin
* @subpackage setup
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
function emailadmin_upgrade0_0_3()
{
$GLOBALS['egw_setup']->oProc->AddColumn('phpgw_emailadmin','smtpType', array('type' => 'int', 'precision' => 4));
return $setup_info['emailadmin']['currentver'] = '0.0.4';
}
function emailadmin_upgrade0_0_4()
{
$GLOBALS['egw_setup']->oProc->AddColumn('phpgw_emailadmin','defaultDomain', array('type' => 'varchar', 'precision' => 100));
return $setup_info['emailadmin']['currentver'] = '0.0.5';
}
function emailadmin_upgrade0_0_5()
{
$GLOBALS['egw_setup']->oProc->AddColumn('phpgw_emailadmin','organisationName', array('type' => 'varchar', 'precision' => 100));
$GLOBALS['egw_setup']->oProc->AddColumn('phpgw_emailadmin','userDefinedAccounts', array('type' => 'varchar', 'precision' => 3));
return $setup_info['emailadmin']['currentver'] = '0.0.6';
}
function emailadmin_upgrade0_0_6()
{
$GLOBALS['egw_setup']->oProc->AddColumn('phpgw_emailadmin','oldimapcclient',array(
'type' => 'varchar',
'precision' => '3'
));
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '0.0.007';
}
function emailadmin_upgrade0_0_007()
{
$GLOBALS['egw_setup']->oProc->RenameColumn('phpgw_emailadmin','oldimapcclient','imapoldcclient');
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '0.0.008';
}
function emailadmin_upgrade0_0_008()
{
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.0.0';
}
function emailadmin_upgrade1_0_0()
{
$GLOBALS['egw_setup']->oProc->AddColumn('phpgw_emailadmin','editforwardingaddress',array(
'type' => 'varchar',
'precision' => '3'
));
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.0.1';
}
function emailadmin_upgrade1_0_1()
{
$GLOBALS['egw_setup']->oProc->AddColumn('phpgw_emailadmin','ea_order', array('type' => 'int', 'precision' => 4));
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.0.2';
}
function emailadmin_upgrade1_0_2()
{
$GLOBALS['egw_setup']->oProc->AddColumn('phpgw_emailadmin','ea_appname', array('type' => 'varchar','precision' => '80'));
$GLOBALS['egw_setup']->oProc->AddColumn('phpgw_emailadmin','ea_group', array('type' => 'varchar','precision' => '80'));
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.0.3';
}
function emailadmin_upgrade1_0_3()
{
$GLOBALS['egw_setup']->oProc->RenameTable('phpgw_emailadmin','egw_emailadmin');
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.2';
}
function emailadmin_upgrade1_2()
{
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','profileID','ea_profile_id');
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','smtpServer','ea_smtp_server');
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','smtpType','ea_smtp_type');
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','smtpPort','ea_smtp_port');
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','smtpAuth','ea_smtp_auth');
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','editforwardingaddress','ea_editforwardingaddress');
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','smtpLDAPServer','ea_smtp_ldap_server');
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','smtpLDAPBaseDN','ea_smtp_ldap_basedn');
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','smtpLDAPAdminDN','ea_smtp_ldap_admindn');
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','smtpLDAPAdminPW','ea_smtp_ldap_adminpw');
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','smtpLDAPUseDefault','ea_smtp_ldap_use_default');
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','imapServer','ea_imap_server');
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','imapType','ea_imap_type');
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','imapPort','ea_imap_port');
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','imapLoginType','ea_imap_login_type');
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','imapTLSAuthentication','ea_imap_tsl_auth');
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','imapTLSEncryption','ea_imap_tsl_encryption');
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','imapEnableCyrusAdmin','ea_imap_enable_cyrus');
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','imapAdminUsername','ea_imap_admin_user');
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','imapAdminPW','ea_imap_admin_pw');
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','imapEnableSieve','ea_imap_enable_sieve');
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','imapSieveServer','ea_imap_sieve_server');
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','imapSievePort','ea_imap_sieve_port');
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','description','ea_description');
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','defaultDomain','ea_default_domain');
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','organisationName','ea_organisation_name');
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','userDefinedAccounts','ea_user_defined_accounts');
$GLOBALS['egw_setup']->oProc->RenameColumn('egw_emailadmin','imapoldcclient','ea_imapoldcclient');
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.2.001';
}
function emailadmin_upgrade1_2_001()
{
/* done by RefreshTable() anyway
$GLOBALS['egw_setup']->oProc->AddColumn('egw_emailadmin','ea_smtp_auth_username',array(
'type' => 'varchar',
'precision' => '80'
));*/
/* done by RefreshTable() anyway
$GLOBALS['egw_setup']->oProc->AddColumn('egw_emailadmin','ea_smtp_auth_password',array(
'type' => 'varchar',
'precision' => '80'
));*/
$GLOBALS['egw_setup']->oProc->RefreshTable('egw_emailadmin',array(
'fd' => array(
'ea_profile_id' => array('type' => 'auto','nullable' => False),
'ea_smtp_server' => array('type' => 'varchar','precision' => '80'),
'ea_smtp_type' => array('type' => 'int','precision' => '4'),
'ea_smtp_port' => array('type' => 'int','precision' => '4'),
'ea_smtp_auth' => array('type' => 'varchar','precision' => '3'),
'ea_editforwardingaddress' => array('type' => 'varchar','precision' => '3'),
'ea_smtp_ldap_server' => array('type' => 'varchar','precision' => '80'),
'ea_smtp_ldap_basedn' => array('type' => 'varchar','precision' => '200'),
'ea_smtp_ldap_admindn' => array('type' => 'varchar','precision' => '200'),
'ea_smtp_ldap_adminpw' => array('type' => 'varchar','precision' => '30'),
'ea_smtp_ldap_use_default' => array('type' => 'varchar','precision' => '3'),
'ea_imap_server' => array('type' => 'varchar','precision' => '80'),
'ea_imap_type' => array('type' => 'int','precision' => '4'),
'ea_imap_port' => array('type' => 'int','precision' => '4'),
'ea_imap_login_type' => array('type' => 'varchar','precision' => '20'),
'ea_imap_tsl_auth' => array('type' => 'varchar','precision' => '3'),
'ea_imap_tsl_encryption' => array('type' => 'varchar','precision' => '3'),
'ea_imap_enable_cyrus' => array('type' => 'varchar','precision' => '3'),
'ea_imap_admin_user' => array('type' => 'varchar','precision' => '40'),
'ea_imap_admin_pw' => array('type' => 'varchar','precision' => '40'),
'ea_imap_enable_sieve' => array('type' => 'varchar','precision' => '3'),
'ea_imap_sieve_server' => array('type' => 'varchar','precision' => '80'),
'ea_imap_sieve_port' => array('type' => 'int','precision' => '4'),
'ea_description' => array('type' => 'varchar','precision' => '200'),
'ea_default_domain' => array('type' => 'varchar','precision' => '100'),
'ea_organisation_name' => array('type' => 'varchar','precision' => '100'),
'ea_user_defined_accounts' => array('type' => 'varchar','precision' => '3'),
'ea_imapoldcclient' => array('type' => 'varchar','precision' => '3'),
'ea_order' => array('type' => 'int','precision' => '4'),
'ea_appname' => array('type' => 'varchar','precision' => '80'),
'ea_group' => array('type' => 'varchar','precision' => '80'),
'ea_smtp_auth_username' => array('type' => 'varchar','precision' => '80'),
'ea_smtp_auth_password' => array('type' => 'varchar','precision' => '80')
),
'pk' => array('ea_profile_id'),
'fk' => array(),
'ix' => array('ea_appname','ea_group'),
'uc' => array()
));
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.2.002';
}
function emailadmin_upgrade1_2_002()
{
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.4';
}
function emailadmin_upgrade1_4()
{
$GLOBALS['egw_setup']->oProc->AddColumn('egw_emailadmin','ea_user_defined_signatures',array(
'type' => 'varchar',
'precision' => '3'
));
$GLOBALS['egw_setup']->oProc->AddColumn('egw_emailadmin','ea_default_signature',array(
'type' => 'varchar',
'precision' => '255'
));
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.4.001';
}
function emailadmin_upgrade1_4_001()
{
$GLOBALS['egw_setup']->oProc->AddColumn('egw_emailadmin','ea_user_defined_identities',array(
'type' => 'varchar',
'precision' => '3'
));
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.5.001';
}
function emailadmin_upgrade1_5_001()
{
$GLOBALS['egw_setup']->oProc->AddColumn('egw_emailadmin','ea_user',array(
'type' => 'varchar',
'precision' => '80'
));
$GLOBALS['egw_setup']->oProc->AddColumn('egw_emailadmin','ea_active',array(
'type' => 'int',
'precision' => '4'
));
$GLOBALS['phpgw_setup']->oProc->query("UPDATE egw_emailadmin set ea_user='0', ea_active=1",__LINE__,__FILE__);
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.5.002';
}
function emailadmin_upgrade1_5_002()
{
$GLOBALS['egw_setup']->oProc->AddColumn('egw_emailadmin','ea_imap_auth_username',array(
'type' => 'varchar',
'precision' => '80'
));
$GLOBALS['egw_setup']->oProc->AddColumn('egw_emailadmin','ea_imap_auth_password',array(
'type' => 'varchar',
'precision' => '80'
));
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.5.003';
}
function emailadmin_upgrade1_5_003()
{
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.5.004';
}
function emailadmin_upgrade1_5_004()
{
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.6';
}
function emailadmin_upgrade1_6()
{
$GLOBALS['egw_setup']->oProc->AlterColumn('egw_emailadmin','ea_default_signature',array(
'type' => 'text'
));
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.6.001';
}
function emailadmin_upgrade1_6_001()
{
$GLOBALS['egw_setup']->oProc->AddColumn('egw_emailadmin','ea_stationery_active_templates',array(
'type' => 'text'
));
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.8'; // was '1.7.003';
}
function emailadmin_upgrade1_7_003()
{
$GLOBALS['egw_setup']->oProc->AlterColumn('egw_emailadmin','ea_imap_type',array(
'type' => 'varchar',
'precision' => 56,
));
$GLOBALS['egw_setup']->oProc->AlterColumn('egw_emailadmin','ea_smtp_type',array(
'type' => 'varchar',
'precision' => 56,
));
foreach (array('1'=>'defaultsmtp', '2'=>'postfixldap', '3'=>'postfixinetorgperson', '4'=>'smtpplesk', '5' =>'postfixdbmailuser') as $id => $newtype)
{
$GLOBALS['egw_setup']->oProc->query('update egw_emailadmin set ea_smtp_type=\''.$newtype.'\' where ea_smtp_type=\''.$id.'\'',__LINE__,__FILE__);
}
foreach (array('2'=>'defaultimap', '3'=>'cyrusimap', '4'=>'dbmailqmailuser', '5'=>'pleskimap', '6' =>'dbmaildbmailuser') as $id => $newtype)
{
$GLOBALS['egw_setup']->oProc->query('update egw_emailadmin set ea_imap_type=\''.$newtype.'\' where ea_imap_type=\''.$id.'\'',__LINE__,__FILE__);
}
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.001'; // was '1.7.004';
}
function emailadmin_upgrade1_8()
{
emailadmin_upgrade1_7_003();
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.001';
}
function emailadmin_upgrade1_7_004()
{
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.001';
}
function emailadmin_upgrade1_9_001()
{
$GLOBALS['egw_setup']->oProc->RefreshTable('egw_emailadmin',array(
'fd' => array(
'ea_profile_id' => array('type' => 'auto','nullable' => False),
'ea_smtp_server' => array('type' => 'varchar','precision' => '80'),
'ea_smtp_type' => array('type' => 'varchar','precision' => '56'),
'ea_smtp_port' => array('type' => 'int','precision' => '4'),
'ea_smtp_auth' => array('type' => 'varchar','precision' => '3'),
'ea_editforwardingaddress' => array('type' => 'varchar','precision' => '3'),
'ea_smtp_ldap_server' => array('type' => 'varchar','precision' => '80'),
'ea_smtp_ldap_basedn' => array('type' => 'varchar','precision' => '200'),
'ea_smtp_ldap_admindn' => array('type' => 'varchar','precision' => '200'),
'ea_smtp_ldap_adminpw' => array('type' => 'varchar','precision' => '30'),
'ea_smtp_ldap_use_default' => array('type' => 'varchar','precision' => '3'),
'ea_imap_server' => array('type' => 'varchar','precision' => '80'),
'ea_imap_type' => array('type' => 'varchar','precision' => '56'),
'ea_imap_port' => array('type' => 'int','precision' => '4'),
'ea_imap_login_type' => array('type' => 'varchar','precision' => '20'),
'ea_imap_tsl_auth' => array('type' => 'varchar','precision' => '3'),
'ea_imap_tsl_encryption' => array('type' => 'varchar','precision' => '3'),
'ea_imap_enable_cyrus' => array('type' => 'varchar','precision' => '3'),
'ea_imap_admin_user' => array('type' => 'varchar','precision' => '40'),
'ea_imap_admin_pw' => array('type' => 'varchar','precision' => '40'),
'ea_imap_enable_sieve' => array('type' => 'varchar','precision' => '3'),
'ea_imap_sieve_server' => array('type' => 'varchar','precision' => '80'),
'ea_imap_sieve_port' => array('type' => 'int','precision' => '4'),
'ea_description' => array('type' => 'varchar','precision' => '200'),
'ea_default_domain' => array('type' => 'varchar','precision' => '100'),
'ea_organisation_name' => array('type' => 'varchar','precision' => '100'),
'ea_user_defined_identities' => array('type' => 'varchar','precision' => '3'),
'ea_user_defined_accounts' => array('type' => 'varchar','precision' => '3'),
'ea_order' => array('type' => 'int','precision' => '4'),
'ea_appname' => array('type' => 'varchar','precision' => '80'),
'ea_group' => array('type' => 'varchar','precision' => '80'),
'ea_user' => array('type' => 'varchar','precision' => '80'),
'ea_active' => array('type' => 'int','precision' => '4'),
'ea_smtp_auth_username' => array('type' => 'varchar','precision' => '80'),
'ea_smtp_auth_password' => array('type' => 'varchar','precision' => '80'),
'ea_user_defined_signatures' => array('type' => 'varchar','precision' => '3'),
'ea_default_signature' => array('type' => 'text'),
'ea_imap_auth_username' => array('type' => 'varchar','precision' => '80'),
'ea_imap_auth_password' => array('type' => 'varchar','precision' => '80'),
'ea_stationery_active_templates' => array('type' => 'text')
),
'pk' => array('ea_profile_id'),
'fk' => array(),
'ix' => array('ea_appname','ea_group'),
'uc' => array()
));
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.002';
}
function emailadmin_upgrade1_9_002()
{
// convert serialized stationery templates setting to eTemplate store style
foreach($GLOBALS['egw_setup']->db->query('SELECT ea_profile_id,ea_stationery_active_templates FROM egw_emailadmin
WHERE ea_stationery_active_templates IS NOT NULL',__LINE__,__FILE__) as $row)
{
if(is_array(($templates=unserialize($row['ea_stationery_active_templates']))))
{
$GLOBALS['egw_setup']->db->query('UPDATE egw_emailadmin SET ea_stationery_active_templates="'.implode(',',$templates).'"'
.' WHERE ea_profile_id='.(int)$row['ea_profile_id'],__LINE__,__FILE__);
}
unset($templates);
}
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.003';
}
function emailadmin_upgrade1_9_003()
{
$GLOBALS['egw_setup']->oProc->AlterColumn('egw_emailadmin','ea_smtp_auth_username',array(
'type' => 'varchar',
'precision' => '128',
));
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.004';
}
function emailadmin_upgrade1_9_004()
{
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.005';
}
function emailadmin_upgrade1_9_005()
{
$GLOBALS['egw_setup']->oProc->CreateTable('egw_mailaccounts',array(
'fd' => array(
'mail_id' => array('type' => 'auto','nullable' => False),
'account_id' => array('type' => 'int','precision' => '4','nullable' => False),
'mail_type' => array('type' => 'int','precision' => '1','nullable' => False,'comment' => '0=active, 1=alias, 2=forward, 3=forwardOnly, 4=quota'),
'mail_value' => array('type' => 'varchar','precision' => '128','nullable' => False)
),
'pk' => array('mail_id'),
'fk' => array(),
'ix' => array('mail_value',array('account_id','mail_type')),
'uc' => array()
));
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.006';
}
function emailadmin_upgrade1_9_006()
{
$GLOBALS['egw_setup']->oProc->CreateTable('egw_ea_accounts',array(
'fd' => array(
'acc_id' => array('type' => 'auto','nullable' => False),
'acc_name' => array('type' => 'varchar','precision' => '80','comment' => 'description'),
'ident_id' => array('type' => 'int','precision' => '4','nullable' => False,'comment' => 'standard identity'),
'acc_imap_host' => array('type' => 'varchar','precision' => '128','nullable' => False,'comment' => 'imap hostname'),
'acc_imap_ssl' => array('type' => 'int','precision' => '1','nullable' => False,'default' => '0','comment' => '0=none, 1=starttls, 2=tls, 3=ssl, &8=validate certificate'),
'acc_imap_port' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '143','comment' => 'imap port'),
'acc_sieve_enabled' => array('type' => 'bool','default' => '0','comment' => 'sieve enabled'),
'acc_sieve_host' => array('type' => 'varchar','precision' => '128','comment' => 'sieve host, default imap_host'),
'acc_sieve_port' => array('type' => 'int','precision' => '4','default' => '4190'),
'acc_folder_sent' => array('type' => 'varchar','precision' => '128','comment' => 'sent folder'),
'acc_folder_trash' => array('type' => 'varchar','precision' => '128','comment' => 'trash folder'),
'acc_folder_draft' => array('type' => 'varchar','precision' => '128','comment' => 'draft folder'),
'acc_folder_template' => array('type' => 'varchar','precision' => '128','comment' => 'template folder'),
'acc_smtp_host' => array('type' => 'varchar','precision' => '128','comment' => 'smtp hostname'),
'acc_smtp_ssl' => array('type' => 'int','precision' => '1','nullable' => False,'default' => '0','comment' => '0=none, 1=starttls, 2=tls, 3=ssl, &8=validate certificate'),
'acc_smtp_port' => array('type' => 'int','precision' => '4','nullable' => False,'default' => '25','comment' => 'smtp port'),
'acc_smtp_type' => array('type' => 'varchar','precision' => '32','default' => 'emailadmin_smtp','comment' => 'smtp class to use'),
'acc_imap_type' => array('type' => 'varchar','precision' => '32','default' => 'emailadmin_imap','comment' => 'imap class to use'),
'acc_imap_logintype' => array('type' => 'varchar','precision' => '20','comment' => 'standard, vmailmgr, admin, uidNumber'),
'acc_domain' => array('type' => 'varchar','precision' => '100','comment' => 'domain name'),
'acc_further_identities' => array('type' => 'bool','nullable' => False,'default' => '1','comment' => '0=no, 1=yes'),
'acc_user_editable' => array('type' => 'bool','nullable' => False,'default' => '1','comment' => '0=no, 1=yes'),
'acc_sieve_ssl' => array('type' => 'int','precision' => '1','default' => '1','comment' => '0=none, 1=starttls, 2=tls, 3=ssl, &8=validate certificate'),
'acc_modified' => array('type' => 'timestamp','nullable' => False,'default' => 'current_timestamp'),
'acc_modifier' => array('type' => 'int','meta' => 'user','precision' => '4'),
'acc_smtp_auth_session' => array('type' => 'bool','comment' => '0=no, 1=yes, use username/pw from current user')
),
'pk' => array('acc_id'),
'fk' => array(),
'ix' => array(),
'uc' => array()
));
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.007';
}
function emailadmin_upgrade1_9_007()
{
$GLOBALS['egw_setup']->oProc->CreateTable('egw_ea_credentials',array(
'fd' => array(
'cred_id' => array('type' => 'auto','nullable' => False),
'acc_id' => array('type' => 'int','precision' => '4','nullable' => False,'comment' => 'into egw_ea_accounts'),
'cred_type' => array('type' => 'int','precision' => '1','nullable' => False,'comment' => '&1=imap, &2=smtp, &4=admin'),
'account_id' => array('type' => 'int','meta' => 'user','precision' => '4','nullable' => False,'comment' => 'account_id or 0=all'),
'cred_username' => array('type' => 'varchar','precision' => '80','nullable' => False,'comment' => 'username'),
'cred_password' => array('type' => 'varchar','precision' => '80','comment' => 'password encrypted'),
'cred_pw_enc' => array('type' => 'int','precision' => '1','default' => '0','comment' => '0=not, 1=user pw, 2=system')
),
'pk' => array('cred_id'),
'fk' => array(),
'ix' => array(),
'uc' => array(array('acc_id','account_id','cred_type'))
));
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.008';
}
function emailadmin_upgrade1_9_008()
{
$GLOBALS['egw_setup']->oProc->CreateTable('egw_ea_identities',array(
'fd' => array(
'ident_id' => array('type' => 'auto','nullable' => False),
'acc_id' => array('type' => 'int','precision' => '4','nullable' => False,'comment' => 'for which account'),
'ident_realname' => array('type' => 'varchar','precision' => '128','nullable' => False,'comment' => 'real name'),
'ident_email' => array('type' => 'varchar','precision' => '128','comment' => 'email address'),
'ident_org' => array('type' => 'varchar','precision' => '128','comment' => 'organisation'),
'ident_signature' => array('type' => 'text','comment' => 'signature text'),
'account_id' => array('type' => 'int','meta' => 'account','precision' => '4','nullable' => False,'default' => '0','comment' => '0=all users of give mail account')
),
'pk' => array('ident_id'),
'fk' => array(),
'ix' => array(),
'uc' => array()
));
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.009';
}
function emailadmin_upgrade1_9_009()
{
$GLOBALS['egw_setup']->oProc->CreateTable('egw_ea_valid',array(
'fd' => array(
'acc_id' => array('type' => 'int','precision' => '4','nullable' => False),
'account_id' => array('type' => 'int','meta' => 'account','precision' => '4','nullable' => False)
),
'pk' => array(),
'fk' => array(),
'ix' => array(array('account_id','acc_id')),
'uc' => array(array('acc_id','account_id'))
));
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.010';
}
/**
* Migrate eMailAdmin profiles to accounts
*/
function emailadmin_upgrade1_9_010()
{
static $prot2ssl = array('ssl' => 3, 'tls' => 2, 'starttls' => 1);
$acc_ids = array();
// migrate personal felamimail accounts, identities and signatures
try {
$db = $GLOBALS['egw_setup']->db;
foreach($db->select('egw_emailadmin', '*', array('ea_active' => 1), __LINE__, __FILE__, false,
// order general profiles first, then group profiles and user specific ones last
'ORDER BY ea_group IS NULL AND ea_user IS NULL DESC,ea_group IS NULL,ea_user', 'emailadmin') as $row)
{
$owner = $row['ea_user'] > 0 ? (int)$row['ea_user'] : ($row['ea_group'] ? -abs($row['ea_group']) : 0);
// always store general profiles and group profiles
// only store user profiles if they contain at least an imap_host
// otherwise store just the credentials for that user and account of his primary group or first general account
if ($owner <= 0 || $owner > 0 && !empty($row['ea_imap_host']) ||
!($acc_id = ($primary_group = accounts::id2name($owner, 'account_primary_group')) &&
isset($acc_ids[$primary_group]) ? $acc_ids[$primary_group] : $acc_ids['0']))
{
$prefs = new preferences($owner);
$all_prefs = $prefs->read_repository();
$pref_values = $all_prefs['felamimail'];
// create standard identity for account
$identity = array(
'acc_id' => 0,
'ident_realname' => '',
'ident_email' => '',
'ident_org' => $row['ea_organisation_name'],
'ident_signature' => $row['ea_default_signature'],
);
$db->insert('egw_ea_identities', $identity, false, __LINE__, __FILE__, 'emailadmin');
$ident_id = $db->get_last_insert_id('egw_ea_identities', 'ident_id');
// create account
$smtp_ssl = 0;
if (strpos($row['ea_smtp_server'], '://') !== false)
{
list($prot, $row['ea_smtp_server']) = explode('://', $row['ea_smtp_server']);
$smtp_ssl = (int)$prot2ssl[$prot];
}
$account = array(
'acc_name' => $row['ea_description'],
'ident_id' => $ident_id,
'acc_imap_type' => emailadmin_account::getIcClass($row['ea_imap_type']),
'acc_imap_logintype' => $row['ea_imap_login_type'],
'acc_imap_host' => $row['ea_imap_server'],
'acc_imap_ssl' => $row['ea_imap_tsl_encryption'] | ($row['ea_imap_tsl_auth'] === 'yes' ? 8 : 0),
'acc_imap_port' => $row['ea_imap_port'],
'acc_sieve_enabled' => $row['ea_imap_enable_sieve'] == 'yes',
'acc_sieve_host' => $row['ea_imap_sieve_server'],
'acc_sieve_ssl' => $row['fm_ic_sieve_port'] == 5190 ? 2 : 1,
'acc_sieve_port' => $row['ea_imap_sieve_port'],
'acc_folder_sent' => $pref_values['sentFolder'],
'acc_folder_trash' => $pref_values['trashFolder'],
'acc_folder_draft' => $pref_values['draftFolder'],
'acc_folder_template' => $pref_values['templateFolder'],
'acc_smtp_type' => $row['ea_smtp_type'],
'acc_smtp_host' => $row['ea_smtp_server'],
'acc_smtp_ssl' => $smtp_ssl,
'acc_smtp_port' => $row['ea_smtp_port'],
'acc_domain' => $row['ea_default_domain'],
'acc_further_identities' => $row['ea_user_defined_identities'] == 'yes' ||
$row['ea_user_defined_signatures'] == 'yes', // both together are now called identities
'acc_user_editable' => false,
'acc_smtp_auth_session' => $row['ea_smtp_auth'] == 'ann' ||
$row['ea_smtp_auth'] == 'yes' && empty($row['ea_smtp_auth_username']),
);
$db->insert('egw_ea_accounts', $account, false, __LINE__, __FILE__, 'emailadmin');
$acc_id = $db->get_last_insert_id('egw_ea_accounts', 'acc_id');
// remember acc_id by owner, to be able to base credential only profiles on them
if ($owner <= 0 && !isset($acc_ids[$owner])) $acc_ids[(string)$owner] = $acc_id;
// update above created identity with account acc_id
$db->update('egw_ea_identities', array('acc_id' => $acc_id), array('ident_id' => $ident_id), __LINE__, __FILE__, 'emailadmin');
// make account valid for given owner
$db->insert('egw_ea_valid', array(
'acc_id' => $acc_id,
'account_id' => $owner,
), false, __LINE__, __FILE__, 'emailadmin');
}
// credentials are either stored for specific user or all users (account_id=0), not group-specific
if (!($owner > 0)) $owner = 0;
// add imap credentials if necessary
$cred_type = $row['ea_smpt_auth'] != 'no' && $row['ea_imap_auth_username'] && $row['ea_smtp_auth_username'] &&
$row['ea_imap_auth_username'] == $row['ea_smtp_auth_username'] &&
$row['ea_imap_auth_password'] == $row['ea_smtp_auth_password'] ? 3 : 1;
if ($row['ea_imap_auth_username'])
{
emailadmin_credentials::write($acc_id, $row['ea_imap_auth_username'], $row['ea_imap_auth_password'], $cred_type, $owner);
}
// add smtp credentials if necessary and different from imap
if ($row['ea_smpt_auth'] != 'no' && !empty($row['ea_smtp_auth_username']) && $cred_type != 3)
{
emailadmin_credentials::write($acc_id, $row['ea_smtp_auth_username'], $row['ea_smtp_auth_password'], 2, $owner);
}
// add admin credentials
if ($row['ea_imap_enable_cyrus'] == 'yes' && !empty($row['ea_imap_admin_user']))
{
emailadmin_credentials::write($acc_id, $row['ea_imap_admin_user'], $row['ea_imap_admin_pw'], 8, $owner);
}
}
// ToDo: migrate all not yet via personal fmail profiles migrated signatures
}
catch(Exception $e) {
// ignore all errors, eg. because FMail is not installed
echo "<p>".$e->getMessage()."</p>\n";
}
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.011';
}
/**
* Helper function for 1.9.011 upgrade to query standard identity of a given user
*
* There's no defined standard identity, we simply pick first one we find
* sorting results by:
* - prefering identical email or same-domain
* - prefering personal accounts over all-user ones
* - for all-user ones we prefer a personal identitiy (account_id!=0)
*
* @param int $account_id
* @param string $email optional email to be used to find matching account/identity with identical email or same domain
* @return array with ident_* and acc_id
*/
function emailadmin_std_identity($account_id, $email=null)
{
if ($email) list(, $domain) = explode('@', $email);
return $GLOBALS['egw_setup']->db->select('egw_ea_accounts', 'egw_ea_identities.*',
'egw_ea_valid.account_id IN (0,'.(int)$account_id.') AND egw_ea_identities.account_id IN (0,'.(int)$account_id.')',
__LINE__, __FILE__, 0,
'ORDER BY '.($email ?
'ident_email='.$GLOBALS['egw_setup']->db->quote($email).' DESC,'.
'ident_email LIKE '.$GLOBALS['egw_setup']->db->quote('%@'.$domain).' DESC,' : '').
'egw_ea_identities.account_id DESC,egw_ea_valid.account_id DESC', 'emailadmin', 1,
'JOIN egw_ea_valid ON egw_ea_accounts.acc_id=egw_ea_valid.acc_id '.
'JOIN egw_ea_identities ON egw_ea_accounts.acc_id=egw_ea_identities.acc_id')->fetch();
}
/**
* Migrate (personal) FMail accounts to eMailAdmin accounts
*/
function emailadmin_upgrade1_9_011()
{
static $prot2ssl = array('ssl' => 3, 'tls' => 2, 'starttls' => 1);
$std_identity = null;
// migrate personal felamimail accounts, identities and signatures
$db = $GLOBALS['egw_setup']->db;
if (in_array('egw_felamimail_accounts', $db->table_names(true)))
{
try {
// migrate real fmail accounts, but not yet identities (fm_ic_hostname is NULL)
foreach($db->select('egw_felamimail_accounts', '*', 'fm_ic_hostname IS NOT NULL', __LINE__, __FILE__, false, '', 'felamimail') as $row)
{
$prefs = new preferences($row['fm_owner']);
$all_prefs = $prefs->read_repository();
$pref_values = $all_prefs['felamimail'];
// create standard identity for account
$identity = array(
'acc_id' => 0,
'ident_realname' => $row['fm_realname'],
'ident_email' => $row['fm_emailaddress'],
'ident_org' => $row['fm_organisation'],
'ident_signature' => $db->select('egw_felamimail_signatures', 'fm_signature', array(
'fm_signatureid' => $row['fm_signatureid'],
), __LINE__, __FILE__, false, '', 'felamimail')->fetchColumn(),
);
$db->insert('egw_ea_identities', $identity, false, __LINE__, __FILE__, 'emailadmin');
$ident_id = $db->get_last_insert_id('egw_ea_identities', 'ident_id');
// create account
$og_ssl = 0;
if (strpos($row['fm_og_hostname'], '://') !== false)
{
list($prot, $row['fm_og_hostname']) = explode('://', $row['fm_og_hostname']);
$og_ssl = (int)$prot2ssl[$prot];
}
$account = array(
'acc_name' => $row['fm_emailaddress'],
'ident_id' => $ident_id,
'acc_imap_host' => $row['fm_ic_hostname'],
'acc_imap_ssl' => $row['fm_ic_encryption'] | ($row['fm_ic_validatecertificate'] ? 8 : 0),
'acc_imap_port' => $row['fm_ic_port'],
'acc_sieve_enabled' => $row['fm_ic_enable_sieve'],
'acc_sieve_host' => $row['fm_ic_sieve_server'],
'acc_sieve_ssl' => $row['fm_ic_sieve_port'] == 5190 ? 2 : 1,
'acc_sieve_port' => $row['fm_ic_sieve_port'],
'acc_folder_sent' => $row['fm_ic_sentfolder'] ? $row['fm_ic_sentfolder'] : $pref_values['sentFolder'],
'acc_folder_trash' => $row['fm_ic_trashfolder'] ? $row['fm_ic_trashfolder'] : $pref_values['trashFolder'],
'acc_folder_draft' => $row['fm_ic_draftfolder'] ? $row['fm_ic_draftfolder'] : $pref_values['draftFolder'],
'acc_folder_template' => $row['fm_ic_templatefolder'] ? $row['fm_ic_templatefolder'] : $pref_values['templateFolder'],
'acc_smtp_host' => $row['fm_og_hostname'],
'acc_smtp_ssl' => $og_ssl,
'acc_smtp_port' => $row['fm_og_port'],
);
$db->insert('egw_ea_accounts', $account, false, __LINE__, __FILE__, 'emailadmin');
$acc_id = $db->get_last_insert_id('egw_ea_accounts', 'acc_id');
$identity['acc_id'] = $acc_id;
if (!isset($std_identity[$row['fm_owner']])) $std_identity[$row['fm_owner']] = $identity;
// update above created identity with account acc_id
$db->update('egw_ea_identities', array('acc_id' => $acc_id), array('ident_id' => $ident_id), __LINE__, __FILE__, 'emailadmin');
// make account valid for given owner
$db->insert('egw_ea_valid', array(
'acc_id' => $acc_id,
'account_id' => $row['fm_owner'],
), false, __LINE__, __FILE__, 'emailadmin');
// add imap credentials
$cred_type = $row['fm_og_smtpauth'] && $row['fm_ic_username'] == $row['fm_og_username'] &&
$row['fm_ic_password'] == $row['fm_og_password'] ? 3 : 1;
emailadmin_credentials::write($acc_id, $row['fm_ic_username'], $row['fm_ic_password'], $cred_type, $row['fm_owner']);
// add smtp credentials if necessary and different from imap
if ($row['fm_og_smtpauth'] && $cred_type != 3)
{
emailadmin_credentials::write($acc_id, $row['fm_og_username'], $row['fm_og_password'], 2, $row['fm_owner']);
}
}
// migrate fmail identities (fm_ic_hostname is NULL), not real fmail account done above
foreach($db->select('egw_felamimail_accounts', '*', 'fm_ic_hostname IS NULL', __LINE__, __FILE__, false, '', 'felamimail') as $row)
{
if (!($std_identity = emailadmin_std_identity($row['fm_owner'])))
{
continue; // no account found to add identity to
}
// create standard identity for account
$identity = array(
'acc_id' => $std_identity['acc_id'],
'ident_realname' => $row['fm_realname'],
'ident_email' => $row['fm_emailaddress'],
'ident_org' => $row['fm_organisation'],
'ident_signature' => $db->select('egw_felamimail_signatures', 'fm_signature', array(
'fm_signatureid' => $row['fm_signatureid'],
), __LINE__, __FILE__, false, '', 'felamimail')->fetchColumn(),
'account_id' => $row['fm_owner'],
);
$db->insert('egw_ea_identities', $identity, false, __LINE__, __FILE__, 'emailadmin');
}
// migrate all not yet as standard-signatures migrated signatures to identities of first migrated fmail profile
// completing them with realname, email and org from standard-signature of given account
foreach($db->select('egw_felamimail_signatures', '*',
"fm_signatureid NOT IN (SELECT fm_signatureid FROM egw_felamimail_accounts)",
__LINE__, __FILE__, false, '', 'felamimail') as $row)
{
if (!($std_identity = emailadmin_std_identity($row['fm_accountid'])))
{
continue; // ignore signatures for whos owner (fm_accountid!) we have no personal profile
}
$identity = $std_identity; unset($identity['ident_id']);
$identity['ident_realname'] = $std_identity['ident_realname'].' ('.$row['fm_description'].')';
$identity['ident_signature'] = $row['fm_signature'];
$identity['account_id'] = $row['fm_accountid'];
$db->insert('egw_ea_identities', $identity, false, __LINE__, __FILE__, 'emailadmin');
}
}
catch(Exception $e) {
// ignore all errors, eg. because FMail is not installed
echo "<p>".$e->getMessage()."</p>\n";
}
}
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.015';
}
function emailadmin_upgrade1_9_015()
{
$GLOBALS['egw_setup']->oProc->AddColumn('egw_ea_accounts','acc_folder_junk',array(
'type' => 'varchar',
'precision' => '128',
'comment' => 'junk folder'
));
$GLOBALS['egw_setup']->oProc->AddColumn('egw_ea_accounts','acc_imap_default_quota',array(
'type' => 'int',
'precision' => '4',
'comment' => 'default quota, if no user specific one set'
));
$GLOBALS['egw_setup']->oProc->AddColumn('egw_ea_accounts','acc_imap_timeout',array(
'type' => 'int',
'precision' => '2',
'comment' => 'timeout for imap connection'
));
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.016';
}
function emailadmin_upgrade1_9_016()
{
$GLOBALS['egw_setup']->oProc->AddColumn('egw_ea_identities','ident_name',array(
'type' => 'varchar',
'precision' => '128',
'comment' => 'name of identity to display'
));
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.017';
}
function emailadmin_upgrade1_9_017()
{
$GLOBALS['egw_setup']->oProc->CreateTable('egw_ea_notifications',array(
'fd' => array(
'notif_id' => array('type' => 'auto','nullable' => False),
'acc_id' => array('type' => 'int','precision' => '4','nullable' => False,'comment' => 'mail account'),
'account_id' => array('type' => 'int','meta' => 'user','precision' => '4','nullable' => False,'comment' => 'user account'),
'notif_folder' => array('type' => 'varchar','precision' => '255','nullable' => False,'comment' => 'folder name')
),
'pk' => array('notif_id'),
'fk' => array(),
'ix' => array(array('account_id','acc_id')),
'uc' => array()
));
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.018';
}
function emailadmin_upgrade1_9_018()
{
$GLOBALS['egw_setup']->oProc->AlterColumn('egw_ea_accounts','acc_smtp_type',array(
'type' => 'varchar',
'precision' => '32',
'default' => 'emailadmin_smtp',
'comment' => 'smtp class to use'
));
$GLOBALS['egw_setup']->oProc->AlterColumn('egw_ea_accounts','acc_imap_type',array(
'type' => 'varchar',
'precision' => '32',
'default' => 'emailadmin_imap',
'comment' => 'imap class to use'
));
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '1.9.019';
}
function emailadmin_upgrade1_9_019()
{
return $GLOBALS['setup_info']['emailadmin']['currentver'] = '14.1';
}

View File

@ -0,0 +1,336 @@
<?xml version="1.0"?>
<!-- $Id$ -->
<overlay>
<template id="emailadmin.account.identity" template="" lang="" group="0" version="1.9.001">
<grid width="100%" height="300">
<columns>
<column width="113"/>
<column width="300"/>
<column/>
</columns>
<rows>
<row>
<description for="ident_id" value="Identity"/>
<menulist>
<menupopup id="ident_id" no_lang="1" onchange="1"/>
</menulist>
<checkbox label="allow users to create further identities" id="acc_further_identities" class="emailadmin_no_user"/>
</row>
<row>
<description for="ident_name" value="Name"/>
<textbox id="ident_name" size="80" maxlength="128" span="all" blur="default your name and email"/>
</row>
<row>
<description for="ident_realname" value="Your name"/>
<hbox span="all">
<textbox id="ident_realname" size="80" maxlength="128"/>
<buttononly label="Placeholders" id="button[placeholders]" onclick="window.open(egw::link('/index.php','menuaction=addressbook.addressbook_merge.show_replacements&amp;nonavbar=1'),'_blank','dependent=yes,width=860,height=620,scrollbars=yes,status=yes'); return false;" options="dialog_help"/>
</hbox>
</row>
<row>
<description for="ident_org" value="Organisation"/>
<textbox id="ident_org" size="80" maxlength="128" span="all"/>
</row>
<row>
<description for="ident_email" value="EMail address"/>
<url-email id="ident_email" options="80,128" span="all"/>
</row>
<row>
<htmlarea expand_toolbar="false" height="125px" id="ident_signature" span="all"/>
</row>
</rows>
</grid>
</template>
<template id="emailadmin.account.imap" template="" lang="" group="0" version="1.9.001">
<grid width="100%" height="300">
<columns>
<column width="115"/>
<column width="200"/>
<column width="60"/>
<column/>
</columns>
<rows>
<row class="emailadmin_no_single">
<description for="acc_imap_logintype" value="Type"/>
<menulist>
<menupopup id="acc_imap_type"/>
</menulist>
<description for="acc_imap_logintype" value="Login" class="emailadmin_no_single"/>
<menulist>
<menupopup class="emailadmin_no_single" statustext="How username get constructed" id="acc_imap_logintype"/>
</menulist>
</row>
<row class="@manual_class">
<description for="acc_imap_username" value="Username"/>
<textbox id="acc_imap_username" size="32" maxlength="128"/>
<description for="acc_domain" value="Domain" class="emailadmin_no_single"/>
<textbox id="acc_domain" size="32" maxlength="128" class="emailadmin_no_single"/>
</row>
<row>
<description for="acc_imap_password" value="Password"/>
<passwd id="acc_imap_password" options="32,128"/>
<description id="acc_imap_account_id" class="emailadmin_diagnostic"/>
<description/>
</row>
<row class="@manual_class">
<description for="acc_imap_host" value="IMAP server"/>
<textbox blur="Hostname or IP" id="acc_imap_host" size="32" maxlength="128" span="all"/>
</row>
<row>
<description for="acc_imap_ssl" value="Secure connection"/>
<hbox>
<menulist>
<menupopup class="emailadmin_ssl" id="acc_imap_ssl" needed="1" onchange="app.emailadmin.wizard_imap_ssl_onchange"/>
</menulist>
<textbox type="integer" label="Port" id="acc_imap_port" needed="1" class="emailadmin_port"/>
</hbox>
<description/>
<description/>
</row>
<row class="emailadmin_no_single">
<groupbox span="all" class="emailadmin_imap_admin">
<caption label="IMAP administration"/>
<grid>
<columns>
<column width="100"/>
<column/>
</columns>
<rows>
<row>
<description for="acc_imap_admin_username" value="Admin user"/>
<textbox id="acc_imap_admin_username" size="32" maxlength="128"/>
</row>
<row>
<description for="acc_imap_admin_password" value="Password"/>
<passwd id="acc_imap_admin_password" options="32,128"/>
</row>
</rows>
</grid>
</groupbox>
<description/>
<description/>
<description/>
<description/>
<description/>
<description/>
</row>
</rows>
</grid>
</template>
<template id="emailadmin.account.folder" template="" lang="" group="0" version="1.9.001">
<grid width="100%" height="300">
<columns>
<column width="115"/>
<column/>
</columns>
<rows>
<row>
<description for="acc_folder_sent" value="Sent folder"/>
<taglist id="acc_folder_sent" empty_label="Select one ..." maxSelection="1" autocomplete_url=""/>
</row>
<row>
<description for="acc_folder_trash" value="Trash folder"/>
<taglist id="acc_folder_trash" empty_label="Select one ..." maxSelection="1" autocomplete_url=""/>
</row>
<row>
<description for="acc_folder_draft" value="Drafts folder"/>
<taglist id="acc_folder_draft" empty_label="Select one ..." maxSelection="1" autocomplete_url=""/>
</row>
<row>
<description for="acc_folder_template" value="Templates folder"/>
<taglist id="acc_folder_template" empty_label="Select one ..." maxSelection="1" autocomplete_url=""/>
</row>
<row>
<description for="acc_folder_junk" value="Junk folder"/>
<taglist id="acc_folder_junk" empty_label="Select one ..." maxSelection="1" autocomplete_url=""/>
</row>
<row>
<description for="acc_folder_junk" value="Notify about new mail in this folders"/>
<vbox>
<taglist id="notify_folders" empty_label="Select one ..." autocomplete_url=""/>
<checkbox id="notify_save_default" label="save as default"/>
<checkbox id="notify_use_default" label="use default"/>
</vbox>
</row>
</rows>
</grid>
</template>
<template id="emailadmin.account.sieve" template="" lang="" group="0" version="1.9.001">
<grid width="100%" height="300">
<columns>
<column width="120"/>
<column/>
</columns>
<rows>
<row>
<description for="acc_sieve_enabled" value="Enable Sieve"/>
<menulist>
<menupopup type="select-bool" id="acc_sieve_enabled" needed="1"/>
</menulist>
</row>
<row class="@manual_class">
<description for="acc_sieve_host" value="Sieve server"/>
<textbox blur="Hostname or IP" id="acc_sieve_host" onchange="app.emailadmin.wizard_sieve_onchange" size="32" maxlength="128"/>
</row>
<row class="@manual_class">
<description for="acc_sieve_ssl" value="Secure connection"/>
<hbox>
<menulist>
<menupopup class="emailadmin_ssl" id="acc_sieve_ssl" onchange="app.emailadmin.wizard_sieve_ssl_onchange"/>
</menulist>
<textbox type="integer" label="Port" id="acc_sieve_port" onchange="app.emailadmin.wizard_sieve_onchange" class="emailadmin_port"/>
</hbox>
</row>
<row height="150">
<description value="Vacation messages with start and end date require an admin account to be set!" span="all" class="emailadmin_no_single"/>
<description/>
<description/>
</row>
</rows>
</grid>
</template>
<template id="emailadmin.account.smtp" template="" lang="" group="0" version="1.9.001">
<grid width="100%" height="300">
<columns>
<column width="115"/>
<column/>
</columns>
<rows>
<row class="emailadmin_no_single">
<description for="acc_smtp_type" value="Type"/>
<menulist>
<menupopup id="acc_smtp_type" onchange="1"/>
</menulist>
</row>
<row class="emailadmin_no_single">
<description for="acc_smtp_auth_session" value="Authentication"/>
<checkbox label="Use username+password from current user" id="acc_smtp_auth_session"/>
</row>
<row class="@manual_class">
<description for="acc_smtp_username" value="Username"/>
<textbox blur="if authentication required" id="acc_smtp_username" size="32" maxlength="128"/>
</row>
<row class="@manual_class">
<description for="acc_smtp_password" value="Password"/>
<hbox>
<passwd id="acc_smtp_password" options="32,128"/>
<description id="acc_smtp_account_id" class="emailadmin_diagnostic"/>
</hbox>
</row>
<row class="@manual_class">
<description for="acc_smtp_host" value="SMTP server"/>
<textbox blur="Hostname or IP" id="acc_smtp_host" needed="1" size="32" maxlength="128"/>
</row>
<row class="@manual_class">
<description for="acc_smtp_ssl" value="Secure connection"/>
<hbox>
<menulist>
<menupopup class="emailadmin_ssl" id="acc_smtp_ssl" needed="1" onchange="app.emailadmin.wizard_smtp_ssl_onchange"/>
</menulist>
<textbox type="integer" label="Port" id="acc_smtp_port" needed="1" class="emailadmin_port"/>
</hbox>
</row>
<row height="50">
<description/>
<description/>
</row>
</rows>
</grid>
</template>
<template id="emailadmin.account.aliases" template="" lang="" group="0" version="1.9.001">
<grid width="100%" height="300">
<columns>
<column width="113"/>
<column width="400"/>
<column/>
</columns>
<rows>
<row>
<description for="mailLocalAddress" value="EMail address"/>
<url-email id="mailLocalAddress" options="32,128"/>
<checkbox label="Email account active" id="accountStatus" selected_value="active"/>
</row>
<row>
<description for="mailAlternateAddress" value="Alternate email address"/>
<taglist id="mailAlternateAddress" autocomplete_url=""/>
<description/>
</row>
<row>
<description for="mailForwardingAddress" value="Forward email's to"/>
<taglist id="mailForwardingAddress" autocomplete_url=""/>
<checkbox label="Forward only" id="deliveryMode" selected_value="forwardOnly" onchange="if (widget.getValue()) et2_dialog.alert('Forward only disables IMAP mailbox / storing of mails and just forwards them to given address.','Forward only');"/>
</row>
<row>
<description for="quotaLimit" value="Quota (MB)"/>
<hbox>
<textbox type="integer" id="quotaLimit"/>
<description value="Leave empty for no quota"/>
</hbox>
<textbox type="integer" label="Currently:" id="quotaUsed" readonly="true"/>
</row>
</rows>
</grid>
</template>
<template id="emailadmin.account" template="" lang="" group="0" version="1.9.001">
<grid width="100%">
<columns>
<column width="120"/>
<column width="500"/>
<column/>
</columns>
<rows>
<row disabled="!@accounts" class="dialogHeader">
<description for="acc_id" value="Mail account"/>
<menulist>
<menupopup id="acc_id" onchange="app.emailadmin.change_account" class="et2_fullWidth"/>
</menulist>
<description/>
</row>
<row class="dialogHeader">
<description for="acc_name" value="Name of account"/>
<textbox id="acc_name" needed="1" size="80" class="et2_fullWidth"/>
<description align="right" value="$cont[acc_id]" class="emailadmin_diagnostic"/>
</row>
<row class="emailadmin_no_user dialogHeader2">
<description for="account_id" value="Valid for"/>
<hbox>
<menulist>
<menupopup type="select-account" id="account_id" onchange="app.emailadmin.account_hide_not_applying" options="Everyone,both"/>
</menulist>
<buttononly label="Select multiple" id="button[multiple]" onclick="app.emailadmin.edit_multiple" options="users"/>
<checkbox label="account editable by user" id="acc_user_editable"/>
</hbox>
<description/>
</row>
<row>
<tabbox id="tabs" span="all">
<tabs>
<tab id="emailadmin.account.identity" label="Identity+Signature" statustext="Identity&amp;Signature"/>
<tab id="emailadmin.account.imap" label="IMAP" statustext="incoming mail"/>
<tab id="emailadmin.account.folder" label="Folder" statustext="Folder"/>
<tab id="emailadmin.account.sieve" label="Sieve" statustext="serverside filtering"/>
<tab id="emailadmin.account.smtp" label="SMTP" statustext="outgoing mail"/>
<tab id="emailadmin.account.aliases" label="Aliases+Forwards" statustext="Aliases, Forwarding, Quota, ..."/>
</tabs>
<tabpanels>
<template id="emailadmin.account.identity"/>
<template id="emailadmin.account.imap"/>
<template id="emailadmin.account.folder"/>
<template id="emailadmin.account.sieve"/>
<template id="emailadmin.account.smtp"/>
<template id="emailadmin.account.aliases"/>
</tabpanels>
</tabbox>
</row>
</rows>
</grid>
<hbox class="dialogFooterToolbar">
<button label="Save" id="button[save]"/>
<button label="Apply" id="button[apply]" />
<button statustext="Use wizard to detect or verify configuration" label="Wizard" id="button[wizard]" image="magicwand" background_image="1"/>
<button label="Cancel" id="button[cancel]" onclick="window.close();"/>
<button align="right" label="Delete" id="button[delete]" onclick="et2_dialog.confirm(widget,'Delete this account','Delete')"/>
<button align="right" label="Delete identity" id="button[delete_identity]" onclick="et2_dialog.confirm(widget,'Delete identity','Delete')" image="delete" background_image="1"/>
</hbox>
</template>
</overlay>

View File

@ -0,0 +1,57 @@
/*
* CSS for EMailAdmin
* $Id$
*/
.defaultProfile { color:#000000; font-weight:bold; }
/**
* mail account wizard and edit
*/
.emailadmin_manual {
display: none;
}
.emailadmin_progress {
display: none;
padding: 10px;
}
.emailadmin_ssl {
margin-right: 10px;
}
.emailadmin_port {
width: 5em;
}
.emailadmin_header {
font-weight: bold;
font-size: 150%;
}
#emailadmin-account_tabs {
padding-top: 10px;
}
#emailadmin-account_acc_imap_logintype {
width: 100%;
}
span.emailadmin_diagnostic,.emailadmin_diagnostic {
color: lightgray;
}
span#emailadmin-account_acc_id {
float: right;
}
#emailadmin-account_acc_smtp_account_id {
padding-left: 5px;
}
#emailadmin-account_button\[multiple\] {
height: auto;
padding-left: 5px;
}
#emailadmin-account_button\[placeholders\] {
height: 16px;
padding-left: 5px;
vertical-align: middle;
}
#emailadmin-account_mailLocalAddress {
width: 98%;
}
select#emailadmin-account_ident_id {
width: 95%;
}

View File

@ -0,0 +1,42 @@
<!-- BEGIN header -->
<form method="POST" action="{action_url}">
<table border="0" align="center">
<tr bgcolor="{th_bg}">
<td colspan="2"><font color="{th_text}">&nbsp;<b>{title}</b></font></td>
</tr>
<!-- END header -->
<!-- BEGIN body -->
<tr bgcolor="{row_on}">
<td colspan="2">&nbsp;</td>
</tr>
<tr bgcolor="{row_off}">
<td colspan="2">&nbsp;<b>{lang_Mail_settings}</b></td>
</tr>
<tr bgcolor="{row_on}">
<td>{lang_IMAP_admin_user}:</td>
<td><input name="newsettings[imapAdminUser]" value="{value_imapAdminUser}"></td>
</tr>
<tr bgcolor="{row_off}">
<td>{lang_IMAP_admin_password}:</td>
<td><input name="newsettings[imapAdminPassword]" value="{value_imapAdminPassword}"></td>
</tr>
<!-- END body -->
<!-- BEGIN footer -->
<tr bgcolor="{th_bg}">
<td colspan="2">
&nbsp;
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" name="submit" value="{lang_submit}">
<input type="submit" name="cancel" value="{lang_cancel}">
</td>
</tr>
</table>
</form>
<!-- END footer -->

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@ -0,0 +1,58 @@
<?xml version="1.0"?>
<!-- $Id$ -->
<overlay>
<template id="emailadmin.wizard.folder" template="" lang="" group="0" version="1.9.001">
<grid width="100%">
<columns>
<column width="120"/>
<column/>
</columns>
<rows>
<row class="dialogHeader">
<description value="Step 2: Folder" span="all" class="emailadmin_header"/>
<description/>
</row>
<row>
<description value="Sent folder" for="acc_folder_sent"/>
<menulist>
<menupopup id="acc_folder_sent" options="Select one ..."/>
</menulist>
</row>
<row>
<description value="Trash folder" for="acc_folder_trash"/>
<menulist>
<menupopup id="acc_folder_trash" options="Select one ..."/>
</menulist>
</row>
<row>
<description value="Drafts folder" for="acc_folder_draft"/>
<menulist>
<menupopup id="acc_folder_draft" options="Select one ..."/>
</menulist>
</row>
<row>
<description value="Templates folder" for="acc_folder_template"/>
<menulist>
<menupopup id="acc_folder_template" options="Select one ..."/>
</menulist>
</row>
<row>
<description value="Junk folder" for="acc_folder_junk"/>
<menulist>
<menupopup id="acc_folder_junk" options="Select one ..."/>
</menulist>
</row>
<row class="dialogFooterToolbar">
<hbox span="all">
<button label="Continue" id="button[continue]" image="continue" background_image="1"/>
<button label="Back" id="button[back]" image="back" background_image="1"/>
<button label="Cancel" id="button[cancel]" onclick="window.close();" image="cancel" background_image="1"/>
</hbox>
</row>
<row>
<textbox multiline="true" id="folder_output" readonly="true" span="all"/>
</row>
</rows>
</grid>
</template>
</overlay>

View File

@ -0,0 +1,52 @@
<?xml version="1.0"?>
<!-- $Id$ -->
<overlay>
<template id="emailadmin.wizard.sieve" template="" lang="" group="0" version="1.9.001">
<grid width="100%">
<columns>
<column width="120"/>
<column/>
</columns>
<rows>
<row class="dialogHeader">
<description value="Step 3: Sieve - server side mail filtering" span="all" class="emailadmin_header"/>
<description/>
</row>
<row>
<description value="Enable Sieve" for="acc_sieve_enabled"/>
<menulist>
<menupopup type="select-bool" id="acc_sieve_enabled"/>
</menulist>
</row>
<row class="@manual_class">
<description value="Sieve server" for="acc_sieve_host"/>
<textbox blur="Hostname or IP" id="acc_sieve_host" onchange="app.emailadmin.wizard_sieve_onchange" size="32" maxlength="128"/>
</row>
<row class="@manual_class">
<description value="Secure connection" for="acc_sieve_ssl"/>
<hbox>
<menulist>
<menupopup id="acc_sieve_ssl" onchange="app.emailadmin.wizard_sieve_ssl_onchange" class="emailadmin_ssl"/>
</menulist>
<textbox type="integer" label="Port" id="acc_sieve_port" onchange="app.emailadmin.wizard_sieve_onchange" class="emailadmin_port"/>
</hbox>
</row>
<row class="dialogFooterToolbar">
<hbox span="all">
<button label="Continue" id="button[continue]" onclick="app.emailadmin.wizard_detect" image="continue" background_image="1"/>
<button label="Back" id="button[back]" image="back" background_image="1"/>
<button label="Manual entry" id="button[manual]" onclick="app.emailadmin.wizard_manual" image="manual" background_image="1"/>
<buttononly label="Cancel" id="button[cancel]" onclick="window.close();" image="cancel" background_image="1"/>
</hbox>
</row>
<row>
<image src="emailadmin/progress" span="all" class="emailadmin_progress"/>
<description/>
</row>
<row>
<textbox multiline="true" id="sieve_output" readonly="true" span="all"/>
</row>
</rows>
</grid>
</template>
</overlay>

View File

@ -0,0 +1,54 @@
<?xml version="1.0"?>
<!-- $Id$ -->
<overlay>
<template id="emailadmin.wizard.smtp" template="" lang="" group="0" version="1.9.001">
<grid width="100%">
<columns>
<column width="120"/>
<column/>
</columns>
<rows>
<row class="dialogHeader">
<description value="Step 4: SMTP - outgoing mail" span="all" class="emailadmin_header"/>
<description/>
</row>
<row class="@manual_class">
<description value="Username" for="acc_smtp_username"/>
<textbox blur="if authentication required" id="acc_smtp_username" size="32" maxlength="128"/>
</row>
<row class="@manual_class">
<description value="Password" for="acc_smtp_password"/>
<passwd id="acc_smtp_password" options="32,128"/>
</row>
<row class="@manual_class">
<description value="SMTP server" for="acc_smtp_host"/>
<textbox blur="Hostname or IP" id="acc_smtp_host" size="32" maxlength="128"/>
</row>
<row class="@manual_class">
<description value="Secure connection" for="acc_smtp_ssl"/>
<hbox>
<menulist>
<menupopup id="acc_smtp_ssl" onchange="app.emailadmin.wizard_smtp_ssl_onchange" class="emailadmin_ssl"/>
</menulist>
<textbox type="integer" label="Port" id="acc_smtp_port" class="emailadmin_port"/>
</hbox>
</row>
<row class="dialogFooterToolbar">
<hbox span="all">
<button label="Continue" id="button[continue]" onclick="app.emailadmin.wizard_detect" image="continue" background_image="1"/>
<button label="Back" id="button[back]" image="back" background_image="1"/>
<button label="Manual entry" id="button[manual]" onclick="app.emailadmin.wizard_manual" image="manual" background_image="1"/>
<buttononly label="Cancel" id="button[cancel]" onclick="window.close();" image="cancel" background_image="1"/>
</hbox>
</row>
<row>
<image src="emailadmin/progress" span="all" class="emailadmin_progress"/>
<description/>
</row>
<row>
<textbox multiline="true" id="smtp_output" readonly="true" span="all"/>
</row>
</rows>
</grid>
</template>
</overlay>

View File

@ -0,0 +1,58 @@
<?xml version="1.0"?>
<!-- $Id$ -->
<overlay>
<template id="emailadmin.wizard" template="" lang="" group="0" version="1.9.001">
<grid width="100%">
<columns>
<column width="120"/>
<column/>
</columns>
<rows>
<row class="dialogHeader">
<description value="Step 1: IMAP - incoming mail" span="all" class="emailadmin_header"/>
<description/>
</row>
<row>
<description value="EMail address"/>
<url-email id="ident_email" needed="1" options="32,128"/>
</row>
<row class="@manual_class">
<description value="Username" for="acc_imap_username"/>
<textbox blur="if different from EMail address" id="acc_imap_username" size="32" maxlength="128"/>
</row>
<row>
<description value="Password" for="acc_imap_password"/>
<passwd id="acc_imap_password" needed="1" options="32,128"/>
</row>
<row class="@manual_class">
<description value="IMAP server" for="acc_imap_host"/>
<textbox blur="Hostname or IP" id="acc_imap_host" size="32" maxlength="128"/>
</row>
<row class="@manual_class">
<description value="Secure connection" for="acc_imap_ssl"/>
<hbox>
<menulist>
<menupopup id="acc_imap_ssl" onchange="app.emailadmin.wizard_imap_ssl_onchange" class="emailadmin_ssl"/>
</menulist>
<textbox type="integer" label="Port" id="acc_imap_port" class="emailadmin_port"/>
</hbox>
</row>
<row class="dialogFooterToolbar">
<hbox span="all">
<button label="Continue" id="button[continue]" onclick="app.emailadmin.wizard_detect" image="continue" background_image="1"/>
<button label="Manual entry" id="button[manual]" onclick="app.emailadmin.wizard_manual" image="manual" background_image="1"/>
<button label="Skip IMAP" id="button[skip_imap]" class="@manual_class" novalidate="1"/>
<buttononly label="Cancel" id="button[cancel]" onclick="window.close();" image="cancel" background_image="1"/>
</hbox>
</row>
<row>
<image src="emailadmin/progress" span="all" class="emailadmin_progress"/>
<description/>
</row>
<row>
<textbox multiline="true" id="output" readonly="true" span="all"/>
</row>
</rows>
</grid>
</template>
</overlay>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

167
emailadmin/test.php Normal file
View File

@ -0,0 +1,167 @@
<?php
/**
* EGroupware EMailAdmin: IMAP tests
*
* @link http://www.stylite.de
* @package emailadmin
* @author Ralf Becker <rb-AT-stylite.de>
* @copyright (c) 2013 by Ralf Becker <rb-AT-stylite.de>
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
* @version $Id$
*/
$GLOBALS['egw_info'] = array(
'flags' => array(
'currentapp' => 'emailadmin'
)
);
require '../header.inc.php';
/**
* @link http://dev.horde.org/imap_client/documentation.php
*/
$request_start = microtime(true);
function stop_time($total = false)
{
global $request_start;
static $now;
$start = $total || !isset($now) ? $request_start : $now;
$now = microtime(true);
echo "<b>took ".number_format($now-$start, 3)."s</b>\n";
}
function horde_connect(array $data)
{
// Connect to an IMAP server.
/* $client = new Horde_Imap_Client_Socket(array_merge(array(
//'port' => '993',
'secure' => 'ssl',
//'debug_literal' => true,
'debug' => '/tmp/imap.log',
'cache' => array(
'backend' => new Horde_Imap_Client_Cache_Backend_Cache(array(
'cacheob' => new emailadmin_horde_cache(),
// 'cacheob' => new Horde_Cache_Storage_Memcache(array(
// 'prefix' => 'test-imap',
// 'memcache' => new Horde_Memcache(),
// )),
)),
),
), $data));*/
$client = new emailadmin_imap(array(
'acc_imap_username' => $data['username'],
'acc_imap_password' => $data['password'],
'acc_imap_host' => $data['hostspec'],
'acc_imap_ssl' => 3, // ssl
));
var_dump($client->capability());
echo "\nisSecureConnection():";
var_dump($client->isSecureConnection());
echo "\n(bool)getCache():";
var_dump((boolean)$client->getCache());
echo "\ngetNamespaces():";
var_dump($client->getNamespaces());
return $client;
}
function horde_fetch(Horde_Imap_Client_Socket $client, $mailbox, $show=true)
{
$squery = new Horde_Imap_Client_Search_Query();
$squery->dateSearch(new DateTime('-30days'), Horde_Imap_Client_Search_Query::DATE_SINCE, $header=false, $not=false);
$squery->flag('DELETED', $set=false);
$sorted = $client->search($mailbox, $squery, array(
'sort' => array(Horde_Imap_Client::SORT_REVERSE, Horde_Imap_Client::SORT_SEQUENCE),
));
$query_str = $squery->build();
echo $query_str['query']." search returned $results[count] uids sorted by reverse sequence: ";
//var_dump($results['match']);
stop_time();
$first20uids = new Horde_Imap_Client_Ids();
$first20uids->add(array_slice($sorted['match']->ids, 0, 20));
echo "\nUID FETCH (BODY.PEEK[HEADER.FIELDS (SUBJECT FROM TO CC DATE)]): ";
$fquery = new Horde_Imap_Client_Fetch_Query();
$fquery->headers('headers', array('Subject', 'From', 'To', 'Cc', 'Date'), array('peek' => true,'cache' => true));
$fquery->structure();
$fquery->flags();
$fquery->imapDate();
$fetched = $client->fetch($mailbox, $fquery, array(
'ids' => $first20uids,
));
if ($show) var_dump($fetched);
stop_time();
}
function mail_connect(array $data)
{
$icServer = new emailadmin_oldimap();
$icServer->ImapServerId = 'test-'.$data['username'];
$icServer->encryption = 3; // ssl
$icServer->host = $data['hostspec'];
$icServer->port = 993;
$icServer->validatecert = false;
$icServer->username = $data['username'];
$icServer->loginName = $data['username'];
$icServer->password = $data['password'];
$icServer->enableSieve = false;
$client = felamimail_bo::getInstance(false, $icServer->ImapServerId, false, $icServer);
$client->openConnection($icServer->ImapServerId);
return $client;
}
function mail_fetch(felamimail_bo $client, $mailbox, $show=true)
{
$filter = $client->createIMAPFilter($mailbox, array(
// 'range' => '0:20',
));
//$sorted = $client->getSortedList($mailbox, 'ARRIVAL', $reverse=true, $filter, $resultByUid=true, $setSession=true);
//_debug_array($sorted);
$fetched = $client->getHeaders($mailbox, 0, 20, 'ARRIVAL', $reverse=true, array(), $_thisUIDOnly=null, $_cacheResult=true);
if ($show) _debug_array($fetched);
stop_time();
}
$show = false;
foreach(array(
'Horde-IMAP_Client' => array('horde_connect','horde_fetch'),
// 'EGroupware-mail/Net_IMAP' => array('mail_connect','mail_fetch'),
) as $name => $methods)
{;
$request_start = microtime(true);
echo "<h1>$name</h1>\n";
foreach(array(
'rb@stylite.de' => array(
'password' => 'secret',
'hostspec' => 'imap.stylite.de',
'mailboxes' => array('INBOX')//,'INBOX/Sent'),
),
) as $email => $data)
{
list($connect, $fetch) = $methods;
echo "<h2>$email:</h1>\n<pre>";
$client = $connect(array_merge(array('username'=>$email), $data));
stop_time();
foreach($data['mailboxes'] as $mailbox)
{
echo "\n</pre><h3>$email: search('$mailbox'):</h2><pre>";
$fetch($client, $mailbox, $show);
}
}
echo "<h1>total for $name "; stop_time(true);
}
common::egw_exit(true);