|
1 | 1 | <mat-sidenav-container class="dkim">
|
2 |
| - <mat-sidenav mode="side" open="true"></mat-sidenav> |
3 |
| - <mat-sidenav-content> |
4 |
| - <section class="mat-typography"> |
5 |
| - <mat-card class='dkim'> |
6 |
| - <mat-card-header style="display: flex; width: 100%"> |
7 |
| - <mat-card-title style="flex-grow: 1"> |
8 |
| - <h1 class='headline'>DKIM Signing of Domain Names</h1> |
9 |
| - <h2 class='subheading-2'>{{domain}}</h2> |
10 |
| - </mat-card-title> |
11 |
| - </mat-card-header> |
12 |
| - <p> |
13 |
| - DKIM (DomainKeys Identified Mail) is an email authentication method that places a digital signature (a piece of code) in the headers of your outgoing mail. This helps receiving email servers identify if the message was genuinely sent by you, the domain owner, and confirms that certain aspects of the message have been unchanged since the digital signature was added. <a target="_blank" href="https://help.runbox.com/dkim-signing/">More information about DKIM</a> |
14 |
| - </p> |
15 |
| - <p> |
16 |
| - If you have your domain name hosted by Runbox, your DNS (Domain Name System) records are also managed by us. This makes it very easy to set up DKIM signing as you just need to activate it below. If your domain is not hosted/registered via Runbox then we probably don't host your DNS records and you will need to make some changes at your domain host/DNS host as shown below. |
17 |
| - </p> |
18 |
| - <p> |
19 |
| - The exact format required by your Domain/DNS provider's interface may vary as may what they call the "hostname" entry. If you need help please contact Runbox support or your Domain/DNS provider's support team for advice. |
20 |
| - </p> |
21 |
| - <p> |
22 |
| - <strong>Note:</strong> selector2 will become active on our DNS servers three months after you activate DKIM signing. |
23 |
| - </p> |
24 |
| - <mat-divider></mat-divider> |
25 |
| - <div *ngIf="domain && keys && keys.length" style='margin-top: 35px'> |
| 2 | + <mat-sidenav mode="side" open="true"></mat-sidenav> |
| 3 | + <mat-sidenav-content> |
| 4 | + <section class="mat-typography"> |
| 5 | + <div class='dkim'> |
| 6 | + <h1 class='headline'>DKIM Signing of Domain Names</h1> |
| 7 | + <p> |
| 8 | + DKIM (DomainKeys Identified Mail) is an email authentication method that places a digital signature (a piece of code) in the headers of your outgoing mail. This helps receiving email servers identify if the message was genuinely sent by you, the domain owner, and confirms that certain aspects of the message have been unchanged since the digital signature was added. <a target="_blank" href="https://help.runbox.com/dkim-signing/">More information about DKIM</a> |
| 9 | + </p> |
| 10 | + <p> |
| 11 | + If you have your domain name hosted by Runbox, your DNS (Domain Name System) records are also managed by us. This makes it very easy to set up DKIM signing as you just need to activate it below. If your domain is not hosted/registered via Runbox then we probably don't host your DNS records and you will need to make some changes at your domain host/DNS host as shown below. |
| 12 | + </p> |
| 13 | + <p> |
| 14 | + The exact format required by your Domain/DNS provider's interface may vary as may what they call the "hostname" entry. If you need help please contact Runbox support or your Domain/DNS provider's support team for advice. |
| 15 | + </p> |
| 16 | + <p> |
| 17 | + <strong>Note:</strong> selector2 will become active on our DNS servers three months after you activate DKIM signing. |
| 18 | + </p> |
| 19 | + <mat-divider></mat-divider> |
| 20 | + |
| 21 | + <ng-container *ngIf="domainService.userDomains | async as domains; else domainsLoading"> |
| 22 | + <mat-accordion> |
| 23 | + <mat-expansion-panel |
| 24 | + *ngFor="let domain of domains" |
| 25 | + [expanded]="chosenDomain && domain.name === chosenDomain" |
| 26 | + (opened)="updateFragment(domain.name)" |
| 27 | + > |
| 28 | + <mat-expansion-panel-header> |
| 29 | + {{ domain.name }} |
| 30 | + </mat-expansion-panel-header> |
| 31 | + |
| 32 | + <ng-container *ngIf="domain.dkim"> |
| 33 | + <div *ngIf="!is_deleting_keys &&!domain.is_to_delete" style='margin-top: 35px;'> |
| 34 | + <button mat-raised-button color="warn" (click)="disable(domain.name)" style="margin-left: 20px">Disable DKIM for {{domain.name}}</button> |
| 35 | + <mat-progress-bar mode="indeterminate" *ngIf="is_creating_keys"></mat-progress-bar> |
| 36 | + </div> |
| 37 | + <div *ngIf="domain.is_to_delete"> |
| 38 | + The DKIM keys are being deleted. |
| 39 | + </div> |
| 40 | + <ng-container *ngIf="!domain.is_to_delete"> |
26 | 41 | <mat-grid-list cols="8" rowHeight="30px" style='' *ngIf="dkim_domain">
|
27 |
| - <mat-grid-tile [colspan]="2"><div class="grid_align_left" style=''><strong>{{dkim_domain.type}}:</strong></div></mat-grid-tile> |
28 |
| - <mat-grid-tile [colspan]="6"> |
29 |
| - <div class="grid_align_left"> |
30 |
| - <mat-form-field> |
31 |
| - <mat-label>Domain: {{domain}}</mat-label> |
32 |
| - <mat-select [(ngModel)]="domain" (change)="ev_get_domain()" (selectionChange)="ev_get_domain()" > |
33 |
| - <mat-option *ngFor="let d of dkim_domains" [value]="d.domain"> |
34 |
| - {{d.domain}} |
35 |
| - </mat-option> |
36 |
| - </mat-select> |
37 |
| - </mat-form-field> |
38 |
| - </div> |
39 |
| - <div style='margin-left: 40px; display: inline-block;'> |
40 |
| - <button *ngIf="domain" mat-raised-button color="warn" (click)="disable()" style='margin-let: 20px;'>Disable DKIM for {{domain}} |
41 |
| - <mat-progress-bar mode="indeterminate" *ngIf="is_deleting_keys"></mat-progress-bar> |
42 |
| - </button> |
43 |
| - </div> |
44 |
| - </mat-grid-tile> |
| 42 | + <mat-grid-tile [colspan]="2"><div class="grid_align_left" style=''><strong>{{domain.type}}:</strong></div></mat-grid-tile> |
| 43 | + <mat-grid-tile [colspan]="6"> |
| 44 | + <div style='margin-left: 40px; display: inline-block;'> |
| 45 | + <button *ngIf="domain.type" mat-raised-button color="warn" (click)="disable()" style='margin-let: 20px;'>Disable DKIM for {{domain.name}} |
| 46 | + <mat-progress-bar mode="indeterminate" *ngIf="is_deleting_keys"></mat-progress-bar> |
| 47 | + </button> |
| 48 | + </div> |
| 49 | + </mat-grid-tile> |
45 | 50 | </mat-grid-list>
|
46 | 51 | <mat-grid-list cols="1" rowHeight="30px" style=''>
|
47 |
| - <mat-grid-tile style='border-bottom: 1px dotted #dedede;'><div class="grid_align_left"></div></mat-grid-tile> |
| 52 | + <mat-grid-tile style='border-bottom: 1px dotted #dedede;'><div class="grid_align_left"></div></mat-grid-tile> |
48 | 53 | </mat-grid-list>
|
49 | 54 | <mat-grid-list cols="1" rowHeight="30px" style=''>
|
50 |
| - <mat-grid-tile style='border-bottom: 1px dotted #dedede'><div class="grid_align_left"><strong>DNS CNAMEs required</strong></div></mat-grid-tile> |
| 55 | + <mat-grid-tile style='border-bottom: 1px dotted #dedede'><div class="grid_align_left"><strong>DNS CNAMEs required</strong></div></mat-grid-tile> |
51 | 56 | </mat-grid-list>
|
52 | 57 | <mat-grid-list cols="1" rowHeight="30px" style=''>
|
53 |
| - <mat-grid-tile style='border-bottom: 1px dotted #dedede;'><div class="grid_align_left"></div></mat-grid-tile> |
| 58 | + <mat-grid-tile style='border-bottom: 1px dotted #dedede;'><div class="grid_align_left"></div></mat-grid-tile> |
54 | 59 | </mat-grid-list>
|
55 | 60 | <mat-grid-list cols="8" rowHeight="30px" style=''>
|
56 |
| - <mat-grid-tile [colspan]="3" style='border-bottom: 1px dotted #dedede;'><div class="grid_align_left"><strong>Hostname</strong></div></mat-grid-tile> |
57 |
| - <mat-grid-tile [colspan]="1" style='border-bottom: 1px dotted #dedede; border-left: 1px dotted #dedede'><div class="grid_align_left"><strong>TTL</strong></div></mat-grid-tile> |
58 |
| - <mat-grid-tile [colspan]="1" style='border-bottom: 1px dotted #dedede; border-left: 1px dotted #dedede'><div class="grid_align_left"><strong>Record Type</strong></div></mat-grid-tile> |
59 |
| - <mat-grid-tile [colspan]="3" style='border-bottom: 1px dotted #dedede; border-left: 1px dotted #dedede'><div class="grid_align_left"><strong>Address</strong></div></mat-grid-tile> |
| 61 | + <mat-grid-tile [colspan]="3" style='border-bottom: 1px dotted #dedede;'><div class="grid_align_left"><strong>Hostname</strong></div></mat-grid-tile> |
| 62 | + <mat-grid-tile [colspan]="1" style='border-bottom: 1px dotted #dedede; border-left: 1px dotted #dedede'><div class="grid_align_left"><strong>TTL</strong></div></mat-grid-tile> |
| 63 | + <mat-grid-tile [colspan]="1" style='border-bottom: 1px dotted #dedede; border-left: 1px dotted #dedede'><div class="grid_align_left"><strong>Record Type</strong></div></mat-grid-tile> |
| 64 | + <mat-grid-tile [colspan]="3" style='border-bottom: 1px dotted #dedede; border-left: 1px dotted #dedede'><div class="grid_align_left"><strong>Address</strong></div></mat-grid-tile> |
60 | 65 | </mat-grid-list>
|
61 |
| - <mat-grid-list cols="8" rowHeight="30px" style='' *ngFor="let k of keys"> |
62 |
| - <mat-grid-tile [colspan]="3" style='border-bottom: 1px dotted #dedede;'><div class="grid_align_left">{{k.selector_recordset_name}}</div></mat-grid-tile> |
63 |
| - <mat-grid-tile [colspan]="1" style='border-bottom: 1px dotted #dedede; border-left: 1px dotted #dedede'><div class="grid_align_left">3600</div></mat-grid-tile> |
64 |
| - <mat-grid-tile [colspan]="1" style='border-bottom: 1px dotted #dedede; border-left: 1px dotted #dedede'><div class="grid_align_left">CNAME</div></mat-grid-tile> |
65 |
| - <mat-grid-tile [colspan]="3" style='border-bottom: 1px dotted #dedede; border-left: 1px dotted #dedede'><div class="grid_align_left">{{k.public_recordset_name}}.</div></mat-grid-tile> |
| 66 | + <mat-grid-list cols="8" rowHeight="30px" style='' *ngFor="let k of domain.keys"> |
| 67 | + <mat-grid-tile [colspan]="3" style='border-bottom: 1px dotted #dedede;'><div class="grid_align_left">{{k.selector_recordset_name}}</div></mat-grid-tile> |
| 68 | + <mat-grid-tile [colspan]="1" style='border-bottom: 1px dotted #dedede; border-left: 1px dotted #dedede'><div class="grid_align_left">3600</div></mat-grid-tile> |
| 69 | + <mat-grid-tile [colspan]="1" style='border-bottom: 1px dotted #dedede; border-left: 1px dotted #dedede'><div class="grid_align_left">CNAME</div></mat-grid-tile> |
| 70 | + <mat-grid-tile [colspan]="3" style='border-bottom: 1px dotted #dedede; border-left: 1px dotted #dedede'><div class="grid_align_left">{{k.public_recordset_name}}.</div></mat-grid-tile> |
66 | 71 | </mat-grid-list>
|
67 | 72 | <mat-grid-list cols="1" rowHeight="30px" style=''>
|
68 |
| - <mat-grid-tile style='border-bottom: 1px dotted #dedede;'><div class="grid_align_left"></div></mat-grid-tile> |
69 |
| - <mat-grid-tile style='border-bottom: 1px dotted #dedede'><div class="grid_align_left"><strong>If you are editing your DNS zone file directly you can add the two lines below:</strong></div></mat-grid-tile> |
70 |
| - <mat-grid-tile style='border-bottom: 1px dotted #dedede;'><div class="grid_align_left"></div></mat-grid-tile> |
71 |
| - <mat-grid-tile *ngFor="let k of keys" style='border-bottom: 1px dotted #dedede'><div class="grid_align_left">{{k.selector_recordset_name}} 3600 IN CNAME {{k.public_recordset_name}}.</div></mat-grid-tile> |
| 73 | + <mat-grid-tile style='border-bottom: 1px dotted #dedede;'><div class="grid_align_left"></div></mat-grid-tile> |
| 74 | + <mat-grid-tile style='border-bottom: 1px dotted #dedede'><div class="grid_align_left"><strong>If you are editing your DNS zone file directly you can add the two lines below:</strong></div></mat-grid-tile> |
| 75 | + <mat-grid-tile style='border-bottom: 1px dotted #dedede;'><div class="grid_align_left"></div></mat-grid-tile> |
| 76 | + <mat-grid-tile *ngFor="let k of keys" style='border-bottom: 1px dotted #dedede'><div class="grid_align_left">{{k.selector_recordset_name}} 3600 IN CNAME {{k.public_recordset_name}}.</div></mat-grid-tile> |
72 | 77 | </mat-grid-list>
|
73 | 78 |
|
74 | 79 | <mat-grid-list cols="4" rowHeight="30px" style=''>
|
75 |
| - <mat-grid-tile style='border-bottom: 1px dotted #dedede;'><div class="grid_align_left"></div></mat-grid-tile> |
76 |
| - <mat-grid-tile style='border-bottom: 1px dotted #dedede; border-left: 1px dotted #dedede'><div class="grid_align_left"></div></mat-grid-tile> |
77 |
| - <mat-grid-tile style='border-bottom: 1px dotted #dedede; border-left: 1px dotted #dedede'><div class="grid_align_left"></div></mat-grid-tile> |
78 |
| - <mat-grid-tile style='border-bottom: 1px dotted #dedede; border-left: 1px dotted #dedede'><div class="grid_align_left"></div></mat-grid-tile> |
| 80 | + <mat-grid-tile style='border-bottom: 1px dotted #dedede;'><div class="grid_align_left"></div></mat-grid-tile> |
| 81 | + <mat-grid-tile style='border-bottom: 1px dotted #dedede; border-left: 1px dotted #dedede'><div class="grid_align_left"></div></mat-grid-tile> |
| 82 | + <mat-grid-tile style='border-bottom: 1px dotted #dedede; border-left: 1px dotted #dedede'><div class="grid_align_left"></div></mat-grid-tile> |
| 83 | + <mat-grid-tile style='border-bottom: 1px dotted #dedede; border-left: 1px dotted #dedede'><div class="grid_align_left"></div></mat-grid-tile> |
79 | 84 |
|
80 |
| - <mat-grid-tile style='border-bottom: 1px dotted #dedede;'><div class="grid_align_left"><strong>Selector status</strong></div></mat-grid-tile> |
81 |
| - <mat-grid-tile style='border-bottom: 1px dotted #dedede; border-left: 1px dotted #dedede'><div class="grid_align_left"><strong>CNAME found in DNS</strong></div></mat-grid-tile> |
82 |
| - <mat-grid-tile style='border-bottom: 1px dotted #dedede; border-left: 1px dotted #dedede'><div class="grid_align_left"><strong>Active for signing</strong></div></mat-grid-tile> |
83 |
| - <mat-grid-tile style='border-bottom: 1px dotted #dedede; border-left: 1px dotted #dedede'><div class="grid_align_left"><strong>Active from</strong></div></mat-grid-tile> |
| 85 | + <mat-grid-tile style='border-bottom: 1px dotted #dedede;'><div class="grid_align_left"><strong>Selector status</strong></div></mat-grid-tile> |
| 86 | + <mat-grid-tile style='border-bottom: 1px dotted #dedede; border-left: 1px dotted #dedede'><div class="grid_align_left"><strong>CNAME found in DNS</strong></div></mat-grid-tile> |
| 87 | + <mat-grid-tile style='border-bottom: 1px dotted #dedede; border-left: 1px dotted #dedede'><div class="grid_align_left"><strong>Active for signing</strong></div></mat-grid-tile> |
| 88 | + <mat-grid-tile style='border-bottom: 1px dotted #dedede; border-left: 1px dotted #dedede'><div class="grid_align_left"><strong>Active from</strong></div></mat-grid-tile> |
84 | 89 | </mat-grid-list>
|
85 | 90 |
|
86 |
| - <mat-grid-list cols="4" rowHeight="30px" style='' *ngFor="let k of keys"> |
87 |
| - <mat-grid-tile style='border-bottom: 1px dotted #dedede;'><div class="grid_align_left">{{k.selector}}</div></mat-grid-tile> |
88 |
| - <mat-grid-tile style='border-bottom: 1px dotted #dedede; border-left: 1px dotted #dedede'> |
89 |
| - <div class="grid_align_left"> |
90 |
| - {{k.is_cname_correct ? 'Yes' : 'No'}}<a *ngIf="!k.is_cname_correct" href="javascript:void(0)" (click)="check_cname(k)">Check</a> |
91 |
| - </div> |
92 |
| - </mat-grid-tile> |
93 |
| - <mat-grid-tile style='border-bottom: 1px dotted #dedede; border-left: 1px dotted #dedede'><div class="grid_align_left">{{k.is_active ? 'Yes' : 'No'}}</div></mat-grid-tile> |
94 |
| - <mat-grid-tile style='border-bottom: 1px dotted #dedede; border-left: 1px dotted #dedede'><div class="grid_align_left">{{ |
95 |
| - k.date_expected_to_activate || k.date_active || k.date_rotation_finalized || '--' |
96 |
| - }} |
97 |
| - </div></mat-grid-tile> |
| 91 | + <mat-grid-list cols="4" rowHeight="30px" style='' *ngFor="let k of domain.keys"> |
| 92 | + <mat-grid-tile style='border-bottom: 1px dotted #dedede;'><div class="grid_align_left">{{k.selector}}</div></mat-grid-tile> |
| 93 | + <mat-grid-tile style='border-bottom: 1px dotted #dedede; border-left: 1px dotted #dedede'> |
| 94 | + <div class="grid_align_left"> |
| 95 | + {{k.is_cname_correct ? 'Yes ' : 'No '}}<button mat-flat-button color="primary" *ngIf="!k.is_cname_correct" (click)="check_cname(domain, k)">Check</button> |
| 96 | + </div> |
| 97 | + </mat-grid-tile> |
| 98 | + <mat-grid-tile style='border-bottom: 1px dotted #dedede; border-left: 1px dotted #dedede'><div class="grid_align_left">{{k.is_active ? 'Yes' : 'No'}}</div></mat-grid-tile> |
| 99 | + <mat-grid-tile style='border-bottom: 1px dotted #dedede; border-left: 1px dotted #dedede'><div class="grid_align_left">{{ |
| 100 | + k.date_expected_to_activate || k.date_active || k.date_rotation_finalized || '--' |
| 101 | + }} |
| 102 | + </div></mat-grid-tile> |
98 | 103 | </mat-grid-list>
|
| 104 | + </ng-container> |
| 105 | + </ng-container> |
| 106 | + <div *ngIf="!domain.dkim && !is_creating_keys" style='margin-top: 35px;'> |
| 107 | + No keys found for {{domain.name}} |
| 108 | + <button mat-raised-button color="primary" (click)="create_keys()" style="margin-left: 20px">Create keys for {{domain.name}}</button> |
| 109 | + <mat-progress-bar mode="indeterminate" *ngIf="is_creating_keys"></mat-progress-bar> |
99 | 110 | </div>
|
100 |
| - <div *ngIf="domain && !keys.length && !is_creating_keys" style='margin-top: 35px;'> |
101 |
| - No keys found for {{domain}} |
102 |
| - <button mat-raised-button color="primary" (click)="create_keys()" style="margin-left: 20px">Create keys for {{domain}}</button> |
103 |
| - <mat-progress-bar mode="indeterminate" *ngIf="is_creating_keys"></mat-progress-bar> |
104 |
| - </div> |
105 |
| - </mat-card> |
106 |
| - </section> |
107 |
| - </mat-sidenav-content> |
| 111 | + </mat-expansion-panel> |
| 112 | + </mat-accordion> |
| 113 | + </ng-container> |
| 114 | + <ng-template #domainsLoading> |
| 115 | + <app-runbox-loading text="Loading your domains..."> |
| 116 | + </app-runbox-loading> |
| 117 | + </ng-template> |
| 118 | + </div> |
| 119 | + </section> |
| 120 | + </mat-sidenav-content> |
108 | 121 | </mat-sidenav-container>
|
0 commit comments