include/0040755000175000017500000000000007665617350011164 5ustar avelavelinclude/display.php0100644000175000017500000002654407665617250013351 0ustar avelavel $theme_attributes) { $theme_values[$theme_attributes['NAME']] = $theme_attributes['PATH']; } ksort($theme_values); $theme_values = array_flip($theme_values); $optvals[SMOPT_GRP_GENERAL][] = array( 'name' => 'chosen_theme', 'caption' => _("Theme"), 'type' => SMOPT_TYPE_STRLIST, 'refresh' => SMOPT_REFRESH_ALL, 'posvals' => $theme_values, 'save' => 'save_option_theme' ); $css_values = array( 'none' => _("Default" ) ); $handle=opendir('../themes/css/'); while ($file = readdir($handle) ) { if ( substr( $file, -4 ) == '.css' ) { $css_values[$file] = substr( $file, 0, strlen( $file ) - 4 ); } } closedir($handle); if ( count( $css_values > 1 ) ) { $optvals[SMOPT_GRP_GENERAL][] = array( 'name' => 'custom_css', 'caption' => _("Custom Stylesheet"), 'type' => SMOPT_TYPE_STRLIST, 'refresh' => SMOPT_REFRESH_ALL, 'posvals' => $css_values ); } $language_values = array(); foreach ($languages as $lang_key => $lang_attributes) { if (isset($lang_attributes['NAME'])) { $language_values[$lang_key] = $lang_attributes['NAME']; } } asort($language_values); $language_values = array_merge(array('' => _("Default")), $language_values); $language = $squirrelmail_language; $optvals[SMOPT_GRP_GENERAL][] = array( 'name' => 'language', 'caption' => _("Language"), 'type' => SMOPT_TYPE_STRLIST, 'refresh' => SMOPT_REFRESH_ALL, 'posvals' => $language_values ); /* Set values for the "use javascript" option. */ $optvals[SMOPT_GRP_GENERAL][] = array( 'name' => 'javascript_setting', 'caption' => _("Use Javascript"), 'type' => SMOPT_TYPE_STRLIST, 'refresh' => SMOPT_REFRESH_ALL, 'posvals' => array(SMPREF_JS_AUTODETECT => _("Autodetect"), SMPREF_JS_ON => _("Always"), SMPREF_JS_OFF => _("Never")) ); $js_autodetect_script = "\n"; $js_autodetect_results = SMPREF_JS_OFF; $optvals[SMOPT_GRP_GENERAL][] = array( 'name' => 'js_autodetect_results', 'caption' => '', 'type' => SMOPT_TYPE_HIDDEN, 'refresh' => SMOPT_REFRESH_NONE, 'script' => $js_autodetect_script, 'save' => 'save_option_javascript_autodetect' ); /*** Load the General Options into the array ***/ $optgrps[SMOPT_GRP_MAILBOX] = _("Mailbox Display Options"); $optvals[SMOPT_GRP_MAILBOX] = array(); $optvals[SMOPT_GRP_MAILBOX][] = array( 'name' => 'show_num', 'caption' => _("Number of Messages to Index"), 'type' => SMOPT_TYPE_INTEGER, 'refresh' => SMOPT_REFRESH_NONE, 'size' => SMOPT_SIZE_TINY ); /* $optvals[SMOPT_GRP_MAILBOX][] = array( 'name' => 'alt_index_colors', 'caption' => _("Enable Alternating Row Colors"), 'type' => SMOPT_TYPE_BOOLEAN, 'refresh' => SMOPT_REFRESH_NONE ); */ /* $optvals[SMOPT_GRP_MAILBOX][] = array( 'name' => 'page_selector', 'caption' => _("Enable Page Selector"), 'type' => SMOPT_TYPE_BOOLEAN, 'refresh' => SMOPT_REFRESH_NONE ); */ /* $optvals[SMOPT_GRP_MAILBOX][] = array( 'name' => 'page_selector_max', 'caption' => _("Maximum Number of Pages to Show"), 'type' => SMOPT_TYPE_INTEGER, 'refresh' => SMOPT_REFRESH_NONE, 'size' => SMOPT_SIZE_TINY ); */ /*** Load the General Options into the array ***/ $optgrps[SMOPT_GRP_MESSAGE] = _("Message Display and Composition"); $optvals[SMOPT_GRP_MESSAGE] = array(); /* $optvals[SMOPT_GRP_MESSAGE][] = array( 'name' => 'wrap_at', 'caption' => _("Wrap Incoming Text At"), 'type' => SMOPT_TYPE_INTEGER, 'refresh' => SMOPT_REFRESH_NONE, 'size' => SMOPT_SIZE_TINY ); */ /* $optvals[SMOPT_GRP_MESSAGE][] = array( 'name' => 'editor_size', 'caption' => _("Size of Editor Window"), 'type' => SMOPT_TYPE_INTEGER, 'refresh' => SMOPT_REFRESH_NONE, 'size' => SMOPT_SIZE_TINY ); */ /* $optvals[SMOPT_GRP_MESSAGE][] = array( 'name' => 'location_of_buttons', 'caption' => _("Location of Buttons when Composing"), 'type' => SMOPT_TYPE_STRLIST, 'refresh' => SMOPT_REFRESH_NONE, 'posvals' => array(SMPREF_LOC_TOP => _("Before headers"), SMPREF_LOC_BETWEEN => _("Between headers and message body"), SMPREF_LOC_BOTTOM => _("After message body")) ); */ $optvals[SMOPT_GRP_MESSAGE][] = array( 'name' => 'use_javascript_addr_book', 'caption' => _("Addressbook Display Format"), 'type' => SMOPT_TYPE_STRLIST, 'refresh' => SMOPT_REFRESH_NONE, 'posvals' => array('1' => _("Javascript"), '0' => _("HTML")) ); /* $optvals[SMOPT_GRP_MESSAGE][] = array( 'name' => 'show_html_default', 'caption' => _("Show HTML Version by Default"), 'type' => SMOPT_TYPE_BOOLEAN, 'refresh' => SMOPT_REFRESH_NONE ); */ /* $optvals[SMOPT_GRP_MESSAGE][] = array( 'name' => 'enable_forward_as_attachment', 'caption' => _("Enable Forward as Attachment"), 'type' => SMOPT_TYPE_BOOLEAN, 'refresh' => SMOPT_REFRESH_NONE ); */ /* $optvals[SMOPT_GRP_MESSAGE][] = array( 'name' => 'forward_cc', 'caption' => _("Include CCs when Forwarding Messages"), 'type' => SMOPT_TYPE_BOOLEAN, 'refresh' => SMOPT_REFRESH_NONE ); */ $optvals[SMOPT_GRP_MESSAGE][] = array( 'name' => 'include_self_reply_all', 'caption' => _("Include Me in CC when I Reply All"), 'type' => SMOPT_TYPE_BOOLEAN, 'refresh' => SMOPT_REFRESH_NONE ); /* $optvals[SMOPT_GRP_MESSAGE][] = array( 'name' => 'show_xmailer_default', 'caption' => _("Enable Mailer Display"), 'type' => SMOPT_TYPE_BOOLEAN, 'refresh' => SMOPT_REFRESH_NONE ); */ /* $optvals[SMOPT_GRP_MESSAGE][] = array( 'name' => 'attachment_common_show_images', 'caption' => _("Display Attached Images with Message"), 'type' => SMOPT_TYPE_BOOLEAN, 'refresh' => SMOPT_REFRESH_NONE ); */ /* $optvals[SMOPT_GRP_MESSAGE][] = array( 'name' => 'pf_cleandisplay', 'caption' => _("Enable Printer Friendly Clean Display"), 'type' => SMOPT_TYPE_BOOLEAN, 'refresh' => SMOPT_REFRESH_NONE ); */ if ($default_use_mdn) { $optvals[SMOPT_GRP_MESSAGE][] = array( 'name' => 'mdn_user_support', 'caption' => _("Enable Mail Delivery Notification"), 'type' => SMOPT_TYPE_BOOLEAN, 'refresh' => SMOPT_REFRESH_NONE ); } $optvals[SMOPT_GRP_MESSAGE][] = array( 'name' => 'compose_new_win', 'caption' => _("Compose Messages in New Window"), 'type' => SMOPT_TYPE_BOOLEAN, 'refresh' => SMOPT_REFRESH_ALL ); /* $optvals[SMOPT_GRP_MESSAGE][] = array( 'name' => 'compose_width', 'caption' => _("Width of Compose Window"), 'type' => SMOPT_TYPE_INTEGER, 'refresh' => SMOPT_REFRESH_ALL, 'size' => SMOPT_SIZE_TINY ); */ /* $optvals[SMOPT_GRP_MESSAGE][] = array( 'name' => 'compose_height', 'caption' => _("Height of Compose Window"), 'type' => SMOPT_TYPE_INTEGER, 'refresh' => SMOPT_REFRESH_ALL, 'size' => SMOPT_SIZE_TINY ); */ /* $optvals[SMOPT_GRP_MESSAGE][] = array( 'name' => 'sig_first', 'caption' => _("Append Signature before Reply/Forward Text"), 'type' => SMOPT_TYPE_BOOLEAN, 'refresh' => SMOPT_REFRESH_NONE ); */ /* $optvals[SMOPT_GRP_MESSAGE][] = array( 'name' => 'internal_date_sort', 'caption' => _("Enable Sort by of Receive Date"), 'type' => SMOPT_TYPE_BOOLEAN, 'refresh' => SMOPT_REFRESH_ALL ); */ if ($allow_thread_sort == TRUE) { /* $optvals[SMOPT_GRP_MESSAGE][] = array( 'name' => 'sort_by_ref', 'caption' => _("Enable Thread Sort by References Header"), 'type' => SMOPT_TYPE_BOOLEAN, 'refresh' => SMOPT_REFRESH_ALL ); */ } /* Assemble all this together and return it as our result. */ $result = array( 'grps' => $optgrps, 'vals' => $optvals ); return ($result); } /******************************************************************/ /** Define any specialized save functions for this option page. ***/ /******************************************************************/ function save_option_theme($option) { global $theme; /* Do checking to make sure $new_theme is in the array. */ $theme_in_array = false; for ($i = 0; $i < count($theme); ++$i) { if ($theme[$i]['PATH'] == $option->new_value) { $theme_in_array = true; break; } } if (!$theme_in_array) { $option->new_value = ''; } /* Save the option like normal. */ save_option($option); } function save_option_javascript_autodetect($option) { global $data_dir, $username, $new_javascript_setting; /* Set javascript either on or off. */ if ($new_javascript_setting == SMPREF_JS_AUTODETECT) { if ($option->new_value == SMPREF_JS_ON) { setPref($data_dir, $username, 'javascript_on', SMPREF_JS_ON); } else { setPref($data_dir, $username, 'javascript_on', SMPREF_JS_OFF); } } else { setPref($data_dir, $username, 'javascript_on', $new_javascript_setting); } } ?> include/folder.php0100644000175000017500000002317107665617250013150 0ustar avelavel 'folder_prefix', 'caption' => _("Folder Path"), 'type' => SMOPT_TYPE_STRING, 'refresh' => SMOPT_REFRESH_FOLDERLIST, 'size' => SMOPT_SIZE_LARGE ); } */ $trash_folder_values = array(SMPREF_NONE => '[ '._("Do not use Trash").' ]', 'whatever' => $boxes); $optvals[SMOPT_GRP_SPCFOLDER][] = array( 'name' => 'trash_folder', 'caption' => _("Trash Folder"), 'type' => SMOPT_TYPE_FLDRLIST, 'refresh' => SMOPT_REFRESH_FOLDERLIST, 'posvals' => $trash_folder_values, 'save' => 'save_option_trash_folder' ); $sent_folder_values = array(SMPREF_NONE => '[ '._("Do not use Sent").' ]', 'whatever' => $boxes); $optvals[SMOPT_GRP_SPCFOLDER][] = array( 'name' => 'sent_folder', 'caption' => _("Sent Folder"), 'type' => SMOPT_TYPE_FLDRLIST, 'refresh' => SMOPT_REFRESH_FOLDERLIST, 'posvals' => $sent_folder_values, 'save' => 'save_option_sent_folder' ); $draft_folder_values = array(SMPREF_NONE => '[ '._("Do not use Drafts").' ]', 'whatever' => $boxes); $optvals[SMOPT_GRP_SPCFOLDER][] = array( 'name' => 'draft_folder', 'caption' => _("Draft Folder"), 'type' => SMOPT_TYPE_FLDRLIST, 'refresh' => SMOPT_REFRESH_FOLDERLIST, 'posvals' => $draft_folder_values, 'save' => 'save_option_draft_folder' ); /*** Load the General Options into the array ***/ $optgrps[SMOPT_GRP_FOLDERLIST] = _("Folder List Options"); $optvals[SMOPT_GRP_FOLDERLIST] = array(); $optvals[SMOPT_GRP_FOLDERLIST][] = array( 'name' => 'location_of_bar', 'caption' => _("Location of Folder List"), 'type' => SMOPT_TYPE_STRLIST, 'refresh' => SMOPT_REFRESH_ALL, 'posvals' => array(SMPREF_LOC_LEFT => _("Left"), SMPREF_LOC_RIGHT => _("Right")) ); $left_size_values = array(); for ($lsv = 100; $lsv <= 300; $lsv += 10) { $left_size_values[$lsv] = "$lsv " . _("pixels"); } $optvals[SMOPT_GRP_FOLDERLIST][] = array( 'name' => 'left_size', 'caption' => _("Width of Folder List"), 'type' => SMOPT_TYPE_STRLIST, 'refresh' => SMOPT_REFRESH_ALL, 'posvals' => $left_size_values ); $minute_str = _("Minutes"); $left_refresh_values = array(SMPREF_NONE => _("Never")); foreach (array(30,60,120,180,300,600) as $lr_val) { if ($lr_val < 60) { $left_refresh_values[$lr_val] = "$lr_val " . _("Seconds"); } else if ($lr_val == 60) { $left_refresh_values[$lr_val] = "1 " . _("Minute"); } else { $left_refresh_values[$lr_val] = ($lr_val/60) . " $minute_str"; } } $optvals[SMOPT_GRP_FOLDERLIST][] = array( 'name' => 'left_refresh', 'caption' => _("Auto Refresh Folder List"), 'type' => SMOPT_TYPE_STRLIST, 'refresh' => SMOPT_REFRESH_FOLDERLIST, 'posvals' => $left_refresh_values ); $optvals[SMOPT_GRP_FOLDERLIST][] = array( 'name' => 'unseen_notify', 'caption' => _("Enable Unread Message Notification"), 'type' => SMOPT_TYPE_STRLIST, 'refresh' => SMOPT_REFRESH_FOLDERLIST, 'posvals' => array(SMPREF_UNSEEN_NONE => _("No Notification"), SMPREF_UNSEEN_INBOX => _("Only INBOX"), SMPREF_UNSEEN_ALL => _("All Folders")) ); $optvals[SMOPT_GRP_FOLDERLIST][] = array( 'name' => 'unseen_type', 'caption' => _("Unread Message Notification Type"), 'type' => SMOPT_TYPE_STRLIST, 'refresh' => SMOPT_REFRESH_FOLDERLIST, 'posvals' => array(SMPREF_UNSEEN_ONLY => _("Only Unseen"), SMPREF_UNSEEN_TOTAL => _("Unseen and Total")) ); /* $optvals[SMOPT_GRP_FOLDERLIST][] = array( 'name' => 'collapse_folders', 'caption' => _("Enable Collapsable Folders"), 'type' => SMOPT_TYPE_BOOLEAN, 'refresh' => SMOPT_REFRESH_FOLDERLIST ); */ /* $optvals[SMOPT_GRP_FOLDERLIST][] = array( 'name' => 'unseen_cum', 'caption' => _("Enable Cumulative Unread Message Notification"), 'type' => SMOPT_TYPE_BOOLEAN, 'refresh' => SMOPT_REFRESH_FOLDERLIST ); */ /* $optvals[SMOPT_GRP_FOLDERLIST][] = array( 'name' => 'date_format', 'caption' => _("Show Clock on Folders Panel"), 'type' => SMOPT_TYPE_STRLIST, 'refresh' => SMOPT_REFRESH_FOLDERLIST, 'posvals' => array( '1' => 'MM/DD/YY HH:MM', '2' => 'DD/MM/YY HH:MM', '3' => 'DDD, HH:MM', '4' => 'HH:MM:SS', '5' => 'HH:MM', '6' => _("No Clock")), ); */ /* $optvals[SMOPT_GRP_FOLDERLIST][] = array( 'name' => 'hour_format', 'caption' => _("Hour Format"), 'type' => SMOPT_TYPE_STRLIST, 'refresh' => SMOPT_REFRESH_FOLDERLIST, 'posvals' => array(SMPREF_TIME_12HR => _("12-hour clock"), SMPREF_TIME_24HR => _("24-hour clock")) ); */ /* $optvals[SMOPT_GRP_FOLDERLIST][] = array( 'name' => 'search_memory', 'caption' => _("Memory Search"), 'type' => SMOPT_TYPE_STRLIST, 'refresh' => SMOPT_REFRESH_NONE, 'posvals' => array( 0 => _("Disabled"), 1 => '1', 2 => '2', 3 => '3', 4 => '4', 5 => '5', 6 => '6', 7 => '7', 8 => '8', 9 => '9') ); */ /*** Load the General Options into the array ***/ /* $optgrps[SMOPT_GRP_FOLDERSELECT] = _("Folder Selection Options"); $optvals[SMOPT_GRP_FOLDERSELECT] = array(); */ $delim = sqimap_get_delimiter($imapConnection); /* $optvals[SMOPT_GRP_FOLDERSELECT][] = array( 'name' => 'mailbox_select_style', 'caption' => _("Selection List Style"), 'type' => SMOPT_TYPE_STRLIST, 'refresh' => SMOPT_REFRESH_NONE, 'posvals' => array( 0 => _("Long: ") . '"Folder' . $delim . 'Subfolder"', 1 => _("Indented: ") . '"    ' . 'Subfolder"', 2 => _("Delimited: ") . '". ' . 'Subfolder"') ); */ /* Assemble all this together and return it as our result. */ $result = array( 'grps' => $optgrps, 'vals' => $optvals ); sqimap_logout($imapConnection); return ($result); } /******************************************************************/ /** Define any specialized save functions for this option page. ***/ /******************************************************************/ function save_option_trash_folder($option) { global $data_dir, $username; /* Set move to trash on or off. */ $trash_on = ($option->new_value == SMPREF_NONE ? SMPREF_OFF : SMPREF_ON); setPref($data_dir, $username, 'move_to_trash', $trash_on); /* Now just save the option as normal. */ save_option($option); } function save_option_sent_folder($option) { global $data_dir, $username; /* Set move to sent on or off. */ $sent_on = ($option->new_value == SMPREF_NONE ? SMPREF_OFF : SMPREF_ON); setPref($data_dir, $username, 'move_to_sent', $sent_on); /* Now just save the option as normal. */ save_option($option); } function save_option_draft_folder($option) { global $data_dir, $username; /* Set move to draft on or off. */ $draft_on = ($option->new_value == SMPREF_NONE ? SMPREF_OFF : SMPREF_ON); setPref($data_dir, $username, 'save_as_draft', $draft_on); /* Now just save the option as normal. */ save_option($option); } ?> include/personal.php0100644000175000017500000001651507665617250013524 0ustar avelavel 'full_name', 'caption' => _("Full Name"), 'type' => SMOPT_TYPE_STRING, 'refresh' => SMOPT_REFRESH_NONE, 'size' => SMOPT_SIZE_HUGE ); } else { $optvals[SMOPT_GRP_CONTACT][] = array( 'name' => 'full_name', 'caption' => _("Full Name"), 'type' => SMOPT_TYPE_COMMENT, 'refresh' => SMOPT_REFRESH_NONE, 'comment' => $full_name ); } if ($edit_identity) { $optvals[SMOPT_GRP_CONTACT][] = array( 'name' => 'email_address', 'caption' => _("Email Address"), 'type' => SMOPT_TYPE_STRING, 'refresh' => SMOPT_REFRESH_NONE, 'size' => SMOPT_SIZE_HUGE ); } else { $optvals[SMOPT_GRP_CONTACT][] = array( 'name' => 'email_address', 'caption' => _("Email Address"), 'type' => SMOPT_TYPE_COMMENT, 'refresh' => SMOPT_REFRESH_NONE, 'comment' => ($preferredemail ? $preferredemail : $email_address) /* Alex */ ); } $optvals[SMOPT_GRP_CONTACT][] = array( 'name' => 'reply_to', 'caption' => _("Reply To"), 'type' => SMOPT_TYPE_STRING, 'refresh' => SMOPT_REFRESH_NONE, 'size' => SMOPT_SIZE_HUGE ); $optvals[SMOPT_GRP_CONTACT][] = array( 'name' => 'signature', 'caption' => _("Signature"), 'type' => SMOPT_TYPE_TEXTAREA, 'refresh' => SMOPT_REFRESH_NONE, 'size' => SMOPT_SIZE_MEDIUM, 'save' => 'save_option_signature' ); /* if ($edit_identity) { */ /* Alex */ $identities_link_value = '' . _("Edit Advanced Identities") . ' '; /* . _("(discards changes made on this form so far)"); */ /* Alex */ $optvals[SMOPT_GRP_CONTACT][] = array( 'name' => 'identities_link', 'caption' => _("Multiple Identities"), 'type' => SMOPT_TYPE_COMMENT, 'refresh' => SMOPT_REFRESH_NONE, 'comment' => $identities_link_value ); /* } */ if ( $tzChangeAllowed ) { $TZ_ARRAY[SMPREF_NONE] = _("Same as server"); $tzfile = SM_PATH . 'locale/timezones.cfg'; if ((!is_readable($tzfile)) or (!$fd = fopen($tzfile,'r'))) { $message = _("Error opening timezone config, contact administrator."); } if (isset($message)) { plain_error_message($message, $color); exit; } while (!feof ($fd)) { $zone = fgets($fd, 1024); if( $zone ) { $zone = trim($zone); $TZ_ARRAY[$zone] = $zone; } } fclose ($fd); $optgrps[SMOPT_GRP_TZ] = _("Timezone Options"); $optvals[SMOPT_GRP_TZ] = array(); $optvals[SMOPT_GRP_TZ][] = array( 'name' => 'timezone', 'caption' => _("Your current timezone"), 'type' => SMOPT_TYPE_STRLIST, 'refresh' => SMOPT_REFRESH_NONE, 'posvals' => $TZ_ARRAY ); } /*** Load the Reply Citation Options into the array ***/ $optgrps[SMOPT_GRP_REPLY] = _("Reply Citation Options"); $optvals[SMOPT_GRP_REPLY] = array(); $optvals[SMOPT_GRP_REPLY][] = array( 'name' => 'reply_citation_style', 'caption' => _("Reply Citation Style"), 'type' => SMOPT_TYPE_STRLIST, 'refresh' => SMOPT_REFRESH_NONE, 'posvals' => array(SMPREF_NONE => _("No Citation"), 'author_said' => _("AUTHOR Said"), 'quote_who' => _("Quote Who XML"), 'user-defined' => _("User-Defined")) ); $optvals[SMOPT_GRP_REPLY][] = array( 'name' => 'reply_citation_start', 'caption' => _("User-Defined Citation Start"), 'type' => SMOPT_TYPE_STRING, 'refresh' => SMOPT_REFRESH_NONE, 'size' => SMOPT_SIZE_MEDIUM ); $optvals[SMOPT_GRP_REPLY][] = array( 'name' => 'reply_citation_end', 'caption' => _("User-Defined Citation End"), 'type' => SMOPT_TYPE_STRING, 'refresh' => SMOPT_REFRESH_NONE, 'size' => SMOPT_SIZE_MEDIUM ); /*** Load the Signature Options into the array ***/ $optgrps[SMOPT_GRP_SIG] = _("Signature Options"); $optvals[SMOPT_GRP_SIG] = array(); $optvals[SMOPT_GRP_SIG][] = array( 'name' => 'use_signature', 'caption' => _("Use Signature"), 'type' => SMOPT_TYPE_BOOLEAN, 'refresh' => SMOPT_REFRESH_NONE ); /* $optvals[SMOPT_GRP_SIG][] = array( 'name' => 'prefix_sig', 'caption' => _("Prefix Signature with '-- ' Line"), 'type' => SMOPT_TYPE_BOOLEAN, 'refresh' => SMOPT_REFRESH_NONE ); */ /* Assemble all this together and return it as our result. */ $result = array( 'grps' => $optgrps, 'vals' => $optvals ); return ($result); } /******************************************************************/ /** Define any specialized save functions for this option page. ***/ /******************************************************************/ function save_option_signature($option) { global $data_dir, $username; setSig($data_dir, $username, 'g', $option->new_value); } ?> include/README0100644000175000017500000000022407665617350012037 0ustar avelavelThese are the files of the directory squirrelmail/include/options that I like to use in the LDAP-enabled Squirrelmail of the project email.uoa.gr.