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 Feb 22, 2024, at 09:21, Gary Bowling <[email protected]> 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 [email protected]
>>>>>>> <mailto:[email protected]> 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:
>>>>>>>>> [email protected]
>>>>>>>>> <mailto:[email protected]> For
>>>>>>>>> additional commands, e-mail: [email protected]
>>>>>>>>> <mailto:[email protected]>---------------------------------------------------------------------
>>>>>>>>> To unsubscribe, e-mail:
>>>>>>>>> [email protected]
>>>>>>>>> <mailto:[email protected]> For
>>>>>>>>> additional commands, e-mail: [email protected]
>>>>>>>>> <mailto:[email protected]>---------------------------------------------------------------------
>>>>>>>>> To unsubscribe, e-mail:
>>>>>>>>> [email protected]
>>>>>>>>> <mailto:[email protected]> For
>>>>>>>>> additional commands, e-mail: [email protected]
>>>>>>>>> <mailto:[email protected]>---------------------------------------------------------------------
>>>>>>>>> To unsubscribe, e-mail:
>>>>>>>>> [email protected]
>>>>>>>>> <mailto:[email protected]> For
>>>>>>>>> additional commands, e-mail: [email protected]
>>>>>>>>> <mailto:[email protected]>