Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
ISPConfig
ISPConfig 3
Commits
bd5d2654
Commit
bd5d2654
authored
Jul 09, 2015
by
Florian Schaal
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
use postconf -M during install / update to detect services in postfix
parent
401e1451
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
360 additions
and
209 deletions
+360
-209
install/dist/lib/centos_base.lib.php
install/dist/lib/centos_base.lib.php
+37
-19
install/dist/lib/debian60.lib.php
install/dist/lib/debian60.lib.php
+21
-14
install/dist/lib/fedora.lib.php
install/dist/lib/fedora.lib.php
+61
-36
install/dist/lib/gentoo.lib.php
install/dist/lib/gentoo.lib.php
+61
-38
install/dist/lib/opensuse.lib.php
install/dist/lib/opensuse.lib.php
+86
-53
install/lib/installer_base.lib.php
install/lib/installer_base.lib.php
+91
-49
install/tpl/debian6_dovecot2.conf.master
install/tpl/debian6_dovecot2.conf.master
+3
-0
No files found.
install/dist/lib/centos_base.lib.php
View file @
bd5d2654
...
...
@@ -67,28 +67,46 @@ class installer_centos extends installer_dist {
caselog
(
$command
.
" &> /dev/null"
,
__FILE__
,
__LINE__
,
"EXECUTED:
$command
"
,
"Failed to execute the command
$command
"
);
}
// Append the configuration for amavisd to the master.cf file
if
(
is_file
(
$conf
[
'postfix'
][
'config_dir'
]
.
'/master.cf'
))
copy
(
$conf
[
'postfix'
][
'config_dir'
]
.
'/master.cf'
,
$conf
[
'postfix'
][
'config_dir'
]
.
'/master.cf~'
);
$content
=
rf
(
$conf
[
'postfix'
][
'config_dir'
]
.
'/master.cf'
);
// Only add the content if we had not addded it before
if
(
!
preg_match
(
'/^amavis\s+unix\s+/m'
,
$content
))
{
unset
(
$content
);
$content
=
rfsel
(
$conf
[
'ispconfig_install_dir'
]
.
'/server/conf-custom/install/master_cf_amavis.master'
,
'tpl/master_cf_amavis.master'
);
af
(
$conf
[
'postfix'
][
'config_dir'
]
.
'/master.cf'
,
$content
);
$config_dir
=
$conf
[
'postfix'
][
'config_dir'
];
// Adding amavis-services to the master.cf file if the service does not already exists
if
(
$this
->
postfix_master
())
{
exec
(
"postconf -M amavis.unix"
,
$out
,
$ret
);
$add_amavis
=
@
(
$out
[
0
]
==
''
)
?
true
:
false
;
unset
(
$out
);
exec
(
"postconf -M 127.0.0.1:10025.inet"
,
$out
,
$ret
);
$add_amavis_10025
=
@
(
$out
[
0
]
==
''
)
?
true
:
false
;
unset
(
$out
);
exec
(
"postconf -M 127.0.0.1:10027.inet"
,
$out
,
$ret
);
$add_amavis_10027
=
@
(
$out
[
0
]
==
''
)
?
true
:
false
;
unset
(
$out
);
}
else
{
//* fallback - postfix < 2.9
$content
=
rf
(
$conf
[
'postfix'
][
'config_dir'
]
.
'/master.cf'
);
$add_amavis
=
@
(
!
preg_match
(
'/^amavis\s+unix\s+/m'
,
$content
))
?
true
:
false
;
$add_amavis_10025
=
@
(
!
preg_match
(
'/^127.0.0.1:10025\s+/m'
,
$content
))
?
true
:
false
;
$add_amavis_10027
=
@
(
!
preg_match
(
'/^127.0.0.1:10027\s+/m'
,
$content
))
?
true
:
false
;
}
if
(
!
preg_match
(
'/^127.0.0.1:10025\s+/m'
,
$content
))
{
unset
(
$content
);
$content
=
rfsel
(
$conf
[
'ispconfig_install_dir'
]
.
'/server/conf-custom/install/master_cf_amavis10025.master'
,
'tpl/master_cf_amavis10025.master'
);
af
(
$conf
[
'postfix'
][
'config_dir'
]
.
'/master.cf'
,
$content
);
$content
=
rf
(
$conf
[
'postfix'
][
'config_dir'
]
.
'/master.cf'
);
}
if
(
!
preg_match
(
'/^127.0.0.1:10027\s+/m'
,
$content
))
{
unset
(
$content
);
$content
=
rfsel
(
$conf
[
'ispconfig_install_dir'
]
.
'/server/conf-custom/install/master_cf_amavis10027.master'
,
'tpl/master_cf_amavis10027.master'
);
af
(
$conf
[
'postfix'
][
'config_dir'
]
.
'/master.cf'
,
$content
);
if
(
$add_amavis
||
$add_amavis_10025
||
$add_amavis_10027
)
{
//* backup master.cf
if
(
is_file
(
$config_dir
.
'/master.cf'
))
copy
(
$config_dir
.
'/master.cf'
,
$config_dir
.
'/master.cf~'
);
// adjust amavis-config
if
(
$add_amavis
)
{
$content
=
rfsel
(
$conf
[
'ispconfig_install_dir'
]
.
'/server/conf-custom/install/master_cf_amavis.master'
,
'tpl/master_cf_amavis.master'
);
af
(
$config_dir
.
'/master.cf'
,
$content
);
unset
(
$content
);
}
if
(
$add_amavis_10025
)
{
$content
=
rfsel
(
$conf
[
'ispconfig_install_dir'
]
.
'/server/conf-custom/install/master_cf_amavis10025.master'
,
'tpl/master_cf_amavis10025.master'
);
af
(
$config_dir
.
'/master.cf'
,
$content
);
unset
(
$content
);
}
if
(
$add_amavis_10027
)
{
$content
=
rfsel
(
$conf
[
'ispconfig_install_dir'
]
.
'/server/conf-custom/install/master_cf_amavis10027.master'
,
'tpl/master_cf_amavis10027.master'
);
af
(
$config_dir
.
'/master.cf'
,
$content
);
unset
(
$content
);
}
}
unset
(
$content
);
removeLine
(
'/etc/sysconfig/freshclam'
,
'FRESHCLAM_DELAY=disabled-warn # REMOVE ME'
,
1
);
replaceLine
(
'/etc/freshclam.conf'
,
'Example'
,
'# Example'
,
1
);
...
...
install/dist/lib/debian60.lib.php
View file @
bd5d2654
...
...
@@ -50,24 +50,30 @@ class installer extends installer_base {
}
}
$config_dir
=
$conf
[
'dovecot'
][
'config_dir'
];
$config_dir
=
$conf
[
'postfix'
][
'config_dir'
];
//* Configure master.cf and add a line for deliver
if
(
is_file
(
$config_dir
.
'/master.cf'
)){
copy
(
$config_dir
.
'/master.cf'
,
$config_dir
.
'/master.cf~2'
);
if
(
$this
->
postfix_master
())
{
exec
(
"postconf -M dovecot.unix"
,
$out
,
$ret
);
$add_dovecot_service
=
@
(
$out
[
0
]
==
''
)
?
true
:
false
;
}
else
{
//* fallback - postfix < 2.9
$content
=
rf
(
$config_dir
.
'/master.cf'
);
$add_dovecot_service
=
@
(
!
stristr
(
$content
,
"dovecot/deliver"
))
?
true
:
false
;
}
if
(
is_file
(
$config_dir
.
'/master.cf~'
)){
chmod
(
$config_dir
.
'/master.cf~2'
,
0400
);
}
$content
=
rf
(
$conf
[
"postfix"
][
"config_dir"
]
.
'/master.cf'
);
// Only add the content if we had not addded it before
if
(
!
stristr
(
$content
,
"dovecot/deliver"
))
{
if
(
$add_dovecot_service
)
{
//* backup
if
(
is_file
(
$config_dir
.
'/master.cf'
)){
copy
(
$config_dir
.
'/master.cf'
,
$config_dir
.
'/master.cf~2'
);
}
if
(
is_file
(
$config_dir
.
'/master.cf~'
)){
chmod
(
$config_dir
.
'/master.cf~2'
,
0400
);
}
//* Configure master.cf and add a line for deliver
$content
=
rf
(
$conf
[
"postfix"
][
"config_dir"
]
.
'/master.cf'
);
$deliver_content
=
'dovecot unix - n n - - pipe'
.
"
\n
"
.
' flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}'
;
af
(
$conf
[
"postfix"
][
"config_dir"
]
.
'/master.cf'
,
$deliver_content
);
af
(
$config_dir
.
'/master.cf'
,
$deliver_content
);
unset
(
$content
);
unset
(
$deliver_content
);
}
unset
(
$content
);
unset
(
$deliver_content
);
//* Reconfigure postfix to use dovecot authentication
// Adding the amavisd commands to the postfix configuration
...
...
@@ -88,6 +94,7 @@ class installer extends installer_base {
}
//* copy dovecot.conf
$config_dir
=
$conf
[
'dovecot'
][
'config_dir'
];
$configfile
=
'dovecot.conf'
;
if
(
is_file
(
$config_dir
.
'/'
.
$configfile
)){
copy
(
$config_dir
.
'/'
.
$configfile
,
$config_dir
.
'/'
.
$configfile
.
'~'
);
...
...
install/dist/lib/fedora.lib.php
View file @
bd5d2654
...
...
@@ -349,27 +349,30 @@ class installer_dist extends installer_base {
}
}
$config_dir
=
$conf
[
'dovecot'
][
'config_dir'
];
//* Use /etc/dovecot as config dir if exists
if
(
is_dir
(
'/etc/dovecot'
))
$config_dir
=
'/etc/dovecot'
;
$config_dir
=
$conf
[
'postfix'
][
'config_dir'
];
//* Configure master.cf and add a line for deliver
if
(
is_file
(
$config_dir
.
'/master.cf'
)){
copy
(
$config_dir
.
'/master.cf'
,
$config_dir
.
'/master.cf~2'
);
}
if
(
is_file
(
$config_dir
.
'/master.cf~'
)){
exec
(
'chmod 400 '
.
$config_dir
.
'/master.cf~2'
);
if
(
$this
->
postfix_master
())
{
exec
(
"postconf -M dovecot.unix"
,
$out
,
$ret
);
$add_dovecot_service
=
@
(
$out
[
0
]
==
''
)
?
true
:
false
;
}
else
{
//* fallback - postfix < 2.9
$content
=
rf
(
$config_dir
'/master.cf'
);
$add_dovecot_service
=
@
(
!
stristr
(
$content
,
"dovecot/deliver"
))
?
true
:
false
;
}
$content
=
rf
(
$conf
[
"postfix"
][
"config_dir"
]
.
'/master.cf'
);
// Only add the content if we had not addded it before
if
(
!
stristr
(
$content
,
"dovecot/deliver"
))
{
$deliver_content
=
'dovecot unix - n n - - pipe'
.
"
\n
"
.
' flags=DROhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${user}@${nexthop}'
;
if
(
$add_dovecot_service
)
{
//* backup
if
(
is_file
(
$config_dir
.
'/master.cf'
)){
copy
(
$config_dir
.
'/master.cf'
,
$config_dir
.
'/master.cf~2'
);
}
if
(
is_file
(
$config_dir
.
'/master.cf~'
)){
chmod
(
$config_dir
.
'/master.cf~2'
,
0400
);
}
//* Configure master.cf and add a line for deliver
$content
=
rf
(
$conf
[
"postfix"
][
"config_dir"
]
.
'/master.cf'
);
$deliver_content
=
'dovecot unix - n n - - pipe'
.
"
\n
"
.
' flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}'
;
af
(
$conf
[
"postfix"
][
"config_dir"
]
.
'/master.cf'
,
$deliver_content
);
unset
(
$content
);
unset
(
$deliver_content
);
}
unset
(
$content
);
unset
(
$deliver_content
);
//* Reconfigure postfix to use dovecot authentication
// Adding the amavisd commands to the postfix configuration
...
...
@@ -389,6 +392,10 @@ class installer_dist extends installer_base {
caselog
(
$command
.
" &> /dev/null"
,
__FILE__
,
__LINE__
,
"EXECUTED:
$command
"
,
"Failed to execute the command
$command
"
);
}
//* Use /etc/dovecot as config dir if exists
// if(is_dir('/etc/dovecot')) $config_dir = '/etc/dovecot';
$config_dir
=
$conf
[
'dovecot'
][
'config_dir'
];
//* backup dovecot.conf
$configfile
=
'dovecot.conf'
;
if
(
is_file
(
"
$config_dir
/
$configfile
"
)){
...
...
@@ -482,28 +489,46 @@ class installer_dist extends installer_base {
caselog
(
$command
.
" &> /dev/null"
,
__FILE__
,
__LINE__
,
"EXECUTED:
$command
"
,
"Failed to execute the command
$command
"
);
}
// Append the configuration for amavisd to the master.cf file
if
(
is_file
(
$conf
[
'postfix'
][
'config_dir'
]
.
'/master.cf'
))
copy
(
$conf
[
'postfix'
][
'config_dir'
]
.
'/master.cf'
,
$conf
[
'postfix'
][
'config_dir'
]
.
'/master.cf~'
);
$content
=
rf
(
$conf
[
'postfix'
][
'config_dir'
]
.
'/master.cf'
);
// Only add the content if we had not addded it before
if
(
!
preg_match
(
'/^
amavis
\s+
unix
\s+/m'
,
$content
))
{
unset
(
$content
)
;
$content
=
rf
se
l
(
$
conf
[
'ispconfig_install_dir'
]
.
'/server/conf-custom/install/master_cf_amavis.master'
,
'tpl/master_cf_amavis.master'
);
af
(
$conf
[
'postfix'
][
'config_dir'
]
.
'/master.cf'
,
$conten
t
);
$
content
=
rf
(
$conf
[
'postfix'
][
'config_dir'
]
.
'/master.cf'
)
;
}
if
(
!
preg_match
(
'/^127.0.0.1:10025\s+/m'
,
$content
))
{
unset
(
$content
)
;
$content
=
rfsel
(
$conf
[
'ispconfig_install_dir'
]
.
'/server/conf-custom/install/master_cf_amavis10025.master'
,
'tpl/master_cf_amavis10025.master'
);
af
(
$conf
[
'postfix'
][
'config_dir'
]
.
'/master.cf'
,
$content
);
$config_dir
=
$conf
[
'postfix'
][
'config_dir'
];
// Adding amavis-services to the master.cf file if the service does not already exists
if
(
$this
->
postfix_master
())
{
exec
(
"postconf -M
amavis
.
unix
"
,
$out
,
$ret
);
$add_amavis
=
@
(
$out
[
0
]
==
''
)
?
true
:
false
;
un
se
t
(
$
out
);
exec
(
"postconf -M 127.0.0.1:10025.inet"
,
$out
,
$re
t
);
$
add_amavis_10025
=
@
(
$out
[
0
]
==
''
)
?
true
:
false
;
unset
(
$out
);
exec
(
"postconf -M 127.0.0.1:10027.inet"
,
$out
,
$ret
);
$add_amavis_10027
=
@
(
$out
[
0
]
==
''
)
?
true
:
false
;
unset
(
$out
);
}
else
{
//* fallback - postfix < 2.9
$content
=
rf
(
$conf
[
'postfix'
][
'config_dir'
]
.
'/master.cf'
);
$add_amavis
=
@
(
!
preg_match
(
'/^amavis\s+unix\s+/m'
,
$content
))
?
true
:
false
;
$add_amavis_10025
=
@
(
!
preg_match
(
'/^127.0.0.1:10025\s+/m'
,
$content
))
?
true
:
false
;
$add_amavis_10027
=
@
(
!
preg_match
(
'/^127.0.0.1:10027\s+/m'
,
$content
))
?
true
:
false
;
}
if
(
!
preg_match
(
'/^127.0.0.1:10027\s+/m'
,
$content
))
{
unset
(
$content
);
$content
=
rfsel
(
$conf
[
'ispconfig_install_dir'
]
.
'/server/conf-custom/install/master_cf_amavis10027.master'
,
'tpl/master_cf_amavis10027.master'
);
af
(
$conf
[
'postfix'
][
'config_dir'
]
.
'/master.cf'
,
$content
);
if
(
$add_amavis
||
$add_amavis_10025
||
$add_amavis_10027
)
{
//* backup master.cf
if
(
is_file
(
$config_dir
.
'/master.cf'
))
copy
(
$config_dir
.
'/master.cf'
,
$config_dir
.
'/master.cf~'
);
// adjust amavis-config
if
(
$add_amavis
)
{
$content
=
rfsel
(
$conf
[
'ispconfig_install_dir'
]
.
'/server/conf-custom/install/master_cf_amavis.master'
,
'tpl/master_cf_amavis.master'
);
af
(
$config_dir
.
'/master.cf'
,
$content
);
unset
(
$content
);
}
if
(
$add_amavis_10025
)
{
$content
=
rfsel
(
$conf
[
'ispconfig_install_dir'
]
.
'/server/conf-custom/install/master_cf_amavis10025.master'
,
'tpl/master_cf_amavis10025.master'
);
af
(
$config_dir
.
'/master.cf'
,
$content
);
unset
(
$content
);
}
if
(
$add_amavis_10027
)
{
$content
=
rfsel
(
$conf
[
'ispconfig_install_dir'
]
.
'/server/conf-custom/install/master_cf_amavis10027.master'
,
'tpl/master_cf_amavis10027.master'
);
af
(
$config_dir
.
'/master.cf'
,
$content
);
unset
(
$content
);
}
}
unset
(
$content
);
removeLine
(
'/etc/sysconfig/freshclam'
,
'FRESHCLAM_DELAY=disabled-warn # REMOVE ME'
,
1
);
replaceLine
(
'/etc/freshclam.conf'
,
'Example'
,
'# Example'
,
1
);
...
...
install/dist/lib/gentoo.lib.php
View file @
bd5d2654
...
...
@@ -270,27 +270,30 @@ class installer extends installer_base
}
}
$config_dir
=
$conf
[
'dovecot'
][
'config_dir'
];
$configfile
=
$conf
[
'postfix'
][
'config_dir'
]
.
'/master.cf'
;
if
(
is_file
(
$configfile
))
{
copy
(
$configfile
,
$configfile
.
'~2'
);
}
if
(
is_file
(
$configfile
.
'~2'
))
{
chmod
(
$configfile
.
'~2'
,
0400
);
}
$config_dir
=
$conf
[
'postfix'
][
'config_dir'
];
//* Configure master.cf and add a line for deliver
$content
=
rf
(
$configfile
);
if
(
!
stristr
(
$content
,
'dovecot/deliver'
))
{
$deliver_content
=
'dovecot unix - n n - - pipe'
.
"
\n
"
.
' flags=DROhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${user}@${nexthop}'
;
af
(
$conf
[
'postfix'
][
'config_dir'
]
.
'/master.cf'
,
$deliver_content
);
if
(
$this
->
postfix_master
())
{
exec
(
"postconf -M dovecot.unix"
,
$out
,
$ret
);
$add_dovecot_service
=
@
(
$out
[
0
]
==
''
)
?
true
:
false
;
}
else
{
//* fallback - postfix < 2.9
$content
=
rf
(
$config_dir
.
'/master.cf'
);
$add_dovecot_service
=
@
(
!
stristr
(
$content
,
"dovecot/deliver"
))
?
true
:
false
;
}
if
(
$add_dovecot_service
)
{
//* backup
if
(
is_file
(
$config_dir
.
'/master.cf'
)){
copy
(
$config_dir
.
'/master.cf'
,
$config_dir
.
'/master.cf~2'
);
}
if
(
is_file
(
$config_dir
.
'/master.cf~'
)){
chmod
(
$config_dir
.
'/master.cf~2'
,
0400
);
}
//* Configure master.cf and add a line for deliver
$content
=
rf
(
$conf
[
"postfix"
][
"config_dir"
]
.
'/master.cf'
);
$deliver_content
=
'dovecot unix - n n - - pipe'
.
"
\n
"
.
' flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}'
;
af
(
$conf
[
$config_dir
.
'/master.cf'
,
$deliver_content
);
unset
(
$content
);
unset
(
$deliver_content
);
}
unset
(
$content
);
unset
(
$deliver_content
);
unset
(
$configfile
);
//* Reconfigure postfix to use dovecot authentication
$postconf_commands
=
array
(
...
...
@@ -310,6 +313,7 @@ class installer extends installer_base
caselog
(
$command
.
' &> /dev/null'
,
__FILE__
,
__LINE__
,
"EXECUTED:
$command
"
,
"Failed to execute the command
$command
"
);
}
$config_dir
=
$conf
[
'dovecot'
][
'config_dir'
];
//* copy dovecot.conf
$configfile
=
$config_dir
.
'/dovecot.conf'
;
$content
=
$this
->
get_template_file
(
'dovecot.conf'
,
true
);
...
...
@@ -387,27 +391,46 @@ class installer extends installer_base
caselog
(
$command
.
' &> /dev/null'
,
__FILE__
,
__LINE__
,
"EXECUTED:
$command
"
,
"Failed to execute the command
$command
"
);
}
// Append the configuration for amavisd to the master.cf file
$content
=
rf
(
$conf
[
'postfix'
][
'config_dir'
]
.
'/master.cf'
);
// Only add the content if we had not addded it before
if
(
!
preg_match
(
'/^amavis\s+unix\s+/m'
,
$content
))
{
unset
(
$content
);
$content
=
$this
->
get_template_file
(
'master_cf_amavis'
,
true
);
af
(
$conf
[
'postfix'
][
'config_dir'
]
.
'/master.cf'
,
$content
);
$content
=
rf
(
$conf
[
'postfix'
][
'config_dir'
]
.
'/master.cf'
);
}
if
(
!
preg_match
(
'/^127.0.0.1:10025\s+/m'
,
$content
))
{
unset
(
$content
);
$content
=
$this
->
get_template_file
(
'master_cf_amavis10025'
,
true
);
af
(
$conf
[
'postfix'
][
'config_dir'
]
.
'/master.cf'
,
$content
);
$config_dir
=
$conf
[
'postfix'
][
'config_dir'
];
// Adding amavis-services to the master.cf file if the service does not already exists
if
(
$this
->
postfix_master
())
{
exec
(
"postconf -M amavis.unix"
,
$out
,
$ret
);
$add_amavis
=
@
(
$out
[
0
]
==
''
)
?
true
:
false
;
unset
(
$out
);
exec
(
"postconf -M 127.0.0.1:10025.inet"
,
$out
,
$ret
);
$add_amavis_10025
=
@
(
$out
[
0
]
==
''
)
?
true
:
false
;
unset
(
$out
);
exec
(
"postconf -M 127.0.0.1:10027.inet"
,
$out
,
$ret
);
$add_amavis_10027
=
@
(
$out
[
0
]
==
''
)
?
true
:
false
;
unset
(
$out
);
}
else
{
//* fallback - postfix < 2.9
$content
=
rf
(
$conf
[
'postfix'
][
'config_dir'
]
.
'/master.cf'
);
$add_amavis
=
@
(
!
preg_match
(
'/^amavis\s+unix\s+/m'
,
$content
))
?
true
:
false
;
$add_amavis_10025
=
@
(
!
preg_match
(
'/^127.0.0.1:10025\s+/m'
,
$content
))
?
true
:
false
;
$add_amavis_10027
=
@
(
!
preg_match
(
'/^127.0.0.1:10027\s+/m'
,
$content
))
?
true
:
false
;
}
if
(
$add_amavis
||
$add_amavis_10025
||
$add_amavis_10027
)
{
//* backup master.cf
if
(
is_file
(
$config_dir
.
'/master.cf'
))
copy
(
$config_dir
.
'/master.cf'
,
$config_dir
.
'/master.cf~'
);
// adjust amavis-config
if
(
$add_amavis
)
{
$content
=
rfsel
(
$conf
[
'ispconfig_install_dir'
]
.
'/server/conf-custom/install/master_cf_amavis.master'
,
'tpl/master_cf_amavis.master'
);
af
(
$config_dir
.
'/master.cf'
,
$content
);
unset
(
$content
);
}
if
(
$add_amavis_10025
)
{
$content
=
rfsel
(
$conf
[
'ispconfig_install_dir'
]
.
'/server/conf-custom/install/master_cf_amavis10025.master'
,
'tpl/master_cf_amavis10025.master'
);
af
(
$config_dir
.
'/master.cf'
,
$content
);
unset
(
$content
);
}
if
(
$add_amavis_10027
)
{
$content
=
rfsel
(
$conf
[
'ispconfig_install_dir'
]
.
'/server/conf-custom/install/master_cf_amavis10027.master'
,
'tpl/master_cf_amavis10027.master'
);
af
(
$config_dir
.
'/master.cf'
,
$content
);
unset
(
$content
);
}
}
if
(
!
preg_match
(
'/^127.0.0.1:10027\s+/m'
,
$content
))
{
unset
(
$content
);
$content
=
$this
->
get_template_file
(
'master_cf_amavis10027'
,
true
);
af
(
$conf
[
'postfix'
][
'config_dir'
]
.
'/master.cf'
,
$content
);
}
unset
(
$content
);
//* Add the clamav user to the amavis group
exec
(
'usermod -a -G amavis clamav'
);
...
...
install/dist/lib/opensuse.lib.php
View file @
bd5d2654
...
...
@@ -225,27 +225,34 @@ class installer_dist extends installer_base {
$command
=
'chmod 755 /var/run/authdaemon.courier-imap'
;
caselog
(
$command
.
' &> /dev/null'
,
__FILE__
,
__LINE__
,
'EXECUTED: '
.
$command
,
'Failed to execute the command '
.
$command
);
//* Changing maildrop lines in posfix master.cf
if
(
is_file
(
$config_dir
.
'/master.cf'
)){
copy
(
$config_dir
.
'/master.cf'
,
$config_dir
.
'/master.cf~'
);
}
if
(
is_file
(
$config_dir
.
'/master.cf~'
)){
exec
(
'chmod 400 '
.
$config_dir
.
'/master.cf~'
);
}
//* Check maildrop service in posfix master.cf
$regex
=
"/^maildrop unix.*pipe flags=DRhu user=vmail argv=
\\
/usr
\\
/bin
\\
/maildrop -d "
.
$cf
[
'vmail_username'
]
.
"
\\
$\{extension}
\\
$\{recipient}
\\
$\{user}
\\
$\{nexthop}
\\
$\{sender}/"
;
$configfile
=
$config_dir
.
'/master.cf'
;
$content
=
rf
(
$configfile
);
$content
=
str_replace
(
' flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}'
,
' flags=DRhu user='
.
$cf
[
'vmail_username'
]
.
' argv=/usr/bin/maildrop -d ${recipient} ${extension} ${recipient} ${user} ${nexthop} ${sender}'
,
$content
);
$content
=
str_replace
(
' flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}'
,
' flags=DRhu user='
.
$cf
[
'vmail_username'
]
.
' argv=/usr/bin/maildrop -d ${recipient} ${extension} ${recipient} ${user} ${nexthop} ${sender}'
,
$content
);
if
(
$this
->
postfix_master
())
{
exec
(
"postconf -M maildrop.unix"
,
$out
,
$ret
);
$change_maildrop_flags
=
@
(
preg_match
(
$regex
,
$out
[
0
])
&&
$out
[
0
]
!=
''
)
?
false
:
true
;
}
else
{
//* fallback - postfix < 2.9
$change_maildrop_flags
=
@
(
preg_match
(
$regex
,
$configfile
))
?
false
:
true
;
}
if
(
$change_maildrop_flags
)
{
//* Change maildrop service in posfix master.cf
if
(
is_file
(
$config_dir
.
'/master.cf'
))
{
copy
(
$config_dir
.
'/master.cf'
,
$config_dir
.
'/master.cf~'
);
}
if
(
is_file
(
$config_dir
.
'/master.cf~'
))
{
chmod
(
$config_dir
.
'/master.cf~'
,
0400
);
}
$configfile
=
$config_dir
.
'/master.cf'
;
$content
=
rf
(
$configfile
);
$content
=
str_replace
(
' flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}'
,
'flags=DRhu user='
.
$cf
[
'vmail_username'
]
.
' argv=/usr/bin/maildrop -d '
.
$cf
[
'vmail_username'
]
.
' ${extension} ${recipient} ${user} ${nexthop} ${sender}'
,
$content
);
$content
=
str_replace
(
' flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}'
,
'flags=DRhu user='
.
$cf
[
'vmail_username'
]
.
' argv=/usr/bin/maildrop -d '
.
$cf
[
'vmail_username'
]
.
' ${extension} ${recipient} ${user} ${nexthop} ${sender}'
,
$content
);
}
// enable tlsmanager
$content
=
str_replace
(
'#tlsmgr unix - - n 1000? 1 tlsmgr'
,
'tlsmgr unix - - n 1000? 1 tlsmgr'
,
$content
);
wf
(
$configfile
,
$content
);
//* Writing the Maildrop mailfilter file
...
...
@@ -357,24 +364,30 @@ class installer_dist extends installer_base {
}
}
$config_dir
=
$conf
[
'dovecot'
][
'config_dir'
];
$config_dir
=
$conf
[
'postfix'
][
'config_dir'
];
//* Configure master.cf and add a line for deliver
if
(
is_file
(
$config_dir
.
'/master.cf'
)){
copy
(
$config_dir
.
'/master.cf'
,
$config_dir
.
'/master.cf~2'
);
}
if
(
is_file
(
$config_dir
.
'/master.cf~'
)){
exec
(
'chmod 400 '
.
$config_dir
.
'/master.cf~2'
);
}
$content
=
rf
(
$conf
[
"postfix"
][
"config_dir"
]
.
'/master.cf'
);
// Only add the content if we had not addded it before
if
(
!
stristr
(
$content
,
"dovecot/deliver"
))
{
$deliver_content
=
'dovecot unix - n n - - pipe'
.
"
\n
"
.
' flags=DROhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}'
;
if
(
$this
->
postfix_master
())
{
exec
(
"postconf -M dovecot.unix"
,
$out
,
$ret
);
$add_dovecot_service
=
@
(
$out
[
0
]
==
''
)
?
true
:
false
;
}
else
{
//* fallback - postfix < 2.9
$content
=
rf
(
$config_dir
.
'/master.cf'
);
$add_dovecot_service
=
@
(
!
stristr
(
$content
,
"dovecot/deliver"
))
?
true
:
false
;
}
if
(
$add_dovecot_service
)
{
//* backup
if
(
is_file
(
$config_dir
.
'/master.cf'
)){
copy
(
$config_dir
.
'/master.cf'
,
$config_dir
.
'/master.cf~2'
);
}
if
(
is_file
(
$config_dir
.
'/master.cf~'
)){
chmod
(
$config_dir
.
'/master.cf~2'
,
0400
);
}
//* Configure master.cf and add a line for deliver
$content
=
rf
(
$conf
[
"postfix"
][
"config_dir"
]
.
'/master.cf'
);
$deliver_content
=
'dovecot unix - n n - - pipe'
.
"
\n
"
.
' flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${user}@${nexthop}'
;
af
(
$conf
[
"postfix"
][
"config_dir"
]
.
'/master.cf'
,
$deliver_content
);
unset
(
$content
);
unset
(
$deliver_content
);
}
unset
(
$content
);
unset
(
$deliver_content
);
//* Reconfigure postfix to use dovecot authentication
// Adding the amavisd commands to the postfix configuration
...
...
@@ -394,6 +407,8 @@ class installer_dist extends installer_base {
caselog
(
$command
.
" &> /dev/null"
,
__FILE__
,
__LINE__
,
"EXECUTED:
$command
"
,
"Failed to execute the command
$command
"
);
}
$config_dir
=
$conf
[
'dovecot'
][
'config_dir'
];
//* backup dovecot.conf
$configfile
=
'dovecot.conf'
;
if
(
is_file
(
"
$config_dir
/
$configfile
"
)){
...
...
@@ -484,28 +499,46 @@ class installer_dist extends installer_base {
caselog
(
$command
.
" &> /dev/null"
,
__FILE__
,
__LINE__
,
"EXECUTED:
$command
"
,
"Failed to execute the command
$command
"
);
}
// Append the configuration for amavisd to the master.cf file
if
(
is_file
(
$conf
[
"postfix"
][
"config_dir"
]
.
'/master.cf'
))
copy
(
$conf
[
"postfix"
][
"config_dir"
]
.
'/master.cf'
,
$conf
[
"postfix"
][
"config_dir"
]
.
'/master.cf~'
);
$content
=
rf
(
$conf
[
"postfix"
][
"config_dir"
]
.
'/master.cf'
);
// Only add the content if we had not addded it before
if
(
!
preg_match
(
'/^amavis\s+unix\s+/m'
,
$content
))
{
unset
(
$content
);
$content
=
rfsel
(
$conf
[
'ispconfig_install_dir'
]
.
'/server/conf-custom/install/master_cf_amavis.master'
,
'tpl/master_cf_amavis.master'
);
af
(
$conf
[
'postfix'
][
'config_dir'
]
.
'/master.cf'
,
$content
);
$config_dir
=
$conf
[
'postfix'
][
'config_dir'
];
// Adding amavis-services to the master.cf file if the service does not already exists
if
(
$this
->
postfix_master
())
{
exec
(
"postconf -M amavis.unix"
,
$out
,
$ret
);
$add_amavis
=
@
(
$out
[
0
]
==
''
)
?
true
:
false
;
unset
(
$out
);
exec
(
"postconf -M 127.0.0.1:10025.inet"
,
$out
,
$ret
);
$add_amavis_10025
=
@
(
$out
[
0
]
==
''
)
?
true
:
false
;
unset
(
$out
);
exec
(
"postconf -M 127.0.0.1:10027.inet"
,
$out
,
$ret
);
$add_amavis_10027
=
@
(
$out
[
0
]
==
''
)
?
true
:
false
;
unset
(
$out
);
}
else
{
//* fallback - postfix < 2.9
$content
=
rf
(
$conf
[
'postfix'
][
'config_dir'
]
.
'/master.cf'
);
$add_amavis
=
@
(
!
preg_match
(
'/^amavis\s+unix\s+/m'
,
$content
))
?
true
:
false
;
$add_amavis_10025
=
@
(
!
preg_match
(
'/^127.0.0.1:10025\s+/m'
,
$content
))
?
true
:
false
;
$add_amavis_10027
=
@
(
!
preg_match
(
'/^127.0.0.1:10027\s+/m'
,
$content
))
?
true
:
false
;
}
if
(
$add_amavis
||
$add_amavis_10025
||
$add_amavis_10027
)
{
//* backup master.cf
if
(
is_file
(
$config_dir
.
'/master.cf'
))
copy
(
$config_dir
.
'/master.cf'
,
$config_dir
.
'/master.cf~'
);
// adjust amavis-config
if
(
$add_amavis
)
{
$content
=
rfsel
(
$conf
[
'ispconfig_install_dir'
]
.
'/server/conf-custom/install/master_cf_amavis.master'
,
'tpl/master_cf_amavis.master'
);
af
(
$config_dir
.
'/master.cf'
,
$content
);
unset
(
$content
);
}
if
(
$add_amavis_10025
)
{
$content
=
rfsel
(
$conf
[
'ispconfig_install_dir'
]
.
'/server/conf-custom/install/master_cf_amavis10025.master'
,
'tpl/master_cf_amavis10025.master'
);
af
(
$config_dir
.
'/master.cf'
,
$content
);
unset
(
$content
);
}
if
(
$add_amavis_10027
)
{
$content
=
rfsel
(
$conf
[
'ispconfig_install_dir'
]
.
'/server/conf-custom/install/master_cf_amavis10027.master'
,
'tpl/master_cf_amavis10027.master'
);
af
(
$config_dir
.
'/master.cf'
,
$content
);
unset
(
$content
);
}
}
if
(
!
preg_match
(
'/^127.0.0.1:10025\s+/m'
,
$content
))
{
unset
(
$content
);
$content
=
rfsel
(
$conf
[
'ispconfig_install_dir'
]
.
'/server/conf-custom/install/master_cf_amavis10025.master'
,
'tpl/master_cf_amavis10025.master'
);
af
(
$conf
[
'postfix'
][
'config_dir'
]
.
'/master.cf'
,
$content
);
$content
=
rf
(
$conf
[
'postfix'
][
'config_dir'
]
.
'/master.cf'
);
}
if
(
!
preg_match
(
'/^127.0.0.1:10027\s+/m'
,
$content
))
{
unset
(
$content
);
$content
=
rfsel
(
$conf
[
'ispconfig_install_dir'
]
.
'/server/conf-custom/install/master_cf_amavis10027.master'
,
'tpl/master_cf_amavis10027.master'
);
af
(
$conf
[
'postfix'
][
'config_dir'
]
.
'/master.cf'
,
$content
);
}
unset
(
$content
);
// Add the clamav user to the vscan group
//exec('groupmod --add-user clamav vscan');
...
...
install/lib/installer_base.lib.php
View file @
bd5d2654
...
...
@@ -682,6 +682,12 @@ class installer_base {
exec
(
'/usr/sbin/postmap /var/lib/mailman/data/transport-mailman'
);
}
//* with postfix >= 2.9 we can detect configured services with postconf
public
function
postfix_master
()
{
exec
(
"postconf -M"
,
$out
,
$ret
);
return
$ret
===
0
?
true
:
false
;
}
public
function
configure_postfix
(
$options
=
''
)
{
global
$conf
,
$autoinstall
;
$cf
=
$conf
[
'postfix'
];
...
...
@@ -844,19 +850,30 @@ class installer_base {
$command
=
'chmod 755 /var/run/courier/authdaemon/'
;
if
(
is_file
(
'/var/run/courier/authdaemon/'
))
caselog
(
$command
.
' &> /dev/null'
,
__FILE__
,
__LINE__
,
'EXECUTED: '
.
$command
,
'Failed to execute the command '
.
$command
);
//* Changing maildrop lines in posfix master.cf
if
(
is_file
(
$config_dir
.
'/master.cf'
))
{
copy
(
$config_dir
.
'/master.cf'
,
$config_dir
.
'/master.cf~'
);
}
if
(
is_file
(
$config_dir
.
'/master.cf~'
))
{
chmod
(
$config_dir
.
'/master.cf~'
,
0400
);
}
//* Check maildrop service in posfix master.cf
$regex
=
"/^maildrop unix.*pipe flags=DRhu user=vmail argv=
\\
/usr
\\
/bin
\\
/maildrop -d "
.
$cf
[
'vmail_username'
]
.
"
\\
$\{extension}
\\
$\{recipient}
\\
$\{user}
\\
$\{nexthop}
\\
$\{sender}/"
;
$configfile
=
$config_dir
.
'/master.cf'
;
$content
=
rf
(
$configfile
);
$content
=
str_replace
(
'flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}'
,
'flags=DRhu user='
.
$cf
[
'vmail_username'
]
.
' argv=/usr/bin/maildrop -d '
.
$cf
[
'vmail_username'
]
.
' ${extension} ${recipient} ${user} ${nexthop} ${sender}'
,
$content
);
wf
(
$configfile
,
$content
);
if
(
$this
->
postfix_master
())
{
exec
(
"postconf -M maildrop.unix"
,
$out
,
$ret
);
$change_maildrop_flags
=
@
(
preg_match
(
$regex
,
$out
[
0
])
&&
$out
[
0
]
!=
''
)
?
false
:
true
;
}
else
{
//* fallback - postfix < 2.9
$change_maildrop_flags
=
@
(
preg_match
(
$regex
,
$configfile
))
?
false
:
true
;
}
if
(
$change_maildrop_flags
)
{
//* Change maildrop service in posfix master.cf
if
(
is_file
(
$config_dir
.
'/master.cf'
))
{