App-SpamcupNG

 view release on metacpan or  search on metacpan

README.md  view on Meta::CPAN

    -l Alternate method for providing username. (Paid & unpaid users with password)
    -p Method for providing password. (Required for users with password)
    -v Shows version and quit.
    -V Verbosity mode. Running "perldoc App::SpamcupNG" will provide more information on that.
    -h You are reading it.
```

## Warnings

Some important warnings before starting using it:

- The script does **not** know where the SPAM report will be sent so **it's
your responsibility**!
- If the script asks Spamcop to send reports to wrong places **it's your
fault**!
- If the script has a bug that causes same report being sent thousand times
**it's your mail addresses**!

## Setup

App-SpamcupNG is distributed as a regular Perl distribution, so you can do it
from [CPAN](http://search.cpan.org) by downloading it with your preferred CPAN
client or directly, by downloading the tarball (and doing the traditional
`perl Makefile.PL; make; make test; make install`).

Additionally, App-SpamcupNG ships with a `cpanfile`, which can allow you to
install directly from Github. See
[here](http://blogs.perl.org/users/mark_allen/2013/07/why-i-use-cpanfile-and-you-should-too.html)
for more details on that.

You will need administrator rights to install this globally unless you're lucky
to be on a UNIX-like OS and you install your own Perl interpreter (like those
installed by [perlbrew](https://perlbrew.pl/)).

[local::lib](https://metacpan.org/pod/local::lib) is also your friend to avoid
the need of administrative rights.

### Configuration file

You can also provide a configuration file to avoid having to provide the same
information everytime you want to execute the program.

The program will look for a configuration file name `.spamcupNG.yml` in the
corresponding home directory of the user (that will dependend on the OS you're
executing it). Pay attention to the dot ('.') in front of the file.

The configuration file must be written as an YAML file, with the exact
properties below:

```YAML
---
ExecutionOptions:
  all: y
  stupid: y
  check_only: n
  alt_code: n
  alt_user: n
  verbosity: INFO
  database:
    enabled: true
    path: /var/spamcupng/reports.db
Accounts:
  Yahoo!:
    e-mail: account@provider1.com.br
    password: FOOBAR
  Gmail:
    e-mail: account@provider2.com.br
    password: FOOBAR
```
All those options have their corresponding command line parameter. Be sure to
take care of file permissions to avoid disclosure of your SpamCop.net password!

### Local database

You probably noticed the following configuration lines from the YAML:

```YAML
  database:
    enabled: true
    path: /var/spamcupng/reports.db
```

Those lines define the configuration for a local database based on
[SQLite](https://sqlite.org/).

This database will save data related to the submitted reports and can be used
to provide further details of what kind of SPAM you're getting and from.

## Local database schema

```mermaid
---
title: Reports sent to Spamcop
---
erDiagram
    SUMMARY |o--o{ EMAIL_CHARSET : has
    SUMMARY ||--|| EMAIL_CONTENT_TYPE : has
    SUMMARY |o--o{ MAILER : has
    SUMMARY ||--|| SUMMARY_RECEIVER : has
    SUMMARY ||--|| SPAM_AGE_UNIT : has
    SUMMARY_RECEIVER ||--|| RECEIVER : relates-to
    SUMMARY {
        integer id PK
        string tracking_id UK
        integer created
        integer charset_id FK
        integer content_type_id FK
        integer age
        integer age_unit_id FK
        integer mailer_id FK
    }
    EMAIL_CHARSET {
        integer id PK
        string name
    }
    EMAIL_CONTENT_TYPE {
        integer id PK
        string name
    }
    MAILER {
        integer id PK
        string name
    }
    SUMMARY_RECEIVER {
        integer id PK
        integer summary_id FK
        integer receiver_id FK
        string report_id UK
    }
    RECEIVER {
        integer id PK
        string email UK
    }
    SPAM_AGE_UNIT {
        integer id PK
        string name UK
    }
```

# Copyright and license



( run in 0.635 second using v1.01-cache-2.11-cpan-df04353d9ac )