botserver/web/desktop/ACCOUNT_SETUP_GUIDE.md
Rodrigo Rodriguez (Pragmatismo) d0563391b6 ``` Add comprehensive email account management and user settings
interface

Implements multi-user authentication system with email account
management, profile settings, drive configuration, and security
controls. Includes database migrations for user accounts, email
credentials, preferences, and session management. Frontend provides
intuitive UI for adding IMAP/SMTP accounts with provider presets and
connection testing. Backend supports per-user vector databases for email
and file indexing with Zitadel SSO integration and automatic workspace
initialization. ```
2025-11-21 09:28:35 -03:00

306 lines
No EOL
6.9 KiB
Markdown

# Account Setup Quick Guide
## 🚀 Quick Start
### Step 1: Run Database Migration
First, apply the new database migration to add user account tables:
```bash
cd botserver
diesel migration run
```
This creates the following tables:
- `user_email_accounts` - Store email credentials
- `email_drafts` - Save email drafts
- `email_folders` - Cache folder structure
- `user_preferences` - User settings
- `user_login_tokens` - Session management
### Step 2: Start the Server
Make sure the `email` feature is enabled (it should be by default):
```bash
cargo run --features email
```
Or if already built:
```bash
./target/release/botserver
```
### Step 3: Access Account Settings
1. Open your browser to `http://localhost:8080`
2. Click on the user avatar or settings icon
3. Navigate to "Account Settings"
## 📧 Adding Your First Email Account
### For Gmail Users
1. **Generate App Password** (Required for Gmail)
- Go to Google Account settings
- Security → 2-Step Verification
- App passwords → Generate new password
- Copy the 16-character password
2. **Add Account in BotServer**
- Go to Account Settings → Email Accounts tab
- Click "Add Account"
- Fill in:
```
Email: your-email@gmail.com
Display Name: Your Name
IMAP Server: imap.gmail.com
IMAP Port: 993
SMTP Server: smtp.gmail.com
SMTP Port: 587
Username: your-email@gmail.com
Password: [paste app password]
```
- Check "Set as primary email account"
- Click "Add Account"
3. **Test Connection**
- Click "Test" button
- Should show "Connection successful"
### For Outlook/Office 365 Users
```
Email: your-email@outlook.com
IMAP Server: outlook.office365.com
IMAP Port: 993
SMTP Server: smtp.office365.com
SMTP Port: 587
Username: your-email@outlook.com
Password: [your password]
```
### For Yahoo Mail Users
**Important:** Yahoo requires app-specific password
1. Go to Yahoo Account Security
2. Generate app password
3. Use these settings:
```
Email: your-email@yahoo.com
IMAP Server: imap.mail.yahoo.com
IMAP Port: 993
SMTP Server: smtp.mail.yahoo.com
SMTP Port: 587
Username: your-email@yahoo.com
Password: [app-specific password]
```
### For Custom IMAP/SMTP Servers
```
Email: your-email@domain.com
IMAP Server: mail.domain.com
IMAP Port: 993
SMTP Server: mail.domain.com
SMTP Port: 587
Username: your-email@domain.com (or just username)
Password: [your password]
```
## 📬 Using the Mail Client
### Reading Emails
1. Navigate to Mail section (📧 icon)
2. Your emails will load automatically
3. Click on any email to read it
4. Use folders (Inbox, Sent, Drafts, etc.) to navigate
### Sending Emails
1. Click "Compose" button (✏️)
2. Fill in:
- To: recipient@example.com
- Subject: Your subject
- Body: Your message
3. Click "Send"
### Multiple Accounts
If you have multiple email accounts:
1. Account dropdown appears in mail toolbar
2. Select account to view its emails
3. Composing email uses currently selected account
## 🔧 Troubleshooting
### "Failed to connect to IMAP server"
**Possible causes:**
- Incorrect server address or port
- Firewall blocking connection
- Need to enable IMAP in email provider settings
- Using regular password instead of app password
**Solutions:**
- Verify IMAP server address from your provider
- Check if IMAP is enabled in your email settings
- Use app-specific password for Gmail/Yahoo
- Try port 143 with STARTTLS if 993 fails
### "Authentication failed"
**Causes:**
- Wrong username or password
- Need app-specific password
- 2FA not configured properly
**Solutions:**
- Double-check username (often full email address)
- Generate app-specific password
- Ensure 2FA is enabled before generating app password
### "Failed to send email"
**Causes:**
- SMTP server/port incorrect
- Authentication issues
- Rate limiting
**Solutions:**
- Verify SMTP settings
- Try port 587 (STARTTLS) or 465 (SSL)
- Check if sender email matches account
- Wait and retry if rate limited
### "No emails loading"
**Causes:**
- Mailbox is empty
- Wrong folder name
- IMAP connection issue
**Solutions:**
- Try different folders (INBOX, Sent)
- Click refresh button
- Test connection in Account Settings
- Check account is marked as active
## 🔒 Security Notes
### Current Implementation
⚠️ **IMPORTANT**: Current password encryption uses base64 encoding, which is **NOT SECURE** for production use. This is temporary for development.
### For Production Deployment
You **MUST** implement proper encryption before deploying to production:
1. **Replace base64 with AES-256-GCM encryption**
- Update `encrypt_password()` and `decrypt_password()` functions
- Use a strong encryption key from environment variable
- Never commit encryption keys to version control
2. **Use HTTPS/TLS**
- All communication must be encrypted in transit
- Configure reverse proxy (nginx/Apache) with SSL certificate
3. **Implement rate limiting**
- Limit login attempts
- Limit email sending rate
- Protect against brute force attacks
4. **Use JWT tokens for authentication**
- Implement proper session management
- Token refresh mechanism
- Secure token storage
5. **Regular security audits**
- Review code for vulnerabilities
- Update dependencies
- Monitor for suspicious activity
## 📊 Account Management Features
### Profile Settings
- Update display name
- Change phone number
- View account creation date
### Security Settings
- Change password
- View active sessions
- Revoke sessions on other devices
### Drive Settings
- View storage usage
- Configure auto-sync
- Enable offline mode
## 🆘 Getting Help
### Check Logs
Server logs show detailed error messages:
```bash
# View recent logs
tail -f nohup.out
# Or if running in foreground
# Logs appear in terminal
```
### API Testing
Test the API directly:
```bash
# List accounts
curl http://localhost:8080/api/email/accounts
# Add account
curl -X POST http://localhost:8080/api/email/accounts/add \
-H "Content-Type: application/json" \
-d '{"email":"test@gmail.com",...}'
```
### Database Inspection
Check database directly:
```bash
psql -d botserver_dev -c "SELECT * FROM user_email_accounts;"
```
## ✅ Verification Checklist
- [ ] Database migration completed successfully
- [ ] Server starts with `email` feature enabled
- [ ] Can access Account Settings page
- [ ] Can add email account
- [ ] Connection test passes
- [ ] Can see emails in Mail client
- [ ] Can send email successfully
- [ ] Can compose and save drafts
- [ ] Multiple accounts work (if applicable)
## 📚 Further Reading
- See `MULTI_USER_SYSTEM.md` for technical details
- See `REST_API.md` for API documentation
- See `TESTING.md` for testing procedures
## 🎯 Next Steps
After basic setup:
1. Configure additional email accounts
2. Explore Drive functionality
3. Set up automated tasks (future)
4. Customize preferences
5. **Implement proper security for production**
---
Need help? Check the logs, review error messages, and consult the troubleshooting section above.