Further clarify e-mail policy

This commit is contained in:
2024-09-24 22:46:45 +02:00
parent 033f28a050
commit 828ef1c81a
5 changed files with 99 additions and 97 deletions

View File

@@ -10,7 +10,10 @@ will be removed when reported.
* **Copyright violation**: Works which are shared without permission from the
copyright holder. For copyright reports we need a formal DMCA takedown request
originating from the copyright holder or a representative. See the chapter
[E-Mail reporting rules](#toc_2) below.
[E-Mail reporting rules](#toc_2) below. When sending a copyright infringement
notice to our abuse address, please state clearly that it is a copyright
infringement notice so that we can properly detect the type of report. Using
words like 'theft' or 'stolen' won't work because piracy is not theft.
* **Porn**: Pornographic material is not strictly banned on pixeldrain. But in
order to comply with international regulations I have to prevent it from
spreading too far. For this reason pornographic videos and images can be
@@ -67,11 +70,13 @@ receive:
[Message-ID](https://en.wikipedia.org/wiki/Message-ID) header. The Message-ID
is used to reference messages in our system, mails without a Message-ID are
not processed.
* The e-mail must include either a valid [DKIM
signature](https://en.wikipedia.org/wiki/DomainKeys_Identified_Mail) or a [SPF
header](https://en.wikipedia.org/wiki/Sender_Policy_Framework). Since the
sender address is used as a verification method we must use these methods to
combat message spoofing.
* The abuse system uses e-mail addresses for authenctication so we need to be
wary of [message spoofing](https://en.wikipedia.org/wiki/Email_spoofing). To
combat this we require both
[DKIM](https://en.wikipedia.org/wiki/DomainKeys_Identified_Mail) and
[SPF](https://en.wikipedia.org/wiki/Sender_Policy_Framework) validation before
we can accept e-mails. If either of these checks fail we assume the message
was spoofed and it goes straight to the spambox.
* Only send abuse reports to
[abuse@pixeldrain.com](mailto:abuse@pixeldrain.com). Messages sent to any
other e-mail address are ignored.

View File

@@ -15,7 +15,6 @@ let block_form = {
label: "Type",
type: "radio",
radio_values: [
"unknown",
"copyright",
"porn",
"child_abuse",

View File

@@ -157,9 +157,6 @@ onMount(get_reporters);
{/if}
</section>
<br/>
<div class="table_scroll">
<h2>Pending reporters</h2>
<EmailReportersTable
reporters={reporters_pending}
@@ -187,7 +184,6 @@ onMount(get_reporters);
on:spam={e => spam_reporter(e.detail)}
on:delete={e => delete_reporter(e.detail)}>
</EmailReportersTable>
</div>
<br/>
<style>
@@ -198,7 +194,4 @@ onMount(get_reporters);
}
.toolbar > * { flex: 0 0 auto; }
.toolbar_spacer { flex: 1 1 auto; }
.table_scroll {
text-align: left;
}
</style>

View File

@@ -52,6 +52,7 @@ const toggle_preview = (rep) => {
}
</script>
<div class="table_scroll">
<table>
<tr>
<td><SortButton field="from_address" active_field={sort_field} asc={asc} sort_func={sort}>Address</SortButton></td>
@@ -72,7 +73,7 @@ const toggle_preview = (rep) => {
<td>{formatDate(rep.created, false, false, false)}</td>
<td>
<button on:click|preventDefault={() => toggle_preview(rep)} class="button round">
<i class="icon">visibility</i>
<i class="icon">email</i>
</button>
<button on:click|preventDefault={() => {dispatch("edit", rep)}} class="button round">
<i class="icon">edit</i>
@@ -94,6 +95,7 @@ const toggle_preview = (rep) => {
</tr>
{/each}
</table>
</div>
<Modal bind:this={modal} title={preview_subject} width="1000px">
{#if preview_html !== ""}
@@ -104,6 +106,9 @@ const toggle_preview = (rep) => {
</Modal>
<style>
.table_scroll {
text-align: initial;
}
.message_html {
padding: 8px;
text-align: initial;

View File

@@ -4,6 +4,18 @@ import { formatDate } from "../util/Formatting.svelte";
import Expandable from "../util/Expandable.svelte";
import LoadingIndicator from "../util/LoadingIndicator.svelte";
const abuse_types = [
"copyright",
"child_abuse",
"terrorism",
"gore",
"zoophilia",
"malware",
"doxing",
"revenge_porn",
"porn",
]
let loading = true
let rows = []
let total_offences = 0
@@ -11,7 +23,7 @@ let total_offences = 0
let expanded = false
let creating = false
let new_ban_address
let new_ban_reason = "unknown"
let new_ban_reason = abuse_types[0]
const get_bans = async () => {
loading = true;
@@ -114,23 +126,11 @@ onMount(get_bans);
<input id="field_address" type="text" bind:this={new_ban_address}/>
<label for="field_reason">Reason</label>
<div id="field_reason">
<input id="reason_unknown" name="reporter_type" type="radio" bind:group={new_ban_reason} value="unknown" />
<label for="reason_unknown">unknown</label>
{#each abuse_types as t (t)}
<input id="reason_{t}" name="reporter_type" type="radio" bind:group={new_ban_reason} value="{t}" />
<label for="reason_{t}">{t}</label>
<br/>
<input id="reason_copyright" name="reporter_type" type="radio" bind:group={new_ban_reason} value="copyright" />
<label for="reason_copyright">copyright</label>
<br/>
<input id="reason_child_abuse" name="reporter_type" type="radio" bind:group={new_ban_reason} value="child_abuse" />
<label for="reason_child_abuse">child_abuse</label>
<br/>
<input id="reason_terrorism" name="reporter_type" type="radio" bind:group={new_ban_reason} value="terorrism" />
<label for="reason_terrorism">terrorism</label>
<br/>
<input id="reason_gore" name="reporter_type" type="radio" bind:group={new_ban_reason} value="gore" />
<label for="reason_gore">gore</label>
<br/>
<input id="reason_malware" name="reporter_type" type="radio" bind:group={new_ban_reason} value="malware" />
<label for="reason_malware">malware</label>
{/each}
</div>
<button class="button_highlight" type="submit" style="float: right;">
<i class="icon">save</i> Save