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
Zvonimir
ISPConfig 3
Commits
a9e6315b
Commit
a9e6315b
authored
Aug 18, 2014
by
Marius Cramer
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' into 'master'
Master See merge request !120
parents
fef8248f
c9fa7a41
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
35 additions
and
34 deletions
+35
-34
server/plugins-available/mail_plugin_dkim.inc.php
server/plugins-available/mail_plugin_dkim.inc.php
+35
-34
No files found.
server/plugins-available/mail_plugin_dkim.inc.php
100644 → 100755
View file @
a9e6315b
...
@@ -111,7 +111,7 @@ class mail_plugin_dkim {
...
@@ -111,7 +111,7 @@ class mail_plugin_dkim {
//* When we can use 60-dkim for the dkim-keys create the file if it does not exists.
//* When we can use 60-dkim for the dkim-keys create the file if it does not exists.
if
(
substr_compare
(
$amavis_configfile
,
'60-dkim'
,
-
7
)
===
0
&&
!
file_exists
(
$amavis_configfile
))
if
(
substr_compare
(
$amavis_configfile
,
'60-dkim'
,
-
7
)
===
0
&&
!
file_exists
(
$amavis_configfile
))
file_put_contents
(
$amavis_configfile
,
''
);
$app
->
system
->
file_put_contents
(
$amavis_configfile
,
''
);
if
(
$amavis_configfile
==
''
||
!
is_writeable
(
$amavis_configfile
)
)
{
if
(
$amavis_configfile
==
''
||
!
is_writeable
(
$amavis_configfile
)
)
{
$app
->
log
(
'Amavis-config not found or not writeable.'
,
LOGLEVEL_ERROR
);
$app
->
log
(
'Amavis-config not found or not writeable.'
,
LOGLEVEL_ERROR
);
...
@@ -123,7 +123,8 @@ class mail_plugin_dkim {
...
@@ -123,7 +123,8 @@ class mail_plugin_dkim {
!
empty
(
$mail_config
[
'dkim_path'
])
&&
!
empty
(
$mail_config
[
'dkim_path'
])
&&
isset
(
$data
[
'new'
][
'dkim_private'
])
&&
isset
(
$data
[
'new'
][
'dkim_private'
])
&&
!
empty
(
$data
[
'new'
][
'dkim_private'
])
&&
!
empty
(
$data
[
'new'
][
'dkim_private'
])
&&
$mail_config
[
'dkim_path'
]
!=
'/'
$mail_config
[
'dkim_path'
]
!=
'/'
&&
$app
->
system
->
checkpath
(
$mail_config
[
'dkim_path'
])
)
{
)
{
if
(
!
is_dir
(
$mail_config
[
'dkim_path'
]))
{
if
(
!
is_dir
(
$mail_config
[
'dkim_path'
]))
{
$app
->
log
(
'DKIM Path '
.
$mail_config
[
'dkim_path'
]
.
' not found - (re)created.'
,
LOGLEVEL_DEBUG
);
$app
->
log
(
'DKIM Path '
.
$mail_config
[
'dkim_path'
]
.
' not found - (re)created.'
,
LOGLEVEL_DEBUG
);
...
@@ -137,8 +138,7 @@ class mail_plugin_dkim {
...
@@ -137,8 +138,7 @@ class mail_plugin_dkim {
}
}
if
(
!
empty
(
$amavis_user
))
{
if
(
!
empty
(
$amavis_user
))
{
mkdir
(
$mail_config
[
'dkim_path'
],
0750
,
true
);
mkdir
(
$mail_config
[
'dkim_path'
],
0750
,
true
);
exec
(
'chown '
.
$amavis_user
.
' '
.
escapeshellarg
(
$mail_config
[
'dkim_path'
]));
$app
->
system
->
chown
(
$mail_config
[
'dkim_path'
],
$amavis_user
);
unset
(
$amavis_user
);
}
else
{
}
else
{
mkdir
(
$mail_config
[
'dkim_path'
],
0755
,
true
);
mkdir
(
$mail_config
[
'dkim_path'
],
0755
,
true
);
$app
->
log
(
'No user amavis or vscan found - using root for '
.
$mail_config
[
'dkim_path'
]
$app
->
log
(
'No user amavis or vscan found - using root for '
.
$mail_config
[
'dkim_path'
]
...
@@ -152,7 +152,7 @@ class mail_plugin_dkim {
...
@@ -152,7 +152,7 @@ class mail_plugin_dkim {
}
}
}
else
{
}
else
{
$app
->
log
(
'Unable to write DKIM settings - no DKIM-Path defined'
,
LOGLEVEL_ERROR
);
$app
->
log
(
'Unable to write DKIM settings - no
or invalid
DKIM-Path defined'
,
LOGLEVEL_ERROR
);
$check
=
false
;
$check
=
false
;
}
}
return
$check
;
return
$check
;
...
@@ -161,23 +161,24 @@ class mail_plugin_dkim {
...
@@ -161,23 +161,24 @@ class mail_plugin_dkim {
/**
/**
* This function restarts amavis
* This function restarts amavis
*/
*/
function
restart_amavis
()
{
function
restart_amavis
()
{
global
$app
,
$conf
;
global
$app
,
$conf
;
$pos_init
=
array
(
$pos_init
=
array
(
$conf
[
'init_scripts'
]
.
'/amavis'
,
$conf
[
'init_scripts'
]
.
'/amavis'
,
$conf
[
'init_scripts'
]
.
'/amavisd'
$conf
[
'init_scripts'
]
.
'/amavisd'
);
);
$initfile
=
''
;
$initfile
=
''
;
foreach
(
$pos_init
as
$init
)
{
foreach
(
$pos_init
as
$init
)
{
if
(
is_executable
(
$init
))
{
if
(
is_executable
(
$init
))
{
$initfile
=
$init
;
$initfile
=
$init
;
break
;
break
;
}
}
}
}
$app
->
log
(
'Restarting amavis: '
.
$initfile
.
'.'
,
LOGLEVEL_DEBUG
);
if
(
$initfile
==
''
)
$initfile
=
'service amavis'
;
exec
(
escapeshellarg
(
$initfile
)
.
' restart'
,
$output
);
$app
->
log
(
'Restarting amavis: '
.
$initfile
.
'.'
,
LOGLEVEL_DEBUG
);
foreach
(
$output
as
$logline
)
$app
->
log
(
$logline
,
LOGLEVEL_DEBUG
);
exec
(
escapeshellarg
(
$initfile
)
.
' restart'
,
$output
);
}
foreach
(
$output
as
$logline
)
$app
->
log
(
$logline
,
LOGLEVEL_DEBUG
);
}
/**
/**
* This function writes the keyfiles (public and private)
* This function writes the keyfiles (public and private)
...
@@ -189,7 +190,7 @@ class mail_plugin_dkim {
...
@@ -189,7 +190,7 @@ class mail_plugin_dkim {
function
write_dkim_key
(
$key_file
,
$key_value
,
$key_domain
)
{
function
write_dkim_key
(
$key_file
,
$key_value
,
$key_domain
)
{
global
$app
,
$mailconfig
;
global
$app
,
$mailconfig
;
$success
=
false
;
$success
=
false
;
if
(
!
file_put_contents
(
$key_file
.
'.private'
,
$key_value
)
===
false
)
{
if
(
$app
->
system
->
file_put_contents
(
$key_file
.
'.private'
,
$key_value
)
)
{
$app
->
log
(
'Saved DKIM Private-key to '
.
$key_file
.
'.private'
,
LOGLEVEL_DEBUG
);
$app
->
log
(
'Saved DKIM Private-key to '
.
$key_file
.
'.private'
,
LOGLEVEL_DEBUG
);
$success
=
true
;
$success
=
true
;
/* now we get the DKIM Public-key */
/* now we get the DKIM Public-key */
...
@@ -197,7 +198,7 @@ class mail_plugin_dkim {
...
@@ -197,7 +198,7 @@ class mail_plugin_dkim {
$public_key
=
''
;
$public_key
=
''
;
foreach
(
$pubkey
as
$values
)
$public_key
=
$public_key
.
$values
.
"
\n
"
;
foreach
(
$pubkey
as
$values
)
$public_key
=
$public_key
.
$values
.
"
\n
"
;
/* save the DKIM Public-key in dkim-dir */
/* save the DKIM Public-key in dkim-dir */
if
(
!
file_put_contents
(
$key_file
.
'.public'
,
$public_key
)
===
false
)
if
(
$app
->
system
->
file_put_contents
(
$key_file
.
'.public'
,
$public_key
)
)
$app
->
log
(
'Saved DKIM Public to '
.
$key_domain
.
'.'
,
LOGLEVEL_DEBUG
);
$app
->
log
(
'Saved DKIM Public to '
.
$key_domain
.
'.'
,
LOGLEVEL_DEBUG
);
else
$app
->
log
(
'Unable to save DKIM Public to '
.
$key_domain
.
'.'
,
LOGLEVEL_DEBUG
);
else
$app
->
log
(
'Unable to save DKIM Public to '
.
$key_domain
.
'.'
,
LOGLEVEL_DEBUG
);
}
else
{
}
else
{
...
@@ -214,11 +215,11 @@ class mail_plugin_dkim {
...
@@ -214,11 +215,11 @@ class mail_plugin_dkim {
function
remove_dkim_key
(
$key_file
,
$key_domain
)
{
function
remove_dkim_key
(
$key_file
,
$key_domain
)
{
global
$app
;
global
$app
;
if
(
file_exists
(
$key_file
.
'.private'
))
{
if
(
file_exists
(
$key_file
.
'.private'
))
{
exec
(
'rm -f '
.
escapeshellarg
(
$key_file
.
'.private'
)
)
;
$app
->
system
->
unlink
(
$key_file
.
'.private'
);
$app
->
log
(
'Deleted the DKIM Private-key for '
.
$key_domain
.
'.'
,
LOGLEVEL_DEBUG
);
$app
->
log
(
'Deleted the DKIM Private-key for '
.
$key_domain
.
'.'
,
LOGLEVEL_DEBUG
);
}
else
$app
->
log
(
'Unable to delete the DKIM Private-key for '
.
$key_domain
.
' (not found).'
,
LOGLEVEL_DEBUG
);
}
else
$app
->
log
(
'Unable to delete the DKIM Private-key for '
.
$key_domain
.
' (not found).'
,
LOGLEVEL_DEBUG
);
if
(
file_exists
(
$key_file
.
'.public'
))
{
if
(
file_exists
(
$key_file
.
'.public'
))
{
exec
(
'rm -f '
.
escapeshellarg
(
$key_file
.
'.public'
)
)
;
$app
->
system
->
unlink
(
$key_file
.
'.public'
);
$app
->
log
(
'Deleted the DKIM Public-key for '
.
$key_domain
.
'.'
,
LOGLEVEL_DEBUG
);
$app
->
log
(
'Deleted the DKIM Public-key for '
.
$key_domain
.
'.'
,
LOGLEVEL_DEBUG
);
}
else
$app
->
log
(
'Unable to delete the DKIM Public-key for '
.
$key_domain
.
' (not found).'
,
LOGLEVEL_DEBUG
);
}
else
$app
->
log
(
'Unable to delete the DKIM Public-key for '
.
$key_domain
.
' (not found).'
,
LOGLEVEL_DEBUG
);
}
}
...
@@ -239,20 +240,20 @@ class mail_plugin_dkim {
...
@@ -239,20 +240,20 @@ class mail_plugin_dkim {
//* If we are using seperate config-files with amavis remove existing keys from 50-user to avoid duplicate keys
//* If we are using seperate config-files with amavis remove existing keys from 50-user to avoid duplicate keys
if
(
substr_compare
(
$amavis_configfile
,
'60-dkim'
,
-
7
)
===
0
)
{
if
(
substr_compare
(
$amavis_configfile
,
'60-dkim'
,
-
7
)
===
0
)
{
$temp_configfile
=
str_replace
(
'60-dkim'
,
'50-user'
,
$amavis_configfile
);
$temp_configfile
=
str_replace
(
'60-dkim'
,
'50-user'
,
$amavis_configfile
);
$temp_config
=
file_get_contents
(
$temp_configfile
);
$temp_config
=
$app
->
system
->
file_get_contents
(
$temp_configfile
);
if
(
preg_match
(
$search_regex
,
$temp_config
))
{
if
(
preg_match
(
$search_regex
,
$temp_config
))
{
$temp_config
=
preg_replace
(
$search_regex
,
''
,
$temp_config
)
.
"
\n
"
;
$temp_config
=
preg_replace
(
$search_regex
,
''
,
$temp_config
)
.
"
\n
"
;
file_put_contents
(
$temp_configfile
,
$temp_config
);
$app
->
system
->
file_put_contents
(
$temp_configfile
,
$temp_config
);
}
}
unset
(
$temp_configfile
);
unset
(
$temp_configfile
);
unset
(
$temp_config
);
unset
(
$temp_config
);
}
}
$key_value
=
"dkim_key('"
.
$key_domain
.
"', '"
.
$selector
.
"', '"
.
$mail_config
[
'dkim_path'
]
.
"/"
.
$key_domain
.
".private');
\n
"
;
$key_value
=
"dkim_key('"
.
$key_domain
.
"', '"
.
$selector
.
"', '"
.
$mail_config
[
'dkim_path'
]
.
"/"
.
$key_domain
.
".private');
\n
"
;
$amavis_config
=
file_get_contents
(
$amavis_configfile
);
$amavis_config
=
$app
->
system
->
file_get_contents
(
$amavis_configfile
);
$amavis_config
=
preg_replace
(
$search_regex
,
''
,
$amavis_config
)
.
$key_value
;
$amavis_config
=
preg_replace
(
$search_regex
,
''
,
$amavis_config
)
.
$key_value
;
if
(
file_put_contents
(
$amavis_configfile
,
$amavis_config
))
{
if
(
$app
->
system
->
file_put_contents
(
$amavis_configfile
,
$amavis_config
)
)
{
$app
->
log
(
'Adding DKIM Private-key to amavis-config.'
,
LOGLEVEL_DEBUG
);
$app
->
log
(
'Adding DKIM Private-key to amavis-config.'
,
LOGLEVEL_DEBUG
);
$restart
=
true
;
$restart
=
true
;
}
else
{
}
else
{
...
@@ -271,13 +272,13 @@ class mail_plugin_dkim {
...
@@ -271,13 +272,13 @@ class mail_plugin_dkim {
$restart
=
false
;
$restart
=
false
;
$amavis_configfile
=
$this
->
get_amavis_config
();
$amavis_configfile
=
$this
->
get_amavis_config
();
$amavis_config
=
file_get_contents
(
$amavis_configfile
);
$amavis_config
=
$app
->
system
->
file_get_contents
(
$amavis_configfile
);
$search_regex
=
"/(
\n
|
\r
)?dkim_key.*"
.
$key_domain
.
".*(
\n
|
\r
)?/"
;
$search_regex
=
"/(
\n
|
\r
)?dkim_key.*"
.
$key_domain
.
".*(
\n
|
\r
)?/"
;
if
(
preg_match
(
$search_regex
,
$amavis_config
))
{
if
(
preg_match
(
$search_regex
,
$amavis_config
))
{
$amavis_config
=
preg_replace
(
$search_regex
,
''
,
$amavis_config
);
$amavis_config
=
preg_replace
(
$search_regex
,
''
,
$amavis_config
);
file_put_contents
(
$amavis_configfile
,
$amavis_config
);
$app
->
system
->
file_put_contents
(
$amavis_configfile
,
$amavis_config
);
$app
->
log
(
'Deleted the DKIM settings from amavis-config for '
.
$key_domain
.
'.'
,
LOGLEVEL_DEBUG
);
$app
->
log
(
'Deleted the DKIM settings from amavis-config for '
.
$key_domain
.
'.'
,
LOGLEVEL_DEBUG
);
$restart
=
true
;
$restart
=
true
;
}
}
...
@@ -285,10 +286,10 @@ class mail_plugin_dkim {
...
@@ -285,10 +286,10 @@ class mail_plugin_dkim {
//* If we are using seperate config-files with amavis remove existing keys from 50-user, too
//* If we are using seperate config-files with amavis remove existing keys from 50-user, too
if
(
substr_compare
(
$amavis_configfile
,
'60-dkim'
,
-
7
)
===
0
)
{
if
(
substr_compare
(
$amavis_configfile
,
'60-dkim'
,
-
7
)
===
0
)
{
$temp_configfile
=
str_replace
(
'60-dkim'
,
'50-user'
,
$amavis_configfile
);
$temp_configfile
=
str_replace
(
'60-dkim'
,
'50-user'
,
$amavis_configfile
);
$temp_config
=
file_get_contents
(
$temp_configfile
);
$temp_config
=
$app
->
system
->
file_get_contents
(
$temp_configfile
);
if
(
preg_match
(
$search_regex
,
$temp_config
))
{
if
(
preg_match
(
$search_regex
,
$temp_config
))
{
$temp_config
=
preg_replace
(
$search_regex
,
''
,
$temp_config
);
$temp_config
=
preg_replace
(
$search_regex
,
''
,
$temp_config
);
file_put_contents
(
$temp_configfile
,
$temp_config
);
$app
->
system
->
file_put_contents
(
$temp_configfile
,
$temp_config
);
$restart
=
true
;
$restart
=
true
;
}
}
unset
(
$temp_configfile
);
unset
(
$temp_configfile
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment