Gary, Yes default is php 8.0.3 I just upgraded afterwards to 8.3 you are fine on the default installation php. Sorry for the confusion.
Remo > On Feb 22, 2024, at 10:05, Gary Bowling <g...@gbco.us> wrote: > > > > Not sure what you're saying Remo. My version is 8.0.3, and from your command > it looks like yours is as well. I didn't upgrade to anything, just installed > Rocky 9. Maybe you meant 8.0.3 instead of 8.3. > > gb > > > > On 2/22/2024 12:52 PM, Remo Mattei wrote: >> I just upgraded to 8.3 myself seems you can do that no problem but keep 8 >> there Gary. >> >> Remo >> >>> On Feb 22, 2024, at 09:50, Gary Bowling <g...@gbco.us> >>> <mailto:g...@gbco.us> wrote: >>> >>> >>> >>> php -v >>> PHP 8.0.30 (cli) (built: Aug 3 2023 17:13:08) ( NTS gcc x86_64 ) >>> Copyright (c) The PHP Group >>> Zend Engine v4.0.30, Copyright (c) Zend Technologies >>> with Zend OPcache v8.0.30, Copyright (c), by Zend Technologies >>> >>> >>> >>> >>> On 2/22/2024 12:31 PM, Eric Broch wrote: >>>> Odd! Everything works fine on my Rocky9/qmt host. >>>> >>>> What version of php are you running? >>>> >>>> # php -v >>>> >>>> On 2/22/2024 10:21 AM, Gary Bowling wrote: >>>>> Thanks Eric. >>>>> >>>>> Yep, just to not send a huge logfile. After having everything stopped for >>>>> two hrs, I started everything and went to the server/admin-toaster and >>>>> got the screen from below. It looks like a 401 response, which indicates >>>>> a lack of authentication credentials. And I'm not sure why. Probably >>>>> something to do with me copying over the admin.pass or admin.htpasswd >>>>> from my old server. That was part of the migration page. >>>>> >>>>> Here's the httpd/error.log from that. >>>>> >>>>> [Thu Feb 22 17:12:23.702465 2024] [suexec:notice] [pid 121153:tid 121153] >>>>> AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) >>>>> [Thu Feb 22 17:12:23.714703 2024] [so:warn] [pid 121153:tid 121153] >>>>> AH01574: module proxy_ajp_module is already loaded, skipping >>>>> [Thu Feb 22 17:12:23.719266 2024] [lbmethod_heartbeat:notice] [pid >>>>> 121153:tid 121153] AH02282: No slotmem from mod_heartmonitor >>>>> [Thu Feb 22 17:12:23.722704 2024] [mpm_event:notice] [pid 121153:tid >>>>> 121153] AH00489: Apache/2.4.57 (Rocky Linux) OpenSSL/3.0.7 configured -- >>>>> resuming normal operations >>>>> [Thu Feb 22 17:12:23.722720 2024] [core:notice] [pid 121153:tid 121153] >>>>> AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND' >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> And here's the httpd/access.log >>>>> >>>>> 96.46.15.70 - - [22/Feb/2024:17:12:41 +0000] "GET /admin-toaster >>>>> HTTP/1.1" 401 381 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) >>>>> AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122. >>>>> 0.0.0 Safari/537.36" >>>>> 96.46.15.70 - admin [22/Feb/2024:17:12:41 +0000] "GET /admin-toaster >>>>> HTTP/1.1" 301 244 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) >>>>> AppleWebKit/537.36 (KHTML, like Gecko) Chrome/ >>>>> 122.0.0.0 Safari/537.36" >>>>> >>>>> >>>>> >>>>> On 2/22/2024 10:45 AM, Eric Broch wrote: >>>>>> Can you check the httpd logs? >>>>>> >>>>>> On 2/22/2024 8:12 AM, Gary Bowling wrote: >>>>>>> >>>>>>> Another issue. When I log in to admin-toaster, it properly asks for my >>>>>>> password and accepts it, but then all I get is this screen. >>>>>>> >>>>>>> >>>>>>> >>>>>>> <AFsYv2kZDDMd60l8.png> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> Between the problems I'm having with roundcube and with qmailadmin, >>>>>>> something is very wrong with my install. I don't get any errors in the >>>>>>> logs, either in messages or httpd logs. >>>>>>> >>>>>>> >>>>>>> >>>>>>> I can configure up a client on my desktop and log into the server using >>>>>>> IMAP and send/receive email. Granted I'm only sending to myself as >>>>>>> there is no mx record or proper dns for this server as it's not live. >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> On 2/21/2024 9:52 AM, Gary Bowling wrote: >>>>>>>> My next challenge is to get roundcube working. My old server uses >>>>>>>> squirrel, but that's so old I need to move on. Which might be a bit of >>>>>>>> a challenge as I have some users who exclusively use web mail and have >>>>>>>> all their address books and everything in there. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> At any rate, I first just tried going to my server/email.. I got a big >>>>>>>> list of errors, etc. >>>>>>>> >>>>>>>> In poking around a bit, I discovered that there wasn't a >>>>>>>> /var/lib/roundcube directory, which is listed in the rpm.. Not sure >>>>>>>> why that was or if it's intended as maybe this is a customized version >>>>>>>> of roundcube. At any rate, I decided to do a yum reinstall on >>>>>>>> roundcube, which produced a /var/lib/roundcube dir. >>>>>>>> >>>>>>>> But I still got the same big list of errors when going to server/email. >>>>>>>> >>>>>>>> In looking at the roundcube configs in /etc/roundcube/.. I see the >>>>>>>> config.inc.php has the proper string in it with the p4ssw... password >>>>>>>> etc. So that looks ok. >>>>>>>> >>>>>>>> Logging into mysql with the roundcube user works, and the roundcube >>>>>>>> database is there with all the table structure. So that looks ok. >>>>>>>> >>>>>>>> In looking at the roundcube config in httpd I noticed the "require >>>>>>>> local" rule, which I think means I can only access it from the local >>>>>>>> machine. Since my machine is a hosted machine, I can't do that. So I >>>>>>>> changed the to "require ip <MYIP>" ... that didn't resolve anything. >>>>>>>> >>>>>>>> I'm off to do some other work for the rest of the day, but somehow I >>>>>>>> need to figure out what's going on here. There is very little in the >>>>>>>> logs and I'm running out of things to check. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Here's the screen I get when I go to myserver/email, which seems to >>>>>>>> say "everything is broken" haha.. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> | | Author: Aleksander Machniak | >>>>>>>> +-------------------------------------------------------------------------+ >>>>>>>> */ // include environment require_once 'program/include/iniset.php'; >>>>>>>> // init application, start session, init output class, etc. $RCMAIL = >>>>>>>> rcmail::get_instance(0, isset($GLOBALS['env']) ? $GLOBALS['env'] : >>>>>>>> null); // Make the whole PHP output non-cacheable (#1487797) >>>>>>>> $RCMAIL->output->nocacheing_headers(); >>>>>>>> $RCMAIL->output->common_headers(!empty($_SESSION['user_id'])); // turn >>>>>>>> on output buffering ob_start(); // check if config files had errors if >>>>>>>> ($err_str = $RCMAIL->config->get_error()) { >>>>>>>> rcmail::raise_error(['code' => 601, 'message' => $err_str], false, >>>>>>>> true); } // check DB connections and exit on failure if ($err_str = >>>>>>>> $RCMAIL->db->is_error()) { rcmail::raise_error(['code' => 603, 'type' >>>>>>>> => 'db', 'message' => $err_str], false, true); } // error steps if >>>>>>>> ($RCMAIL->action == 'error' && !empty($_GET['_code'])) { >>>>>>>> rcmail::raise_error(['code' => hexdec($_GET['_code'])], false, true); >>>>>>>> } // check if https is required (for login) and redirect if necessary >>>>>>>> if (empty($_SESSION['user_id']) && ($force_https = >>>>>>>> $RCMAIL->config->get('force_https', false))) { // force_https can be >>>>>>>> true, , :, if (!is_bool($force_https)) { list($host, $port) = >>>>>>>> explode(':', $force_https); if (is_numeric($host) && empty($port)) { >>>>>>>> $port = $host; $host = ''; } } if (empty($port)) { $port = 443; } if >>>>>>>> (!rcube_utils::https_check($port)) { if (empty($host)) { $host = >>>>>>>> preg_replace('/:[0-9]+$/', '', $_SERVER['HTTP_HOST']); } if ($port != >>>>>>>> 443) { $host .= ':' . $port; } header('Location: https://' . $host . >>>>>>>> $_SERVER['REQUEST_URI']); exit; } } // trigger startup plugin hook >>>>>>>> $startup = $RCMAIL->plugins->exec_hook('startup', ['task' => >>>>>>>> $RCMAIL->task, 'action' => $RCMAIL->action]); >>>>>>>> $RCMAIL->set_task($startup['task']); $RCMAIL->action = >>>>>>>> $startup['action']; $session_error = null; // try to log in if >>>>>>>> ($RCMAIL->task == 'login' && $RCMAIL->action == 'login') { >>>>>>>> $request_valid = !empty($_SESSION['temp']) && >>>>>>>> $RCMAIL->check_request(); $pass_charset = >>>>>>>> $RCMAIL->config->get('password_charset', 'UTF-8'); // purge the >>>>>>>> session in case of new login when a session already exists if >>>>>>>> ($request_valid) { $RCMAIL->kill_session(); } $auth = >>>>>>>> $RCMAIL->plugins->exec_hook('authenticate', [ 'host' => >>>>>>>> $RCMAIL->autoselect_host(), 'user' => >>>>>>>> trim(rcube_utils::get_input_string('_user', rcube_utils::INPUT_POST)), >>>>>>>> 'pass' => rcube_utils::get_input_string('_pass', >>>>>>>> rcube_utils::INPUT_POST, true, $pass_charset), 'valid' => >>>>>>>> $request_valid, 'error' => null, 'cookiecheck' => true, ]); // Login >>>>>>>> if ($auth['valid'] && !$auth['abort'] && $RCMAIL->login($auth['user'], >>>>>>>> $auth['pass'], $auth['host'], $auth['cookiecheck']) ) { // create new >>>>>>>> session ID, don't destroy the current session // it was destroyed >>>>>>>> already by $RCMAIL->kill_session() above >>>>>>>> $RCMAIL->session->remove('temp'); >>>>>>>> $RCMAIL->session->regenerate_id(false); // send auth cookie if >>>>>>>> necessary $RCMAIL->session->set_auth_cookie(); // log successful login >>>>>>>> $RCMAIL->log_login(); // restore original request parameters $query = >>>>>>>> []; if ($url = rcube_utils::get_input_string('_url', >>>>>>>> rcube_utils::INPUT_POST)) { parse_str($url, $query); // prevent >>>>>>>> endless looping on login page if (!empty($query['_task']) && >>>>>>>> $query['_task'] == 'login') { unset($query['_task']); } // prevent >>>>>>>> redirect to compose with specified ID (#1488226) if >>>>>>>> (!empty($query['_action']) && $query['_action'] == 'compose' && >>>>>>>> !empty($query['_id'])) { $query = ['_action' => 'compose']; } } // >>>>>>>> allow plugins to control the redirect url after login success $redir = >>>>>>>> $RCMAIL->plugins->exec_hook('login_after', $query + ['_task' => >>>>>>>> 'mail']); unset($redir['abort'], $redir['_err']); // send redirect >>>>>>>> $RCMAIL->output->redirect($redir, 0, true); } else { if >>>>>>>> (!$auth['valid']) { $error_code = rcmail::ERROR_INVALID_REQUEST; } >>>>>>>> else { $error_code = is_numeric($auth['error']) ? $auth['error'] : >>>>>>>> $RCMAIL->login_error(); } $error_labels = [ rcmail::ERROR_STORAGE => >>>>>>>> 'storageerror', rcmail::ERROR_COOKIES_DISABLED => 'cookiesdisabled', >>>>>>>> rcmail::ERROR_INVALID_REQUEST => 'invalidrequest', >>>>>>>> rcmail::ERROR_INVALID_HOST => 'invalidhost', rcmail::ERROR_RATE_LIMIT >>>>>>>> => 'accountlocked', ]; if (!empty($auth['error']) && >>>>>>>> !is_numeric($auth['error'])) { $error_message = $auth['error']; } else >>>>>>>> { $error_message = !empty($error_labels[$error_code]) ? >>>>>>>> $error_labels[$error_code] : 'loginfailed'; } >>>>>>>> $RCMAIL->output->show_message($error_message, 'warning'); // log >>>>>>>> failed login $RCMAIL->log_login($auth['user'], true, $error_code); >>>>>>>> $RCMAIL->plugins->exec_hook('login_failed', [ 'code' => $error_code, >>>>>>>> 'host' => $auth['host'], 'user' => $auth['user'], ]); if >>>>>>>> (!isset($_SESSION['user_id'])) { $RCMAIL->kill_session(); } } } // >>>>>>>> handle oauth login requests else if ($RCMAIL->task == 'login' && >>>>>>>> $RCMAIL->action == 'oauth' && $RCMAIL->oauth->is_enabled()) { >>>>>>>> $oauth_handler = new rcmail_action_login_oauth(); >>>>>>>> $oauth_handler->run(); } // end session else if ($RCMAIL->task == >>>>>>>> 'logout' && isset($_SESSION['user_id'])) { >>>>>>>> $RCMAIL->request_security_check(rcube_utils::INPUT_GET | >>>>>>>> rcube_utils::INPUT_POST); $userdata = array( 'user' => >>>>>>>> $_SESSION['username'], 'host' => $_SESSION['storage_host'], 'lang' => >>>>>>>> $RCMAIL->user->language, ); >>>>>>>> $RCMAIL->output->show_message('loggedout'); $RCMAIL->logout_actions(); >>>>>>>> $RCMAIL->kill_session(); $RCMAIL->plugins->exec_hook('logout_after', >>>>>>>> $userdata); } // check session and auth cookie else if ($RCMAIL->task >>>>>>>> != 'login' && $_SESSION['user_id']) { if >>>>>>>> (!$RCMAIL->session->check_auth()) { $RCMAIL->kill_session(); >>>>>>>> $session_error = 'sessionerror'; } } // not logged in -> show login >>>>>>>> page if (empty($RCMAIL->user->ID)) { if ( $session_error || >>>>>>>> (!empty($_REQUEST['_err']) && $_REQUEST['_err'] === 'session') || >>>>>>>> ($session_error = $RCMAIL->session_error()) ) { >>>>>>>> $RCMAIL->output->show_message($session_error ?: 'sessionerror', >>>>>>>> 'error', null, true, -1); } if ($RCMAIL->output->ajax_call || >>>>>>>> $RCMAIL->output->get_env('framed')) { >>>>>>>> $RCMAIL->output->command('session_error', $RCMAIL->url(['_err' => >>>>>>>> 'session'])); $RCMAIL->output->send('iframe'); } // check if installer >>>>>>>> is still active if ($RCMAIL->config->get('enable_installer') && >>>>>>>> is_readable('./installer/index.php')) { >>>>>>>> $RCMAIL->output->add_footer(html::div(['id' => 'login-addon', 'style' >>>>>>>> => "background:#ef9398; border:2px solid #dc5757; padding:0.5em; >>>>>>>> margin:2em auto; width:50em"], html::tag('h2', array('style' => >>>>>>>> "margin-top:0.2em"), "Installer script is still accessible") . >>>>>>>> html::p(null, "The install script of your Roundcube installation is >>>>>>>> still stored in its default location!") . html::p(null, "Please remove >>>>>>>> the whole installer folder from the Roundcube directory because these >>>>>>>> files may expose sensitive configuration data like server passwords >>>>>>>> and encryption keys to the public. Make sure you cannot access the >>>>>>>> installer script <https://mail2.gbco.us/%22./installer//%22> from your >>>>>>>> browser.") )); } $plugin = >>>>>>>> $RCMAIL->plugins->exec_hook('unauthenticated', [ 'task' => 'login', >>>>>>>> 'error' => $session_error, // Return 401 only on failed logins (#7010) >>>>>>>> 'http_code' => empty($session_error) && !empty($error_message) ? 401 : >>>>>>>> 200 ]); $RCMAIL->set_task($plugin['task']); if ($plugin['http_code'] >>>>>>>> == 401) { header('HTTP/1.0 401 Unauthorized'); } >>>>>>>> $RCMAIL->output->send($plugin['task']); } else { // CSRF prevention >>>>>>>> $RCMAIL->request_security_check(); // check access to disabled actions >>>>>>>> $disabled_actions = (array) $RCMAIL->config->get('disabled_actions'); >>>>>>>> if (in_array($RCMAIL->task . '.' . ($RCMAIL->action ?: 'index'), >>>>>>>> $disabled_actions)) { rcube::raise_error(['code' => 404, 'message' => >>>>>>>> "Action disabled"], true, true); } } $RCMAIL->action_handler(); >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On 2/20/2024 9:02 PM, Gary Bowling wrote: >>>>>>>>> >>>>>>>>> Ah, thanks Eric! Unfortunately I didn't find that page earlier. But >>>>>>>>> but I cobbled together a few sql queries, so I... >>>>>>>>> >>>>>>>>> - exported each domain to an xml file >>>>>>>>> >>>>>>>>> - then did a bit of scripting on each domains xml file to add the >>>>>>>>> pw_domain field, which is the same for every record in each file. >>>>>>>>> >>>>>>>>> - then used the "load xml local infile..." sql command to load each >>>>>>>>> of the files into the vpopmail table. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> It seems to have all worked. I can now use ./vuserinfo and get >>>>>>>>> correct entries. The other tables, valias, lastauth, dir_control, all >>>>>>>>> seem to be the same. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> So I think I'm on to the next challenge. The script you showed on >>>>>>>>> that page would have been a little easier, but no worries, it wasn't >>>>>>>>> to difficult. >>>>>>>>> >>>>>>>>> Which reminds me, I need to go back and set Global Local_infiles=0 as >>>>>>>>> I had to change that to export/import local files. Although I'm not >>>>>>>>> sure that hurts anything. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> Thanks, gb >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> On 2/20/2024 5:04 PM, Eric Broch wrote: >>>>>>>>>> did you migrate the database? >>>>>>>>>> >>>>>>>>>> Many domain's conversion - QMT (qmailtoaster.org) >>>>>>>>>> <https://qmailtoaster.org/manydom.html> >>>>>>>>>> On 2/20/2024 9:37 AM, Gary Bowling wrote: >>>>>>>>>>> >>>>>>>>>>> Thanks Eric. >>>>>>>>>>> >>>>>>>>>>> Continuing through the "migration" page. After going through >>>>>>>>>>> everything moving configs and my database, then restarting. >>>>>>>>>>> Toaststat says everything is ok. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> So I tried a simple run of ~vpopmail/bin/vuserinfo g...@gbco.us >>>>>>>>>>> <mailto:g...@gbco.us> just to query an account. I get this error >>>>>>>>>>> >>>>>>>>>>> mysql: sql error[3]: Table 'vpopmail.vpopmail' doesn't exist >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Logging into the db and checking, indeed I do not have a >>>>>>>>>>> vpopmail.vpopmail table. I have all the domain tables, etc. So I >>>>>>>>>>> went back to my old server (the one this email is coming from) and >>>>>>>>>>> it also does not have a vpopmail.vpopmail table. >>>>>>>>>>> >>>>>>>>>>> I'm sure it has something to do with how old my existing server is. >>>>>>>>>>> But how do I resolve this? >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Thanks, gb >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On 2/20/2024 10:00 AM, Eric Broch wrote: >>>>>>>>>>>> It's all good and there's nothing to do. >>>>>>>>>>>> >>>>>>>>>>>> On 2/20/2024 7:11 AM, Gary Bowling wrote: >>>>>>>>>>>>> >>>>>>>>>>>>> Another question on my migration. On the qmailtoaster.com site, >>>>>>>>>>>>> under the RHEL9 derivative install heading. There is the >>>>>>>>>>>>> qmail1.03-3.3.8 header and underneath it is a link for "patches >>>>>>>>>>>>> applied" >>>>>>>>>>>>> >>>>>>>>>>>>> I'm confused if that means. It implies that those patches are >>>>>>>>>>>>> already applied and there is no need to do them. But the link >>>>>>>>>>>>> takes you to the page for the patch like it's something we should >>>>>>>>>>>>> apply. >>>>>>>>>>>>> >>>>>>>>>>>>> I'm pretty sure it's all good and there is nothing to do, just >>>>>>>>>>>>> wanted to make sure. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks, gb >>>>>>>>>>>>> >>>>>>>>>>>>> -- >>>>>>>>>>>>> ____________________ >>>>>>>>>>>>> The Moderns on Spotify >>>>>>>>>>>>> <https://distrokid.com/hyperfollow/themoderns/bbrs> >>>>>>>>>>>>> ____________________ >>>>>>>>>>>>> --------------------------------------------------------------------- >>>>>>>>>>>>> To unsubscribe, e-mail: >>>>>>>>>>>>> qmailtoaster-list-unsubscr...@qmailtoaster.com >>>>>>>>>>>>> <mailto:qmailtoaster-list-unsubscr...@qmailtoaster.com> For >>>>>>>>>>>>> additional commands, e-mail: >>>>>>>>>>>>> qmailtoaster-list-h...@qmailtoaster.com >>>>>>>>>>>>> <mailto:qmailtoaster-list-h...@qmailtoaster.com>--------------------------------------------------------------------- >>>>>>>>>>>>> To unsubscribe, e-mail: >>>>>>>>>>>>> qmailtoaster-list-unsubscr...@qmailtoaster.com >>>>>>>>>>>>> <mailto:qmailtoaster-list-unsubscr...@qmailtoaster.com> For >>>>>>>>>>>>> additional commands, e-mail: >>>>>>>>>>>>> qmailtoaster-list-h...@qmailtoaster.com >>>>>>>>>>>>> <mailto:qmailtoaster-list-h...@qmailtoaster.com>--------------------------------------------------------------------- >>>>>>>>>>>>> To unsubscribe, e-mail: >>>>>>>>>>>>> qmailtoaster-list-unsubscr...@qmailtoaster.com >>>>>>>>>>>>> <mailto:qmailtoaster-list-unsubscr...@qmailtoaster.com> For >>>>>>>>>>>>> additional commands, e-mail: >>>>>>>>>>>>> qmailtoaster-list-h...@qmailtoaster.com >>>>>>>>>>>>> <mailto:qmailtoaster-list-h...@qmailtoaster.com>--------------------------------------------------------------------- >>>>>>>>>>>>> To unsubscribe, e-mail: >>>>>>>>>>>>> qmailtoaster-list-unsubscr...@qmailtoaster.com >>>>>>>>>>>>> <mailto:qmailtoaster-list-unsubscr...@qmailtoaster.com> For >>>>>>>>>>>>> additional commands, e-mail: >>>>>>>>>>>>> qmailtoaster-list-h...@qmailtoaster.com >>>>>>>>>>>>> <mailto:qmailtoaster-list-h...@qmailtoaster.com> > --------------------------------------------------------------------- To > unsubscribe, e-mail: qmailtoaster-list-unsubscr...@qmailtoaster.com For > additional commands, e-mail: qmailtoaster-list-h...@qmailtoaster.com