Giter VIP home page Giter VIP logo

postfixadmin / postfixadmin Goto Github PK

View Code? Open in Web Editor NEW
988.0 61.0 275.0 14.3 MB

PostfixAdmin - web based virtual user administration interface for Postfix mail servers

Home Page: https://postfixadmin.github.io/postfixadmin

License: Other

Perl 2.93% Python 0.32% Shell 1.56% PHP 90.54% Makefile 0.07% Smarty 4.36% Hack 0.01% CSS 0.20%
postfix smtp-server php postgresql mysql sqlite postfixadmin administration-interface

postfixadmin's Introduction

GitHubBuild Coverage Status GitHub repo size IRC Chat - #postfixadmin

PostfixAdmin

An open source, web based interface for managing domains/mailboxes/aliases etc on a Postfix based mail server.

Integrates with :

  • Postfix
  • IMAP/POP3 server (e.g. Dovecot or Courier)
  • Database backend (choose one of: sqlite, mysql, postgresql)
  • Fetchmail (optional)

Features

  • Unlimited domains/aliases/mailboxes
  • Optional storage quota support
  • Optional password expiry (beta)
  • Multiple password hashing formats
  • Supports PostgreSQL, MySQL, MariaDB, SQLite database backends (choose one)
  • Supports retrieval of mail from a remote POP3 server (via fetchmail)
  • Vacation / Autoresponder / Out Of Office support
  • Users have the ability to login, change their password or vacation (out of office) status.
  • Integration with Squirrelmail / Roundcube (via plugins)
  • Optional XMLRPC based API
  • Supports PHP7.2+ (older versions of PHP should work with older releases)

Some screenshots of Postfixadmin in action (as admin and user)

Releases / Development note

  • While you can install PostfixAdmin from 'git' using the 'master' branch, 'master' is our main development version. It may work. It may contain funky new exciting stuff. It may "eat your data".
  • If you want an easy life, use a published release - see: https://github.com/postfixadmin/postfixadmin/releases or its branch (e.g. postfixadmin_3.3)
  • Latest significant changes should be listed in the appropriate CHANGELOG.TXT file.

Useful Links

Related Projects

  • https://github.com/aqeltech/Dockerised-GUI-Mailserver
  • https://github.com/mailserver2/mailserver mailserver2/mailserver is a simple and full-featured mail server build as a set of multiple docker images. Features: Postfix, PostfixAdmin, Dovecot, Rspamd, Clamav, Zeyple, Sieve, Fetchmail, Rainloop, Unbound/NSD, Træfik, {Let's Encrypt,custom,Self-signed Certificate} SSL, Supports PostgeSQL, MySQL, (beta) LDAP backends. Automated builds on DockerHub and Integration tests with Travis CI

postfixadmin's People

Contributors

akhiljalagam avatar bnchdan avatar cboltz avatar csware avatar damien-martins avatar davidgoodwin avatar drunken-sod avatar freddo3000 avatar gabrielfin avatar germancoding avatar gianlucagiacometti avatar hguilbert avatar j0wi avatar jan-kruis avatar janfred avatar killerbees19 avatar michaelkrieger avatar neuffer avatar nutomic avatar ozgurkazancci avatar powerkiki avatar puck avatar reinks2112 avatar seitanas avatar sopsy avatar stissot avatar supervirus avatar tkempf avatar vakartel avatar vilican avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

postfixadmin's Issues

Enforce code style ?

Would you accept a PR that use PHP-CS-Fixer and Travis CI to enforce a consistent code style throughout the entire PHP code base ?

I believe this would make it easier to contribute, by avoiding a lots of annoying useless diff (such as trailing whitespaces) and by automating some feedback on incoming PR.

If you agree on the principle, I could suggest PHP-CS-Fixer rules, or you choose them yourself and let me implement the rest via composer and Travis.

check_language function - language settings are ignored

When the browser doesn't supply the HTTP_ACCEPT_LANGUAGE header, language setting are ignored and postfixadmin always defaults to the $CONF['default_language'] setting.

IMO the desired behavior should not be dependent on the presence of the HTTP_ACCEPT_LANGUAGE header. Eg:

`
function check_language ($use_post = 1) {
global $supported_languages; # from languages/languages.php

$lang = Config::read('default_language');

$lang_array = array();

if (safecookie('lang')) {
    array_unshift($lang_array, safecookie('lang')); # prefer language from cookie
}
if ( $use_post && safepost('lang')) {
    array_unshift($lang_array, safepost('lang')); # but prefer $_POST['lang'] even more
}
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
    array_merge($lang_array,preg_split ('/(\s*,\s*)/', $_SERVER['HTTP_ACCEPT_LANGUAGE']));
}

for($i = 0; $i < count($lang_array); $i++) {
    $lang_next = $lang_array[$i];
    $lang_next = strtolower(trim($lang_next));
    $lang_next = preg_replace('/;.*$/', '', $lang_next); # remove things like ";q=0.8"
    if(array_key_exists($lang_next, $supported_languages)) {
        $lang = $lang_next;
        break;
    }
}

return $lang;

}
`

HEAD

Is this a definitive head we can fork off.. ??

I hate raising issues, but can we please migrate from SF to here.. and can help..

mail for autoreply.domain.tld loops back to myself

Hello, first of all I got to say thank you for the resolution with the mysql issue for the vacation feature I wrote this morning, very quick and easy. But now I have another issue and I can't figure out how to solve it. When I activate the vacation feature for a mailbox and I try to send a mail to it, I get a message back that says:

Mar 27 17:58:50 mail postfix/smtp[57684]: C428196BEB: to=mailbox#[email protected], relay=none, delay=0.03, delays=0.01/0/0.02/0, dsn=5.4.6, status=bounced (mail for autoreply.domain.tld loops back to myself)

postfixadmin autoreply feature used to work like a charm without the vacation.pl plugin, since I had to update the php and mysql version and maybe that screw up something. Waiting for your kindly response!

Cannot install postfixadmin on AWS EC2 instance

I have checked everything and made sure all fields filled in are correct.

Postfix Admin Setup Checker

Running software:

PHP version 7.0.15-0ubuntu0.16.04.4
Apache/2.4.18 (Ubuntu)
Checking for dependencies:

Magic Quotes: Disabled - OK
Depends on: presence config.inc.php - OK
Checking $CONF['configured'] - OK
Depends on: MySQL 4.1 - OK
(change the database_type to 'mysqli' in config.inc.php if you want to use MySQL)
Depends on: PostgreSQL - OK
(change the database_type to 'pgsql' in config.inc.php if you want to use PostgreSQL)
Error: Can't connect to database
Please edit the $CONF['database_*'] parameters in config.inc.php.
DEBUG INFORMATION:
MySQL 3.x / 4.0 functions not available! (php5-mysql installed?)
database_type = 'mysql' in config.inc.php, are you using a different database?

Depends on: session - OK
Depends on: pcre - OK
Depends on: multibyte string - OK
Depends on: IMAP functions - OK
Please fix the errors listed above.

missing lockdir for fetchmail.pl

(reported by oftc_ftw on IRC)

fetchmail.pl assumes /var/run/fetchmail/ exists (and wants to place a lockfile there), so we should make sure it gets created.

We should also switch over to /run/fetchmail/

/run is a tmpfs nowadays, so we'll need a /usr/lib/tmpfiles.d/postfixadmin-fetchmail.conf with
d /var/run/fetchmail/ 750 fetchmail daemon -
(username and group probably needs to be adjusted per distribution, so we can "only" ship an example file)

dovecot:sha512-crypt for password encryption doesn't work

In the config file I set the encryption method for passwords as follows:
$CONF['encrypt'] = 'dovecot:SHA512-CRYPT';$CONF['encrypt'] = 'dovecot:SHA512-CRYPT';

However, after the successful creation of the superuser account it's not possible to login to postfixadmin.
Any ideas to get rid of that issue without degrading security by using the functional md5crypt?

Need some more functions

Hello,
I use postfixadmin since 2 years and it's great, but i need some more functions.
I stored about the postfixadmin gui some domains as relay and I want to configure postfix with mysql-statements to relay the stored domains to the real smtp server, but i can't find some mysql-statements on github. Please add some statements an githib for right relay configuration.

I want to fillout this postfix configuration settings about mysql-statements.

  • relay_recipients
  • relay_domains
  • relay_transport
  • transport_maps

Next, it's great if you could implement a mask to configure some relocated settings for user@domain, users or catch all domains as example @Domain

faq to relocated_maps http://www.postfix.org/relocated.5.html

Volker

Addons SOGo

Hello
Exist there an addon that adds a domain and email addresses to SOGo?
Many greetings
Mz

Suggested Dovecot config may have unwanted side-effects

In DOCUMENTS/DOVECOT.txt, a configuration is suggested for allowing Postfix to use Dovecot's authentication service, specifically:

# Uncomment this if you want Postfix to be able to do smtpd auth through dovecot
# At a minimum Postfix probably needs : smtpd_sasl_type = dovecot 
# And additionally: smtpd_sasl_path = private/auth
#service auth {
#    unix_listener /var/spool/postfix/private/auth {
#        mode = 0660
#        user = postfix
#        group = postfix
#    }
#    user = postfix
#    group = postfix
#}

IIUC, the last two lines before the outer closing brace have the entire auth service as their scope. This seems

  • un-necessary since these values will not be inherited by the unix_listener process defined for use by Postfix (which has process-specific settings for these properties) and

  • undesirable since these values will be used as defaults for other processes belonging to the auth service, and so may expose these processes to undesired access.

Unless I've misunderstood, it seems appropriate simply to remove those two lines from the suggested configuration.

mysqli db connect to socket

hi,
i have problem to connect postfixadmin to mysql-i server not listening on tcp.
with mysql driver you can specify connection to socket with config option:

config.local.php:
$CONF['database_type'] = 'mysql'; $CONF['database_host'] = ':/var/run/mysqld/mysqld_sys.sock';

with mysqli, i must modify code.

config.local.php:
$CONF['database_type'] = 'mysqli'; $CONF['database_socket'] = '/var/run/mysqld/mysqld_sys.sock';

functions.inc.php:1274:
$link = @mysqli_connect ($CONF['database_host'], $CONF['database_user'], $CONF['database_password'], $CONF['database_name'], $CONF['database_port'], $CONF['dat abase_socket']) or $error_text .= ("<p />DEBUG INFORMATION:<br />Connect: " . mysqli_connect_error () . "$DEBUG_TEXT");

pls add support for socket connection in mysql-i functions.
tnx

Chrome session not working => auto redirect to login.php

Hi,

It works on Brave, and Firefox. But not Chrome.
After connection, when I want to click on some links, I am automatically redirected to postfixadmin.example.com/login.php
postfixadmin: 3.0.2
OS: ArchLinux x64
Chrome: 60.0.3080.6
nginx: 1.11.13
php-fpm: 7.1.4
mysq: Ver 15.1 Distrib 10.1.22-MariaDB, for Linux (x86_64) using readline 5.1

MIssing postfix.admin logo and mail png on opening screen

When I use versions higher than 2.92 the postfix.admin logo and the large mail icon png's do not display. I can login and all seems fine, but I just cannot get these pngs to display.

Below is the interface I get with postfix admin v3.1

image

config.inc.php errors not visible

index.php contains:

@include_once('config.inc.php'); # hide error message because only $CONF['configured'] is checked here

I did spend 20 minutes searching for a blank page (HTTP status code 500) when accessing the postfixadmin index page. Nothing was logged in the error logs.

In the end I removed the @ to get the error logged to the error log, which was a permission issue with debian's dbconfig.inc.php (since I'm using different users+groups for different tools here). Not having this @ there would instantly have given me a hint.

Sender aliases

It will be good to allow users different senders. For example I have an alias from [email protected] to [email protected]. The user [email protected] should be able to send emails from email address [email protected].

How I solved it:
I created a table and changed sql/sender-login-maps.cf. It would be nice to configure this table via postfixadmin.

The table:

CREATE TABLE sender_alias (
  username VARCHAR(255) NOT NULL,
  sender VARCHAR(255) NOT NULL,
  PRIMARY KEY (username, sender)
)

The new query for sql/sender-login-maps.cf:

SELECT sender FROM (SELECT s.username, sender FROM sender_alias as s JOIN mailbox as m ON m.username = s.username AND m.active = 1 UNION SELECT username, username as sender FROM mailbox WHERE active = 1) AS stmt WHERE username = '%s'

If the user don't need sender aliases this table does not have to be filled for him.

About install by apt-get now

MySQL packages was replaced by MariaDB. PHP5 packages also be removed and change to PHP7, any way to make those work together?

utf8-domains are not valid

"Invalid domain name schönwetterwolke.at, fails regexp check"

Please, edit the regexp filter for adding domains to allow domains with UTF-8 encoding. Postfix [1] enabled the utf8-support by default from version >= 3.0. So it would be great, if postfixadmin (functions.inc.php:203) allows creating such domains too. UI should also be checked afterwards to ensure error free usage!

[1] http://www.postfix.org/SMTPUTF8_README.html
[2] https://stackoverflow.com/questions/14313849/how-to-validate-internationalized-domain-names

go-mailkit

This might not be spanner in the works guys, maybe a rachet.. sorry..

In my case I am using postfix as an "internal mailserver"..
Ie depts in a company can send things to each other on a lan..
Multi site.. but staffmail.example.com is where it is at..

I opted to use postfix, as .. the vacation.pl. .which is perl.. ohh tthe fun..

However as this is an integrated system,
I abandonded php a decade ago
and am now replacing the python2 code
in favour of golang..

So here's the stuff in golang, and will be trusted server on lan = minimal auth..
and depertmental maiboxes..
https://github.com/daffodil/go-mailkit

So my goals is to All in AJAX (my GUi=Pyqt4+phonegap)

Admin Mailbox

= pfa = https://github.com/daffodil/go-mailkit/tree/master/postfixadmin

  1. be able to create shared "department mailbox"
  2. Ability to create mailbox and accounts etc
  3. be able to query mailboxes and aliases
  4. set vacation times and forward to team

Read Mail

Ability to read mail

HUge Snags.. But atmo its all plain text password and read/only/ resanoable open system.. kinda.. like a pub with an open till.. and none of this silly barcode everything in + out.. faster and more fun.. styleee

Fetchmail does not add any database entries

PFA: 3.0.2
DB: postgres
Debian 8.0
I do have alias Domains configured.

No matter what I do: adding a fetchmail directive always ends up in an error in a select statement, which is in the strict sense correct, since there is no ID submitted, and cannot be since there are no entries in the DB. (strange thing is I do never see a failed insert.,,,)

corresponding log lines:

2017-02-28 00:40:36 UTC [7261-5] dbuser@postgres_db ERROR: invalid input syntax for integer: "" at character 1002
2017-02-28 00:40:36 UTC [7261-6] dbuser@postgres_db STATEMENT: SELECT id,domain,mailbox,src_server,src_auth,src_user,src_password,src_folder,poll_time,CASE fetchall WHEN 't' THEN '1' WHEN 'f' THEN '0' END as fetchall,CASE fetchall WHEN 't' THEN 'YES' WHEN 'f' THEN 'NO' END as _fetchall,CASE keep WHEN 't' THEN '1' WHEN 'f' THEN '0' END as keep,CASE keep WHEN 't' THEN 'YES' WHEN 'f' THEN 'NO' END as _keep,protocol,CASE usessl WHEN 't' THEN '1' WHEN 'f' THEN '0' END as usessl,CASE usessl WHEN 't' THEN 'YES' WHEN 'f' THEN 'NO' END as _usessl,CASE sslcertck WHEN 't' THEN '1' WHEN 'f' THEN '0' END as sslcertck,CASE sslcertck WHEN 't' THEN 'YES' WHEN 'f' THEN 'NO' END as _sslcertck,date,returned_text,CASE active WHEN 't' THEN '1' WHEN 'f' THEN '0' END as active,CASE active WHEN 't' THEN 'YES' WHEN 'f' THEN 'NO' END as _active,TO_CHAR(modified, 'YYYY-mm-dd') AS modified, modified AS _modified,1 as _can_edit,1 as _can_delete FROM fetchmail WHERE 1=1 AND domain IN ('xxxxxxxxxxxxxxxxx.net','xxxx.org','xxxxxxx.de') AND ( id='' ) ORDER BY domain, mailbox

$Revision$ tag is not updated

Hi !
I just stumbled upon this Git repo of Postfixadmin ...

It's great, but I've must have failed to see any warnings about the fact that the $Revision$ in the files is not updated on the git Repo .... compared to the SVN sourceforge repo ...

Therefore ... install / upgrade fails miserably, without much warnings :(
Just to be sure the infos gets somewhere here ;)

The real trouble is everything seems to run fine ... even the upgrade.php ... which does nothing at all ... therefore postfixadmin fails :(

Fetch email entry error?

Hi,
When I added my first fetch email entry the 'Date' column on the page shows

2000-01-01 00:00:00

Just thought I'd ask if it has happened to anyone else.

I may have just done something wrong... 😮

sqlite version

In commit b6453c8 sqlite need strict version >= 3.12.0 - with older slqite versions postfixadmin not show any virtual mailboxes.

Error quota

Error quotta (unknown used space)
error quota
Help me please

UPGRADE.txt needs an upgrade

https://github.com/postfixadmin/postfixadmin/blob/master/DOCUMENTS/UPGRADE.txt

UPGRADE.txt : "1. Backup the Database" - small issue with syntax for mysqldump:
mysqldump -a -u root -p > /tmp/postfixadmin-backup.sql

"-a " or "-A"?
"-a" is not recognized on my system. Is this outdated/deprecated syntax?
"-A" is ALL databases (see --all-databases). Which I assume is what you wanted in document?

Ref: https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html#mysqldump-syntax

"3. Change permissions"
chown -R www-data templates_c/
no such folder under master now (placeholder)? If fresh install from git clone the user will not have it.
Maybe:

sudo mkdir postfixadmin-(version)/templates_c &&
sudo chmod 640 postfixadmin-(version)/templates_c &&
sudo chown www-data:www-data postfixadmin-(version)/templates_c

"4. Configure":
No mention of config.local.php use.
This would seem appropriate since this is about upgrading.
If it does not exist the freshly installed code complains with a 'not found'..

I believe this document needs a look at anyway as its dated 2011 in master. Might be other problems with it...?

Future + Thoughts

Maybe we can do awaya with the RPC call on focus on the root purpose..
Aad to do its postfix style.. in php..

Now I know in my heart that php is what I grew up on.. (smarty+dev)
And php5 was cool then..
python..

So I Want to work with postfixadmin.. and make the same DB work another way..

In my case golang, and stuff python, but the onlt cool things we can do in golang is play and have a lot of fun in ajax..

Now its up to the "designer" to go and dream up her system with the ladies..

But if we can have a "clean ajax" api.. then were in..

And the only way to do that is with a "clean slate".. sometimes...............

MySQLi: Reuse existing connection

It looks like Postfixadmin opens more than 45 new connections to the database for a single page without any real items. This is extremely slow, especially with external MySQL servers. Instead of using the existing connection, it creates a new one for each db_query, escape_string, …

There's a simple patch to fix this behavior: e28f3f5 (from this branch)

I've uploaded a backtrace without the patch here: pfa-backtrace.txt

Slow list-virtual.php after upgrade to 3.0.x

After I upgraded PFA from 2.3.8 to 3.0.0 (today to 3.0.2) list-virtual.php is too slow. It took ~45s to load the list of mailboxes.
It seems like there is something wrong within the AliasdomainHandler (or other models). Attached you can find list-virtual.php with some breakpoints
list-virtual.php.debug.zip

Output is:

Thu, 16 Feb 2017 13:05:58 +0100: Point 0 - START
Thu, 16 Feb 2017 13:05:58 +0100: Point 1
Thu, 16 Feb 2017 13:05:58 +0100: Point 2
Thu, 16 Feb 2017 13:05:58 +0100: Point 2.0
Thu, 16 Feb 2017 13:06:02 +0100: Point 2.1
Thu, 16 Feb 2017 13:06:02 +0100: Point 2.2
Thu, 16 Feb 2017 13:06:08 +0100: Point 2.3
Thu, 16 Feb 2017 13:06:08 +0100: Point 2.4
Thu, 16 Feb 2017 13:06:13 +0100: Point 3
Thu, 16 Feb 2017 13:06:32 +0100: Point 4
Thu, 16 Feb 2017 13:06:32 +0100: Point 5
Thu, 16 Feb 2017 13:06:32 +0100: Point 6
Thu, 16 Feb 2017 13:06:42 +0100: Point 7
Thu, 16 Feb 2017 13:06:42 +0100: Point 8
Thu, 16 Feb 2017 13:06:42 +0100: Point 9 - FINISH

Setup is:
Webserver: 8 core 2.2GHz, 8GB RAM, Apache 2.4 + PHP 5.6 + PFA 3.0.2 (housing location 1)
Mailserver: 4 core 2.2Ghz, 4GB RAM, Postfix 3.1.2 with virtuals in MySQL, MariaDB 10.0.29 (housing location 2)

With PFA 2.3.8 it still works smoothly fast.

Can you please take a look? Or point me where to look for the error?
If you need me to provide more informations, please, do not hesitate to ask.

Password Enhancements

All sane password hashing schemes in postfixadmin are available only via dovecotpw binary, which is neither practical nor desirable at times for various reasons. I have implemented a small fix to the pacrypt function to improve it.
Alas it is not possible to use hash schemes like scrypt or blowfish for interoperability with other sw (e.g. dovecot or sogo) as the standard linux crypt function does not (and will not) support them.

Anyway, here is a quickfix to support sha512.b64 password scheme without the dovecot dependency (with cryptographically secure random function and compatibility for the old MD-5 Crypt password hashing scheme included for seamless transition) :

... elseif (strcmp($CONF['encrypt'],'sha512.b64') == 0)  {
        if (!function_exists('random_bytes') || !function_exists('crypt') || !defined('CRYPT_SHA512') || !function_exists('mb_substr')) {
            die("sha512.b64 not supported!");
        }
        if (!$pw_db) {
            $salt = mb_substr(rtrim(base64_encode(random_bytes(16)),'='),0,16,'8bit');
            $password = '{SHA512-CRYPT.B64}'.base64_encode(crypt($pw,'$6$'.$salt));
        } else {
            $password="#Thepasswordcannotbeverified";
            if (strncmp($pw_db,'{SHA512-CRYPT.B64}',18)==0) {
                $dcpwd = base64_decode(mb_substr($pw_db,18,NULL,'8bit'),true);
                if ($dcpwd !== false && !empty($dcpwd) && strncmp($dcpwd,'$6$',3)==0) {
                    $password = '{SHA512-CRYPT.B64}'.base64_encode(crypt($pw,$dcpwd));
                }
            }
            elseif (strncmp($pw_db,'{MD5-CRYPT}',11)==0) {
                $dcpwd = mb_substr($pw_db,11,NULL,'8bit');
                if (!empty($dcpwd) && strncmp($dcpwd,'$1$',3)==0) {
                    $password = '{MD5-CRYPT}'.crypt($pw,$dcpwd);
                }
            }
        }
    }

Also the login function, should verify the passwords with hash_equals function and not standard string comparison:

public function login($username, $password) {
        $result = false;
        $username = escape_string($username);
        $table = table_by_key($this->db_table);
        $active = db_get_boolean(True);
        $query = "SELECT password FROM $table WHERE " . $this->id_field . "='$username' AND active='$active'";
        $result = db_query ($query);
        if ($result['rows'] == 1) {
            $row = db_array ($result['result']);
            $crypt_password = pacrypt ($password, $row['password']);
            $result = hash_equals($row['password'], $crypt_password);
        }
        return $result;
}

Random_bytes (PHP 7) and hash_equals (PHP 5.6) functions are relatively new additions to PHP, but they can be easily implemented with polyfills for older PHP versions to maintain compatibility.
I can supply these as well if interested.

Invalid query: Field 'cache' doesn't have a default value

Hello all, I have encountered this issue with postfixadmin 2.3.5.
This happens when I try to set an autoreply for a mail account

Php version is 5.6.30 - debian wheezy

DEBUG INFORMATION:
Invalid query: Field 'cache' doesn't have a default value

Please check the documentation and website for more information.

Could you guys help me to figure out how to fix it?
I think it came out when updating php and mysql version, could it be?

Not Create All Table Rows on First Set Up

Operating System: Centos 7
PostfixAdmin: latest stable
Postfix: 2.10.1
SQLite: 3.7.17
Apache: 2.4.6
php: 5.4.16

The script is not creating all table rows on the first set up.

I get the error message:
Invalid query: no such column: phone
Invalid query: no such column: email_other

caused by query: SELECT username,password,password as password2,phone,email_other,CASE superadmin WHEN '1' THEN '1' WHEN '0' THEN '0' END as superadmin,CASE superadmin WHEN '1' THEN 'YES' WHEN '0' THEN 'NO' END as _superadmin,coalesce(domains,'') as domains,coalesce(__domain_count,0) as domain_count,CASE active WHEN '1' THEN '1' WHEN '0' THEN '0' END as active,CASE active WHEN '1' THEN 'YES' WHEN '0' THEN 'NO' END as _active,strftime(modified, '%Y-%m-%d') AS modified, modified AS _modified,1 as _can_edit,1 as _can_delete FROM admin LEFT JOIN ( SELECT count(*) AS __domain_count, group_concat(domain) AS domains, username AS __domain_username FROM domain_admins WHERE domain != 'ALL' GROUP BY username ) AS __domain on username = __domain_username
WHERE 1=1 AND ( username='[email protected]' ) ORDER BY username

The solution is to go to the SQLite table and add the missing fields.

Invalid query: Table 'mail.admin' doesn't exist

I try to upgrade an existing posfixadmin install to the most recent GIT version, but when executing setup.php?debug=1 I keep getting this error:

Everything seems fine... attempting to create/update database structure

CREATE TABLE IF NOT EXISTS config ( `id` int(11) not null auto_increment primary key, `name` VARCHAR(20) /*!40100 CHARACTER SET latin1 */ NOT NULL DEFAULT '', `value` VARCHAR(20) /*!40100 CHARACTER SET latin1 */ NOT NULL DEFAULT '', UNIQUE name ( `name` ) ) ENGINE = MYISAM COMMENT = 'PostfixAdmin settings'

Updating database:

- old version: 1282; target version: 1835

  (If the update doesn't work, run setup.php?debug=1 to see the detailed error messages and SQL queries.)
updating to version 1283 (MySQL and PgSQL)...

DEBUG INFORMATION:
Invalid query: Table 'mail.admin' doesn't exist

Check your error_log for the failed query.

My mailserver is working perfectly, but I can't get postfixadmin to work. Can you help me?

I use PHP7, MySQL 5.7.12-0ubuntu1 on Ubuntu 16.04

When installing a postfixadmin problem

Suggest the following error during installation.
But I checked the IMAP and php5-imap Have no problem.
How did this happen?
Have another posftixadmin logging, can see.
Help me! thanks!

Error in viewlog.php

From Nginx error log:

2017/09/05 20:26:05 [error] 24177#24177: *6898 FastCGI sent in stderr: "PHP message: PHP Notice: Use of undefined constant page_size - assumed 'page_size' in /var/www/postfixadmin/viewlog.php on line 63" while reading response header from upstream, client: 192.168.1.1, server: zzz.no-ip.org, request: "GET /postfixadmin/viewlog.php HTTP/2.0", upstream: "fastcgi://unix:/run/php/php7.1-fpm.sock:", host: "zzz.no-ip.org", referrer: "https://zzz.no-ip.org/postfixadmin/list-virtual.php?domain=zzz.no-ip.org"

Line 63 of viewlog.php:

$query = "SELECT timestamp,username,domain,action,data FROM $table_log WHERE domain='$fDomain' ORDER BY timestamp DESC LIMIT " . intval($CONF[page_size]);

Please, correct intval($CONF[page_size]), it must be intval($CONF['page_size'])

calender.js missing in postfixadmin_3.1-1_all.deb

I just installed postfixadmin_3.1-1_all.deb from https://sourceforge.net/projects/postfixadmin/files/postfixadmin/postfixadmin-3.1/postfixadmin_3.1-1_all.deb

There is a reference to calendar.js in /usr/share/postfixadmin/templates/vacation.tpl, but the file is missing in /usr/share/postfixadmin/.

The same problem exists in postfixadmin_3.0.2-1_all.deb

Quick fix: copy /usr/share/postfixadmin/users/calendar.js to /usr/share/postfixadmin/calendar.js

In postfixadmin-3.1.tar.gz everything is ok.

With kind regards
Hannes

using postfixadmin-cli to create mailboxes

I am trying to link postfixadmin-cli (v0.2 from debian unstable) to WHMCS hooks. In which case, I'll be using the
command:

postfixadmin-cli mailbox add 

This should execute unattended, but when I run

postfixadmin-cli mailbox add [email protected] --name 'testname' --password 'testpW01' --quota 10000

the command returns:

Error: The passwords that you supplied don't match!

Am I missing an option?

PHP 7.x Warnings & Deprecated Issues

Will the next version of Postfixadmin address the following issues?

PHP Warning: Cannot assign an empty string to a string offset in /postfixadmin/variables.inc.php on line 31

PHP Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; cNav_bar has a deprecated constructor in /postfixadmin/list-virtual.php on line 325

So far, it appears these are the only issues.

admins no access to domains

Hello,

I have Postfix Admin 3.1 version installed on CentOS 7
The Super admin accounts work just fine.
The admin accounts don't see any domains even if I select domains for those accounts

As a normal admin account i get this error messages:
On the Postfixadmin Virtual List page: You don't have permissions for any domains.
On the Postfixadmin View Log: Unable to find the logs!

If I run /setup.php?debug=1 it looks fine
"""Running software:

PHP version 5.4.16
Apache/2.4.6 (CentOS) OpenSSL/1.0.1e-fips PHP/5.4.16

Checking for dependencies:

Magic Quotes: Disabled - OK
Depends on: presence config.inc.php - OK
Checking $CONF['configured'] - OK
Warning: config.local.php - NOT FOUND
It's Recommended to store your own settings in config.local.php instead of editing config.inc.php
Create the file, and edit as appropriate (e.g. select database type etc)
Depends on: MySQL 3.23, 4.0 - OK
Depends on: MySQL 4.1 - OK
Depends on: SQLite - OK
(change the database_type to 'sqlite' in config.local.php if you want to use SQLite)
Testing database connection (using mysqli) - OK
Depends on: session - OK
Depends on: pcre - OK
Depends on: multibyte string - OK
Depends on: IMAP functions - OK

Everything seems fine... attempting to create/update database structure

CREATE TABLE IF NOT EXISTS config ( `id` int(11) not null auto_increment primary key, `name` VARCHAR(20) /*!40100 CHARACTER SET latin1 */ NOT NULL DEFAULT '', `value` VARCHAR(20) /*!40100 CHARACTER SET latin1 */ NOT NULL DEFAULT '', UNIQUE name ( `name` ) ) ENGINE = MYISAM COMMENT = 'PostfixAdmin settings'

Database is up to date""""

vacation.pl not work with SQLITE

In the postfixadmin config.inc.php i use SQLite for local database.
Now i want to activate the plugin vacation.pl but can not set up there sqlite.

domain qoutas, not just qoutas

as super admin its possible to set max qoutas pr mailbox, this works, but is imho not very flexible pr domain :(

i like to change to be super admin assign say 5GB to one domain, and then domain owner can use this size in total for all mailboxes in total, so it can be 5 mailboxes as 1GB or 1 mailbox with 2GB and one last with 3GB, the old system it would be max mailbox with max quotas, its from super admin point of view to restrictive

sorry if domain based quotas is solved

Custom fileds 'ts' type, update event

I try extend custom fields by extend struct hook.
Database filed 'x_expire' is NULL by default value and have type: datatime;

function x_ext_mailbox($struct) {
 $struct['x_expire'] =  pacol(1, 1, 1, 'ts','x_expire','x_expiredate',0);
}
$CONF['mailbox_struct_hook']        = 'x_ext_mailbox';

pf1

How I can control update event, for replace entered empty or 0 value, to NULL record to database ?
For now if db filed have NULL value, used edit form show '0' in , and if i try update user data, have error of update database;

pf2

For search solution I added default value:
$struct['x_expire']['default'] = '2999-12-31';
But it fill at all users data 2999-12-31, instead of NULL.

pf4

And need write custom script that external connect to database and replace value 2999-12-31 to NULL
$CONF['mailbox_postedit_script'] = 'some_shell_script.sh';

How I can update result w/o use external postedit_script?

May be I can have some methods how redefine beforestore() in config.local.php ?

    public function store() {
        if ($this->values_valid == false) {
            $this->errormsg[] = "one or more values are invalid!";
            return false;
        }

        if ( !$this->beforestore() ) {
            return false;

Warning MailboxHandler.php after creating new mailbox

In the url /edit.php?table=mailbox after creating a new mailbox for a domain I get:

Warning: A non-numeric value encountered in /var/www/xx.com/model/MailboxHandler.php on line 202

Warning: Cannot modify header information - headers already sent by (output started at /var/www/xx.com/model/MailboxHandler.php:202) in /var/www/xx.com/edit.php on line 175

But it all is going well afterward

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.