Raspberry pi почтовый сервер

Xakep #248. Checkm8

Стартап Nomx, предлагающий защищенное железо для email-серверов, заявил о себе сравнительно недавно: на выставке CES, прошедшей в январе 2017 года. Создатели Nomx обещали своим клиентам «самый защищенный коммуникационный протокол в мире», а также обещали позаботиться об «абсолютной приватности» как личной, так и коммерческой переписки.

Исследователь Скот Хелм (Scott Helme) решил проверить, что скрывается за громкими рекламными слоганами и внимательно изучил устройство Nomx, стоимостью $199. Данный девайс предлагают использовать для поднятия собственного email-сервера, чтобы держать свою корреспонденцию подальше от mail exchange серверов (mx, откуда и происходит название Nomx), которые, согласно заявлением разработчиков Nomx, повально небезопасны.

В своем блоге Хелм опубликовал подробный рассказ о своих изысканиях, включая фотоотчет о «вскрытии» устройства. Первый же сюрприз поджидал специалиста уже внутри корпуса Noxm: под крышкой исследователь обнаружил плату Raspberry Pi и несколько светодиодов. Хелм пишет, что не имеет ничего против Raspberry Pi, однако от гаджета за двести долларов, который обещает едва ли не абсолютную защиту, он ожидал немного другого.

Затем специалист перешел к изучению софтверной составляющей, и вскоре стало ясно, что Nomx работает с устаревшим ПО, кишит багами, а код разработчиков являет собой яркий пример того, как делать не нужно.

Хелм пишет, что Nomx работает с обычным ПО для почтовых серверов, стандартном для Raspberry, причем весь использованный софт давно устарел. Так, исследователь обнаружил:

  • Raspbian GNU/Linux 7 (wheezy) – последнее обновление 7 мая 2015;
  • nginx version: nginx/1.2.1 – выпущен 5 июня 2012;
  • PHP 5.4.45-0+deb7u5 – выпущен 3 сентября 2015;
  • OpenSSL 1.0.1t — выпущен 3 мая 2016;
  • Dovecot 2.1.7 3 — выпущен 29 мая 2012;
  • Postfix 2.9.6 — выпущен 4 февраля 2013;
  • MySQL Ver 14.14 Distrib 5.5.52 — выпущен 6 сентября 2016.

Хуже того, разработчики, похоже, вообще не предусмотрели возможности обновления ПО, то есть механизма автообновлений пока попросту нет.

Продолжив исследование, Хелм выяснил, что веб-интерфейс Nomx содержит критическую уязвимость CSRF (Cross-Site Request Forgery), при помощи которой атакующий может удаленно перехватить управление над аккаунтом и устройством. «Я мог бы читать ваши письма, отправлять письма, удалять письма. Я мог бы даже создать собственный email-адрес», — пишет специалист. Хелм обнародовал не только подробное описание атаки, но и proof-of-concept эксплоит для этой уязвимости. По его словам, баг можно эксплуатировать как минимум тремя разными способами.

Помимо этого специалист обнаружил в устройствах Nomx еще множество проблем, включая незадокументированный административный аккаунт с учетными данными [email protected] и password. Полный список проблем и уязвимостей, а также их подробное описание, можно найти в блоге Хелма.

Глава Nomx Уилл Дональдсон (Will Donaldson) уже отреагировал на обвинения и опровергает все выводы исследователя. Так, он сообщил журналистам Vice Motherboard, что CSRF-атака сработает лишь в том случае, если в момент открытия вредоносного сайта у пользователя запущена страница управления Nomx (Хелм, в свою очередь, утверждает, что это неправда). Также Дональдсон сообщил, что проблема уже была устранена, а Хелм тестировал устаревшее, рутованное устройство, тогда как новые девайсы Nomx вообще не используют Raspberry Pi.

Журналисты Motherboard отмечают, что при этом Дональдсон проигнорировал их вопрос о том, что делать владельцам таких «устаревших» устройств и когда они получат обновления, которые якобы уже выпустила компания.

В заключение своей статьи Хелм пишет, что Nomx подозрительно напоминают мошенников, которые обещают непревзойденную защиту и при этом продают устройства, использующие устаревший софт, обычный SMTP и самоподписанные сертификаты. При этом исследователь с тревогой отмечает, что у Nomx также есть и решения для бизнеса.

«Единственная хорошая вещь, которую можно сказать о данном продукте, он не создает запись MX для вашего домена, оправдывая имя “no MX’. Понятия не имею, чего хорошего в отсутствии MX записи, но она действительно не создается.

Сама основа этой концепции неверна. Поддерживать собственный почтовый сервер – это тяжело, это подвергает вас огромному риску. Я бы не рекомендовал никому использовать эти устройства», — резюмирует исследователь.

Другие ИБ-специалисты поддерживают точку зрения Хелма. К примеру, Трой Хант вообще советует бежать от подобных девайсов без оглядки.

This Raspberry Pi email server tutorial will take you through the steps on how to set up your very own email server that is both low cost and relatively versatile.

One of the many reasons to set up a personal server on the Pi is its low cost. The initial cost is low, and the ongoing expenses are also relatively low due to the Raspberry Pi’s low power usage.

There are several other advantages for setting up a Raspberry Pi email server such as being able to utilize a custom domain name and having full control over your own personal communications.

Since your emails are stored on your own personal server, you will have no one scanning them so they can to try and present you with better advertisements. You can run this alongside an Apache web server for a complete setup.

Another great reason for setting up your own email server is that it’s a great learning experience when it comes configuring everything correctly. It can be hard setting this up as there are quite a few things that can go wrong and if you’re a beginner, then troubleshooting may be a bit frustrating.

The software itself is super easy to install but can be hard configuring it to work perfectly the first time, so I have marked this project as intermediate difficulty.

If you plan on sending emails, you will need to make sure your ISP is not blocking port 25. This block is quite common but can usually be unblocked if requested.

You can find all the pieces of equipment that I recommend for this Raspberry Pi email server tutorial. You really don’t need much so it should be a nice cheap project.

Recommended

Ethernet Cord or Wifi dongle (The Pi 3 has WiFi inbuilt)

Optional

As with almost every tutorial, I am running the default install of Raspbian. If you need to install it, then be sure to check out my guide on installing Raspbian.

There are a few ways to install an email server on the Raspberry Pi, one of the most complicated ways is to install Postfix and Dovecot separately then installing a web frontend. Each of these components will then have to be individually configured and can become quite time-consuming to set up correctly.

However, in our tutorial, we will be utilizing a software package called Citadel. It is an easy to set up, powerful yet versatile mailing server. It heavily simplifies the process of setting up an email server and does not require extensive configuration to get it up and running. Best of all it is a 100% open source software.

Читайте также:  Роутер тенда ас 1200 отзывы

1. First, let’s update our package repository by running the following command.

2. Now run the upgrade command so that you’re updated and running on the latest packages.

3. It’s now time to start the installation process of Citadel, and we can do that easily with the following command.

4. For this screen, leave the field set to 0.0.0.0 as this allows Citadel to listen on all incoming addresses. The only reason to change this will be if you are running multiple instances of Citadel. Simply press enter to continue.

5. Now for the user authentication mode, we’re going to keep this set to internal. This mode allows Citadel to utilize its own internal user accounts database. Only change this if you need the other three options. Press Enter to continue.

6. Here we get to set the name that we want for the administrator user, to keep this tutorial as simple as possible we will be just utilizing the default username admin.

However, we recommend changing the username to something else since admin is usually really easy to guess and can lower the security of your server. Remember what you set here for later in the tutorial as this is what you will need to log into Citadels web interface.

Press enter once you’re happy with your choice.

7. Now is the time to enter a password for the new administrator user, make sure you make this password difficult to guess.

A secure password is crucial as anyone who gains access to your admin account could view all your emails and potentially damage your server’s settings. It is even more crucial if you also plan on port forwarding port 80 to allow access to the web interface.

Press Enter once you’re happy with the password that you have entered.

You will next be asked to verify this password, enter the same password again and press enter.

8. For the purposes of this tutorial, we will be selecting internal to make Webcit utilize its own HTTP server facilities. However, if you’re utilizing an Apache2 server already, then select Apache2.

Use the arrow keys to select Internal then press enter to continue.

9. Now it will prompt you to select the port that you want to listen for an HTTP connection on if you have no other web servers running it’s safe to keep it set to 80. Otherwise, try changing it to another port such as 8080. It’s also important to know that some ISPS block port 80 so you will need to select a different one anyway.

Press enter when you’re happy with your choice.

10. Now it will prompt you to select the port that you want to listen for an HTTPS connection on if you have no other web servers running it’s safe to keep it set to 443. Otherwise, try changing it to another port such as 4434.

Press enter once you’re happy with your choice.

11. Now we can select whether we want to enforce a default language or let the user choose it on login. The easiest option is just to select “User Defined”.

When you’re happy with your choice, press enter.

Sometimes the steps above will throw errors and not create the admin account we need to set up the email server correctly. If this is the case with you, then you will need to do a few extra steps.

1. First, we need to create the netconfigs folder and set the owner and group to citadel.

2. Next, we need to restart Citadel, so the previous changes are applied correctly. We also want to rerun setup so that we can set up the admin account if it wasn’t created the first time correctly.

3. When you run the set up it will take you through a series of questions with the first being the name of admin. Set this to the username you wish to have for your admin account.

4. Next, it will ask you to set a password for the administrator account. Set this to something secure, so you’re not easily hacked.

5 You can now skip through the rest of the questions. Simply press enter to skip the questions and not change anything.

1. Now we need to load up Citadels web interface, to do this go to your Raspberry Pi’s IP address in your favorite web browser. In my case, I would go to http://192.168.1.105/ .

If you don’t have the Raspberry Pi’s IP address on hand then you can type hostname -I into the Raspberry Pi’s terminal to get your local IP address.

Login by using the admin username and the admin password you set during the installation process.

2. You should now be seeing the default dashboard, and you can change the homepage by opening another page and clicking “Make this my start page” located in the top right-hand corner. For now, just click on administration in the sidebar.

3. Now we are in the system administration menu, there’s a wide variety of different options in here but what we are after is “Edit site-wide configuration”, so click on that.

4. Now on this screen, we will have to make a few changes to get everything working. Here we need to change the “Fully Qualified Domain Name” to the custom domain we plan to use for our email. In our case, we will set this to mail.pimylifeup.com

Once done, click on the “SMTP” tab.

5. Now on this screen make a note of the ports mentioned here, we will need to port forward these to allow the server to receive emails over SMTP. Once done, press the “Save Changes” button, then click on “Administration” in the sidebar.

6. Now back in the “System Administration Menu”, click on “Domain names and internet mail configuration”. This option will take us to the menu that we will be using to add additional domain names to Citadel.

7. Now on this screen, under “Local host aliases” type in the domain name you want to use then press the “Add” button. Once done, click back on “Administration” in the sidebar.

Читайте также:  Уровни сложности дани крастера

8. Now we are back on this screen, and need to click “Restart Now” under “Shutdown Citadel” this ensures that all our settings changes will now be loaded in.

The easiest way to set up your DNS is to utilize a service like Cloudflare. Cloudflare offers a stable and redundant DNS service that can also be easily set up to also act as a dynamic DNS service which is incredibly useful for anyone that is behind a dynamic IP address.

An added advantage is that it also makes it incredibly easy to modify the DNS records, and updates are propagated much faster than most DNS services.

1. Go to your domain name on Cloudflare, then go to the DNS tab.

2. In here you need to add an A name record that points towards your network’s public IP address. This record will allow you to access your webmail client after you port forward. It is also needed so we can point the MX Record to it.

3. Now add an MX record that points towards the domain name that you set up as an A record in the previous step.

4. With that all done, you will now need to port forward the various ports from earlier. If you didn’t make any changes, then you will need to port forward the following ports 80, 25, 587 and 465. The last 3 of these ports should be your SMTP ports mentioned in the SMTP settings page from earlier.

If you’re unsure on how to port forward on your router, you can try following our generic port forwarding guide that you can find on this website. Otherwise look up your router at the port forward website.

Also, if you have a dynamic IP address you will need to set up a dynamic DNS client, you can follow our guide on setting this up. Make sure you follow the steps on setting it up to work through Cloudflare.

Now we will go through setting up Spamassassin, this is a tool that handles sifting through SPAM. It is a crucial tool to have installed on any private email server. It will add a bit more workload to the Raspberry Pi but it should be able to handle it just fine.

1. First, let’s install Spamassassin from the official packages by running the following command. The installation process of Spamassassin can take some time as it has to compile several things.

2. After Spamassassin has installed, we now need to make some changes to its configuration, run the following command to edit the first configuration file.

3. Update the lines mentioned below so that they match what we have written if any of these lines have a # in front of it, then remove it. We will explain what each line does and why you should enable them.

This line makes Spamassassin modify the subject header of spam e-mails to include SPAM and the spam score that the Spamassassin system has assigned to it.

This line tells Spamassassin only to modify the headers of an email and not make any changes to the actual body.

Setting the required score low means you will initially get lots of false positives, but it will help you teach Spamassassin to know what emails are good and what emails are bad.

This next line sets Spamassassin to use a Bayesian filter. Bayesian is a way of estimating the probability of whether an email is Spam or not. It is a commonly used method that improves as the sample size increases.

The following line turns on the automatic learning for the Bayesian filtering.

Once you’re all done, simply save and exit out of the file by pressing Ctrl+X and then Y and then pressing Enter.

4. Now there is one final file we need to edit to finish setting up Spamassassin, run the following command.

The following line allows Spamassassin to work through systemctl and means we can get it to boot at startup easily.

This line allows a cron job to update the Spamassassin rules automatically.

Saves and exit out of the file by pressing Ctrl+X and then Y.

5. We can now start the Spamassassin daemon with the following command.

6. Now add Spamassassin to the init system with the following command, so it automatically starts on boot.

7. We now need to go to Citadels web interface and go back to the Administration screen.

8. Once we are back in here, we need to go to “Domain names and Internet mail configuration”.

9. Now that we are in here, we need to type in the IP address, 127.0.0.1 under “SpamAssassin Hosts”. Once you have typed it in, we can just press the “Add” button.

Now onto the final part of our Raspberry Pi email server installation guide, we are going to be setting up and installing the ClamAV software. This software will scan all your incoming emails for viruses and helps protect your Raspberry Pi from becoming infected.

1. Installing ClamAV is incredibly easy as it’s already included in the Debian packages, and we can just run the following command to install it.

2. Now we want to get ClamAV to download the latest version of its virus databases, we can do this by running the following command.

You may run into the error below, but we can deal with that:

To deal with this error, we need to stop clamav, and we can do this by running the following command. Then rerun sudo freshclam.

3. After the update has completed, run the following command.

4. Now enable ClamAV with systemctl, so it is ensured to start on bootup.

5. We now need to go to Citadels web interface and go back to the Administration screen.

6. Once we are back in here, we need to go to “Domain names and Internet mail configuration”.

7. Now that we are in here, we need to type in the IP Address, 127.0.0.1 under “ClamAV clamd hosts”. Once you have typed it in, we can just press the “Add” button.

Читайте также:  Хороший смартфон с большой емкостью аккумулятора

Hopefully, by now, you will have a fully functional email server that you’re able to connect to successfully .

If you need to update your user accounts email address, then this can be found in the advanced menu when you’re logged into your chosen user.

1. Go to advanced and on this screen select “update your contact information”.

2. Update your email address under “primary internet email address”, you can also update other things such as your display name and other email addresses you want to be connected to for this account (Internet email alias).

3. Once you’re done, select save changes.

There are quite a few issues that you might run into while doing this tutorial with some being an easy fix and others a bit more difficult.

  • Some ISPS will be blocking port 25 which means when you send emails they will fail. To get around this, you will need to either get the port unblocked or setup citadel to use the ISP’s SMTP server. You can find more information on outbound email being stuck here.
  • If you’re not receiving emails, then this likely means your DNS has not been configured correctly. Go back to where your DNS is being managed and review the information.

I hope that this tutorial has shown you how to set up a Raspberry Pi email server and that you haven’t run into any issues. It’s certainly a great project for anyone who wishes to set up a cheap email server that you have full control over. If you have some feedback, tips or have come across any issues that you would like to share, then please don’t hesitate to leave a comment below.

Скорее всего, куча народу занимались подобным до меня, но я напишу.

Как-то раз стало лень мне вставать с дивана, чтобы переключить музыку на колонках в другом конце комнаты. Через пару дней я увидел окончательную реализацию своей идеи.

Была поставлена цель: создать устройство, позволяющая удаленно контролировать воспроизведение музыки на аудиосистеме.

Исходные данные: Одноплатный компьютер Raspberry Pi, MicroSD карта на 4 Гб, USB HDD (я взял терабайтник), USB звуковая карта.

В процессе настройки я добавил к этому устройству некоторые дополнительные функции, а конкретно файлопомойки и торрентокачалки.

Я выбрал Raspberry Pi, так как она не издает шума от слова совсем и недорогая, по сравнению с обычными компьютерами.

После того, как мне пришла плата, я записал на sd карту операционную систему raspbian, подключил usb-клавиатуру, hdmi монитор и включил. Сразу, чтобы не возникало вопросов: стандартная пара логин/пароль — "pi" / "raspberry".

После того, как вы получили доступ к командной консоли, необходимо настроить работу сети. Гайд подразумевает, что вы имеете доступ к домашней wifi сети, способны изменить конфигурацию роутера.

До этого вы проводите начальную конфигурацию устройства в псевдографической утилите raspi-config. Если при первом входе в систему она не запустилась — войдите в консоль и наберите команду sudo raspi-config

В этой утилите вы настраиваете все под себя как вам угодно, однако не забудьте включить сервер SSH для более удобной настройки устройства через Interfaces > SSH > Enable

Первым делом, подключаемся к wifi. Вот хорошая статья: http://robocraft.ru/blog/electronics/3162.html

После того, как подключились к wifi, нам необходимо получить статический адрес в локальной сети. Я знаю два способа сделать это.

1) Наилучшем вариантом будет настройка роутера

Необходимо найти настройку DHCP сервера и сделать так, чтобы он выдавал нашему устройству определенный IP-адрес. В моем роутере это делается в таком окошке, у вас может быть по другому.

2) Прописать статические настройки в системе. Для этого редактируем файл /etc/network/interfaces(это делается командой sudo nano /etc/network/interfaces)

В файле находим строку, которую меняли при настройке wifi, а именно

"iface wlan0 inet manual"

и меняем manual на static, а сразу после этой строки дописываем

"address 192.168.123.254 # ip-address

netmask 255.255.255.0 # маска подсети

network 192.168.123.0 # подсеть

broadcast 192.168.123.255 #широковещательный адрес

gateway 192.168.123.1 # шлюз"

Я, тем не менее, рекомендую вам использовать первый метод, так как он практически исключает возможность конфликта адресов в сети.

Поскольку мы получили статический адрес в сети, мы можем спокойно отключить монитор от Raspberry Pi и пойти за свой домашний компьютер. Или остаться у монитора с raspberry pi. Вариативно.

Если вы захотели посидеть за вашим компьютером, то подключитесь к Raspberry Pi по SSH. В линуксовых системах введите команду ssh [email protected](Вместо него статический ip, который вы дали микрокомпьютеру. В windows скачайте ssh-клиент PUTTY(или какой-нибудь другой) и подключитесь подобным образом к Raspberry Pi.

Самое время научить наш сервер правильно монтировать жесткий диск. Сначала, разумеется, нужно подключить его к одному из USB-портов.

Для поддержки NTFS необходимо установить пакет ntfs-3g. Для этого в консоли набираем команду:

sudo apt-get install ntfs-3g

Создаем каталог, в который будем монтировать наш USB HDD

sudo mkdir /mnt/usbdrive

Устанавливаем права на запись на этот каталог

sudo chmod 777 /mnt/usbdrive

Прописываем в конец файла /etc/fstab команду авто монтирования нашего USB HDD:

/dev/sda1 /mnt/usbdrive ntfs-3g defaults,rw 0 1

После перезагрузки вы сможете увидеть все файлы с диска, зайдя в папку /mnt/usbdrive

Установим драйвер звуковой карты:

sudo apt-get update

sudo apt-get install alsa-utils -y

sudo modprobe snd_bcm2835

sudo amixer cset num >

В самый конец файла /etc/modules добавим строку snd_bcm2835

Проверим звук. Не забудьте воткнуть наушники/колонки

Скачаем аудиофайл с интернета:

sudo apt-get install mplayer -y

Как вы можете слышать, звук не очень качественный. Объясняется это тем, что звуковая карта Raspberry Pi работает по очень своеобразной схеме: вместо стандартного преобразователя цифрового сигнала в аналоговый там установлен широтно-импульсный модулятор, управляемый непосредственно процессором. Эта технология значительно уступает обычной по качеству. Выход — подключение внешней audio карты.

У меня внешняя аудиокарта заработала после того, как я создал файл /etc/modprobe.d/alsa.conf и добавил в него "options snd slots=snd_usb_audio,snd_bcm2835"

Далее — настройка плеера. Я выбрал плеер mpd, поскольку им можно управлять практически с любого устройства, в частности с android смартфона.

sudo apt-get install mpd -y

Далее необходимо отредактировать файл конфигурации mpd( /etc/mpd.conf)

Я лишь дам вам ссылку на свою конфигурацию, а вы поменяйте ее под себя.

mpc listall | mpc add

После этого вы можете установить приложение mpdroid(например) на свой телефон, ввести настройки подключения к raspberry pi и управлять воспроизведением.

Если будет кому-то интересно, я допишу часть с настройкой файлового сервера и торрент-клиента.