Files From Mail allow an admin to link a drop-mailbox to Nextcloud.
This way, you can set a mail address (files@example.net in our example) and every mails+attachments send to this mail address will be automatically be saved on the cloud.
This app will need Mailparse
If not already installed on your server:
$ sudo pecl install mailparse
If the installation failed with a message about mbstring not installed (but mbstring is already installed) you will need to install the Mailparse extension manually:
$ pecl download mailparse
$ tar -zxvf mailparse-3.0.2.tgz
$ cd mailparse-3.0.2/
$ phpize
$ vi mailparse.c
remove lines 34-37:
#if !HAVE_MBSTRING #error The mailparse extension requires the mbstring extension! #endif
$ ./configure --with-php-config=/usr/bin/php-config
$ make
$ sudo make install
$ sudo echo "extension=mailparse.so" > /etc/php/7.3/mods-available/mailparse.ini
$ sudo ln -s /etc/php/7.3/mods-available/mailparse.ini /etc/php/7.3/apache2/conf.d/20-mailparse.ini
$ sudo apachectl restart
You now need to tell your mail server that any mails coming to a specific address (in our example: files@mailserver.example.net) will be redirected to a PHP script: Add this line to /etc/aliases:
files: "|/usr/bin/php -f /path/to/NextcloudMailCatcher.php"
The NextcloudMailCatcher.php can be find in the /lib/ folder of the apps. The script is independant of the rest of the app and can be copied alone on your mail server
Recreate the aliases db:
$ sudo newaliases
Edit NextcloudMailCatcher.php and edit the few settings:
$config = [ 'nextcloud' => 'https://cloud.example.net/', 'username' => 'frommail', 'password' => 'Ledxc-jRFiR-wBMXD-jyyjt-Y87CZ', 'debug' => false ];
Note: the password needs to be a token generated from the webclient in Settings / Security / Devices & session
You can test your setup by running:
$ php -f ./NextcloudMailCatcher.php test
In case you're using virtual domain (postfix), you will need to create an alias in your MTA:
files@example.com -> files@mailserver.example.net
To only create the right folder on the right mail address, the app will filters unknown mail addresses. You will need to add the drop-mailbox:
./occ files_frommail:address --add files@example.com
You can choose to secure the mails and ask for a password:
./occ files_frommail:address --password files@example.com your_password
Doing so, only mails containing ':your_password' in their content will be saved.
By default the generated files start with an identifier in the format 'Y-m-d H:i:s'. This identifier can be changed using
./occ config:app:set --value <NEW FORMAT> files_frommail filename_id
The <NEW FORMAT>
value is a string using PHP date()
format.