botserver/web/desktop/ACCOUNT_SETUP_GUIDE.md

306 lines
6.9 KiB
Markdown
Raw Normal View History

# 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.