Mit einer ispCP 1.1.0 hatte ich das Problem, dass ein Kunde die Mail weiterhin auf einem anderen Mailserver (t-mail) verwalten wollte. Mails, die von der Website dann verschickt werden sollten wurden allerdings versucht lokal zuzustellen – natürlich ohne Erfolg.
Die Lösung des Problems ist recht komplex:
- Ausschalten der Mailaccounts in den Domaineinstellungen für die Domain beim Reseller
- Einschalten von manuellen Domain-Einträgen
- Eintragung des MX im internen Domainserver für den User
Das ganze geht allerdings leider nicht ohne Änderung am Source vom ispCP
- Neue Datei /etc/ispcp/bind/parts/db_e_nomail.tpl
$TTL 12H
$ORIGIN {DMN_NAME}.
@ IN SOA ns1.{DMN_NAME}. postmaster.{DMN_NAME}. (
; dmn [{DMN_NAME}] timestamp entry BEGIN.
{TIMESTAMP} ; Serial
; dmn [{DMN_NAME}] timestamp entry END.
8H ; Refresh
2H ; Retry
7D ; Expire
1D ; Minimum TTL
)
IN NS ns1.{DMN_NAME}.
IN NS ns2.{DMN_NAME}.
{DMN_NAME}. IN A {DMN_IP}
www IN A {DMN_IP}
{DMN_NAME}. IN TXT "v=spf1 a mx ip4:{DMN_IP} ip4:{BASE_SERVER_IP} ~all"
localhost IN A 127.0.0.1
ns1 IN A {BASE_SERVER_IP}
ns2 IN A {SECONDARY_DNS_IP}
; CNAME for VHCS compatibility
ns IN CNAME ns1
; CNAME for web transfer
ftp IN CNAME www
; sub [{SUB_NAME}] entry BEGIN.
; sub [{SUB_NAME}] entry END.
; dns [{MANUAL_DNS_ID}] entry BEGIN.
; dns [{MANUAL_DNS_ID}] entry END.
- Änderung an /var/www/ispcp/engine/ispcp-dmn-mngr
--- /tmp/ispcp/var/www/ispcp/engine/ispcp-dmn-mngr 2013-10-29 14:31:13.932492829 +0100
+++ /var/www/ispcp/engine/ispcp-dmn-mngr 2014-03-04 12:49:42.582480699 +0100
@@ -347,6 +347,7 @@
# Get needed data
my $rs;
+ my $dmnMailAccLmt = @$data[8];
my $dmnStatus = @$data[13];
my ($dmnName, $dmnIp) = (@$data[1], @$data[21]);
my $baseServerIp = $main::cfg{'BASE_SERVER_IP'};
@@ -354,9 +355,15 @@
# Get needed templates
my ($tplDbEntries);
- ($rs, $tplDbEntries) = get_file(
- "$main::cfg{'CONF_DIR'}/bind/parts/db_e.tpl"
- );
+ if ( $dmnMailAccLmt < 0) {
+ ($rs, $tplDbEntries) = get_file(
+ "$main::cfg{'CONF_DIR'}/bind/parts/db_e_nomail.tpl"
+ );
+ } else {
+ ($rs, $tplDbEntries) = get_file(
+ "$main::cfg{'CONF_DIR'}/bind/parts/db_e.tpl"
+ );
+ }
return $rs if($rs != 0);
# Prepare templates