Squirrelmail downloads file...

Discussion in 'General' started by vibrancy, Mar 26, 2011.

  1. till

    till Super Moderator Staff Member ISPConfig Developer

    The vhost files are not made for manual editing. So never change the content of tehse files as all changes will getr emoved automatically.

    Back to your original problem. Which PHP mode you you want to use in that website and which tutorial did you use to prepare your server for the installation of ispconfig?
     
  2. rlarge

    rlarge New Member

    I did know not to edit but it fixed the problem temporarily, untial i can figure out whats going on...

    I used the perfect server setup for 11.04 ubuntu 64bit....

    I was planning on using the fast cgi option but when selected php files download instead of run...

    Any help would be great
     
  3. Ovidiu

    Ovidiu Active Member

    same here - still waiting for a solution...
     
  4. rlarge

    rlarge New Member

    i believe that there are many of us that are waiting for a fix or i might just wait for an update... i can't figure it out.... over my head....
     
  5. geonick

    geonick New Member

    Hi all,

    In my attempt to fix the same problem, I have come across the following that might be of help to someone that knows more...

    1. If I select "none" under ISPConfig => Sites => Auto-Subdomain then I can access the webmail under www.mydomain.com/webmail but it asks to either save or download the login.php under mydomain.com/webmail

    2. Any other setting under Auto-Subdomain will result in not being able to use the webmail, UNLESS I try mydomain.com:8080/webmail or www.mydomain.com:8080/webmail

    I guess an easy "fix" would be to go with Auto-Subdomain=none and redirect traffic from the non www to the www domain...

    ;-)
     
  6. mentes

    mentes Member

  7. sidbyron

    sidbyron Member

    Last edited: Sep 22, 2011
  8. mentes

    mentes Member

    Did you try the above solutions ?
     
  9. sidbyron

    sidbyron Member

    sure :D but is strange because I selec suPHP and joomla don't load. I received the 500 internal server error but if i use the mod_php or fast-cgi the joomla works fine.

    In mod_php the webmail and the virtual website works fine.

    I supose that is a bug.

    what do you think?
     
  10. Ovidiu

    Ovidiu Active Member

  11. cbj4074

    cbj4074 Member

    Let's put this thread to bed already.

    The most important thing to note regarding the tutorial at http://www.howtoforge.com/enabling-...b-sites-on-an-ispconfig-3-server-ubuntu-10.10 is that a key assumption is made: Apache is configured in CGI mode. If Apache is configured using one of the other modes, the instructions would need to be modified accordingly.

    The sources of confusion are largely that:

    a.) The tutorial does not specify which PHP mode to use.

    b.) The tutorial is inaccurate if ISPConfig's default PHP mode, Fast-CGI, is selected.

    c.) The fact that PHP configuration directives (open_basedir, where this tutorial is concerned) must be placed in different locations depending on the selected PHP mode.

    d.) It is unnecessary to add the SquirrelMail directories to the open_basedir directives when using ISPConfig's default PHP mode, Fast-CGI, so that step of the tutorial is superfluous unless using CGI mode.

    e.) In ISPConfig, the "PHP open_basedir" field length is limited, although there is no mention of this fact. As such, some portion of the value in that field may be truncated without warning. One way around this bug is to use Mod-PHP, in which case the open_basedir directive is specified in the Apache Directives box, which does not suffer from the same length limit.

    f.) The tutorial fails to mention two additional directories that should be added to the open_basedir directive's value. The full list should be:

    Code:
    /usr/share/squirrelmail:/etc/squirrelmail:/etc/mailname:/etc/hostname
    
    The problem with Apache sending the actual binary file "index.php" to the browser has to do with an incompatibility with the default SquirrelMail configuration and Apache's SuPHP module, which as mentes already suggested, can be disabled:

    With suPHP disabled, the SquirrelMail index page (index.php) is parsed properly and the login screen is accessible.

    Basically, SquirrelMail should work if:

    a.) PHP mode is CGI and the necessary directories are added to "PHP open_basedir" field in Sites -> Website -> example.com -> Options [tab], as described in the tutorial. (Even if suphp module is enabled, it is ignored in CGI mode.)

    b.) PHP mode is Fast-CGI and the suphp Apache module is disabled. (Disabling this module prevents "index.php" from being sent to the browser as a file download. It should be noted that Apache can be configured to enable SquirrelMail to function with SuPHP enabled, if desired.)

    c.) PHP mode is Mod-PHP and the necessary open_basedir directories are added to the "Apache Directives" field in Sites -> Website -> example.com -> Options [tab]. How this directive is defined depends on the Apache configuration. An example might be:

    Code:
    Alias /webmail /usr/share/squirrelmail
    <Location /webmail>
    php_admin_value open_basedir "/usr/share/squirrelmail:/etc/squirrelmail:/etc/mailname:/etc/hostname"
    </Location>
    
    If the appropriate directories are not added to PHP's open_basedir configuration directive, the SquirrelMail index page will state:

    Code:
    ERROR: Config file "config/config.php" not found. You need to configure SquirrelMail before you can use it.
    
    The Apache logs will state (among other open_basedir errors):

    Code:
    PHP Warning:  file_exists(): open_basedir restriction in effect. File(config/config.php) is not within the allowed path(s): (/current/open_basedir/path) in /usr/share/squirrelmail/index.php on line 15
    
    The bottom line is that to configure SquirrelMail properly, it is important to understand that ISPConfig offers several different modes of operation for Apache: FastCGI, CGI, Mod-PHP, and suPHP. Each mode has different configuration requirements.

    Ovidiu, which mode is the site in question configured to use?
     
    Last edited: Dec 13, 2011
  12. cbj4074

    cbj4074 Member

    Now, let's address the issue of webmail.example.com vs. example.com/webmail.

    For those who wish to access SquirrelMail at example.com/webmail, it is necessary to add the following to Apache's configuration:

    Code:
    Alias /webmail /usr/share/squirrelmail
    
    The above snippet should be added to the "Apache Directives" field in Sites -> Website -> example.com -> Options [tab].

    For those who wish to access SquirrelMail at webmail.example.com, see my posts in this thread: http://www.howtoforge.com/forums/showthread.php?t=55182
     
  13. Ovidiu

    Ovidiu Active Member

    Thanks for the great write-up. This should help the people with probs to get it working.

    Now back to my configuration:

    - All sites on this server are using Fast-CGI
    - I disabled suPHP as stated above
    - apache has been restarted

    Its working now. Thanks a million for clarifying this issue.
    Seriously your write-up above should be linked to the HowTo.
     
  14. cbj4074

    cbj4074 Member

    You're welcome. Glad to hear that your issue is resolved. :cool:

    At this point, it seems prudent to address the root cause of the problem with the SquirrelMail index.php file being presented to the user-agent as a download.

    From what I gather, somewhere in the Apache configuration files, suphp is being disabled for the SquirrelMail directory, which is fine. The problem is that a PHP handler is not registered subsequently, so Apache makes no attempt to parse PHP files and instead presents them to the browser as binary attachments.

    I should add that this same issue likely affects phpMyAdmin installations, because a) its files are stored outside of Apache's Document Root in some Linux distributions (e.g., in /usr/share/phpmyadmin), and b) PMA is presumably exempted from suphp restrictions (but, again, no PHP handler is registered subsequently).

    There are two solutions to this problem.

    First, the "quick-and-dirty" solution: disable the suphp module for the SquirrelMail directory (even if it's already disabled) and add a proper PHP handler:

    Code:
    Alias /squirrelmail /usr/share/squirrelmail
    <Location /squirrelmail>
    <IfModule suphp_module>
    suPHP_Engine Off
    AddHandler php5-script	.php
    </IfModule>
    php_admin_value open_basedir "/usr/share/squirrelmail:/etc/squirrelmail:/etc/mailname:/etc/hostname"
    </Location>
    
    The second solution is to configure suphp "properly". The first step is to re-enable suphp for the SquirrelMail directory, since it's being disabled somewhere (which could be in SquirrelMail's .conf file, an ISPConfig file... I haven't looked):

    Code:
    Alias /squirrelmail /usr/share/squirrelmail
    <Location /squirrelmail>
    <IfModule suphp_module>
    suPHP_Engine on
    suPHP_AddHandler x-httpd-php
    AddHandler x-httpd-php .php
    </IfModule>
    php_admin_value open_basedir "/usr/share/squirrelmail:/etc/squirrelmail:/etc/mailname:/etc/hostname"
    </Location>
    
    The second step is to modify the suphp configuration accordingly. While this post addresses phpMyAdmin, all of the same points apply to SquirrelMail:

    http://hartlessbydesign.com/blog/view/196-ubuntu-1004-suphp-and-phpmyadmin

    Problem solved!
     
  15. breauxlg

    breauxlg New Member

    What did you do to fix this

    I see that vibrancy and ovidiu have fixed their websites, but didn't post how. Mine is still broken. I get this:
    <?php

    /**
    * index.php
    *
    * Redirects to the login page.
    *
    * @copyright 1999-2010 The SquirrelMail Project Team
    * @license http://opensource.org/licenses/gpl-license.php GNU Public License
    * @version $Id: index.php 13893 2010-01-25 02:47:41Z pdontthink $
    * @package squirrelmail
    */

    // Are we configured yet?
    if( ! file_exists ( 'config/config.php' ) ) {
    echo '<html><body><p><strong>ERROR:</strong> Config file ' .
    '&quot;<tt>config/config.php</tt>&quot; not found. You need to ' .
    'configure SquirrelMail before you can use it.</p></body></html>';
    exit;
    }

    // If we are, go ahead to the login page.
    header('Location: src/login.php');

    ?>
     
  16. till

    till Super Moderator Staff Member ISPConfig Developer

    Which tutorial did you use to install your server? If you follow the perfects etup to the letter, squirrelmail will work out of the box. The most likely reason for your problem is that you missed to install the apache mod_php package as described in the ispconfig perfect server guides.
     
  17. cbj4074

    cbj4074 Member

    breauxlg, did you read my posts in this thread? They describe the problem and how to fix it in exhaustive detail.
     

Share This Page