Yes I know that. But in past version, it was required to properly serve out a php file. Without it the php file just gets served as a text file and not executed as php code.

I discovered my server was not executing index.php. After adding a DirectoryIndex index.php statement in my server, it now just serves out the index.php from the roundcube directory as a text file.

In troubleshooting why it was not being executed and was instead being served out as a text file, I found there was not libphp file.

Which, in past versions was provided by the php rpm package. If I go to my old Centos 7 box and list files in the php rpm, it provides the file /etc/httpd/modules/libphp5.so and that gets loaded in apache to execute php code.

But in Rocky 9, there is no libphp module in the php rpm, and there is not a libphp file in my modules directory and I cannot find that Rocky 9 even contains a libphp file.

So I'm trying to find out how Rocky 9 executes php code instead of serving it up as a text file. Since roundcube is working for you guys, you either have a libphp file that is getting loaded, or Rocky 9 handles that in an entirely different way. If it handles it in a different way, I need to learn how that works so I can resolve that issue.


Thanks, gb


On 2/23/2024 10:14 AM, Remo Mattei wrote:
The Apache statement is if available load it. I will check not sure I do. 

--
Sent from iPhone 

On venerdì, feb 23, 2024 at 07:11, Gary Bowling <g...@gbco.us> wrote:


Question. On your Rocky 9 boxes, do you have a libphp5.so module? Listed in the /etc/httpd/conf.d/php.conf file as.

<IfModule prefork.c>
  LoadModule php5_module modules/libphp5.so
</IfModule>


On my Rocky 9 box, this file does not exist and I cannot find that it is even suppose to exist. But I'm not sure how php is suppose to work on Apache without it. Maybe they have changed the way that works.

In previous versions, like Centos 7, it was included in the php rpm that was installed.

Thanks, gb


On 2/22/2024 11:17 PM, Remo Mattei wrote:
Here is my list of php
php-common-8.0.30-1.el9_2.x86_64
php-pdo-8.0.30-1.el9_2.x86_64
php-fpm-8.0.30-1.el9_2.x86_64
php-process-8.0.30-1.el9_2.x86_64
php-ldap-8.0.30-1.el9_2.x86_64
php-mbstring-8.0.30-1.el9_2.x86_64
php-xml-8.0.30-1.el9_2.x86_64
php-pecl-zip-1.19.2-6.el9.x86_64
php-enchant-8.0.30-1.el9_2.x86_64
php-intl-8.0.30-1.el9_2.x86_64
php-gd-8.0.30-1.el9_2.x86_64
php-mysqlnd-8.0.30-1.el9_2.x86_64
php-cli-8.0.30-1.el9_2.x86_64
php-opcache-8.0.30-1.el9_2.x86_64
php-8.0.30-1.el9_2.x86_64



On Feb 22, 2024, at 19:58, Gary Bowling <g...@gbco.us> wrote:


So in doing some more troubleshooting, it didn't seem like php was working correctly. In poking around I do not find a libphp.so file. I assume since it's php 8.0.3 it would be libphp8.so module?

That should come from the php install, so I did this to see all the files installed by php.

# rpm -ql php
(contains no files)

And it says it contains NO FILES! What's up with that?? So I did this.

dnf reinstall php
Last metadata expiration check: 0:46:39 ago on Fri 23 Feb 2024 03:03:37 AM UTC.
Dependencies resolved.
==========================================================================================================================================================
 Package                        Architecture                      Version                                      Repository                            Size
==========================================================================================================================================================
Reinstalling:
 php                            x86_64                            8.0.30-1.el9_2                               appstream                            7.7 k

Transaction Summary
==========================================================================================================================================================

Total download size: 7.7 k
Installed size: 0
Is this ok [y/N]: y
Downloading Packages:
php-8.0.30-1.el9_2.x86_64.rpm                                                                                              56 kB/s | 7.7 kB     00:00
----------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                      26 kB/s | 7.7 kB     00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                                  1/1
  Reinstalling     : php-8.0.30-1.el9_2.x86_64                                                                                                        1/2
  Cleanup          : php-8.0.30-1.el9_2.x86_64                                                                                                        2/2
  Verifying        : php-8.0.30-1.el9_2.x86_64                                                                                                        1/2
  Verifying        : php-8.0.30-1.el9_2.x86_64                                                                                                        2/2

Reinstalled:
  php-8.0.30-1.el9_2.x86_64

Complete!

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

To get a new clean install of php.. But even after doing this, I still get this.

 rpm -ql php
(contains no files)


So it appears that my php install is broken and even a reinstall doesn't fix it. I'm not sure what's up with that. Maybe the repository that my box is using has problems?


Have you ever seen that problem?


gb





On 2/22/2024 10:45 PM, Remo Mattei wrote:
Hi Gary, 
I have the default di don’t change anything on that file

On Feb 22, 2024, at 18:59, Gary Bowling <g...@gbco.us> wrote:


Thanks. I suspect some of my issues might be from migrating everything over from my old server which is clearly a lot different.

What do your virtualhost configs for your domain look like in /etc/httpd/conf.d/

It seems my only problems are with web things. So it has to be either a php issue or an httpd config issue. There is very little done with php, just a few things in php.ini.

There is a lot more done in httpd conf files, with various directives and virtualhosts. Although not really much for qmailadmin


Thanks, gb


On 2/22/2024 8:43 PM, Eric Broch wrote:

I did another fresh install of Rocky9/QMT and I can't seem to duplicate the problem you're having.


On 2/22/2024 12:48 PM, Eric Broch wrote:

Mine as well. It'd be nice to see some errors in the httpd log.


On 2/22/2024 11:15 AM, Gary Bowling wrote:


Thanks. So Eric, my version is 8.0.3 as I stated previously.


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


Thanks, gb


On 2/22/2024 1:11 PM, Remo Mattei wrote:
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> 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 = "" $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::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 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)

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 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
____________________
--------------------------------------------------------------------- To unsubscribe, e-mail: qmailtoaster-list-unsubscr...@qmailtoaster.com For additional commands, e-mail: qmailtoaster-list-h...@qmailtoaster.com
--------------------------------------------------------------------- To unsubscribe, e-mail: qmailtoaster-list-unsubscr...@qmailtoaster.com For additional commands, e-mail: qmailtoaster-list-h...@qmailtoaster.com
--------------------------------------------------------------------- To unsubscribe, e-mail: qmailtoaster-list-unsubscr...@qmailtoaster.com For additional commands, e-mail: qmailtoaster-list-h...@qmailtoaster.com
--------------------------------------------------------------------- To unsubscribe, e-mail: qmailtoaster-list-unsubscr...@qmailtoaster.com For additional commands, e-mail: qmailtoaster-list-h...@qmailtoaster.com

--------------------------------------------------------------------- To unsubscribe, e-mail: qmailtoaster-list-unsubscr...@qmailtoaster.com For additional commands, e-mail: qmailtoaster-list-h...@qmailtoaster.com

--------------------------------------------------------------------- To unsubscribe, e-mail: qmailtoaster-list-unsubscr...@qmailtoaster.com For additional commands, e-mail: qmailtoaster-list-h...@qmailtoaster.com
--------------------------------------------------------------------- To unsubscribe, e-mail: qmailtoaster-list-unsubscr...@qmailtoaster.com For additional commands, e-mail: qmailtoaster-list-h...@qmailtoaster.com

--------------------------------------------------------------------- To unsubscribe, e-mail: qmailtoaster-list-unsubscr...@qmailtoaster.com For additional commands, e-mail: qmailtoaster-list-h...@qmailtoaster.com

--------------------------------------------------------------------- To unsubscribe, e-mail: qmailtoaster-list-unsubscr...@qmailtoaster.com For additional commands, e-mail: qmailtoaster-list-h...@qmailtoaster.com
--------------------------------------------------------------------- To unsubscribe, e-mail: qmailtoaster-list-unsubscr...@qmailtoaster.com For additional commands, e-mail: qmailtoaster-list-h...@qmailtoaster.com

Reply via email to