DNS Modul anpassen?

Till

Administrator
Im DNS Wizard Template, da sind oben checkboxes.

Ok... aber wie bekomme ich die Adresse wieder in eine mit einem @ Zeichen? Denn so muss ich über die API anliefern...
Die ISPConfig API verwendet kein @, und wenn die API Die Du verwendest ein @ verwendet, dann musst Du Dir überlegen was Du da machst. Wie bereits gesagt, @ ist im DNS-Standard für das Feld nicht vorgesehen und wird daher auch von DNS Servern wie BIND und PoerDNS nicht verwendet und aus diesem Grunde wird es auch nicht von ISPConfig verwendet bei den gespeicherten records.

Und noch eine Frage zu dem NS welcher unter dem Reiter SOA steht. Kann ich hier auch mehr als einen angeben?
Nein. Ist auch im DNS Standard nicht vorgeseehen und somit auch nicht in ISPConfig. Dort steht nur der primary DNS, alle DNS Server einer Zone liegen ja in Form von NS Records vor. Wenn Du DNS implementieren möchtest, dann wäre es gut wenn Du Dich auch etwas mit den Grundlagen beschäftigst, denn Deine Fragen haben ja nichts mit ISPConfiug zu tun sondern damit wie DNS funktioniert und wie der DNS Standard ist. Sie z.B. Dokumentation zum BIND oder PowerDNS DNS Server, falls Du nicht die RFC's lesen möchtest.
 
Zuletzt bearbeitet:

neurex

Member
Im DNS Wizard Template, da sind oben checkboxes.

Stimmt... wie konnte ich das nur übersehen. Danke für die Hilfe.

Die ISPConfig API verwendet kein @, und wenn die API Die Du verwendest ein @ verwendet, dann musst Du Dir überlegen was Du da machst. Wie bereits gesagt, @ ist im DNS-Standard für das Feld nicht vorgesehen und wird daher auch von DNS Servern wie BIND und PoerDNS nicht verwendet und aus diesem Grunde wird es auch nicht von ISPConfig verwendet bei den gespeicherten records.

Doch @ ist im DNS-Standard RFC 1035 vorgesehen (bzw. ersetzt als Punkt aber auch wieder nicht nur). Deswegen verwirrt mich ja warum das in ISPConfig komplett durch einen Punkt ersetzt wird. Ich glaube ich drücke mich falsch aus. Mal ein Beispiel so wie ich den Standard lese bzw. so wie es drin steht.

Angenommen du hast eine E-Mail wie irgendwas@sub.domain.de
Hier könnte das @ problemlos durch einen . ersetzt werden weil die DNS Server es so interpretieren das bis zum ersten Punkt des ganzen Strings der Mailboxname ist.

Aber jetzt kommt Fall zwei wo ISPConfig einfach falsch abspeichert. Die E-Mail lautet nun ingendwas.irgendwer@sub.domain.de
Hier macht ISPConfig folgendes draus ingendwas.irgendwer.sub.domain.de was, wenn jetzt der String interpretiert wird dazu führt das nur ingendwas als Mailboxname genommen wird - was wenn man die @ Mail kennt ja offensichtlich flasch ist. In diesem Fall muss der String folgendermaßen abgespeichert werden ingendwas\.irgendwer.sub.domain.de
Und dann kann ich das auch problemlos wieder separieren. Sonst würde das alles logisch gar nicht funktionieren.

Nein. Ist auch im DNS Standard nicht vorgeseehen und somit auch nicht in ISPConfig. Dort steht nur der primary DNS, alle DNS Server einer Zone liegen ja in Form von NS Records vor. Wenn Du DNS implementieren möchtest, dann wäre es gut wenn Du Dich auch etwas mit den Grundlagen beschäftigst, denn Deine Fragen haben ja nichts mit ISPConfiug zu tun sondern damit wie DNS funktioniert und wie der DNS Standard ist. Sie z.B. Dokumentation zum BIND oder PowerDNS DNS Server, falls Du nicht die RFC's lesen möchtest.

Stimmt du hast Recht entschuldige. Da lag ich irgendwie falsch bzw. habs falsch verstanden.
 

Till

Administrator
Doch @ ist im DNS-Standard RFC 1035 vorgesehen (bzw. ersetzt als Punkt aber auch wieder nicht nur). Deswegen verwirrt mich ja warum das in ISPConfig komplett durch einen Punkt ersetzt wird. Ich glaube ich drücke mich falsch aus. Mal ein Beispiel so wie ich den Standard lese bzw. so wie es drin steht.
Also BIND Doku sagt im RNAME muss das @ durch Punkt ersetzt werden. Zitat:

Code:
rname (responsible name): The email address of who is responsible for this zone. Note that the format is different. You must replace the at sign (@) with a dot (.).

also ersetzt ISPConfig es mit einem Punkt.

Angenommen du hast eine E-Mail wie irgendwas@sub.domain.de
Hier könnte das @ problemlos durch einen . ersetzt werden weil die DNS Server es so interpretieren das bis zum ersten Punkt des ganzen Strings der Mailboxname ist.

Aber jetzt kommt Fall zwei wo ISPConfig einfach falsch abspeichert. Die E-Mail lautet nun ingendwas.irgendwer@sub.domain.de
Hier macht ISPConfig folgendes draus ingendwas.irgendwer.sub.domain.de was, wenn jetzt der String interpretiert wird dazu führt das nur ingendwas als Mailboxname genommen wird - was wenn man die @ Mail kennt ja offensichtlich flasch ist. In diesem Fall muss der String folgendermaßen abgespeichert werden ingendwas\.irgendwer.sub.domain.de
Und dann kann ich das auch problemlos wieder separieren. Sonst würde das alles logisch gar nicht funktionieren.
Wie schon oben geschrieben wird dies korrekt durch ISPConfig umgesetzt. Im DNS ist im RNAME ein @ durch einen Punkt zu ersetzen. Eine von Dir angesprochene Rückumwandlung in eine Emailadresse findet im DNS nicht statt, von daher ist der von Dir angesprochene Fall für die Verwaltung von DNS Records und auch ISPConfig ohne jede Relevanz. Wie ich Dir bereits geschrieben hatte, wenn Du für Dein API die Adresse mit @ benötigts, dann musst Du sie Dir irgendwo anders wegspeichern. Für DNS selbst wird sie ja nicht benötigt.
 

Till

Administrator
Und hier nochmal in langform von ChatGPT:

In a BIND DNS zone file, you cannot use an `@` symbol in an email address in the standard form (i.e., `user@example.com`) in the rname field of the SOA (Start of Authority) record. Instead, BIND uses a different format to represent email addresses.

In a zone file, email addresses in the SOA record use a dot (`.`) instead of the `@` symbol, and the first dot separates the username from the domain name. For example, instead of writing `admin@example.com`, you would write `admin.example.com.` in the SOA record.

Here is an example of how the SOA record looks in a zone file:

```
@ IN SOA ns1.example.com. admin.example.com. (
2023101101 ; Serial
3600 ; Refresh
900 ; Retry
604800 ; Expire
86400 ) ; Minimum TTL
```

In this case:
- `ns1.example.com.` is the primary name server for the zone.
- `admin.example.com.` is the email address for the zone administrator, where the `@` symbol is replaced by a dot.

So, the answer is: no, you cannot use an `@` symbol directly in the name field for email addresses in a BIND DNS zone file; you must use the `.` convention instead.
Du siehst also, das wird von ISPConfig alles so richtig behandelt, dieses Feld muss nicht separarierbar sein da ISPConfig es exakt in den richtigen Wert umwandelt, so wie er von BIND benötigt wird.
 

neurex

Member
Wundert mich das BIND hier vom Standard abweicht. So wie sich das liest geht man davon aus das der Fall das ein Punkt vor dem @ kommt nicht eintritt. Wie gesagt ich hatte die RFC gelesen, nicht die BIND doku daher war mein Stand von vornherein ein anderer. Habe gerade nochmals nachgesehen dort steht es genauso drin:

The DNS encodes the <local-part> as a single label, and encodes the
<mail-domain> as a domain name. The single label from the <local-part>
is prefaced to the domain name from <mail-domain> to form the domain
name corresponding to the mailbox. Thus the mailbox HOSTMASTER@SRI-
NIC.ARPA is mapped into the domain name HOSTMASTER.SRI-NIC.ARPA. If the
<local-part> contains dots or other special characters, its
representation in a master file will require the use of backslash
quoting to ensure that the domain name is properly encoded. For
example, the mailbox Action.domains@ISI.EDU would be represented as
Action\.domains.ISI.EDU.

nachzulesen unter https://datatracker.ietf.org/doc/html/rfc1035 Seite 47 Punkt 8 (letzter Absatz).

Allerdings erschließt sich mir dann nicht wozu ich hier überhaupt etwas angeben soll wenn ich es mit 50%iger Wahrscheinlichkeit nicht mehr verwerten kann...

Hab gerade nochmals in der BIND doku nachgelesen. Die Entwickler geben sogar an das es gemäß der RFC 1035 implementiert ist. So langsam gehe ich davon aus das die Doku unvollständig ist...
 
Zuletzt bearbeitet:

neurex

Member
Jetzt habe ich eben auch mal ChatGPT hierfür ausprobiert und das ist rausgekommen.

How is the mail adress in bind to convert if the <local-part> contains a dot?

ChatGPT:​


In a DNS BIND zone file, if you are specifying an email address in an SOA (Start of Authority) record, the <local-part> of the email address (before the @ symbol) uses a specific format. Instead of using the @ symbol, you use a dot (.), and any existing dots in the local part must be escaped with a backslash (\).

Explanation:​

  1. Email format: <local-part>@<domain>
  2. In SOA: The @ is replaced by a . (dot).
  3. Handling dots in the local part: If the <local-part> of the email contains a dot, each dot is escaped with a backslash (\.).

Example:​

Let’s say the email address is:
css
Code kopieren
admin.email@domain.com
In the SOA record of a BIND zone file, it will look like:

Code kopieren
admin\.email.domain.com.
  • The @ is replaced by a ..
  • The dot in admin.email is escaped with a backslash (\.).
  • The domain part domain.com remains unchanged, but the entire email address must end with a dot (.) to denote the fully qualified domain name (FQDN).

SOA Example with Email:​

Here's what an actual SOA record might look like, including an email address:
python
Code kopieren
@ IN SOA ns1.domain.com. admin\.email.domain.com. (
2023101101 ; Serial number
3600 ; Refresh
1800 ; Retry
1209600 ; Expire
86400 ) ; Minimum TTL
In this case:
  • The email address admin.email@domain.com is correctly formatted as admin\.email.domain.com. in the SOA record.

Versteh mich bitte nicht falsch Till ich will dich hier nicht kritisieren oder angreifen oder was auch immer. Mir kam es nur komisch vor dass man das ganze nicht "rückübersetzen" kann. Das ein anderes abspeichern von Sonderzeichen durchaus Sinn macht ist mir klar aber dabei darf doch nicht die Eingabe verfälscht werden. Weil wie gesagt was hätte diese Mail für einen Sinn wenn diese nicht nutzbar ist?
 
Zuletzt bearbeitet:

Till

Administrator
Ich schaue mir das nochmal an, wenn BIND und PowerDNS beide mit dem Backslash klar kommen, dann kann ich das in ISPConfig ändern. Wobei das vermutlich eh niemanden betreffen würde da dort niemand seine richtige Email angibt, da werden immer nur technische Adressen angegeben wie webmaster@ oder admin@ und die haben keine Punkte.
 

neurex

Member
Ich schaue mir das nochmal an, wenn BIND und PowerDNS beide mit dem Backslash klar kommen, dann kann ich das in ISPConfig ändern. Wobei das vermutlich eh niemanden betreffen würde da dort niemand seine richtige Email angibt, da werden immer nur technische Adressen angegeben wie webmaster@ oder admin@ und die haben keine Punkte.

Danke Till :)

Naja... ich bin nur durch so eine dämliche Mail von einem Hoster draufgekommen weil dann etwas nicht so funktioniert hat wie ich das angenommen hatte. Wer nennt seine NOC Adresse auch network.oc@...
 

neurex

Member
Ok ich benötige nochmal deine Hilfe Till (oder auch gerne jemand anderes).

Ich rufe im Plugin die Daten von ISPConfig in drei Schritten (zumindest ist so der Plan) ab.

$app->plugins->registerEvent('dns_soa_insert', $this->plugin_name, 'soa_insert');
$app->plugins->registerEvent('dns_soa_update', $this->plugin_name, 'soa_update');
$app->plugins->registerEvent('dns_soa_delete', $this->plugin_name, 'soa_delete');

soa_insert = die Basisinitialisierung einer Zone, sprich das anlegen manuell oder über den wizard in ISPConfig, löst im Nachgang einen API Aufruf zum anlegen der Zone aus
soa_update = eine Änderung an einer bestehenden Zone in ISPConfig (z.B. Record hinzu oder löschen), löst im Nachgang einen API Aufruf zum update der Zone aus
soa_delete = wenn die ganze Zone in ISPConfig gelöscht wird, löst im Nachgang einen entsprechenden Aufruf in der API zum delete der Zone aus

Und nun zum eigentlichen Problem. Sind nur soa_insert und soa_delete aktiv (und soa_update ausgeklammert) klappt das anlegen einer Zone und das löschen hervorragend. Ist aber ebenfalls noch soa_update aktiv macht er sehr wiedersprüchliche Dinge.

Aus irgendeinem Grund wird dann zum Beispiel beim anlegen einer Zone nicht nur soa_insert sondern gleich danach noch soa_update aufgerufen. Gleiches beim löschen einer Zone. Hier wird zuerst soa_update aufgerufen und dann soa_delete.

Kommt das so von ISPConfig (wenn ja wie kann ich das verhindern bzw. was wäre der tiefere Sinn dahinter) oder von meinem Plugin selbst?

Ich sehe hier seit Tagen wahrschienlich den Wald vor lauter Bäumen nicht...

Besten Dank vorab!
 

Till

Administrator
Aus irgendeinem Grund wird dann zum Beispiel beim anlegen einer Zone nicht nur soa_insert sondern gleich danach noch soa_update aufgerufen.
Das ist ganz normal, da ja erst die Zone angelegt wird, danach werden records angelegt und dann wird die serial mittels soa update aktualisiert.

Hier wird zuerst soa_update aufgerufen und dann soa_delete.
das ista uch richtig so, da wird glaube ich die Zone erst deaktiviert.
 

neurex

Member
Oh je... kann ich das innerhalb des Plugins irgendwie so abfangen das wenn ein insert oder delete ausgelöst wird eben nicht das update läuft? Gibt es da irgendeinen Trigger?
 

Till

Administrator
Du kannst Dir ja ansehen was da genau geändert wird in dem Du das new and old array vergleichst und ann entscheiden, was Du machst.
 

neurex

Member
Danke Till das war der entscheidende Tipp. Es wird scheinbar wirklich nur in beiden Fällen die Zone aktiviert bzw. deaktiviert. Jetzt funktioniert das ganze schon deutlich reibungsloser.

Kannst du schon ein Statement zu der Mailadressen/SOA Thematik abgeben?
 

neurex

Member
Ok. Dennoch jedes Mal aufs neue vielen Dank für deine Unterstützung.

Eine Frage zu den Standardwerten welche ISPConfig nutzt (z.B. TTL, die 3600). Können die verändert werden (also das in ISPConfig standardmässig z.B. 86400 vorgeschlagen wird)? Wenn ja wo oder ist das hardcoded?
 

Till

Administrator
Die stehen entweder in der Form Datei des jeweiligen Formulars oder sind defaults der Datenbankspalte in MySQL.
 

Werbung

Top