Sogoをいれて、IMAP/SMTPを使う。
Sogoは比較的よくできたグループウェア。ちょっと動作はもっさりしてるけどスマホなどで見ても快適な表示である。大量のメールを捌くのは厳しいが、通常のメール量であれば苦にならない。これをGmailの代替としてインストールしてみる。
インストールは、apt で完了するので素晴らしい。
今回は、さくらメールボックスを相手にSogoを使ってみる。 Sogo を入れて、SakuraメールをIMAP/SMTPで使ったらどうなる。かをインストールをしてみて試す。さくらメールボックスを、Sogo経由で使えばグループウェアになって良いのでは。と思った。
設定ファイル。
設定ファイルは、現在は、/etc になっている。以前はid:sogo の homedir を参照していたが、/etc/に変わっていた。
/etc/sogo/SOGo.conf
インストール
sogo はHTTPサーバーを内蔵しているが。 127.0.0.1/Sogoで動作させることができるので、公式のサンプルはApache2の パスAlias で設定されてる。
Apache2を使う
nginx を使いたいところだが、公式サイトに設定例があるのが、Apacheなのでそれを利用しとにかく動かす。もちろん、サブディレクトリじゃなくても、nginxしてもいいけど、とにかくまず動かすことを目標にする。
MySQLを使う。
postgresql を使うべきところだろうが、mariaDBのほうがユーザー作成など管理コマンドが楽なのでこっちを採用。
apt でインストール
Sogo は aptで入っちゃう。debianのパッケージにあった。apt でインストールすると、Arm64などのバイナリもサクッと入手可能なので、debian のapt を使うことにした。sogo.nu の公式にもパッケージはあったのだが、nightly はめんどくさそうだったのでやめた。
必要なパッケージをインストール
sudo apt install apache2 sogo mariadb-server -y
MySQLデータベースの準備
sudo mysql
MySQLにsogo ユーザーを作成する。 ( id:sogo / pw:password )
GRANT ALL ON sogo.* TO 'sogo'@'localhost' IDENTIFIED BY 'password'; flush privileges; CREATE DATABASE sogo;
MySQLにデータベースの作成し、テーブル作成、ユーザ作成
USE sogo;
CREATE TABLE sogo_users (c_uid VARCHAR(10) PRIMARY KEY, c_name VARCHAR(10), c_password VARCHAR(32), c_cn VARCHAR(128), mail VARCHAR(128));
INSERT INTO sogo_users VALUES ('admin1', 'admin1', MD5('your-secure-password'), 'SOGouser', 'sogo@example.com');
ログインするユーザーのパスワードはMD5で格納する(このあたりはsogo設定で調整が可能)まず動くことを目指す。
必要なテーブル定義を流し込む。
mysql -hHOST -uUSER -p -D SOGO < Scripts/mysql-utf8mb4.sql
Sogo の設定
postgresql になってる部分をmysqlに書き換えて、先程指定した md5パスワードのカラムがあるテーブルを指定する。
/etc/sogo/sogo.conf
{
SOGoProfileURL = "mysql://sogo:password@localhost:3306/sogo/sogo_user_profile";
OCSFolderInfoURL = "mysql://sogo:password@localhost:3306/sogo/sogo_folder_info";
OCSSessionsFolderURL = "mysql://sogo:password@localhost:3306/sogo/sogo_sessions_folder";
OCSEMailAlarmsFolderURL = "mysql://sogo:password@localhost:3306/sogo/sogo_alarms_folder";
SOGoUserSources = (
{
type = sql;
id = users;
viewURL = "mysql://sogo:password@localhost:3306/sogo/sogo_users";
canAuthenticate = YES;
isAddressBook = NO;
userPasswordAlgorithm = md5;
}
);
# 書き換え前。
#SOGoProfileURL = "postgresql://sogo:password@127.0.0.1:5432/sogo/sogo_user_profile";
#OCSFolderInfoURL = "postgresql://sogo:password@127.0.0.1:5432/sogo/sogo_folder_info";
#OCSSessionsFolderURL = "postgresql://sogo:password@127.0.0.1:5432/sogo/sogo_sessions_folder";
#OCSEMailAlarmsFolderURL = "postgresql://sogo:password@127.0.0.1:5432/sogo/sogo_alarms_folder";
/etc/sogo/sogo.conf
アドミンユーザーを指定する。
MySQL時に作成したAdminユーザを指定する。複数人いるときは、列挙。
SOGoSuperUsernames = (admin1, admin2);
sogo.conf の記入例
NSDictionary なので厳密に記入する、設定ファイルはなるほどなって感じになる。SogoはGNUStetpのライブラリも使って動いてるし。
{
key = value;
arrays = (
{
key = "NAME";
flag = YES;
}
);
}
- 末尾にはセミコロン
;をつける。 key = valueはスペースを入れる。- boolena は
YESかNOで記入する。 - string は ダブルクォーテーション
"value"する。 YES ;のような無駄なスペースは許されない。
apache2 の設定を記入する
サンプルは次の場所にある。
この中から次の部分を書き換えておく、起動実験なのでHTTPSを使わない。 そのためHTTPSをHTTPに変更する(443ー>80,HTTPSー>HTTP)
sudo touch /etc/apache2/conf-enabled/SOGo.conf sudo vim /etc/apache2/conf-enabled/SOGo.conf
# RequestHeader set "x-webobjects-server-port" "443"
RequestHeader set "x-webobjects-server-port" "80"
# RequestHeader set "x-webobjects-server-url" "https://%{HTTP_HOST}e" env=HTTP_HOST
RequestHeader set "x-webobjects-server-url" "http://%{HTTP_HOST}e" env=HTTP_HOST
あとは、サンプルと同じにした。
設定を有効にする
sudo a2enconf SOGo sudo a2enmod proxy proxy_http headers rewrite
再起動
sudo systemctl restart apache2 sudo systemctl restart sogo
この設定で、 http://localhost/SOGo/ が有効になる。
ログイン画面を出す
http://localhost/SOGo/ にアクセスすると、ログイン画面が出る。

ここで、MySQLのテーブルに登録したユーザー名とパスワード(admin1/your-secure-password) を使ってログインする。
画面が一通り動く

設定画面とかも動くのを確認

imapアカウントが使えない・・・
このままだと、IMAPアカウントがlocalhost:143に固定されるので。


このように、dovecot が同一サーバーで動く前提なので、いくつかの設定を見直さないと、使えない。
sogo.conf の次のあたりを見直す。
SOGoSMTPServer SOGoSMTPAuthenticationType SOGoForceExternalLoginWithEmail SOGoIMAPServer SOGoForceExternalLoginWithEmail
日本語化
/etc/sogo/sogo.conf
SOGoLanguage = Japanese; SOGoSupportedLanguages=( English , Japanese );
ただし、日本語化すると、いくつかの機能がエラーになったので注意。 日本語化ファイルでエラーになる箇所を英語版で置き換えればいいし、Nightlyを使えば修正されていたでの、そのうち治ると思う。
時刻
SOGoTimeZone = Asia/Tokyo;
IMAP/SMTPサーバー自分で用意する
SOGoのパッケージインストールには、IMAPdもSMTPdも含まれてないので、自分で準備する必要がある。サーバーは自分の契約しているメールサーバーを利用すればいい。
sogo の依存ライブラリを確認する。
apt-cache --installed depends sogo sogo PreDepends: init-system-helpers Depends: gnustep-base-runtime Depends: libc6 Depends: libcrypt1 Depends: libcurl4 Depends: libgcc-s1 Depends: libglib2.0-0 Depends: libgnustep-base1.28 Depends: liblasso3 Depends: libmemcached11 Depends: liboath0 Depends: libobjc4 Depends: libsbjson2.3 Depends: libsodium23 Depends: libsope1 Depends: libssl3 Depends: libytnef0 Depends: libzip4 Depends: systemd Depends: sogo-common Depends: adduser Depends: zip Depends: lsb-base Depends: memcached
sogo はIMAPクライアントなので、自分で用意する必要があります。
参考資料
https://wiki.archlinux.jp/index.php/SOGo https://linuxhostsupport.com/blog/how-to-install-sogo-on-ubuntu-20-04/